diff --git a/eink.qrc b/eink.qrc
index dbeec80..fd2180a 100644
--- a/eink.qrc
+++ b/eink.qrc
@@ -66,5 +66,6 @@
resources/check-display.png
resources/hourglass-bottom.png
resources/hourglass-top.png
+ resources/error.png
diff --git a/encryptionmanager.cpp b/encryptionmanager.cpp
index a2bddce..5280181 100644
--- a/encryptionmanager.cpp
+++ b/encryptionmanager.cpp
@@ -24,9 +24,12 @@ encryptionManager::encryptionManager(QWidget *parent) :
ui->descriptionLabel->setStyleSheet("font-size: 9pt");
ui->successLabel->setStyleSheet("font-size: 15pt");
ui->successDescriptionLabel->setStyleSheet("font-size: 9pt");
+ ui->failureLabel->setStyleSheet("font-size: 15pt");
+ ui->failureDescriptionLabel->setStyleSheet("font-size: 9pt");
ui->setupContinueBtn->setStyleSheet("font-size: 10pt; padding: 10px; font-weight: bold; background: lightGrey");
ui->setupAbortBtn->setStyleSheet("font-size: 10pt; padding: 10px; font-weight: bold; background: lightGrey");
ui->exitSuccessBtn->setStyleSheet("background: lightGrey; border: 3px solid black; color: black; padding: 10px; outline: none; font-size: 10pt; font-weight: bold");
+ ui->failureContinueBtn->setStyleSheet("background: lightGrey; border: 3px solid black; color: black; padding: 10px; outline: none; font-size: 10pt; font-weight: bold");
// Getting the screen's size
float sW = QGuiApplication::screens()[0]->size().width();
@@ -47,10 +50,22 @@ encryptionManager::encryptionManager(QWidget *parent) :
QPixmap scaledPixmap = pixmap.scaled(stdIconWidth, stdIconHeight, Qt::KeepAspectRatio);
ui->checkImageLabel->setPixmap(scaledPixmap);
}
+ {
+ stdIconWidth = sW / 1.65;
+ stdIconHeight = sH / 1.65;
+ QPixmap pixmap(":/resources/error.png");
+ QPixmap scaledPixmap = pixmap.scaled(stdIconWidth, stdIconHeight, Qt::KeepAspectRatio);
+ ui->failureImageLabel->setPixmap(scaledPixmap);
+ }
hourglassAnimationWidgetWindow = new hourglassAnimationWidget();
ui->hourglassWidget->insertWidget(0, hourglassAnimationWidgetWindow);
ui->hourglassWidget->setCurrentIndex(0);
+
+ setDefaultWorkDir();
+ if(checkconfig(".config/18-encrypted_storage/initial_setup_done") == true) {
+ setupPassphraseDialog(1);
+ }
}
encryptionManager::~encryptionManager()
@@ -60,7 +75,16 @@ encryptionManager::~encryptionManager()
void encryptionManager::on_setupContinueBtn_clicked()
{
- ui->activityWidget->setCurrentIndex(3);
+ setupPassphraseDialog(0);
+}
+
+void encryptionManager::setupPassphraseDialog(int mode) {
+ /*
+ * Mode can be:
+ * 0: Initial setup
+ * 1: Normal behavior
+ */
+ ui->activityWidget->hide();
this->setStyleSheet("background-color: black");
global::keyboard::keyboardDialog = true;
global::keyboard::encfsDialog = true;
@@ -68,7 +92,12 @@ void encryptionManager::on_setupContinueBtn_clicked()
generalDialogWindow = new generalDialog();
generalDialogWindow->setAttribute(Qt::WA_DeleteOnClose);
connect(generalDialogWindow, SIGNAL(refreshScreen()), SLOT(refreshScreen()));
- connect(generalDialogWindow, SIGNAL(destroyed(QObject*)), SLOT(setupEncryptedStorage()));
+ if(mode == 0) {
+ connect(generalDialogWindow, SIGNAL(destroyed(QObject*)), SLOT(setupEncryptedStorage()));
+ }
+ else {
+ connect(generalDialogWindow, SIGNAL(destroyed(QObject*)), SLOT(unlockEncryptedStorage()));
+ }
connect(generalDialogWindow, SIGNAL(showToast(QString)), SLOT(showToast(QString)));
generalDialogWindow->show();
}
@@ -125,6 +154,28 @@ void encryptionManager::setupEncryptedStorage() {
t->start();
}
+void encryptionManager::unlockEncryptedStorage() {
+ this->setStyleSheet("background-color: white");
+ ui->activityWidget->show();
+ mkEncfsDirs();
+ std::string passphrase = global::encfs::passphrase.toStdString();
+ global::encfs::passphrase = "";
+ string_writeconfig("/external_root/run/encfs/encrypted_storage_archive", "/data/onboard/data.encfs");
+ string_writeconfig("/external_root/run/encfs/encrypted_storage_mountpoint", "/data/onboard/books");
+ string_writeconfig("/external_root/run/encfs/encrypted_storage_passphrase", passphrase);
+ bool exitStatus;
+ ui->activityWidget->setCurrentIndex(3);
+ QTimer * t = new QTimer(this);
+ t->setInterval(1000);
+ connect(t, &QTimer::timeout, [&]() {
+ if(QFile::exists("/external_root/run/encfs_mounted")) {
+ exitStatus = checkconfig("/external_root/run/encfs_mounted");
+ quit_restart();
+ }
+ } );
+ t->start();
+}
+
void encryptionManager::mkEncfsDirs() {
QDir encfsDir;
QString encfsPath("/external_root/run/encfs");
@@ -138,7 +189,9 @@ void encryptionManager::mkEncfsDirs() {
void encryptionManager::on_exitSuccessBtn_clicked()
{
-
+ setDefaultWorkDir();
+ string_writeconfig(".config/18-encrypted_storage/initial_setup_done", "true");
+ quit_restart();
}
void encryptionManager::setupExitWidget(bool exitStatus) {
@@ -152,7 +205,12 @@ void encryptionManager::setupExitWidget(bool exitStatus) {
}
setupExitWidgetRan = true;
}
- else {
- qDebug() << "setupExitWidgetRan";
- }
}
+
+void encryptionManager::on_failureContinueBtn_clicked()
+{
+ setDefaultWorkDir();
+ string_writeconfig(".config/18-encrypted_storage/initial_setup_done", "true");
+ quit_restart();
+}
+
diff --git a/encryptionmanager.h b/encryptionmanager.h
index 9312231..e660edb 100644
--- a/encryptionmanager.h
+++ b/encryptionmanager.h
@@ -29,6 +29,9 @@ private slots:
void mkEncfsDirs();
void on_exitSuccessBtn_clicked();
void setupExitWidget(bool exitStatus);
+ void on_failureContinueBtn_clicked();
+ void setupPassphraseDialog(int mode);
+ void unlockEncryptedStorage();
private:
Ui::encryptionManager *ui;
diff --git a/encryptionmanager.ui b/encryptionmanager.ui
index 2cdf26f..8cc10af 100644
--- a/encryptionmanager.ui
+++ b/encryptionmanager.ui
@@ -280,7 +280,129 @@ Would you like to enable it?
-
+
+
+ -
+
+
-
+
+
+
+ Inter
+ 75
+ true
+
+
+
+ There was an error
+
+
+ Qt::AlignCenter
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ Continue
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ Something wrong happened during the storage encryption process. Please try again later.
+
+
+ Qt::AlignCenter
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ Failure image
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
-
diff --git a/resources/error.png b/resources/error.png
new file mode 100644
index 0000000..0685b71
Binary files /dev/null and b/resources/error.png differ