From 28e42e640330117b19344f85f67a484edb7040a9 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Fri, 5 Apr 2019 12:50:38 +0200 Subject: [PATCH] make sure that even icons for gmail account folders are loaded dynamically --- src/gui/settings/settingsbrowsermail.cpp | 5 +- src/gui/settings/settingsdatabase.cpp | 7 +-- src/miscellaneous/databasefactory.cpp | 4 +- src/miscellaneous/databasequeries.cpp | 6 +- src/miscellaneous/settings.h | 64 +++++++++++++------- src/network-web/basenetworkaccessmanager.cpp | 6 +- src/services/gmail/gmailfeed.cpp | 17 +++++- 7 files changed, 72 insertions(+), 37 deletions(-) diff --git a/src/gui/settings/settingsbrowsermail.cpp b/src/gui/settings/settingsbrowsermail.cpp index bc5660df3..acc506aa0 100755 --- a/src/gui/settings/settingsbrowsermail.cpp +++ b/src/gui/settings/settingsbrowsermail.cpp @@ -5,7 +5,6 @@ #include "gui/guiutilities.h" #include "miscellaneous/application.h" #include "miscellaneous/externaltool.h" -#include "miscellaneous/textfactory.h" #include "network-web/silentnetworkaccessmanager.h" #include @@ -192,7 +191,7 @@ void SettingsBrowserMail::loadSettings() { m_ui->m_cmbProxyType->setCurrentIndex(m_ui->m_cmbProxyType->findData(selected_proxy_type)); m_ui->m_txtProxyHost->setText(settings()->value(GROUP(Proxy), SETTING(Proxy::Host)).toString()); m_ui->m_txtProxyUsername->setText(settings()->value(GROUP(Proxy), SETTING(Proxy::Username)).toString()); - m_ui->m_txtProxyPassword->setText(TextFactory::decrypt(settings()->value(GROUP(Proxy), SETTING(Proxy::Password)).toString())); + m_ui->m_txtProxyPassword->setText(settings()->password(GROUP(Proxy), SETTING(Proxy::Password)).toString()); m_ui->m_spinProxyPort->setValue(settings()->value(GROUP(Proxy), SETTING(Proxy::Port)).toInt()); setExternalTools(ExternalTool::toolsFromSettings()); @@ -218,7 +217,7 @@ void SettingsBrowserMail::saveSettings() { settings()->setValue(GROUP(Proxy), Proxy::Type, m_ui->m_cmbProxyType->itemData(m_ui->m_cmbProxyType->currentIndex())); settings()->setValue(GROUP(Proxy), Proxy::Host, m_ui->m_txtProxyHost->text()); settings()->setValue(GROUP(Proxy), Proxy::Username, m_ui->m_txtProxyUsername->text()); - settings()->setValue(GROUP(Proxy), Proxy::Password, TextFactory::encrypt(m_ui->m_txtProxyPassword->text())); + settings()->setPassword(GROUP(Proxy), Proxy::Password, m_ui->m_txtProxyPassword->text()); settings()->setValue(GROUP(Proxy), Proxy::Port, m_ui->m_spinProxyPort->value()); auto tools = externalTools(); diff --git a/src/gui/settings/settingsdatabase.cpp b/src/gui/settings/settingsdatabase.cpp index 11616922e..243e74a8b 100755 --- a/src/gui/settings/settingsdatabase.cpp +++ b/src/gui/settings/settingsdatabase.cpp @@ -6,7 +6,6 @@ #include "gui/guiutilities.h" #include "miscellaneous/application.h" #include "miscellaneous/databasefactory.h" -#include "miscellaneous/textfactory.h" SettingsDatabase::SettingsDatabase(Settings* settings, QWidget* parent) : SettingsPanel(settings, parent), m_ui(new Ui::SettingsDatabase) { @@ -146,8 +145,8 @@ void SettingsDatabase::loadSettings() { m_ui->m_txtMysqlDatabase->lineEdit()->setPlaceholderText(tr("Working database which you have full access to.")); m_ui->m_txtMysqlHostname->lineEdit()->setText(settings()->value(GROUP(Database), SETTING(Database::MySQLHostname)).toString()); m_ui->m_txtMysqlUsername->lineEdit()->setText(settings()->value(GROUP(Database), SETTING(Database::MySQLUsername)).toString()); - m_ui->m_txtMysqlPassword->lineEdit()->setText(TextFactory::decrypt(settings()->value(GROUP(Database), - SETTING(Database::MySQLPassword)).toString())); + m_ui->m_txtMysqlPassword->lineEdit()->setText(settings()->password(GROUP(Database), + SETTING(Database::MySQLPassword)).toString()); m_ui->m_txtMysqlDatabase->lineEdit()->setText(settings()->value(GROUP(Database), SETTING(Database::MySQLDatabase)).toString()); m_ui->m_spinMysqlPort->setValue(settings()->value(GROUP(Database), SETTING(Database::MySQLPort)).toInt()); m_ui->m_checkMysqlShowPassword->setChecked(false); @@ -183,7 +182,7 @@ void SettingsDatabase::saveSettings() { // Save MySQL. settings()->setValue(GROUP(Database), Database::MySQLHostname, m_ui->m_txtMysqlHostname->lineEdit()->text()); settings()->setValue(GROUP(Database), Database::MySQLUsername, m_ui->m_txtMysqlUsername->lineEdit()->text()); - settings()->setValue(GROUP(Database), Database::MySQLPassword, TextFactory::encrypt(m_ui->m_txtMysqlPassword->lineEdit()->text())); + settings()->setPassword(GROUP(Database), Database::MySQLPassword, m_ui->m_txtMysqlPassword->lineEdit()->text()); settings()->setValue(GROUP(Database), Database::MySQLDatabase, m_ui->m_txtMysqlDatabase->lineEdit()->text()); settings()->setValue(GROUP(Database), Database::MySQLPort, m_ui->m_spinMysqlPort->value()); } diff --git a/src/miscellaneous/databasefactory.cpp b/src/miscellaneous/databasefactory.cpp index 0ae51955d..47e9b0eed 100755 --- a/src/miscellaneous/databasefactory.cpp +++ b/src/miscellaneous/databasefactory.cpp @@ -587,7 +587,7 @@ QSqlDatabase DatabaseFactory::mysqlConnection(const QString& connection_name) { database.setHostName(qApp->settings()->value(GROUP(Database), SETTING(Database::MySQLHostname)).toString()); database.setPort(qApp->settings()->value(GROUP(Database), SETTING(Database::MySQLPort)).toInt()); database.setUserName(qApp->settings()->value(GROUP(Database), SETTING(Database::MySQLUsername)).toString()); - database.setPassword(TextFactory::decrypt(qApp->settings()->value(GROUP(Database), SETTING(Database::MySQLPassword)).toString())); + database.setPassword(qApp->settings()->password(GROUP(Database), SETTING(Database::MySQLPassword)).toString()); database.setDatabaseName(qApp->settings()->value(GROUP(Database), SETTING(Database::MySQLDatabase)).toString()); } @@ -613,7 +613,7 @@ QSqlDatabase DatabaseFactory::mysqlInitializeDatabase(const QString& connection_ database.setHostName(qApp->settings()->value(GROUP(Database), SETTING(Database::MySQLHostname)).toString()); database.setPort(qApp->settings()->value(GROUP(Database), SETTING(Database::MySQLPort)).toInt()); database.setUserName(qApp->settings()->value(GROUP(Database), SETTING(Database::MySQLUsername)).toString()); - database.setPassword(TextFactory::decrypt(qApp->settings()->value(GROUP(Database), SETTING(Database::MySQLPassword)).toString())); + database.setPassword(qApp->settings()->password(GROUP(Database), SETTING(Database::MySQLPassword)).toString()); if (!database.open()) { qCritical("MySQL database was NOT opened. Delivered error message: '%s'", qPrintable(database.lastError().text())); diff --git a/src/miscellaneous/databasequeries.cpp b/src/miscellaneous/databasequeries.cpp index d88d2eda1..a387e9293 100755 --- a/src/miscellaneous/databasequeries.cpp +++ b/src/miscellaneous/databasequeries.cpp @@ -1207,9 +1207,9 @@ int DatabaseQueries::addFeed(QSqlDatabase db, int parent_id, int account_id, con q.bindValue(QSL(":password"), TextFactory::encrypt(password)); } - q.bindValue(QSL(":update_type"), (int) auto_update_type); + q.bindValue(QSL(":update_type"), int(auto_update_type)); q.bindValue(QSL(":update_interval"), auto_update_interval); - q.bindValue(QSL(":type"), (int) feed_format); + q.bindValue(QSL(":type"), int(feed_format)); if (q.exec()) { int new_id = q.lastInsertId().toInt(); @@ -1264,7 +1264,7 @@ bool DatabaseQueries::editFeed(QSqlDatabase db, int parent_id, int feed_id, cons q.bindValue(QSL(":password"), TextFactory::encrypt(password)); } - q.bindValue(QSL(":update_type"), (int) auto_update_type); + q.bindValue(QSL(":update_type"), int(auto_update_type)); q.bindValue(QSL(":update_interval"), auto_update_interval); q.bindValue(QSL(":type"), feed_format); q.bindValue(QSL(":id"), feed_id); diff --git a/src/miscellaneous/settings.h b/src/miscellaneous/settings.h index aa46e820c..5574825ff 100755 --- a/src/miscellaneous/settings.h +++ b/src/miscellaneous/settings.h @@ -8,6 +8,7 @@ #include "definitions/definitions.h" #include "miscellaneous/settingsproperties.h" +#include "miscellaneous/textfactory.h" #include #include @@ -397,30 +398,18 @@ class Settings : public QSettings { virtual ~Settings(); // Type of used settings. - inline SettingsProperties::SettingsType type() const { - return m_initializationStatus; - } + SettingsProperties::SettingsType type() const; // Getters/setters for settings values. - inline QVariant value(const QString& section, const QString& key, const QVariant& default_value = QVariant()) const { - return QSettings::value(QString(QSL("%1/%2")).arg(section, key), default_value); - } + QVariant password(const QString& section, const QString& key, const QVariant& default_value = QVariant()) const; + void setPassword(const QString& section, const QString& key, const QVariant& value); - inline void setValue(const QString& section, const QString& key, const QVariant& value) { - QSettings::setValue(QString(QSL("%1/%2")).arg(section, key), value); - } + QVariant value(const QString& section, const QString& key, const QVariant& default_value = QVariant()) const; + void setValue(const QString& section, const QString& key, const QVariant& value); + void setValue(const QString& key, const QVariant& value); - inline void setValue(const QString& key, const QVariant& value) { - QSettings::setValue(key, value); - } - - inline bool contains(const QString& section, const QString& key) const { - return QSettings::contains(QString(QSL("%1/%2")).arg(section, key)); - } - - inline void remove(const QString& section, const QString& key) { - QSettings::remove(QString(QSL("%1/%2")).arg(section, key)); - } + bool contains(const QString& section, const QString& key) const; + void remove(const QString& section, const QString& key); // Returns the path which contains the settings. QString pathName() const; @@ -440,9 +429,42 @@ class Settings : public QSettings { private: // Constructor. - explicit Settings(const QString& file_name, Format format, const SettingsProperties::SettingsType& type, QObject* parent = 0); + explicit Settings(const QString& file_name, Format format, const SettingsProperties::SettingsType& type, QObject* parent = nullptr); SettingsProperties::SettingsType m_initializationStatus; }; +inline SettingsProperties::SettingsType Settings::type() const { + return m_initializationStatus; +} + +// Getters/setters for settings values. +inline QVariant Settings::password(const QString& section, const QString& key, const QVariant& default_value) const { + return TextFactory::decrypt(value(section, key, default_value).toString()); +} + +inline void Settings::setPassword(const QString& section, const QString& key, const QVariant& value) { + setValue(section, key, TextFactory::encrypt(value.toString())); +} + +inline QVariant Settings::value(const QString& section, const QString& key, const QVariant& default_value) const { + return QSettings::value(QString(QSL("%1/%2")).arg(section, key), default_value); +} + +inline void Settings::setValue(const QString& section, const QString& key, const QVariant& value) { + QSettings::setValue(QString(QSL("%1/%2")).arg(section, key), value); +} + +inline void Settings::setValue(const QString& key, const QVariant& value) { + QSettings::setValue(key, value); +} + +inline bool Settings::contains(const QString& section, const QString& key) const { + return QSettings::contains(QString(QSL("%1/%2")).arg(section, key)); +} + +inline void Settings::remove(const QString& section, const QString& key) { + QSettings::remove(QString(QSL("%1/%2")).arg(section, key)); +} + #endif // SETTINGS_H diff --git a/src/network-web/basenetworkaccessmanager.cpp b/src/network-web/basenetworkaccessmanager.cpp index 8715ef4b2..e18fc875e 100755 --- a/src/network-web/basenetworkaccessmanager.cpp +++ b/src/network-web/basenetworkaccessmanager.cpp @@ -36,9 +36,9 @@ void BaseNetworkAccessManager::loadSettings() { // Custom proxy is selected, set it up. new_proxy.setType(selected_proxy_type); new_proxy.setHostName(settings->value(GROUP(Proxy), SETTING(Proxy::Host)).toString()); - new_proxy.setPort(settings->value(GROUP(Proxy), SETTING(Proxy::Port)).toInt()); + new_proxy.setPort(quint16(settings->value(GROUP(Proxy), SETTING(Proxy::Port)).toInt())); new_proxy.setUser(settings->value(GROUP(Proxy), SETTING(Proxy::Username)).toString()); - new_proxy.setPassword(TextFactory::decrypt(settings->value(GROUP(Proxy), SETTING(Proxy::Password)).toString())); + new_proxy.setPassword(settings->password(GROUP(Proxy), SETTING(Proxy::Password)).toString()); setProxy(new_proxy); } @@ -47,7 +47,7 @@ void BaseNetworkAccessManager::loadSettings() { void BaseNetworkAccessManager::onSslErrors(QNetworkReply* reply, const QList& error) { qWarning("Ignoring SSL errors for '%s': '%s' (code %d).", qPrintable(reply->url().toString()), qPrintable(reply->errorString()), - (int) reply->error()); + int(reply->error())); reply->ignoreSslErrors(error); } diff --git a/src/services/gmail/gmailfeed.cpp b/src/services/gmail/gmailfeed.cpp index c9978d6fa..58d7ffe37 100755 --- a/src/services/gmail/gmailfeed.cpp +++ b/src/services/gmail/gmailfeed.cpp @@ -4,6 +4,7 @@ #include "miscellaneous/application.h" #include "miscellaneous/iconfactory.h" +#include "services/gmail/definitions.h" #include "services/gmail/gmailserviceroot.h" #include "services/gmail/network/gmailnetworkfactory.h" @@ -15,7 +16,21 @@ GmailFeed::GmailFeed(const QString& title, const QString& custom_id, const QIcon setIcon(icon); } -GmailFeed::GmailFeed(const QSqlRecord& record) : Feed(record) {} +GmailFeed::GmailFeed(const QSqlRecord& record) : Feed(record) { + // Fixup icons to make them trully dynamic. + if (customId() == QSL(GMAIL_SYSTEM_LABEL_SENT)) { + setIcon(qApp->icons()->fromTheme(QSL("mail-sent"))); + } + else if (customId() == QSL(GMAIL_SYSTEM_LABEL_DRAFT)) { + setIcon(qApp->icons()->fromTheme(QSL("gtk-edit"))); + } + else if (customId() == QSL(GMAIL_SYSTEM_LABEL_SPAM)) { + setIcon(qApp->icons()->fromTheme(QSL("mail-mark-junk"))); + } + else if (customId() == QSL(GMAIL_SYSTEM_LABEL_INBOX)) { + setIcon(qApp->icons()->fromTheme(QSL("mail-inbox"))); + } +} GmailServiceRoot* GmailFeed::serviceRoot() const { return qobject_cast(getParentServiceRoot());