aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui/MainWindow.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/MainWindow.h')
-rw-r--r--src/ui/MainWindow.h425
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__