Mercurial > trustbridge
view ui/installwrapper.h @ 757:9bfaced5cf59
(issue56) Do not delete the certificate immediately
When the selection changed the remove cert is triggered by
a slection change event in the certificateitem. Deleting
it immediately would delete the trigger of the call.
Instead we deleteLater so that the widget get's cleaned up
in the next mainloop iteration when it is no longer needed.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Mon, 07 Jul 2014 12:54:02 +0200 |
parents | 17e1c8f37d72 |
children | f89b41fa7048 |
line wrap: on
line source
/* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik * Software engineering by Intevation GmbH * * This file is Free Software under the GNU GPL (v>=2) * and comes with ABSOLUTELY NO WARRANTY! * See LICENSE.txt for details. */ #ifndef UI_INSTALLWRAPPER_H #define UI_INSTALLWRAPPER_H #include <QFileInfo> #include <QString> #include <QStringList> #include <QTemporaryFile> #include <QThread> #include "certificate.h" /** @file installwrapper.h * @brief Wrapper around the call to the updated process */ /** @brief Get the FileInfo for the installation process. * * This points to the file where the installation process is * supposed to be. * * @returns A FileInfo with the path of the installation process.*/ QFileInfo getCinstProcInfo(); /** @brief wrapper around installer process * * This wrapper is mostly needed because QProcess executes * a process on Windows directly with CreateProcess and * thus can not be used to elevate the Process. * * On Windows this class uses ShellExecuteExW to control * the child process. On Linux systems QProcess is used. * * It subclasses QThread so the installation can be done * asynchronusly. */ class InstallWrapper : public QThread { Q_OBJECT public: /** * @brief Construct an installwrapper for a certificateList * * The install wrapper will start the cinst process to execute * the specified instructions with the provided certificatelist. * * The cinst executable is expected to be in the same directory * as the current application. * * @param[in] parent the parent object. * @param[in] listFileName the absolute path to the certificatelist. * @param[in] choices a list of R: / I: <cert> lines to execute. */ InstallWrapper(QObject* parent, const QString& path, const QStringList& instructions); private: /**@brief write the choices made into a temporary file * * @param[in] choicesFile the temporary file to write. * * @returns true on success. false on error. */ bool writeChoices(QTemporaryFile* choicesFile) const; const QString mCertListFile; const QStringList mChoices; protected: void run(); Q_SIGNALS: /** * @brief An error happened * * @param[out] message: A localized message to show. Can be empty. */ void error(const QString &message); /** * @brief The installation was successful * * This only means the installation was successful as far as we * can tell as there is no backchannel from the installation processes. */ void installationSuccessful(); }; #endif // UI_INSTALLWRAPPER_H