Skip to content

Commit fa1c8e2

Browse files
committed
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`.
1 parent 08bd21a commit fa1c8e2

File tree

6 files changed

+16
-18
lines changed

6 files changed

+16
-18
lines changed

src/qt/guiutil.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,11 @@ QList<QModelIndex> getEntryData(QAbstractItemView *view, int column)
244244
return view->selectionModel()->selectedRows(column);
245245
}
246246

247+
QString getDefaultDataDirectory()
248+
{
249+
return boostPathToQString(GetDefaultDataDir());
250+
}
251+
247252
QString getSaveFileName(QWidget *parent, const QString &caption, const QString &dir,
248253
const QString &filter,
249254
QString *selectedSuffixOut)

src/qt/guiutil.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,11 @@ namespace GUIUtil
7979

8080
void setClipboard(const QString& str);
8181

82+
/**
83+
* Determine default data directory for operating system.
84+
*/
85+
QString getDefaultDataDirectory();
86+
8287
/** Get save filename, mimics QFileDialog::getSaveFileName, except that it appends a default suffix
8388
when no suffix is provided by the user.
8489

src/qt/intro.cpp

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ QString Intro::getDataDirectory()
168168
void Intro::setDataDirectory(const QString &dataDir)
169169
{
170170
ui->dataDirectory->setText(dataDir);
171-
if(dataDir == getDefaultDataDirectory())
171+
if(dataDir == GUIUtil::getDefaultDataDirectory())
172172
{
173173
ui->dataDirDefault->setChecked(true);
174174
ui->dataDirectory->setEnabled(false);
@@ -180,11 +180,6 @@ void Intro::setDataDirectory(const QString &dataDir)
180180
}
181181
}
182182

183-
QString Intro::getDefaultDataDirectory()
184-
{
185-
return GUIUtil::boostPathToQString(GetDefaultDataDir());
186-
}
187-
188183
bool Intro::pickDataDirectory(interfaces::Node& node)
189184
{
190185
QSettings settings;
@@ -193,7 +188,7 @@ bool Intro::pickDataDirectory(interfaces::Node& node)
193188
if(!gArgs.GetArg("-datadir", "").empty())
194189
return true;
195190
/* 1) Default data directory for operating system */
196-
QString dataDir = getDefaultDataDirectory();
191+
QString dataDir = GUIUtil::getDefaultDataDirectory();
197192
/* 2) Allow QSettings to override default dir */
198193
dataDir = settings.value("strDataDir", dataDir).toString();
199194

@@ -239,7 +234,7 @@ bool Intro::pickDataDirectory(interfaces::Node& node)
239234
* override -datadir in the bitcoin.conf file in the default data directory
240235
* (to be consistent with bitcoind behavior)
241236
*/
242-
if(dataDir != getDefaultDataDirectory()) {
237+
if(dataDir != GUIUtil::getDefaultDataDirectory()) {
243238
node.softSetArg("-datadir", GUIUtil::qstringToBoostPath(dataDir).string()); // use OS locale for path setting
244239
}
245240
return true;
@@ -293,7 +288,7 @@ void Intro::on_ellipsisButton_clicked()
293288

294289
void Intro::on_dataDirDefault_clicked()
295290
{
296-
setDataDirectory(getDefaultDataDirectory());
291+
setDataDirectory(GUIUtil::getDefaultDataDirectory());
297292
}
298293

299294
void Intro::on_dataDirCustom_clicked()

src/qt/intro.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,6 @@ class Intro : public QDialog
4848
*/
4949
static bool pickDataDirectory(interfaces::Node& node);
5050

51-
/**
52-
* Determine default data directory for operating system.
53-
*/
54-
static QString getDefaultDataDirectory();
55-
5651
Q_SIGNALS:
5752
void requestCheck();
5853

src/qt/optionsmodel.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
#include <net.h>
1818
#include <netbase.h>
1919
#include <txdb.h> // for -dbcache defaults
20-
#include <qt/intro.h>
2120

2221
#include <QNetworkProxy>
2322
#include <QSettings>
@@ -110,7 +109,7 @@ void OptionsModel::Init(bool resetSettings)
110109
addOverriddenOption("-par");
111110

112111
if (!settings.contains("strDataDir"))
113-
settings.setValue("strDataDir", Intro::getDefaultDataDirectory());
112+
settings.setValue("strDataDir", GUIUtil::getDefaultDataDirectory());
114113

115114
// Wallet
116115
#ifdef ENABLE_WALLET
@@ -187,7 +186,7 @@ void OptionsModel::Reset()
187186
BackupSettings(GetDataDir(true) / "guisettings.ini.bak", settings);
188187

189188
// Save the strDataDir setting
190-
QString dataDir = Intro::getDefaultDataDirectory();
189+
QString dataDir = GUIUtil::getDefaultDataDirectory();
191190
dataDir = settings.value("strDataDir", dataDir).toString();
192191

193192
// Remove all entries from our QSettings object

test/lint/lint-circular-dependencies.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ EXPECTED_CIRCULAR_DEPENDENCIES=(
3636
"txmempool -> validation -> validationinterface -> txmempool"
3737
"qt/addressbookpage -> qt/bitcoingui -> qt/walletview -> qt/receivecoinsdialog -> qt/addressbookpage"
3838
"qt/addressbookpage -> qt/bitcoingui -> qt/walletview -> qt/signverifymessagedialog -> qt/addressbookpage"
39-
"qt/guiutil -> qt/walletmodel -> qt/optionsmodel -> qt/intro -> qt/guiutil"
4039
"qt/addressbookpage -> qt/bitcoingui -> qt/walletview -> qt/sendcoinsdialog -> qt/sendcoinsentry -> qt/addressbookpage"
4140
)
4241

0 commit comments

Comments
 (0)