From 6bc7b9796b1cce88201dbc3bd0b99467d755f9e7 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Wed, 19 Jan 2022 11:37:28 +0100 Subject: [PATCH] smaller "margins" when multilining items --- src/librssguard/core/messagesmodel.cpp | 2 +- src/librssguard/database/databasedriver.cpp | 38 +++++++++++++ src/librssguard/database/databasedriver.h | 6 +++ src/librssguard/database/mariadbdriver.cpp | 47 +++------------- src/librssguard/database/mariadbdriver.h | 4 +- src/librssguard/database/sqlitedriver.cpp | 60 ++++++--------------- src/librssguard/database/sqlitedriver.h | 2 +- 7 files changed, 69 insertions(+), 90 deletions(-) diff --git a/src/librssguard/core/messagesmodel.cpp b/src/librssguard/core/messagesmodel.cpp index 42d938e7e..4de9661f6 100644 --- a/src/librssguard/core/messagesmodel.cpp +++ b/src/librssguard/core/messagesmodel.cpp @@ -441,7 +441,7 @@ QVariant MessagesModel::data(const QModelIndex& idx, int role) const { } QFontMetrics fm(data(idx, Qt::ItemDataRole::FontRole).value()); - auto rct = fm.boundingRect(QRect(QPoint(0, 0), QPoint(wd - 20, 100000)), + auto rct = fm.boundingRect(QRect(QPoint(0, 0), QPoint(wd - 10, 100000)), Qt::TextFlag::TextWordWrap | Qt::AlignmentFlag::AlignLeft | Qt::AlignmentFlag::AlignVCenter, diff --git a/src/librssguard/database/databasedriver.cpp b/src/librssguard/database/databasedriver.cpp index 034cdbc8a..a86a55f31 100644 --- a/src/librssguard/database/databasedriver.cpp +++ b/src/librssguard/database/databasedriver.cpp @@ -8,10 +8,48 @@ #include #include +#include +#include DatabaseDriver::DatabaseDriver(QObject* parent) : QObject(parent) {} +bool DatabaseDriver::updateDatabaseSchema(QSqlQuery& query, + int source_db_schema_version, + const QString& database_name) { + const int current_version = QSL(APP_DB_SCHEMA_VERSION).toInt(); + + while (source_db_schema_version != current_version) { + try { + const QStringList statements = prepareScript(APP_SQL_PATH, + QSL(APP_DB_UPDATE_FILE_PATTERN).arg(ddlFilePrefix(), + QString::number(source_db_schema_version), + QString::number(source_db_schema_version + 1)), + database_name); + + for (const QString& statement : statements) { + if (!query.exec(statement) && query.lastError().isValid()) { + throw ApplicationException(query.lastError().text()); + } + } + } + catch (const ApplicationException& ex) { + qFatal("Error when running SQL scripts: %s.", qPrintable(ex.message())); + } + + // Increment the version. + qDebugNN << LOGSEC_DB + << "Updating database schema " + << QUOTE_W_SPACE(source_db_schema_version) + << "->" + << QUOTE_W_SPACE_DOT(source_db_schema_version + 1); + + source_db_schema_version++; + } + + return true; +} + QStringList DatabaseDriver::prepareScript(const QString& base_sql_folder, const QString& sql_file, const QString& database_name) { diff --git a/src/librssguard/database/databasedriver.h b/src/librssguard/database/databasedriver.h index 3a1c6551b..56823b044 100644 --- a/src/librssguard/database/databasedriver.h +++ b/src/librssguard/database/databasedriver.h @@ -6,6 +6,7 @@ #include #include +#include class DatabaseDriver : public QObject { Q_OBJECT @@ -31,6 +32,7 @@ class DatabaseDriver : public QObject { virtual QString location() const = 0; virtual QString humanDriverType() const = 0; virtual QString qtDriverCode() const = 0; + virtual QString ddlFilePrefix() const = 0; virtual DriverType driverType() const = 0; virtual QString autoIncrementPrimaryKey() const = 0; virtual QString blob() const = 0; @@ -44,6 +46,10 @@ class DatabaseDriver : public QObject { DatabaseDriver::DesiredStorageType desired_type = DatabaseDriver::DesiredStorageType::FromSettings) = 0; protected: + bool updateDatabaseSchema(QSqlQuery& query, + int source_db_schema_version, + const QString& database_name = {}); + QStringList prepareScript(const QString& base_sql_folder, const QString& sql_file, const QString& database_name = {}); diff --git a/src/librssguard/database/mariadbdriver.cpp b/src/librssguard/database/mariadbdriver.cpp index 777847ec1..cd81977e0 100644 --- a/src/librssguard/database/mariadbdriver.cpp +++ b/src/librssguard/database/mariadbdriver.cpp @@ -13,6 +13,10 @@ MariaDbDriver::MariaDbDriver(QObject* parent) : DatabaseDriver(parent), m_databaseInitialized(false) {} +QString MariaDbDriver::ddlFilePrefix() const { + return QSL("mysql"); +} + MariaDbDriver::MariaDbError MariaDbDriver::testConnection(const QString& hostname, int port, const QString& w_database, const QString& username, const QString& password) { @@ -189,9 +193,9 @@ QSqlDatabase MariaDbDriver::initializeDatabase(const QString& connection_name) { else { // Database was previously initialized. Now just check the schema version. query_db.next(); - const QString installed_db_schema = query_db.value(0).toString(); + const int installed_db_schema = query_db.value(0).toString().toInt(); - if (installed_db_schema.toInt() < QSL(APP_DB_SCHEMA_VERSION).toInt()) { + if (installed_db_schema < QSL(APP_DB_SCHEMA_VERSION).toInt()) { if (updateDatabaseSchema(query_db, installed_db_schema, database_name)) { qDebugNN << LOGSEC_DB << "Database schema was updated from" @@ -202,7 +206,7 @@ QSqlDatabase MariaDbDriver::initializeDatabase(const QString& connection_name) { } else { qFatal("Database schema was not updated from '%s' to '%s' successully.", - qPrintable(installed_db_schema), + qPrintable(QString::number(installed_db_schema)), APP_DB_SCHEMA_VERSION); } } @@ -220,43 +224,6 @@ void MariaDbDriver::setPragmas(QSqlQuery& query) { query.exec(QSL("SET CHARACTER SET utf8mb4;")); } -bool MariaDbDriver::updateDatabaseSchema(QSqlQuery& query, - const QString& source_db_schema_version, - const QString& database_name) { - int working_version = QString(source_db_schema_version).remove('.').toInt(); - const int current_version = QSL(APP_DB_SCHEMA_VERSION).remove('.').toInt(); - - while (working_version != current_version) { - try { - const QStringList statements = prepareScript(APP_SQL_PATH, - QSL(APP_DB_UPDATE_FILE_PATTERN).arg(QSL("mysql"), - QString::number(working_version), - QString::number(working_version + 1)), - database_name); - - for (const QString& statement : statements) { - if (!query.exec(statement) && query.lastError().isValid()) { - throw ApplicationException(query.lastError().text()); - } - } - } - catch (const ApplicationException& ex) { - qFatal("Error when running SQL scripts: %s.", qPrintable(ex.message())); - } - - // Increment the version. - qDebugNN << LOGSEC_DB - << "Updating database schema " - << QUOTE_W_SPACE(working_version) - << "->" - << QUOTE_W_SPACE_DOT(working_version + 1); - - working_version++; - } - - return true; -} - QSqlDatabase MariaDbDriver::connection(const QString& connection_name, DatabaseDriver::DesiredStorageType desired_type) { Q_UNUSED(desired_type) diff --git a/src/librssguard/database/mariadbdriver.h b/src/librssguard/database/mariadbdriver.h index 102eec74b..635bc7439 100644 --- a/src/librssguard/database/mariadbdriver.h +++ b/src/librssguard/database/mariadbdriver.h @@ -27,6 +27,7 @@ class MariaDbDriver : public DatabaseDriver { virtual QString location() const; virtual QString humanDriverType() const; virtual QString qtDriverCode() const; + virtual QString ddlFilePrefix() const; virtual DriverType driverType() const; virtual bool vacuumDatabase(); virtual bool saveDatabase(); @@ -42,9 +43,6 @@ class MariaDbDriver : public DatabaseDriver { QString interpretErrorCode(MariaDbError error_code) const; private: - bool updateDatabaseSchema(QSqlQuery& query, - const QString& source_db_schema_version, - const QString& database_name); QSqlDatabase initializeDatabase(const QString& connection_name); void setPragmas(QSqlQuery& query); diff --git a/src/librssguard/database/sqlitedriver.cpp b/src/librssguard/database/sqlitedriver.cpp index c1e38236d..7d278e56b 100644 --- a/src/librssguard/database/sqlitedriver.cpp +++ b/src/librssguard/database/sqlitedriver.cpp @@ -35,6 +35,10 @@ bool SqliteDriver::vacuumDatabase() { return query_vacuum.exec(QSL("VACUUM")); } +QString SqliteDriver::ddlFilePrefix() const { + return QSL("sqlite"); +} + bool SqliteDriver::saveDatabase() { if (!m_inMemoryDatabase) { return true; @@ -259,9 +263,17 @@ QSqlDatabase SqliteDriver::initializeDatabase(const QString& connection_name, bo } else if (!in_memory) { query_db.next(); - const QString installed_db_schema = query_db.value(0).toString(); + const int installed_db_schema = query_db.value(0).toString().toInt(); + + if (installed_db_schema < QSL(APP_DB_SCHEMA_VERSION).toInt()) { + // Now, it would be good to create backup of SQLite DB file. + if (IOFactory::copyFile(databaseFilePath(), databaseFilePath() + ".bak")) { + qDebugNN << LOGSEC_DB << "Creating backup of SQLite DB file."; + } + else { + qFatal("Creation of backup SQLite DB file failed."); + } - if (installed_db_schema.toInt() < QSL(APP_DB_SCHEMA_VERSION).toInt()) { if (updateDatabaseSchema(query_db, installed_db_schema)) { qDebugNN << LOGSEC_DB << "Database schema was updated from '" @@ -272,7 +284,7 @@ QSqlDatabase SqliteDriver::initializeDatabase(const QString& connection_name, bo } else { qFatal("Database schema was not updated from '%s' to '%s' successully.", - qPrintable(installed_db_schema), + qPrintable(QString::number(installed_db_schema)), APP_DB_SCHEMA_VERSION); } } @@ -342,48 +354,6 @@ QString SqliteDriver::databaseFilePath() const { return m_databaseFilePath + QDir::separator() + APP_DB_SQLITE_FILE; } -bool SqliteDriver::updateDatabaseSchema(QSqlQuery& query, const QString& source_db_schema_version) { - int working_version = QString(source_db_schema_version).remove('.').toInt(); - const int current_version = QSL(APP_DB_SCHEMA_VERSION).remove('.').toInt(); - - // Now, it would be good to create backup of SQLite DB file. - if (IOFactory::copyFile(databaseFilePath(), databaseFilePath() + ".bak")) { - qDebugNN << LOGSEC_DB << "Creating backup of SQLite DB file."; - } - else { - qFatal("Creation of backup SQLite DB file failed."); - } - - while (working_version != current_version) { - try { - const QStringList statements = prepareScript(APP_SQL_PATH, - QSL(APP_DB_UPDATE_FILE_PATTERN).arg(QSL("sqlite"), - QString::number(working_version), - QString::number(working_version + 1))); - - for (const QString& statement : statements) { - if (!query.exec(statement) && query.lastError().isValid()) { - throw ApplicationException(query.lastError().text()); - } - } - } - catch (const ApplicationException& ex) { - qFatal("Error when running SQL scripts: %s.", qPrintable(ex.message())); - } - - // Increment the version. - qDebugNN << LOGSEC_DB - << "Updating database schema:" - << QUOTE_W_SPACE(working_version) - << "->" - << QUOTE_W_SPACE_DOT(working_version + 1); - - working_version++; - } - - return true; -} - void SqliteDriver::setPragmas(QSqlQuery& query) { query.exec(QSL("PRAGMA encoding = \"UTF-8\"")); query.exec(QSL("PRAGMA synchronous = OFF")); diff --git a/src/librssguard/database/sqlitedriver.h b/src/librssguard/database/sqlitedriver.h index e046312c0..f61224692 100644 --- a/src/librssguard/database/sqlitedriver.h +++ b/src/librssguard/database/sqlitedriver.h @@ -14,6 +14,7 @@ class SqliteDriver : public DatabaseDriver { virtual QString location() const; virtual DriverType driverType() const; virtual bool vacuumDatabase(); + virtual QString ddlFilePrefix() const; virtual bool saveDatabase(); virtual bool initiateRestoration(const QString& database_package_file); virtual bool finishRestoration(); @@ -28,7 +29,6 @@ class SqliteDriver : public DatabaseDriver { private: QSqlDatabase initializeDatabase(const QString& connection_name, bool in_memory); - bool updateDatabaseSchema(QSqlQuery &query, const QString& source_db_schema_version); void setPragmas(QSqlQuery& query); QString databaseFilePath() const;