1
+ // Copyright (c) 2024 The Bitcoin Core developers
2
+ // Distributed under the MIT software license, see the accompanying
3
+ // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
+
5
+ #include < qml/models/onboardingmodel.h>
6
+
7
+ #include < common/args.h>
8
+ #include < common/settings.h>
9
+ #include < common/settings.h>
10
+ #include < common/system.h>
11
+ #include < qt/guiconstants.h>
12
+ #include < qt/guiutil.h>
13
+ #include < util/fs.h>
14
+ #include < util/fs_helpers.h>
15
+
16
+ #include < QDebug>
17
+ #include < QDir>
18
+ #include < QSettings>
19
+
20
+ OnboardingModel::OnboardingModel ()
21
+ {
22
+ // This is to reset the data directory to the default
23
+ gArgs .LockSettings ([&](common::Settings& s) { m_previous_settings = s; });
24
+
25
+ // Initiate prune settings
26
+ m_prune = false ;
27
+ }
28
+
29
+ void OnboardingModel::setDbcacheSizeMiB (int new_dbcache_size_mib)
30
+ {
31
+ if (new_dbcache_size_mib != m_dbcache_size_mib) {
32
+ m_dbcache_size_mib = new_dbcache_size_mib;
33
+ // // qDebug () << "Dbcache Size Set: " << new_dbcache_size_mib;
34
+ Q_EMIT dbcacheSizeMiBChanged (new_dbcache_size_mib);
35
+
36
+ }
37
+ }
38
+
39
+ void OnboardingModel::setListen (bool new_listen)
40
+ {
41
+ if (new_listen != m_listen) {
42
+ m_listen = new_listen;
43
+ // qDebug () << "Listen Set: " << new_listen;
44
+ Q_EMIT listenChanged (new_listen);
45
+ }
46
+ }
47
+
48
+ void OnboardingModel::setNatpmp (bool new_natpmp)
49
+ {
50
+ if (new_natpmp != m_natpmp) {
51
+ m_natpmp = new_natpmp;
52
+ // qDebug () << "Natpmp Set: " << new_natpmp;
53
+ Q_EMIT natpmpChanged (new_natpmp);
54
+ }
55
+ }
56
+
57
+ void OnboardingModel::setPrune (bool new_prune)
58
+ {
59
+ if (new_prune != m_prune) {
60
+ m_prune = new_prune;
61
+ // qDebug () << "Prune Set: " << new_prune;
62
+ Q_EMIT pruneChanged (new_prune);
63
+ }
64
+ }
65
+
66
+ void OnboardingModel::setPruneSizeGB (int new_prune_size_gb)
67
+ {
68
+ if (new_prune_size_gb != m_prune_size_gb) {
69
+ m_prune_size_gb = new_prune_size_gb;
70
+ // qDebug () << "Prune Size Set: " << new_prune_size_gb;
71
+ Q_EMIT pruneSizeGBChanged (new_prune_size_gb);
72
+ }
73
+ }
74
+
75
+ void OnboardingModel::setScriptThreads (int new_script_threads)
76
+ {
77
+ if (new_script_threads != m_script_threads) {
78
+ m_script_threads = new_script_threads;
79
+ // qDebug () << "Script Threads Set: " << new_script_threads;
80
+ Q_EMIT scriptThreadsChanged (new_script_threads);
81
+ }
82
+ }
83
+
84
+ void OnboardingModel::setServer (bool new_server)
85
+ {
86
+ if (new_server != m_server) {
87
+ m_server = new_server;
88
+ // qDebug () << "Server Set: " << new_server;
89
+ Q_EMIT serverChanged (new_server);
90
+ }
91
+ }
92
+
93
+ void OnboardingModel::setUpnp (bool new_upnp)
94
+ {
95
+ if (new_upnp != m_upnp) {
96
+ m_upnp = new_upnp;
97
+ // qDebug () << "Upnp Set: " << new_upnp;
98
+ Q_EMIT upnpChanged (new_upnp);
99
+ }
100
+ }
101
+
102
+ void OnboardingModel::requestShutdown ()
103
+ {
104
+ Q_EMIT requestedShutdown ();
105
+ }
106
+
107
+ QString PathToQString (const fs::path &path)
108
+ {
109
+ return QString::fromStdString (path.u8string ());
110
+ }
111
+
112
+ QString OnboardingModel::getDefaultDataDirString ()
113
+ {
114
+ return PathToQString (GetDefaultDataDir ());
115
+ }
116
+
117
+
118
+ QUrl OnboardingModel::getDefaultDataDirectory ()
119
+ {
120
+ QString path = getDefaultDataDirString ();
121
+ return QUrl::fromLocalFile (path);
122
+ }
123
+
124
+ void OnboardingModel::defaultReset ()
125
+ {
126
+ QSettings settings;
127
+ // Save the strDataDir setting
128
+ QString dataDir = GUIUtil::getDefaultDataDirectory ();
129
+
130
+ // Remove all entries from our QSettings object
131
+ settings.clear ();
132
+
133
+ // Set strDataDir
134
+ settings.setValue (" strDataDir" , dataDir);
135
+
136
+ // Set that this was reset
137
+ settings.setValue (" fReset" , true );
138
+
139
+ // qDebug() << "Resetting data directory: " << dataDir;
140
+
141
+ gArgs .LockSettings ([&](common::Settings& s) { s = m_previous_settings; });
142
+ gArgs .ClearPathCache ();
143
+ // for debug purposes checking the cached datadir
144
+ // const fs::path& cached_dataDir = gArgs.GetDataDirNet();
145
+ // qDebug() << "Cached Data directory: " << QString::fromStdString(cached_dataDir);
146
+ }
147
+
148
+ void OnboardingModel::setCustomDataDirArgs (QString path)
149
+ {
150
+ if (!path.isEmpty ()) {
151
+ QSettings settings;
152
+ path = QUrl (path).toLocalFile ();
153
+ try {
154
+ if (TryCreateDirectories (GUIUtil::QStringToPath (path))) {
155
+ // qDebug() << "Created data directory: " << path;
156
+ TryCreateDirectories (GUIUtil::QStringToPath (path) / " wallets" );
157
+ }
158
+ } catch (const std::exception& e) {
159
+ qDebug () << " Error creating data directory: " << e.what ();
160
+ }
161
+ settings.setValue (" strDataDir" , path);
162
+ if (path != GUIUtil::getDefaultDataDirectory ()) {
163
+ gArgs .SoftSetArg (" -datadir" , fs::PathToString (GUIUtil::QStringToPath (path)));
164
+ }
165
+ gArgs .ClearPathCache ();
166
+ Q_EMIT customDataDirStringChanged (m_custom_datadir_string);
167
+ }
168
+ }
0 commit comments