1 #ifndef USERDATADBMGR_H 2 #define USERDATADBMGR_H 3 4 #include <QObject> 5 #include <QSqlDatabase> 6 #include <QSqlDriver> 7 #include <QString> 8 #include <QStringList> 9 #include <QList> 10 #include <QHash> 11 12 class UserDataDatabaseManager : public QObject 13 { 14 Q_OBJECT 15 16 public: 17 explicit UserDataDatabaseManager(QObject *parent); 18 ~UserDataDatabaseManager(); 19 20 QString emulatorVersion(); 21 void setEmulatorVersion(QString emu_version); 22 QString qmc2Version(); 23 void setQmc2Version(QString qmc2_version); 24 int userDataVersion(); 25 void setUserDataVersion(int userdata_version); 26 int rank(QString id); 27 int rank(int rowid); 28 void setRank(QString id, int rank); 29 QString comment(QString id); 30 QString comment(int rowid); 31 void setComment(QString id, QString comment); 32 QString &id(int rowid); 33 bool exists(QString id); 34 void cleanUp(); 35 void remove(QString id); 36 37 void setHiddenLists(QString id, QStringList lists); 38 QStringList hiddenLists(QString id); 39 void removeHiddenLists(QString id); 40 41 void setListFavorites(QString id, QStringList favorites); 42 QStringList listFavorites(QString id); 43 void removeListFavorites(QString id); 44 45 void setDeviceConfigs(QString id, QStringList device_configs); 46 QStringList deviceConfigs(QString id); 47 void removeDeviceConfigs(QString id); 48 49 void setSelectedSoftware(QString id, QString softwareList, QString softwareName); 50 bool getSelectedSoftware(QString id, QString *softwareList, QString *softwareName); 51 void removeSelectedSoftware(QString id); 52 logActive()53 bool logActive() { return m_logActive; } setLogActive(bool enable)54 void setLogActive(bool enable) { m_logActive = enable; } 55 56 qint64 userDataRowCount(); 57 qint64 nextRowId(bool refreshRowIds = false); 58 rankCacheComplete()59 bool rankCacheComplete() { return userDataRowCount() == m_rankCache.count(); } 60 void fillUpRankCache(); rankCache()61 QHash<QString, int> &rankCache() { return m_rankCache; } commentCacheComplete()62 bool commentCacheComplete() { return userDataRowCount() == m_commentCache.count(); } 63 void fillUpCommentCache(); commentCache()64 QHash<QString, QString> &commentCache() { return m_commentCache; } 65 66 void setSystemManualPath(const QString &id, const QString &path); 67 QString systemManualPath(const QString &id); 68 QStringList systemManualPaths(const QString &id); 69 void setSoftwareManualPath(const QString &list, const QString &id, const QString &path); 70 QString softwareManualPath(const QString &list, const QString &id); 71 QStringList softwareManualPaths(const QString &list, const QString &id); 72 connectionName()73 QString connectionName() { return m_connectionName; } databasePath()74 QString databasePath() { return m_db.databaseName(); } 75 quint64 databaseSize(); 76 void setCacheSize(quint64 kiloBytes); 77 void setSyncMode(uint syncMode); 78 void setJournalMode(uint journalMode); 79 80 QStringList columnNames(QString tableName); 81 82 public slots: 83 void recreateDatabase(); beginTransaction()84 void beginTransaction() { m_db.driver()->beginTransaction(); } commitTransaction()85 void commitTransaction() { m_db.driver()->commitTransaction(); } clearRankCache()86 void clearRankCache() { m_rankCache.clear(); } clearCommentCache()87 void clearCommentCache() { m_commentCache.clear(); } 88 void recreateSoftListTable(); 89 void recreateSystemManualTable(); 90 void recreateSoftwareManualTable(); 91 92 private: 93 void addSoftListFavoritesColumn(); 94 void addSoftListDeviceConfigsColumn(); 95 void addSoftListSelectedSoftwareColumn(); 96 void renameSoftListTable(); 97 98 mutable QSqlDatabase m_db; 99 QString m_tableBasename; 100 QString m_tableBasenameSL; 101 QString m_oldTableBasenameSL; 102 QString m_tableBasenameSystemManuals; 103 QString m_tableBasenameSoftwareManuals; 104 QString m_connectionName; 105 QString m_idString; 106 bool m_logActive; 107 QList<qint64> m_rowIdList; 108 qint64 m_lastRowId; 109 QHash<QString, int> m_rankCache; 110 QHash<QString, QString> m_commentCache; 111 }; 112 113 #endif 114