From a1941ef19ec631bf25c883c541f6841f8e2d7252 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Enar=20V=C3=A4ikene?= Date: Tue, 26 Jul 2011 15:09:42 +0300 Subject: [PATCH] Added support for the iStorage interface. Non-sensitive data for password generator is stored using the iStorage interface. The name field uses an auto-completer with data from the Storage module. --- src/apps/PswGen/GUI/CMakeLists.txt | 5 +---- src/apps/PswGen/GUI/gui.cpp | 26 ++++++++++++++++++++++++++ src/apps/PswGen/GUI/gui.h | 4 ++++ 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/src/apps/PswGen/GUI/CMakeLists.txt b/src/apps/PswGen/GUI/CMakeLists.txt index fceaa2e..060625b 100644 --- a/src/apps/PswGen/GUI/CMakeLists.txt +++ b/src/apps/PswGen/GUI/CMakeLists.txt @@ -4,14 +4,11 @@ set(TARGET PswGui) # Qt modules include(${QT_USE_FILE}) -# Needed for exporting/importing symbols -add_definitions(-DPSWGEN_GUI_LIBRARY) - # Include files include_directories(${eVaf_INCLUDE}) # Required eVaf libraries -set(eVaf_LIBRARIES CommonLib PluginsLib SdiWindow PswGen) +set(eVaf_LIBRARIES CommonLib PluginsLib SdiWindow) # Source files set(SRCS diff --git a/src/apps/PswGen/GUI/gui.cpp b/src/apps/PswGen/GUI/gui.cpp index dad6f69..5ebbf10 100644 --- a/src/apps/PswGen/GUI/gui.cpp +++ b/src/apps/PswGen/GUI/gui.cpp @@ -21,6 +21,7 @@ #include "version.h" #include "Generator/iGenerator" +#include "Storage/iStorage" #include #include @@ -46,6 +47,7 @@ Module::Module() : Plugins::iPlugin() , mReady(false) , mGenerator(0) + , mStorage(0) { setObjectName(QString("%1.%2").arg(VER_MODULE_NAME_STR).arg(__FUNCTION__)); @@ -64,6 +66,11 @@ bool Module::init(QString const & args) // Get the iGenerator interface EVAF_TEST_X((mGenerator = evafQueryInterface("iGenerator")), "No iGenerator interface"); + // Get the iStorage interface (can be null) + mStorage = evafQueryInterface("iStorage"); + if (!mStorage) + EVAF_WARNING("No iStorage interface"); + // Get the main window interface and fill it with the widgets SdiWindow::iSdiWindow * win = evafQueryInterface("iSdiWindow"); EVAF_TEST_X(win, "No iSdiWindow interface"); @@ -81,6 +88,12 @@ bool Module::init(QString const & args) wName = new QLineEdit; l->setBuddy(wName); + if (mStorage) { + QCompleter * completer = new QCompleter(wName); + completer->setModel(mStorage->autoCompletionModel()); + completer->setCompletionMode(QCompleter::InlineCompletion); + wName->setCompleter(completer); + } connect(wName, SIGNAL(textChanged(QString)), this, SLOT(textChanged(QString))); g->addWidget(wName, 0, 1, 1, 2); win->widget()->setFocusProxy(wName); @@ -158,6 +171,11 @@ void Module::done() void Module::textChanged(QString const &) { wGenerate->setDisabled(wMasterPassword->text().isEmpty() || wName->text().isEmpty()); + if (!wName->text().isEmpty() && mStorage) { + QExplicitlySharedDataPointer data = mStorage->query(wName->text()); + if (data) + wLength->setValue(data->length()); + } } void Module::generateClicked() @@ -166,6 +184,14 @@ void Module::generateClicked() return; wPassword->setText(mGenerator->generatePassword(wName->text(), wMasterPassword->text(), wLength->value())); wCopy->setEnabled(true); + if (mStorage) { + QExplicitlySharedDataPointer data = mStorage->query(wName->text()); + if (!data) + data = new Storage::Data(wLength->value()); + else + data->setLength(wLength->value()); + mStorage->save(wName->text(), data); + } } void Module::copyClicked() diff --git a/src/apps/PswGen/GUI/gui.h b/src/apps/PswGen/GUI/gui.h index 6f04019..3590342 100644 --- a/src/apps/PswGen/GUI/gui.h +++ b/src/apps/PswGen/GUI/gui.h @@ -32,6 +32,7 @@ class QPushButton; namespace eVaf { namespace PswGen { class iGenerator; + class iStorage; namespace GUI { /** @@ -78,6 +79,9 @@ private: // Members /// The iGenerator interface eVaf::PswGen::iGenerator * mGenerator; + /// The iStorage interface (can be null) + eVaf::PswGen::iStorage * mStorage; + /// Widgets on the screen QLineEdit * wName; QLineEdit * wMasterPassword; -- 2.45.0