X-Git-Url: https://vaikene.ee/gitweb/highlight.css?a=blobdiff_plain;f=src%2Fapps%2FPswGen%2FStorage%2Fmodule.h;h=68416f0034143a9feb7b06013359e2e7b094a3e0;hb=HEAD;hp=ae784e96c17105fd08929878fe448e6b00b1d619;hpb=4a856bc600d1819e01c797881e0591810737c2fd;p=evaf diff --git a/src/apps/PswGen/Storage/module.h b/src/apps/PswGen/Storage/module.h index ae784e9..68416f0 100644 --- a/src/apps/PswGen/Storage/module.h +++ b/src/apps/PswGen/Storage/module.h @@ -3,7 +3,7 @@ * @brief Implementation of the iStorage interface * @author Enar Vaikene * - * Copyright (c) 2011 Enar Vaikene + * Copyright (c) 2011-2019 Enar Vaikene * * This file is part of the eVaf C++ cross-platform application development framework. * @@ -21,6 +21,7 @@ # define __PSWGEN_STORAGE_MODULE_H #include "istorage.h" +#include "version.h" #include @@ -28,8 +29,8 @@ #include #include #include -#include +class QSqlDatabase; namespace eVaf { namespace PswGen { @@ -48,6 +49,8 @@ namespace Internal { class Module : public Plugins::iPlugin { Q_OBJECT + Q_INTERFACES(eVaf::Plugins::iPlugin) + Q_PLUGIN_METADATA(IID VER_MODULE_NAME_STR) public: @@ -110,7 +113,7 @@ public: QAbstractListModel methods */ - virtual int rowCount(QModelIndex const & parent) const { return mData.count(); } + virtual int rowCount(QModelIndex const &) const { return mData.count(); } virtual QVariant data(QModelIndex const & index, int role = Qt::DisplayRole) const; @@ -123,9 +126,6 @@ private: // Members /// Name of the database file without path static char const * const DbName; - /// Database connection - QSqlDatabase mDb; - /// List of name/data pairs QMap > mData; @@ -136,13 +136,23 @@ private: // Methods * Creates database tables if necessary * @return True if ok; false if failed */ - bool createTables(); + bool createTables(QSqlDatabase & db); + + /** + * Upgrades database tables if necessary + * @return True if ok; false if failed + * + * This function checks if database tables need to upgraded and + * performs the upgrade without a loss of data if possible. + * Returns false if upgrade is not possible or fails. + */ + bool upgradeTables(QSqlDatabase & db); /** * Loads data from the database * @return True if ok; false if failed */ - bool loadData(); + bool loadData(QSqlDatabase & db); };