From 4f03473dbdbc2f44736a9e87c9ed5ee4a4712bc3 Mon Sep 17 00:00:00 2001 From: Jonas Schnelli Date: Tue, 23 Apr 2019 18:10:45 +0200 Subject: [PATCH] Merge #15874: Resolve the qt/guiutil <-> qt/optionsmodel CD fa1c8e297 Resolve the qt/guiutil <-> qt/optionsmodal CD (251) Pull request description: This pull request attempts to resolve the `qt/guiutil` <-> `qt/optionsmodel` circular dependency. The `Intro` class in `qt/intro` has a static member function `getDefaultDataDirectory` which is used by `qt/optionsmodel` and creates the circular dependency `qt/guiutil -> qt/walletmodel -> qt/optionsmodel -> qt/intro -> qt/guiutil`. This circular dependency is resolved by moving `Intro::getDefaultDataDirectory` to `GUIUtil::getDefaultDataDirectory` without modifying the implementation. ACKs for commit fa1c8e: MarcoFalke: utACK fa1c8e297825fbaeda049c8bf36f39de919a9989 promag: utACK fa1c8e2. hebasto: utACK fa1c8e297825fbaeda049c8bf36f39de919a9989 practicalswift: utACK fa1c8e297825fbaeda049c8bf36f39de919a9989 jonasschnelli: utACK fa1c8e297825fbaeda049c8bf36f39de919a9989 Tree-SHA512: 58cc4aee937c943d8de9dc97ef1789decfddb0287308f44e7e3a3b497c19e51da184988e17207544fff410168ec98dd49a3e62c47e84ad1f0cf6ef7247a80fb5 --- src/qt/guiutil.cpp | 5 +++++ src/qt/guiutil.h | 5 +++++ src/qt/intro.cpp | 13 ++++--------- src/qt/intro.h | 5 ----- src/qt/optionsmodel.cpp | 5 ++--- 5 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index 60d9ba1b58..bd0407bbb3 100644 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -469,6 +469,11 @@ QList getEntryData(QAbstractItemView *view, int column) return view->selectionModel()->selectedRows(column); } +QString getDefaultDataDirectory() +{ + return boostPathToQString(GetDefaultDataDir()); +} + QString getSaveFileName(QWidget *parent, const QString &caption, const QString &dir, const QString &filter, QString *selectedSuffixOut) diff --git a/src/qt/guiutil.h b/src/qt/guiutil.h index 4c81c54635..dd6b4a9d89 100644 --- a/src/qt/guiutil.h +++ b/src/qt/guiutil.h @@ -145,6 +145,11 @@ namespace GUIUtil void setClipboard(const QString& str); + /** + * Determine default data directory for operating system. + */ + QString getDefaultDataDirectory(); + /** Get save filename, mimics QFileDialog::getSaveFileName, except that it appends a default suffix when no suffix is provided by the user. diff --git a/src/qt/intro.cpp b/src/qt/intro.cpp index 4bc14f2f9e..184da14791 100644 --- a/src/qt/intro.cpp +++ b/src/qt/intro.cpp @@ -170,7 +170,7 @@ QString Intro::getDataDirectory() void Intro::setDataDirectory(const QString &dataDir) { ui->dataDirectory->setText(dataDir); - if(dataDir == getDefaultDataDirectory()) + if(dataDir == GUIUtil::getDefaultDataDirectory()) { ui->dataDirDefault->setChecked(true); ui->dataDirectory->setEnabled(false); @@ -182,11 +182,6 @@ void Intro::setDataDirectory(const QString &dataDir) } } -QString Intro::getDefaultDataDirectory() -{ - return GUIUtil::boostPathToQString(GetDefaultDataDir()); -} - bool Intro::pickDataDirectory(interfaces::Node& node) { QSettings settings; @@ -195,7 +190,7 @@ bool Intro::pickDataDirectory(interfaces::Node& node) if(!gArgs.GetArg("-datadir", "").empty()) return true; /* 1) Default data directory for operating system */ - QString dataDirDefaultCurrent = getDefaultDataDirectory(); + QString dataDirDefaultCurrent = GUIUtil::getDefaultDataDirectory(); /* 2) Allow QSettings to override default dir */ QString dataDir = settings.value("strDataDir", dataDirDefaultCurrent).toString(); /* 3) Check to see if default datadir is the one we expect */ @@ -246,7 +241,7 @@ bool Intro::pickDataDirectory(interfaces::Node& node) * override -datadir in the dash.conf file in the default data directory * (to be consistent with dashd behavior) */ - if(dataDir != dataDirDefaultCurrent) { + if(dataDir != GUIUtil::getDefaultDataDirectory()) { node.softSetArg("-datadir", GUIUtil::qstringToBoostPath(dataDir).string()); // use OS locale for path setting } return true; @@ -300,7 +295,7 @@ void Intro::on_ellipsisButton_clicked() void Intro::on_dataDirDefault_clicked() { - setDataDirectory(getDefaultDataDirectory()); + setDataDirectory(GUIUtil::getDefaultDataDirectory()); } void Intro::on_dataDirCustom_clicked() diff --git a/src/qt/intro.h b/src/qt/intro.h index 64cda51851..9e178b7a3a 100644 --- a/src/qt/intro.h +++ b/src/qt/intro.h @@ -48,11 +48,6 @@ public: */ static bool pickDataDirectory(interfaces::Node& node); - /** - * Determine default data directory for operating system. - */ - static QString getDefaultDataDirectory(); - Q_SIGNALS: void requestCheck(); diff --git a/src/qt/optionsmodel.cpp b/src/qt/optionsmodel.cpp index ef1a5c48b4..9af060cf46 100644 --- a/src/qt/optionsmodel.cpp +++ b/src/qt/optionsmodel.cpp @@ -12,7 +12,6 @@ #include #include #include -#include #include #include // For DEFAULT_SCRIPTCHECK_THREADS @@ -210,7 +209,7 @@ void OptionsModel::Init(bool resetSettings) addOverriddenOption("-par"); if (!settings.contains("strDataDir")) - settings.setValue("strDataDir", Intro::getDefaultDataDirectory()); + settings.setValue("strDataDir", GUIUtil::getDefaultDataDirectory()); // Wallet #ifdef ENABLE_WALLET @@ -311,7 +310,7 @@ void OptionsModel::Reset() BackupSettings(GetDataDir(true) / "guisettings.ini.bak", settings); // Save the strDataDir setting - QString dataDir = Intro::getDefaultDataDirectory(); + QString dataDir = GUIUtil::getDefaultDataDirectory(); dataDir = settings.value("strDataDir", dataDir).toString(); // Remove all entries from our QSettings object