summaryrefslogtreecommitdiffstats
path: root/src/mainwindow.h
diff options
context:
space:
mode:
authorStefan Suhren <suhren.stefan@fh-swf.de>2015-03-25 10:15:50 +0100
committerStefan Suhren <suhren.stefan@fh-swf.de>2015-03-25 10:33:32 +0100
commita1e3d36dca9c6abf235c7ddf47ab9185c4b748d5 (patch)
tree859befb5df101432b7388e1562f90a01c6d8e238 /src/mainwindow.h
downloadIT-Sicherheit-a1e3d36dca9c6abf235c7ddf47ab9185c4b748d5.tar.gz
IT-Sicherheit-a1e3d36dca9c6abf235c7ddf47ab9185c4b748d5.zip
First commit of IT-Sicherheit
Diffstat (limited to 'src/mainwindow.h')
-rw-r--r--src/mainwindow.h296
1 files changed, 296 insertions, 0 deletions
diff --git a/src/mainwindow.h b/src/mainwindow.h
new file mode 100644
index 0000000..9352e0f
--- /dev/null
+++ b/src/mainwindow.h
@@ -0,0 +1,296 @@
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QMainWindow>
+#include <QPlainTextEdit>
+#include <QMenu>
+#include <QActionGroup>
+#include <QMessageBox>
+#include <QFile>
+
+#include "tabwidgetselectalgorithm.h"
+#include "crypt/cryptengine.h"
+#include "dialogload.h"
+#include "dialogsave.h"
+
+namespace Ui {
+class MainWindow;
+}
+
+
+
+
+/**
+* \class MainWindow
+* \brief Class for the Application's MainWindow.
+*
+* This Class encapsulates the GUI-functionality (Menu, Buttons, Edits and their connections).
+* The Attribute m_cryptEngine provides an interface to all crypt-related functionality.
+* [m_cryptEngine is a QObject and thus can be connected via Signals and Slots]
+* \author Uwe Gogolin [Gogolin.Uwe@FH-SWF.de]
+* \version 1.0.1
+* \date 13.05.2013
+*/
+class MainWindow : public QMainWindow
+{
+ Q_OBJECT
+
+public: //Methods
+ /**
+ * \brief Class Constructor.
+ *
+ * Class Constructor. Initializes Graphical Elements of the Widget and sets the Window's Title.
+ * A new cryptEngine is created (m_cryptEngine).
+ * Menu actions for the four kinds of Ciphers are grouped in the actionGroup m_actionGroupAlgorithm to enable
+ * exclusive selection.
+ * The TabWidgetSelectAlgorithm's Signal "currentTabChanged(QString)" is connected to the Slot "oncurrentTabChanged_triggered(QString)",
+ * so that the currently active Tab corresponds to what action is selected in the menu.
+ * \param QWidget* parent The QWidget the used instance of this class is subordinated to (0, since this is the MainWindow).
+ */
+ MainWindow(QWidget *parent = 0);
+
+
+ /**
+ * \brief Class Destructor.
+ *
+ * Class Destructor. Deletes CryptEngine and the ui-Object containing the graphical Elements.
+ */
+ ~MainWindow();
+
+
+
+private: //Attributes
+ /**
+ * \brief Pointer to GUI-Object.
+ */
+ Ui::MainWindow* ui;
+
+
+ /**
+ * \brief Pointer to the instance of the Crypt-Interface-Class.
+ */
+ CryptEngine* m_cryptEngine;
+
+
+ /**
+ * \brief Actiongroup used to group the menu-actions for the four kinds of Ciphers.
+ */
+ QActionGroup* m_actionGroupAlgorithm;
+
+
+
+private: //Methods
+ /**
+ * \brief Method to put Text from a File into a QPlainTextEdit.
+ *
+ * \param QPlainTextEdit* destination Text will be inserted here.
+ */
+ void setDataToPlainTextEditUnencrypted( QString text );
+
+ /**
+ * \brief Method to put Text from a File into a QPlainTextEdit.
+ *
+ * \param QPlainTextEdit* destination Text will be inserted here.
+ */
+ void setDataToPlainTextEditEncrypted( QString text );
+
+
+
+ /**
+ * \brief Method to put Text from a File into a QPlainTextEdit.
+ *
+ * Reads all Text from File and puts it into the given QPlainTextEdit.
+ * \param QPlainTextEdit* destination Text will be inserted here.
+ * \param QFile* source Text will be read from here.
+ */
+ void setPlainTextFromFile( QPlainTextEdit* destination, QFile* source );
+
+
+ /**
+ * \brief Method to put Binary Data from a File into a Subclass of QPlainTextEdit.
+ *
+ * Reads all data from File and puts it into the given QPlainTextEdit.
+ * \param QPlainTextEdit* destination Data will be inserted here.
+ * \param QFile* source Data will be read from here.
+ * \attention THIS METHOD IS NOT IMPLEMENTED YET
+ */
+ void setBinaryDataFromFile( QPlainTextEdit* destination, QFile* source );
+
+
+ /**
+ * \brief Method to write Text from a QPlainTextEdit into a File.
+ *
+ * Writes all Text from QPlainTextEdit and puts it into the given File.
+ * \param QPlainTextEdit* source Text will be read from here.
+ * \param QFile* destination Text will be read from here.
+ */
+ void writePlainTextToFile( QPlainTextEdit* source, QFile* destination );
+
+
+ /**
+ * \brief Method to write Binary Data into a File.
+ *
+ * Writes all data into File.
+ * \param QPlainTextEdit* source Text will be inserted here.
+ * \param QFile* destination Text will be read from here.
+ * \attention THIS METHOD IS NOT IMPLEMENTED YET
+ */
+ void writeBinaryDataToFile( QPlainTextEdit* source, QFile* destination );
+
+
+
+private slots:
+ //actions
+ /**
+ * \brief Slot for the Load Action.
+ *
+ * Opens a Dialog for selection of the file to open.
+ */
+ void on_actionLoad_triggered();
+
+
+ /**
+ * \brief Slot for the Save Action.
+ *
+ * Opens a Dialog for selection of the file to save.
+ */
+ void on_actionSave_triggered();
+
+
+ /**
+ * \brief Slot for the Exit Action.
+ *
+ * Closes the application.
+ */
+ void on_actionExit_triggered();
+
+
+ /**
+ * \brief Slot for the About Action.
+ *
+ * Opens a Message Box displaying basic Information about the application.
+ */
+ void on_actionAbout_triggered();
+
+
+
+ //crypt actions
+ /**
+ * \brief Slot for the NullCipher Action.
+ *
+ * Sets the active kind of algorithm to NullCipher. The instance of the TabWidgetSelectAlgorithm's Tab for NullCipher
+ * will be set active as well.
+ */
+ void on_actionNullCipher_triggered();
+
+
+ /**
+ * \brief Slot for the Symmetric Action.
+ *
+ * Sets the active kind of algorithm to Symmetric Ciphers. The instance of the TabWidgetSelectAlgorithm's Tab for Symmetric Ciphers
+ * will be set active as well.
+ */
+ void on_actionSymmetric_triggered();
+
+
+ /**
+ * \brief Slot for the Asymmetric Action.
+ *
+ * Sets the active kind of algorithm to Asymmetric Ciphers. The instance of the TabWidgetSelectAlgorithm's Tab for Asymmetric Ciphers
+ * will be set active as well.
+ */
+ void on_actionAsymmetric_triggered();
+
+
+ /**
+ * \brief Slot for the Hybrid Action.
+ *
+ * Sets the active kind of algorithm to Hybrid Ciphers. The instance of the TabWidgetSelectAlgorithm's Tab for Hybrid Ciphers
+ * will be set active as well.
+ */
+ void on_actionHybrid_triggered();
+
+
+ void on_actionUnencrypted_as_Text_triggered(bool checked);
+ void on_actionUnencrypted_as_Binary_triggered(bool checked);
+ void on_actionEncrypted_as_Text_triggered(bool checked);
+ void on_actionEncrypted_as_Binary_triggered(bool checked);
+
+ //rest gui
+ /**
+ * \brief Slot for the Button which tells the CryptEngine to generate a new Password.
+ *
+ * Calls the generatePassword Method of class CryptEngine.
+ * \attention This Method may do nothing depending on the Algorithm in use.
+ * \see CryptEngine::generatePassword
+ */
+ void on_pushButtonGeneratePassword_clicked();
+
+
+ /**
+ * \brief Slot for the Clear Button for QPlainTextEdit for Unencrpted Data.
+ *
+ * Calls the clear-method of the QPlainTextEdit for Unencrypted Data.
+ */
+ void on_pushButtonClearUnencrypted_clicked();
+
+
+ /**
+ * \brief Slot for the Clear Button for QPlainTextEdit for Encrpted Data.
+ *
+ * Calls the clear-method of the QPlainTextEdit for Encrypted Data.
+ */
+ void on_pushButtonClearEncrypted_clicked();
+
+
+ /**
+ * \brief Slot for the Encrypt Button.
+ *
+ * Calls the encrypt-method of m_CryptEngine, encrypting CryptText using the currently selected algorithm and key.
+ */
+ void on_pushButtonEncrypt_clicked();
+
+
+ /**
+ * \brief Slot for the Decrypt Button.
+ *
+ * Calls the decrypt-method of m_CryptEngine, decrypting CryptText using the currently selected algorithm and key.
+ */
+ void on_pushButtonDecrypt_clicked();
+
+
+ /**
+ * \brief Slot for the Load Button.
+ *
+ * Opens a Dialog for selection of the file to open by calling on_actionLoad_triggered().
+ */
+ void on_pushButtonLoad_clicked();
+
+
+ /**
+ * \brief Slot for the Save Button.
+ *
+ * Opens a Dialog for selection of the file to save by calling on_actionSave_triggered().
+ */
+ void on_pushButtonSave_clicked();
+
+
+
+ //rest/ other
+ /**
+ * \brief Slot called when the instance of TabWidgetSelectAlgorithm changes the active Tab.
+ *
+ * Changes the currently selected Menu-Action (what kind of encryption) according to the newly active Tab.
+ */
+ void oncurrentTabChanged_triggered( QString currentTabName );
+
+
+ /**
+ * \brief Slot called to change PlainTextEdits from Binary to PlainText when a new algorithm is selected.
+ *
+ * Sets both PlainttextEdits to whatever the newly selected algorithm needs.
+ */
+ void ondataIsBinary_triggered( bool dataIsBinary );
+};
+
+#endif // MAINWINDOW_H