From dbdddb872900a4bbe8bcf9f754c720fab29fb42e Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Sat, 9 Sep 2017 18:21:00 +0200 Subject: [PATCH] Refactoring. --- src/gui/dialogs/formabout.cpp | 2 +- .../dialogs/formbackupdatabasesettings.cpp | 2 +- .../dialogs/formrestoredatabasesettings.cpp | 2 +- src/gui/dialogs/formupdate.cpp | 2 +- src/gui/settings/settingsbrowsermail.cpp | 4 +- src/miscellaneous/application.cpp | 71 ++++++------------- src/miscellaneous/application.h | 14 ++-- src/miscellaneous/databasefactory.cpp | 2 +- src/miscellaneous/settings.cpp | 4 +- src/miscellaneous/skinfactory.cpp | 2 +- src/network-web/adblock/adblockmanager.cpp | 2 +- src/services/abstract/cacheforserviceroot.cpp | 4 +- src/services/abstract/gui/formfeeddetails.cpp | 2 +- .../gui/formstandardcategorydetails.cpp | 2 +- .../standard/gui/formstandardimportexport.cpp | 4 +- 15 files changed, 46 insertions(+), 73 deletions(-) diff --git a/src/gui/dialogs/formabout.cpp b/src/gui/dialogs/formabout.cpp index 16b870a94..685c23278 100755 --- a/src/gui/dialogs/formabout.cpp +++ b/src/gui/dialogs/formabout.cpp @@ -47,7 +47,7 @@ void FormAbout::loadSettingsAndPaths() { m_ui.m_txtPathsSettingsType->setText(tr("NOT portable")); } - m_ui.m_txtPathsDatabaseRoot->setText(QDir::toNativeSeparators(qApp->userDataPath() + + m_ui.m_txtPathsDatabaseRoot->setText(QDir::toNativeSeparators(qApp->userDataFolder() + QDir::separator() + QString(APP_DB_SQLITE_PATH))); m_ui.m_txtPathsSettingsFile->setText(QDir::toNativeSeparators(qApp->settings()->fileName())); diff --git a/src/gui/dialogs/formbackupdatabasesettings.cpp b/src/gui/dialogs/formbackupdatabasesettings.cpp index 520963643..d49b7eb9e 100755 --- a/src/gui/dialogs/formbackupdatabasesettings.cpp +++ b/src/gui/dialogs/formbackupdatabasesettings.cpp @@ -39,7 +39,7 @@ FormBackupDatabaseSettings::FormBackupDatabaseSettings(QWidget* parent) : QDialo connect(m_ui->m_txtBackupName->lineEdit(), &BaseLineEdit::textChanged, this, &FormBackupDatabaseSettings::checkBackupNames); connect(m_ui->m_txtBackupName->lineEdit(), &BaseLineEdit::textChanged, this, &FormBackupDatabaseSettings::checkOkButton); connect(m_ui->m_btnSelectFolder, &QPushButton::clicked, this, &FormBackupDatabaseSettings::selectFolderInitial); - selectFolder(qApp->getDocumentsFolderPath()); + selectFolder(qApp->documentsFolder()); m_ui->m_txtBackupName->lineEdit()->setText(QString(APP_LOW_NAME) + QL1S("_") + QDateTime::currentDateTime().toString(QSL("yyyyMMddHHmm"))); m_ui->m_lblResult->setStatus(WidgetWithStatus::Warning, tr("No operation executed yet."), tr("No operation executed yet.")); diff --git a/src/gui/dialogs/formrestoredatabasesettings.cpp b/src/gui/dialogs/formrestoredatabasesettings.cpp index 87084646f..df150518a 100755 --- a/src/gui/dialogs/formrestoredatabasesettings.cpp +++ b/src/gui/dialogs/formrestoredatabasesettings.cpp @@ -40,7 +40,7 @@ FormRestoreDatabaseSettings::FormRestoreDatabaseSettings(QWidget& parent) connect(m_ui.m_groupDatabase, SIGNAL(toggled(bool)), this, SLOT(checkOkButton())); connect(m_ui.m_groupSettings, SIGNAL(toggled(bool)), this, SLOT(checkOkButton())); connect(m_ui.m_buttonBox->button(QDialogButtonBox::Ok), SIGNAL(clicked()), this, SLOT(performRestoration())); - selectFolder(qApp->getDocumentsFolderPath()); + selectFolder(qApp->documentsFolder()); } FormRestoreDatabaseSettings::~FormRestoreDatabaseSettings() { diff --git a/src/gui/dialogs/formupdate.cpp b/src/gui/dialogs/formupdate.cpp index 6065109f1..00b312f49 100755 --- a/src/gui/dialogs/formupdate.cpp +++ b/src/gui/dialogs/formupdate.cpp @@ -129,7 +129,7 @@ void FormUpdate::updateProgress(qint64 bytes_received, qint64 bytes_total) { void FormUpdate::saveUpdateFile(const QByteArray& file_contents) { const QString url_file = m_ui.m_listFiles->currentItem()->data(Qt::UserRole).toString(); - const QString temp_directory = qApp->getTempFolderPath(); + const QString temp_directory = qApp->tempFolder(); if (!temp_directory.isEmpty()) { const QString output_file_name = url_file.mid(url_file.lastIndexOf('/') + 1); diff --git a/src/gui/settings/settingsbrowsermail.cpp b/src/gui/settings/settingsbrowsermail.cpp index 474951ccd..42411da9a 100755 --- a/src/gui/settings/settingsbrowsermail.cpp +++ b/src/gui/settings/settingsbrowsermail.cpp @@ -73,7 +73,7 @@ void SettingsBrowserMail::changeDefaultBrowserArguments(int index) { void SettingsBrowserMail::selectBrowserExecutable() { const QString executable_file = QFileDialog::getOpenFileName(this, tr("Select web browser executable"), - qApp->getHomeFolderPath(), + qApp->homeFolder(), //: File filter for external browser selection dialog. #if defined(Q_OS_LINUX) tr("Executables (*)")); @@ -119,7 +119,7 @@ void SettingsBrowserMail::changeDefaultEmailArguments(int index) { void SettingsBrowserMail::selectEmailExecutable() { QString executable_file = QFileDialog::getOpenFileName(this, tr("Select e-mail executable"), - qApp->getHomeFolderPath(), + qApp->homeFolder(), //: File filter for external e-mail selection dialog. #if defined(Q_OS_LINUX) tr("Executables (*)")); diff --git a/src/miscellaneous/application.cpp b/src/miscellaneous/application.cpp index dc1e7b8c9..d1ae4421f 100755 --- a/src/miscellaneous/application.cpp +++ b/src/miscellaneous/application.cpp @@ -59,21 +59,23 @@ Application::Application(const QString& id, int& argc, char** argv) #endif m_feedReader(nullptr), - m_updateFeedsLock(nullptr), m_userActions(QList()), m_mainForm(nullptr), - m_trayIcon(nullptr), m_settings(nullptr), m_webFactory(new WebFactory(this)), m_system(nullptr), m_skins(nullptr), - m_localization(nullptr), m_icons(nullptr), m_database(nullptr), m_downloadManager(nullptr), m_shouldRestart(false) { + m_updateFeedsLock(new Mutex()), m_userActions(QList()), m_mainForm(nullptr), + m_trayIcon(nullptr), m_settings(Settings::setupSettings(this)), m_webFactory(new WebFactory(this)), + m_system(new SystemFactory(this)), m_skins(new SkinFactory(this)), + m_localization(new Localization(this)), m_icons(new IconFactory(this)), + m_database(new DatabaseFactory(this)), m_downloadManager(nullptr), m_shouldRestart(false) { connect(this, &Application::aboutToQuit, this, &Application::onAboutToQuit); connect(this, &Application::commitDataRequest, this, &Application::onCommitData); connect(this, &Application::saveStateRequest, this, &Application::onSaveState); + #if defined(USE_WEBENGINE) connect(QWebEngineProfile::defaultProfile(), &QWebEngineProfile::downloadRequested, this, &Application::downloadRequested); + QWebEngineProfile::defaultProfile()->setRequestInterceptor(m_urlInterceptor); - // TODO: Call load settings when saving app settings from dialog. - // Will need add that if I add more settings in the future. m_urlInterceptor->loadSettings(); - QWebEngineProfile::defaultProfile()->installUrlSchemeHandler( - QByteArray(APP_LOW_NAME), - new RssGuardSchemeHandler(QWebEngineProfile::defaultProfile())); + QWebEngineProfile::defaultProfile()->installUrlSchemeHandler( + QByteArray(APP_LOW_NAME), + new RssGuardSchemeHandler(QWebEngineProfile::defaultProfile())); #endif } @@ -88,6 +90,7 @@ FeedReader* Application::feedReader() { QList Application::userActions() { if (m_mainForm != nullptr && m_userActions.isEmpty()) { m_userActions = m_mainForm->allActions(); + #if defined(USE_WEBENGINE) m_userActions.append(AdBlockManager::instance()->adBlockIcon()); #endif @@ -115,34 +118,18 @@ WebFactory* Application::web() { } SystemFactory* Application::system() { - if (m_system == nullptr) { - m_system = new SystemFactory(this); - } - return m_system; } SkinFactory* Application::skins() { - if (m_skins == nullptr) { - m_skins = new SkinFactory(this); - } - return m_skins; } Localization* Application::localization() { - if (m_localization == nullptr) { - m_localization = new Localization(this); - } - return m_localization; } DatabaseFactory* Application::database() { - if (m_database == nullptr) { - m_database = new DatabaseFactory(this); - } - return m_database; } @@ -162,10 +149,6 @@ void Application::setFeedReader(FeedReader* feed_reader) { } IconFactory* Application::icons() { - if (m_icons == nullptr) { - m_icons = new IconFactory(this); - } - return m_icons; } @@ -180,20 +163,10 @@ DownloadManager* Application::downloadManager() { } Settings* Application::settings() { - if (m_settings == nullptr) { - m_settings = Settings::setupSettings(this); - } - return m_settings; } Mutex* Application::feedUpdateLock() { - if (m_updateFeedsLock.isNull()) { - // NOTE: Cannot use parent hierarchy because this method can be usually called - // from any thread. - m_updateFeedsLock.reset(new Mutex()); - } - return m_updateFeedsLock.data(); } @@ -209,46 +182,46 @@ void Application::setMainForm(FormMain* main_form) { m_mainForm = main_form; } -QString Application::getConfigHomePath() { +QString Application::configFolder() { return IOFactory::getSystemFolder(QStandardPaths::GenericConfigLocation); } -QString Application::getUserDataAppPath() { +QString Application::userDataAppFolder() { // In "app" folder, we would like to separate all user data into own subfolder, // therefore stick to "data" folder in this mode. return applicationDirPath() + QDir::separator() + QSL("data"); } -QString Application::userDataPath() { +QString Application::userDataFolder() { if (settings()->type() == SettingsProperties::Portable) { - return getUserDataAppPath(); + return userDataAppFolder(); } else { - return getUserDataHomePath(); + return userDataHomeFolder(); } } -QString Application::getUserDataHomePath() { +QString Application::userDataHomeFolder() { // Fallback folder. - const QString home_folder = getHomeFolderPath() + QDir::separator() + QSL(APP_LOW_H_NAME) + QDir::separator() + QSL("data"); + const QString home_folder = homeFolder() + QDir::separator() + QSL(APP_LOW_H_NAME) + QDir::separator() + QSL("data"); if (QDir().exists(home_folder)) { return home_folder; } else { - return getConfigHomePath() + QDir::separator() + QSL(APP_NAME); + return configFolder() + QDir::separator() + QSL(APP_NAME); } } -QString Application::getTempFolderPath() { +QString Application::tempFolder() { return IOFactory::getSystemFolder(QStandardPaths::TempLocation); } -QString Application::getDocumentsFolderPath() { +QString Application::documentsFolder() { return IOFactory::getSystemFolder(QStandardPaths::DocumentsLocation); } -QString Application::getHomeFolderPath() { +QString Application::homeFolder() { return IOFactory::getSystemFolder(QStandardPaths::HomeLocation); } diff --git a/src/miscellaneous/application.h b/src/miscellaneous/application.h index 62cdd734e..7dbdf41b7 100755 --- a/src/miscellaneous/application.h +++ b/src/miscellaneous/application.h @@ -92,18 +92,18 @@ class Application : public QtSingleApplication { NetworkUrlInterceptor* urlIinterceptor(); #endif - QString getTempFolderPath(); - QString getDocumentsFolderPath(); - QString getHomeFolderPath(); - QString getConfigHomePath(); + QString tempFolder(); + QString documentsFolder(); + QString homeFolder(); + QString configFolder(); // These return user ready folders. - QString getUserDataAppPath(); - QString getUserDataHomePath(); + QString userDataAppFolder(); + QString userDataHomeFolder(); // Returns the base folder to which store user data, the "data" folder. // NOTE: Use this to get correct path under which store user data. - QString userDataPath(); + QString userDataFolder(); void setMainForm(FormMain* main_form); diff --git a/src/miscellaneous/databasefactory.cpp b/src/miscellaneous/databasefactory.cpp index ea98c2f1d..913b580d3 100755 --- a/src/miscellaneous/databasefactory.cpp +++ b/src/miscellaneous/databasefactory.cpp @@ -185,7 +185,7 @@ void DatabaseFactory::finishRestoration() { } void DatabaseFactory::sqliteAssemblyDatabaseFilePath() { - m_sqliteDatabaseFilePath = qApp->userDataPath() + QDir::separator() + QString(APP_DB_SQLITE_PATH); + m_sqliteDatabaseFilePath = qApp->userDataFolder() + QDir::separator() + QString(APP_DB_SQLITE_PATH); } QSqlDatabase DatabaseFactory::sqliteInitializeInMemoryDatabase() { diff --git a/src/miscellaneous/settings.cpp b/src/miscellaneous/settings.cpp index 924e6c54e..404a0a0ce 100755 --- a/src/miscellaneous/settings.cpp +++ b/src/miscellaneous/settings.cpp @@ -354,8 +354,8 @@ Settings* Settings::setupSettings(QObject* parent) { SettingsProperties Settings::determineProperties() { SettingsProperties properties; properties.m_settingsSuffix = QDir::separator() + QSL(APP_CFG_PATH) + QDir::separator() + QSL(APP_CFG_FILE); - const QString app_path = qApp->getUserDataAppPath(); - const QString home_path = qApp->getUserDataHomePath(); + const QString app_path = qApp->userDataAppFolder(); + const QString home_path = qApp->userDataHomeFolder(); // We will use PORTABLE settings only and only if it is available and NON-PORTABLE // settings was not initialized before. #if defined (Q_OS_LINUX) || defined (Q_OS_MACOS) diff --git a/src/miscellaneous/skinfactory.cpp b/src/miscellaneous/skinfactory.cpp index d4cadb85e..4d312a725 100755 --- a/src/miscellaneous/skinfactory.cpp +++ b/src/miscellaneous/skinfactory.cpp @@ -71,7 +71,7 @@ void SkinFactory::setCurrentSkinName(const QString& skin_name) { } QString SkinFactory::customSkinBaseFolder() const { - return qApp->userDataPath() + QDir::separator() + APP_SKIN_USER_FOLDER; + return qApp->userDataFolder() + QDir::separator() + APP_SKIN_USER_FOLDER; } QString SkinFactory::selectedSkinName() const { diff --git a/src/network-web/adblock/adblockmanager.cpp b/src/network-web/adblock/adblockmanager.cpp index 6236719d4..86f711df1 100755 --- a/src/network-web/adblock/adblockmanager.cpp +++ b/src/network-web/adblock/adblockmanager.cpp @@ -216,7 +216,7 @@ AdBlockCustomList* AdBlockManager::customList() const { } QString AdBlockManager::storedListsPath() { - return qApp->userDataPath() + QDir::separator() + ADBLOCK_LISTS_SUBDIRECTORY; + return qApp->userDataFolder() + QDir::separator() + ADBLOCK_LISTS_SUBDIRECTORY; } void AdBlockManager::load() { diff --git a/src/services/abstract/cacheforserviceroot.cpp b/src/services/abstract/cacheforserviceroot.cpp index ea29eccf4..7c7aa45ea 100755 --- a/src/services/abstract/cacheforserviceroot.cpp +++ b/src/services/abstract/cacheforserviceroot.cpp @@ -79,7 +79,7 @@ void CacheForServiceRoot::saveCacheToFile(int accId) { m_cacheSaveMutex->lock(); // Save to file. - const QString file_cache = qApp->userDataPath() + QDir::separator() + QString::number(accId) + "-cached-msgs.dat"; + const QString file_cache = qApp->userDataFolder() + QDir::separator() + QString::number(accId) + "-cached-msgs.dat"; if (isEmpty()) { QFile::remove(file_cache); @@ -110,7 +110,7 @@ void CacheForServiceRoot::loadCacheFromFile(int accId) { clearCache(); // Load from file. - const QString file_cache = qApp->userDataPath() + QDir::separator() + QString::number(accId) + "-cached-msgs.dat"; + const QString file_cache = qApp->userDataFolder() + QDir::separator() + QString::number(accId) + "-cached-msgs.dat"; QFile file(file_cache); diff --git a/src/services/abstract/gui/formfeeddetails.cpp b/src/services/abstract/gui/formfeeddetails.cpp index 3c89f76d2..25c7f998e 100755 --- a/src/services/abstract/gui/formfeeddetails.cpp +++ b/src/services/abstract/gui/formfeeddetails.cpp @@ -183,7 +183,7 @@ void FormFeedDetails::onNoIconSelected() { void FormFeedDetails::onLoadIconFromFile() { QFileDialog dialog(this, tr("Select icon file for the feed"), - qApp->getHomeFolderPath(), tr("Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)")); + qApp->homeFolder(), tr("Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)")); dialog.setFileMode(QFileDialog::ExistingFile); dialog.setWindowIcon(qApp->icons()->fromTheme(QSL("image-x-generic"))); dialog.setOptions(QFileDialog::DontUseNativeDialog | QFileDialog::ReadOnly); diff --git a/src/services/standard/gui/formstandardcategorydetails.cpp b/src/services/standard/gui/formstandardcategorydetails.cpp index 3053306a4..fbace356e 100755 --- a/src/services/standard/gui/formstandardcategorydetails.cpp +++ b/src/services/standard/gui/formstandardcategorydetails.cpp @@ -172,7 +172,7 @@ void FormStandardCategoryDetails::onNoIconSelected() { void FormStandardCategoryDetails::onLoadIconFromFile() { QFileDialog dialog(this, tr("Select icon file for the category"), - qApp->getHomeFolderPath(), tr("Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)")); + qApp->homeFolder(), tr("Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)")); dialog.setFileMode(QFileDialog::ExistingFile); dialog.setWindowIcon(qApp->icons()->fromTheme(QSL("image-x-generic"))); dialog.setOptions(QFileDialog::DontUseNativeDialog | QFileDialog::ReadOnly); diff --git a/src/services/standard/gui/formstandardimportexport.cpp b/src/services/standard/gui/formstandardimportexport.cpp index 6c42d8f86..d36f5eb56 100755 --- a/src/services/standard/gui/formstandardimportexport.cpp +++ b/src/services/standard/gui/formstandardimportexport.cpp @@ -153,7 +153,7 @@ void FormStandardImportExport::selectExportFile() { filter += ";;"; filter += filter_txt_url_per_line; QString selected_file = QFileDialog::getSaveFileName(this, tr("Select file for feeds export"), - qApp->getHomeFolderPath(), filter, &selected_filter); + qApp->homeFolder(), filter, &selected_filter); if (!selected_file.isEmpty()) { if (selected_filter == filter_opml20) { @@ -186,7 +186,7 @@ void FormStandardImportExport::selectImportFile() { filter += filter_opml20; filter += ";;"; filter += filter_txt_url_per_line; - const QString selected_file = QFileDialog::getOpenFileName(this, tr("Select file for feeds import"), qApp->getHomeFolderPath(), + const QString selected_file = QFileDialog::getOpenFileName(this, tr("Select file for feeds import"), qApp->homeFolder(), filter, &selected_filter); if (!selected_file.isEmpty()) {