/** * This file is part of GpgFrontend. * * GpgFrontend is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Foobar is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Foobar. If not, see . * * The initial version of the source code is inherited from gpg4usb-team. * Their source code version also complies with GNU General Public License. * * The source code version of this software was modified and released * by Saturneric starting on May 12, 2021. * */ #ifndef __GPGWIN_H__ #define __GPGWIN_H__ #include "gpg/GpgConstants.h" #include "gpg/result_analyse/DecryptResultAnalyse.h" #include "gpg/result_analyse/EncryptResultAnalyse.h" #include "gpg/result_analyse/SignResultAnalyse.h" #include "ui/FileEncryptionDialog.h" #include "ui/FindWidget.h" #include "ui/GpgFrontendUI.h" #include "ui/KeyMgmt.h" #include "ui/KeyUploadDialog.h" #include "ui/WaitingDialog.h" #include "ui/Wizard.h" #include "ui/help/AboutDialog.h" #include "ui/settings/SettingsDialog.h" #include "ui/widgets/InfoBoardWidget.h" #include "ui/widgets/TextEdit.h" namespace GpgFrontend::UI { /** * @brief * */ class MainWindow : public QMainWindow { Q_OBJECT public: /** * @brief * */ MainWindow(); public slots: void slotSetStatusBarText(const QString& text); protected: /** * @details Close event shows a save dialog, if there are unsaved documents on * exit. * @param event */ void closeEvent(QCloseEvent* event) override; public slots: /** * @details Open a new tab for path */ void slotOpenFile(QString& path); /** * @details Open dialog for encrypting file. */ void slotFileEncrypt(); /** * @details Open dialog for decrypting file. */ void slotFileDecrypt(); /** * @details Open dialog for signing file. */ void slotFileSign(); /** * @details Open dialog for verifying file. */ void slotFileVerify(); /** * @details Open dialog for signing file. */ void slotFileEncryptSign(); /** * @details Open dialog for verifying file. */ void slotFileDecryptVerify(); private slots: /** * @details encrypt the text of currently active textedit-page * with the currently checked keys */ void slotEncrypt(); /** * @details encrypt and sign the text of currently active textedit-page * with the currently checked keys */ void slotEncryptSign(); /** * @details Show a passphrase dialog and decrypt the text of currently active * tab. */ void slotDecrypt(); /** * @details Sign the text of currently active tab with the checked private * keys */ void slotSign(); /** * @details Verify the text of currently active tab and show verify * information. If document is signed with a key, which is not in keylist, * show import missing key from keyserver in Menu of verifynotification. */ void slotVerify(); /** * @details decrypt and verify the text of currently active textedit-page * with the currently checked keys */ void slotDecryptVerify(); /** * @details Open dialog for encrypting file. */ void slotFileEncryptCustom(); /** * @details Open dialog for decrypting file. */ void slotFileDecryptCustom(); /** * @details Open dialog for signing file. */ void slotFileSignCustom(); /** * @details Open dialog for verifying file. */ void slotFileVerifyCustom(); /** * @details Show the details of the first of the first of selected keys */ void slotShowKeyDetails(); /** * @details Refresh key information of selected keys from default keyserver */ void refreshKeysFromKeyserver(); /** * @details upload the selected key to the keyserver */ void uploadKeyToServer(); /** * @details Open find widget. */ void slotFind(); /** * @details start the wizard */ void slotStartWizard(); /** * @details Import keys from currently active tab to keylist if possible. */ void slotImportKeyFromEdit(); /** * @details Append the selected keys to currently active textedit. */ void slotAppendSelectedKeys(); /** * @details Copy the mailaddress of selected key to clipboard. * Method for keylists contextmenu. */ void slotCopyMailAddressToClipboard(); /** * @details Open key management dialog. */ void slotOpenKeyManagement(); /** * @details Open about-dialog. */ void slotAbout(); /** * @details Open check-update-tab in about-dialog. */ void slotCheckUpdate(); /** * @details Open File Opera Tab */ void slotOpenFileTab(); /** * @details Open settings-dialog. */ void slotOpenSettingsDialog(); // /** // * @details Show a warn message in status bar, if there are files in // * attachment folder. // */ // void slotCheckAttachmentFolder(); /** * @details Replace double linebreaks by single linebreaks in currently active * tab. */ void slotCleanDoubleLinebreaks(); /** * @details Cut the existing PGP header and footer from current tab. */ void slotCutPgpHeader(); /** * @details Add PGP header and footer to current tab. */ void slotAddPgpHeader(); /** * @details Disable tab related actions, if number of tabs is 0. * @param number number of the opened tabs and -1, if no tab is opened */ void slotDisableTabActions(int number); /** * @details get value of member restartNeeded to needed. * @param needed true, if application has to be restarted */ void slotSetRestartNeeded(bool needed); /** * @details called when need to upgrade. */ void slotVersionUpgrade(const QString& currentVersion, const QString& latestVersion); private: /** * @details Create actions for the main-menu and the context-menu of the * keylist. */ void createActions(); /** * @details create the menu of the main-window. */ void createMenus(); /** * @details Create edit-, crypt- and key-toolbars. */ void createToolBars(); /** * @details Create statusbar of mainwindow. */ void createStatusBar(); /** * @details Create keylist- and attachment-dockwindows. */ void createDockWindows(); /** * @details Create attachment-dockwindow. */ void createAttachmentDock(); /** * @details close attachment-dockwindow. */ void closeAttachmentDock(); /** * @details Load settings from ini-file. */ void restoreSettings(); /** * @details Save settings to ini-file. */ void saveSettings(); #ifdef ADVANCE_SUPPORT /** * @details Get full crypto text */ QString getCryptText(const QString& shortenCryptoText); /** * @details Shorten crypto text */ void shortenCryptText(); #endif /** * @brief return true, if restart is needed */ [[nodiscard]] bool getRestartNeeded() const; TextEdit* edit; /** Tabwidget holding the edit-windows */ QMenu* fileMenu; /** Submenu for file-operations*/ QMenu* editMenu; /** Submenu for text-operations*/ QMenu* cryptMenu; /** Submenu for crypt-operations */ QMenu* fileEncMenu; /** Submenu for file crypt operations */ QMenu* helpMenu; /** Submenu for help-operations */ QMenu* keyMenu; /** Submenu for key-operations */ QMenu* viewMenu; /** Submenu for view operations */ QMenu* importKeyMenu; /** Sumenu for import operations */ QMenu* steganoMenu; /** Submenu for steganographic operations*/ QToolBar* cryptToolBar; /** Toolbar holding crypt actions */ QToolBar* fileToolBar; /** Toolbar holding file actions */ QToolBar* editToolBar; /** Toolbar holding edit actions */ QToolBar* specialEditToolBar; /** Toolbar holding special edit actions */ QToolBar* keyToolBar; /** Toolbar holding key operations */ QToolButton* importButton; /** Toolbutton for import dropdown menu in toolbar */ QToolButton* fileEncButton; /** Toolbutton for file cryption dropdown menu in toolbar */ QDockWidget* keyListDock; /** Encrypt Dock*/ QDockWidget* attachmentDock; /** Attachment Dock */ QDockWidget* infoBoardDock; QAction* newTabAct; /** Action to create new tab */ QAction* switchTabUpAct; /** Action to switch tab up*/ QAction* switchTabDownAct; /** Action to switch tab down */ QAction* openAct; /** Action to open file */ QAction* browserAct; /** Action to open file browser*/ QAction* saveAct; /** Action to save file */ QAction* saveAsAct; /** Action to save file as */ QAction* printAct; /** Action to print */ QAction* closeTabAct; /** Action to print */ QAction* quitAct; /** Action to quit application */ QAction* encryptAct; /** Action to encrypt text */ QAction* encryptSignAct; /** Action to encrypt and sign text */ QAction* decryptVerifyAct; /** Action to encrypt and sign text */ QAction* decryptAct; /** Action to decrypt text */ QAction* signAct; /** Action to sign text */ QAction* verifyAct; /** Action to verify text */ QAction* importKeyFromEditAct; /** Action to import key from edit */ QAction* cleanDoubleLinebreaksAct; /** Action to remove double line breaks */ QAction* appendSelectedKeysAct; /** Action to append selected keys to edit */ QAction* copyMailAddressToClipboardAct; /** Action to copy mail to clipboard */ QAction* openKeyManagementAct; /** Action to open key management */ QAction* copyAct; /** Action to copy text */ QAction* quoteAct; /** Action to quote text */ QAction* cutAct; /** Action to cut text */ QAction* pasteAct; /** Action to paste text */ QAction* selectAllAct; /** Action to select whole text */ QAction* findAct; /** Action to find text */ QAction* undoAct; /** Action to undo last action */ QAction* redoAct; /** Action to redo last action */ QAction* zoomInAct; /** Action to zoom in */ QAction* zoomOutAct; /** Action to zoom out */ QAction* aboutAct; /** Action to open about dialog */ QAction* checkUpdateAct; /** Action to open about dialog */ QAction* fileEncryptAct; /** Action to open dialog for encrypting file */ QAction* fileDecryptAct; /** Action to open dialog for decrypting file */ QAction* fileSignAct; /** Action to open dialog for signing file */ QAction* fileVerifyAct; /** Action to open dialog for verifying file */ QAction* openSettingsAct; /** Action to open settings dialog */ QAction* showKeyDetailsAct; /** Action to open key-details dialog */ QAction* refreshKeysFromKeyserverAct; /** Action to refresh a key from keyserver */ QAction* uploadKeyToServerAct; /** Action to append selected keys to edit */ QAction* startWizardAct; /** Action to open the wizard */ QAction* cutPgpHeaderAct; /** Action for cutting the PGP header */ QAction* addPgpHeaderAct; /** Action for adding the PGP header */ QLabel* statusBarIcon; /**< TODO */ KeyList* mKeyList; InfoBoardWidget* infoBoard; KeyMgmt* keyMgmt; KeyServerImportDialog* importDialog; /**< TODO */ QNetworkAccessManager* networkAccessManager; bool attachmentDockCreated; bool restartNeeded; }; } // namespace GpgFrontend::UI #endif // __GPGWIN_H__