This repository has been archived on 2026-07-02. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
PasswordEncryption/MainWindow.cpp
amazing-username 353a1dfef1 Solution to issue #6
2017-08-12 17:02:43 -05:00

118 lines
4.2 KiB
C++

#include<iostream>
#include<QString>
#include"MainWindow.h"
#include"Encryption.h"
#include"Decryption.h"
#include"KeyRetrieval.h"
#include"FileNameRetrieval.h"
#include"FolderStructure.h"
MainWindow::MainWindow()
{
kh = unique_ptr<KeyManagementWindow>{new KeyManagementWindow};
ph = unique_ptr<PasswordManagementWindow>{new PasswordManagementWindow};
setupMainWindow();
}
void MainWindow::setupMainWindow()
{
windowHeight = 450;
windowWidth = 450;
textForCryption = unique_ptr<QTextEdit>{new QTextEdit{}};
actionButton = unique_ptr<QPushButton>{new QPushButton(tr("encrypt"))};
selectionBox = unique_ptr<QComboBox>{new QComboBox{}};
buttonLayout = unique_ptr<QVBoxLayout>{new QVBoxLayout};
buttonWidget = unique_ptr<QWidget>{new QWidget};
buttonDockWidget = unique_ptr<QDockWidget>{new QDockWidget};
buttonDockWidget.get()->setWindowTitle(tr("Cryption Controls"));
buttonLayout.get()->addWidget(selectionBox.get());
buttonLayout.get()->addWidget(actionButton.get());
buttonWidget.get()->setLayout(buttonLayout.get());
buttonDockWidget.get()->setWidget(buttonWidget.get());
buttonDockWidget.get()->setFeatures(QDockWidget::NoDockWidgetFeatures);
setCentralWidget(buttonDockWidget.get());
cryptionArea = unique_ptr<QDockWidget>{new QDockWidget(tr("Cryption"))};
cryptionArea.get()->setWidget(textForCryption.get());
cryptionArea.get()->setFeatures(QDockWidget::NoDockWidgetFeatures);
addDockWidget(Qt::LeftDockWidgetArea, cryptionArea.get());
createMenus();
setupContentOfComboBox();
setWindowTitle("Encryption Decryption Messaging");
setFixedHeight(windowHeight);
setFixedWidth(windowWidth);
actionButton.get()->setEnabled(false);
connections();
}
void MainWindow::setupContentOfComboBox()
{
selectionBox.get()->clear();
FileNameRetrieval fnr;
fnr.retrieveFileNames();
std::vector<std::string> fn{fnr.fileNameContainer()};
for (auto fle: fn)
{
QString bl{QString::fromStdString(fle)};
selectionBox.get()->addItem(bl);
}
}
void MainWindow::createMenus()
{
fileMenu = unique_ptr<QMenu>{menuBar()->addMenu(tr("File"))};
editMenu = unique_ptr<QMenu>{menuBar()->addMenu(tr("Edit"))};
closeApplication = unique_ptr<QAction>{new QAction(new QObject(nullptr))};
closeApplication.get()->setText("Exit Application");
keyEdit = unique_ptr<QAction>{new QAction(new QObject(nullptr))};
keyEdit.get()->setText("Key Management");
passwordManage = unique_ptr<QAction>{new QAction{new QObject{nullptr}}};
passwordManage.get()->setText("PasswordManagement");
fileMenu.get()->addAction(closeApplication.get());
editMenu.get()->addAction(keyEdit.get());
editMenu.get()->addAction(passwordManage.get());
}
void MainWindow::connections()
{
QObject::connect(closeApplication.get(), SIGNAL(triggered()), this, SLOT(exitApplication()));
QObject::connect(keyEdit.get(), SIGNAL(triggered()), this, SLOT(keyManagementWindow()));
QObject::connect(passwordManage.get(), SIGNAL(triggered()), this, SLOT(passwordManageWindow()));
QObject::connect(actionButton.get(), SIGNAL(clicked()), this, SLOT(encryptPassword()));
QObject::connect(textForCryption.get(), SIGNAL(textChanged()), this, SLOT(activateButton()));
}
void MainWindow::encryptPassword()
{
QString passwordToEncrypt{textForCryption.get()->toPlainText()}, keyForEncryption{selectionBox.get()->currentText()};
auto passwordToEncryptString = passwordToEncrypt.toStdString(), keyForEncryptionString = FolderStructure::keyDirectory+keyForEncryption.toStdString();
std::cout<<"Will encrypt \""<<passwordToEncryptString<<"\""<<std::endl;
std::cout<<"With key \""<<keyForEncryptionString<<"\""<<std::endl;
std::cout<<"Encrypting..."<<std::endl;
Encryption ec{passwordToEncryptString, keyForEncryptionString};
std::cout<<"Encrypted"<<std::endl;
}
void MainWindow::keyManagementWindow() { kh.get()->show(); }
void MainWindow::passwordManageWindow() { ph.get()->show(); }
void MainWindow::exitApplication() { exit(0); }
std::string MainWindow::grabCryptionText()
{
auto placeHolder = textForCryption.get()->toPlainText();
return placeHolder.toStdString();
}
void MainWindow::activateButton()
{
QString content{textForCryption.get()->toPlainText()};
if (content.size()>0 && selectionBox.get()->count()>0) actionButton.get()->setEnabled(true);
else actionButton.get()->setEnabled(false);
}