diff --git a/src/CipherDialog.cpp b/src/CipherDialog.cpp index 035db19c..68471f3e 100644 --- a/src/CipherDialog.cpp +++ b/src/CipherDialog.cpp @@ -27,12 +27,12 @@ CipherDialog::~CipherDialog() delete ui; } -QString CipherDialog::password() +QString CipherDialog::password() const { return ui->editPassword->text(); } -int CipherDialog::pageSize() +int CipherDialog::pageSize() const { return ui->spinPageSize->value(); } diff --git a/src/CipherDialog.h b/src/CipherDialog.h index 646ba869..999adc8c 100644 --- a/src/CipherDialog.h +++ b/src/CipherDialog.h @@ -18,8 +18,8 @@ public: ~CipherDialog(); // Allow read access tothe input fields - QString password(); - int pageSize(); + QString password() const; + int pageSize() const; private: Ui::CipherDialog* ui; diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 3c028a13..74e90dab 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -133,6 +133,13 @@ void MainWindow::init() statusEncodingLabel->setToolTip(tr("Database encoding")); ui->statusbar->addPermanentWidget(statusEncodingLabel); + statusEncryptionLabel = new QLabel(ui->statusbar); + statusEncryptionLabel->setEnabled(false); + statusEncryptionLabel->setVisible(false); + statusEncryptionLabel->setText("Encrypted"); + statusEncryptionLabel->setToolTip(tr("Database is encrypted using SQLCipher")); + ui->statusbar->addPermanentWidget(statusEncryptionLabel); + // Connect some more signals and slots connect(ui->dataTable->filterHeader(), SIGNAL(sectionClicked(int)), this, SLOT(browseTableHeaderClicked(int))); connect(ui->dataTable->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(setRecordsetLabel())); @@ -204,6 +211,7 @@ bool MainWindow::fileOpen(const QString& fileName, bool dontAddToRecentFiles) if(db.open(wFile)) { statusEncodingLabel->setText(db.getPragma("encoding")); + statusEncryptionLabel->setVisible(db.encrypted()); setCurrentFile(wFile); if(!dontAddToRecentFiles) addToRecentFilesMenu(wFile); @@ -408,6 +416,7 @@ void MainWindow::fileClose() resetBrowser(); populateStructure(); loadPragmas(); + statusEncryptionLabel->setVisible(false); // Delete the model for the Browse tab and create a new one delete m_browseTableModel; diff --git a/src/MainWindow.h b/src/MainWindow.h index 75faa08f..9440f985 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -73,6 +73,7 @@ private: QMenu *recentFilesMenu; QLabel* statusEncodingLabel; + QLabel* statusEncryptionLabel; SQLiteSyntaxHighlighter* sqliteHighlighterLogUser; SQLiteSyntaxHighlighter* sqliteHighlighterLogApp; diff --git a/src/sqlitedb.cpp b/src/sqlitedb.cpp index cffc4dd7..9f2649f2 100644 --- a/src/sqlitedb.cpp +++ b/src/sqlitedb.cpp @@ -54,6 +54,8 @@ bool DBBrowserDB::open(const QString& db) lastErrorMessage = QObject::tr("no error"); + isEncrypted = false; + // Open database file if(sqlite3_open_v2(db.toUtf8(), &_db, SQLITE_OPEN_READWRITE, NULL) != SQLITE_OK) { @@ -78,9 +80,11 @@ bool DBBrowserDB::open(const QString& db) { sqlite3_key(_db, cipher.password().toUtf8(), cipher.password().toUtf8().length()); sqlite3_exec(_db, QString("PRAGMA cipher_page_size = %1;").arg(cipher.pageSize()).toUtf8(), NULL, NULL, NULL); + isEncrypted = true; } else { sqlite3_close(_db); _db = 0; + isEncrypted = false; return false; } #else diff --git a/src/sqlitedb.h b/src/sqlitedb.h index 86385ced..425cacba 100644 --- a/src/sqlitedb.h +++ b/src/sqlitedb.h @@ -104,6 +104,7 @@ public: objectMap getBrowsableObjects() const; DBBrowserObject getObjectByName(const QString& name) const; bool isOpen() const; + bool encrypted() const { return isEncrypted; } bool getDirty() const; void logSQL(QString statement, int msgtype); @@ -127,6 +128,8 @@ signals: private: QStringList savepointList; + + bool isEncrypted; }; #endif