Resolve the qt/guiutil <-> qt/optionsmodal CD

This pull request attempts to resolve the `qt/guiutil` <-> `qt/optionsmodel`
circular dependency.

The circular dependency is resolved by moving the `Intro::getDefaultDataDirectory`
member function to `GUIUtil::getDefaultDataDirectory`.
This commit is contained in:
251 2019-04-23 13:26:06 +02:00
parent 08bd21a3bd
commit fa1c8e2978
6 changed files with 16 additions and 18 deletions

View file

@ -244,6 +244,11 @@ QList<QModelIndex> getEntryData(QAbstractItemView *view, int column)
return view->selectionModel()->selectedRows(column); return view->selectionModel()->selectedRows(column);
} }
QString getDefaultDataDirectory()
{
return boostPathToQString(GetDefaultDataDir());
}
QString getSaveFileName(QWidget *parent, const QString &caption, const QString &dir, QString getSaveFileName(QWidget *parent, const QString &caption, const QString &dir,
const QString &filter, const QString &filter,
QString *selectedSuffixOut) QString *selectedSuffixOut)

View file

@ -79,6 +79,11 @@ namespace GUIUtil
void setClipboard(const QString& str); 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 /** Get save filename, mimics QFileDialog::getSaveFileName, except that it appends a default suffix
when no suffix is provided by the user. when no suffix is provided by the user.

View file

@ -168,7 +168,7 @@ QString Intro::getDataDirectory()
void Intro::setDataDirectory(const QString &dataDir) void Intro::setDataDirectory(const QString &dataDir)
{ {
ui->dataDirectory->setText(dataDir); ui->dataDirectory->setText(dataDir);
if(dataDir == getDefaultDataDirectory()) if(dataDir == GUIUtil::getDefaultDataDirectory())
{ {
ui->dataDirDefault->setChecked(true); ui->dataDirDefault->setChecked(true);
ui->dataDirectory->setEnabled(false); ui->dataDirectory->setEnabled(false);
@ -180,11 +180,6 @@ void Intro::setDataDirectory(const QString &dataDir)
} }
} }
QString Intro::getDefaultDataDirectory()
{
return GUIUtil::boostPathToQString(GetDefaultDataDir());
}
bool Intro::pickDataDirectory(interfaces::Node& node) bool Intro::pickDataDirectory(interfaces::Node& node)
{ {
QSettings settings; QSettings settings;
@ -193,7 +188,7 @@ bool Intro::pickDataDirectory(interfaces::Node& node)
if(!gArgs.GetArg("-datadir", "").empty()) if(!gArgs.GetArg("-datadir", "").empty())
return true; return true;
/* 1) Default data directory for operating system */ /* 1) Default data directory for operating system */
QString dataDir = getDefaultDataDirectory(); QString dataDir = GUIUtil::getDefaultDataDirectory();
/* 2) Allow QSettings to override default dir */ /* 2) Allow QSettings to override default dir */
dataDir = settings.value("strDataDir", dataDir).toString(); dataDir = settings.value("strDataDir", dataDir).toString();
@ -239,7 +234,7 @@ bool Intro::pickDataDirectory(interfaces::Node& node)
* override -datadir in the bitcoin.conf file in the default data directory * override -datadir in the bitcoin.conf file in the default data directory
* (to be consistent with bitcoind behavior) * (to be consistent with bitcoind behavior)
*/ */
if(dataDir != getDefaultDataDirectory()) { if(dataDir != GUIUtil::getDefaultDataDirectory()) {
node.softSetArg("-datadir", GUIUtil::qstringToBoostPath(dataDir).string()); // use OS locale for path setting node.softSetArg("-datadir", GUIUtil::qstringToBoostPath(dataDir).string()); // use OS locale for path setting
} }
return true; return true;
@ -293,7 +288,7 @@ void Intro::on_ellipsisButton_clicked()
void Intro::on_dataDirDefault_clicked() void Intro::on_dataDirDefault_clicked()
{ {
setDataDirectory(getDefaultDataDirectory()); setDataDirectory(GUIUtil::getDefaultDataDirectory());
} }
void Intro::on_dataDirCustom_clicked() void Intro::on_dataDirCustom_clicked()

View file

@ -48,11 +48,6 @@ public:
*/ */
static bool pickDataDirectory(interfaces::Node& node); static bool pickDataDirectory(interfaces::Node& node);
/**
* Determine default data directory for operating system.
*/
static QString getDefaultDataDirectory();
Q_SIGNALS: Q_SIGNALS:
void requestCheck(); void requestCheck();

View file

@ -17,7 +17,6 @@
#include <net.h> #include <net.h>
#include <netbase.h> #include <netbase.h>
#include <txdb.h> // for -dbcache defaults #include <txdb.h> // for -dbcache defaults
#include <qt/intro.h>
#include <QNetworkProxy> #include <QNetworkProxy>
#include <QSettings> #include <QSettings>
@ -110,7 +109,7 @@ void OptionsModel::Init(bool resetSettings)
addOverriddenOption("-par"); addOverriddenOption("-par");
if (!settings.contains("strDataDir")) if (!settings.contains("strDataDir"))
settings.setValue("strDataDir", Intro::getDefaultDataDirectory()); settings.setValue("strDataDir", GUIUtil::getDefaultDataDirectory());
// Wallet // Wallet
#ifdef ENABLE_WALLET #ifdef ENABLE_WALLET
@ -187,7 +186,7 @@ void OptionsModel::Reset()
BackupSettings(GetDataDir(true) / "guisettings.ini.bak", settings); BackupSettings(GetDataDir(true) / "guisettings.ini.bak", settings);
// Save the strDataDir setting // Save the strDataDir setting
QString dataDir = Intro::getDefaultDataDirectory(); QString dataDir = GUIUtil::getDefaultDataDirectory();
dataDir = settings.value("strDataDir", dataDir).toString(); dataDir = settings.value("strDataDir", dataDir).toString();
// Remove all entries from our QSettings object // Remove all entries from our QSettings object

View file

@ -36,7 +36,6 @@ EXPECTED_CIRCULAR_DEPENDENCIES=(
"txmempool -> validation -> validationinterface -> txmempool" "txmempool -> validation -> validationinterface -> txmempool"
"qt/addressbookpage -> qt/bitcoingui -> qt/walletview -> qt/receivecoinsdialog -> qt/addressbookpage" "qt/addressbookpage -> qt/bitcoingui -> qt/walletview -> qt/receivecoinsdialog -> qt/addressbookpage"
"qt/addressbookpage -> qt/bitcoingui -> qt/walletview -> qt/signverifymessagedialog -> qt/addressbookpage" "qt/addressbookpage -> qt/bitcoingui -> qt/walletview -> qt/signverifymessagedialog -> qt/addressbookpage"
"qt/guiutil -> qt/walletmodel -> qt/optionsmodel -> qt/intro -> qt/guiutil"
"qt/addressbookpage -> qt/bitcoingui -> qt/walletview -> qt/sendcoinsdialog -> qt/sendcoinsentry -> qt/addressbookpage" "qt/addressbookpage -> qt/bitcoingui -> qt/walletview -> qt/sendcoinsdialog -> qt/sendcoinsentry -> qt/addressbookpage"
) )