diff options
Diffstat (limited to '')
-rw-r--r-- | src/ui/MainWindow.h | 425 |
1 files changed, 425 insertions, 0 deletions
diff --git a/src/ui/MainWindow.h b/src/ui/MainWindow.h new file mode 100644 index 00000000..333ee971 --- /dev/null +++ b/src/ui/MainWindow.h @@ -0,0 +1,425 @@ +/** + * 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 <https://www.gnu.org/licenses/>. + * + * 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<[email protected]> starting on May 12, 2021. + * + */ + +#ifndef __GPGWIN_H__ +#define __GPGWIN_H__ + +#include "gpg/GpgConstants.h" +#include "ui/FileEncryptionDialog.h" +#include "ui/FindWidget.h" +#include "ui/GpgFrontendUI.h" +#include "ui/KeyMgmt.h" +#include "ui/KeyUploadDialog.h" +#include "ui/SettingsDialog.h" +#include "ui/WaitingDialog.h" +#include "ui/Wizard.h" +#include "ui/help/AboutDialog.h" +#include "ui/widgets/InfoBoardWidget.h" +#include "ui/widgets/TextEdit.h" + +#include "gpg/result_analyse/DecryptResultAnalyse.h" +#include "gpg/result_analyse/EncryptResultAnalyse.h" +#include "gpg/result_analyse/SignResultAnalyse.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(); + + /** + * @details Get full crypto text + */ + QString getCryptText(const QString& shortenCryptoText); + + /** + * @details Shorten crypto text + */ + void shortenCryptText(); + + /** + * @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 */ + + QString appPath; + QSettings settings; + KeyList* mKeyList; + + InfoBoardWidget* infoBoard; + KeyMgmt* keyMgmt; + KeyServerImportDialog* importDialog; /**< TODO */ + + QNetworkAccessManager* networkAccessManager; + + bool attachmentDockCreated; + bool restartNeeded; +}; + +} // namespace GpgFrontend::UI + +#endif // __GPGWIN_H__ |