24
24
#include < QDir>
25
25
#include < QSettings>
26
26
27
- OptionsQmlModel::OptionsQmlModel (interfaces::Node& node, bool is_onboarded)
27
+ OptionsQmlModel::OptionsQmlModel (interfaces::Node* node, bool is_onboarded)
28
28
: m_node{node}
29
29
, m_onboarded{is_onboarded}
30
30
{
31
- m_dbcache_size_mib = SettingToInt (m_node.getPersistentSetting (" dbcache" ), nDefaultDbCache);
31
+ gArgs .LockSettings ([&](common::Settings& cs) {
32
+ // Clear existing settings to ensure we're only storing new command line arguments
33
+ m_cli_settings.command_line_options .clear ();
32
34
33
- m_listen = SettingToBool (m_node.getPersistentSetting (" listen" ), DEFAULT_LISTEN);
35
+ // Copy only the command line arguments from the provided settings
36
+ m_cli_settings.command_line_options = cs.command_line_options ;
37
+ });
34
38
35
- m_natpmp = SettingToBool (m_node.getPersistentSetting (" natpmp" ), DEFAULT_NATPMP);
39
+ if (!is_onboarded) {
40
+ // added this to lock settings to default values
41
+ if (!gArgs .IsArgSet (" -resetguisettings" )) {
42
+ gArgs .LockSettings ([&](common::Settings& s) { m_previous_settings = s; });
43
+ }
44
+ m_dbcache_size_mib = nDefaultDbCache;
45
+ m_listen = DEFAULT_LISTEN;
46
+ m_natpmp = DEFAULT_NATPMP;
47
+ int64_t prune_value = 0 ;
48
+ m_prune = (prune_value > 1 );
49
+ m_prune_size_gb = m_prune ? PruneMiBtoGB (prune_value) : DEFAULT_PRUNE_TARGET_GB;
50
+ m_script_threads = DEFAULT_SCRIPTCHECK_THREADS;
51
+ m_server = false ;
52
+ m_upnp = DEFAULT_UPNP;
53
+ }
54
+
55
+ #ifdef __ANDROID__
56
+ if (!getCustomDataDirString ().isEmpty () && (m_dataDir != getDefaultDataDirString ())) {
57
+ m_dataDir = getCustomDataDirString ();
58
+ } else {
59
+ m_dataDir = getDefaultDataDirString ();
60
+ }
61
+ #else
62
+ QSettings settings;
63
+ m_dataDir = settings.value (" strDataDir" , m_dataDir).toString ();
64
+ #endif // __ANDROID__
65
+ }
66
+
67
+ void OptionsQmlModel::requestShutdown ()
68
+ {
69
+ Q_EMIT requestedShutdown ();
70
+ }
71
+
72
+ void OptionsQmlModel::setNode (interfaces::Node* node, bool is_onboarded) {
73
+ if (node != nullptr ) {
74
+ m_node = node;
75
+ if (is_onboarded) {
76
+ m_dbcache_size_mib = SettingToInt (m_node->getPersistentSetting (" dbcache" ), nDefaultDbCache);
77
+
78
+ m_listen = SettingToBool (m_node->getPersistentSetting (" listen" ), DEFAULT_LISTEN);
36
79
37
- int64_t prune_value{SettingToInt (m_node.getPersistentSetting (" prune" ), 0 )};
38
- m_prune = (prune_value > 1 );
39
- m_prune_size_gb = m_prune ? PruneMiBtoGB (prune_value) : DEFAULT_PRUNE_TARGET_GB;
80
+ m_natpmp = SettingToBool (m_node->getPersistentSetting (" natpmp" ), DEFAULT_NATPMP);
40
81
41
- m_script_threads = SettingToInt (m_node.getPersistentSetting (" par" ), DEFAULT_SCRIPTCHECK_THREADS);
82
+ int64_t prune_value{SettingToInt (m_node->getPersistentSetting (" prune" ), 0 )};
83
+ m_prune = (prune_value > 1 );
84
+ m_prune_size_gb = m_prune ? PruneMiBtoGB (prune_value) : DEFAULT_PRUNE_TARGET_GB;
42
85
43
- m_server = SettingToBool (m_node. getPersistentSetting (" server " ), false );
86
+ m_script_threads = SettingToInt (m_node-> getPersistentSetting (" par " ), DEFAULT_SCRIPTCHECK_THREADS );
44
87
45
- m_upnp = SettingToBool (m_node. getPersistentSetting (" upnp " ), DEFAULT_UPNP );
88
+ m_server = SettingToBool (m_node-> getPersistentSetting (" server " ), false );
46
89
47
- m_dataDir = getDefaultDataDirString ();
90
+ m_upnp = SettingToBool (m_node->getPersistentSetting (" upnp" ), DEFAULT_UPNP);
91
+ }
92
+ // qDebug() << "Node Set";
93
+ return ;
94
+ }
48
95
}
49
96
50
97
void OptionsQmlModel::setDbcacheSizeMiB (int new_dbcache_size_mib)
51
98
{
52
99
if (new_dbcache_size_mib != m_dbcache_size_mib) {
53
100
m_dbcache_size_mib = new_dbcache_size_mib;
54
101
if (m_onboarded) {
55
- m_node. updateRwSetting (" dbcache" , new_dbcache_size_mib);
102
+ m_node-> updateRwSetting (" dbcache" , new_dbcache_size_mib);
56
103
}
57
104
Q_EMIT dbcacheSizeMiBChanged (new_dbcache_size_mib);
58
105
}
@@ -63,7 +110,7 @@ void OptionsQmlModel::setListen(bool new_listen)
63
110
if (new_listen != m_listen) {
64
111
m_listen = new_listen;
65
112
if (m_onboarded) {
66
- m_node. updateRwSetting (" listen" , new_listen);
113
+ m_node-> updateRwSetting (" listen" , new_listen);
67
114
}
68
115
Q_EMIT listenChanged (new_listen);
69
116
}
@@ -74,7 +121,7 @@ void OptionsQmlModel::setNatpmp(bool new_natpmp)
74
121
if (new_natpmp != m_natpmp) {
75
122
m_natpmp = new_natpmp;
76
123
if (m_onboarded) {
77
- m_node. updateRwSetting (" natpmp" , new_natpmp);
124
+ m_node-> updateRwSetting (" natpmp" , new_natpmp);
78
125
}
79
126
Q_EMIT natpmpChanged (new_natpmp);
80
127
}
@@ -85,7 +132,7 @@ void OptionsQmlModel::setPrune(bool new_prune)
85
132
if (new_prune != m_prune) {
86
133
m_prune = new_prune;
87
134
if (m_onboarded) {
88
- m_node. updateRwSetting (" prune" , pruneSetting ());
135
+ m_node-> updateRwSetting (" prune" , pruneSetting ());
89
136
}
90
137
Q_EMIT pruneChanged (new_prune);
91
138
}
@@ -96,7 +143,7 @@ void OptionsQmlModel::setPruneSizeGB(int new_prune_size_gb)
96
143
if (new_prune_size_gb != m_prune_size_gb) {
97
144
m_prune_size_gb = new_prune_size_gb;
98
145
if (m_onboarded) {
99
- m_node. updateRwSetting (" prune" , pruneSetting ());
146
+ m_node-> updateRwSetting (" prune" , pruneSetting ());
100
147
}
101
148
Q_EMIT pruneSizeGBChanged (new_prune_size_gb);
102
149
}
@@ -107,7 +154,7 @@ void OptionsQmlModel::setScriptThreads(int new_script_threads)
107
154
if (new_script_threads != m_script_threads) {
108
155
m_script_threads = new_script_threads;
109
156
if (m_onboarded) {
110
- m_node. updateRwSetting (" par" , new_script_threads);
157
+ m_node-> updateRwSetting (" par" , new_script_threads);
111
158
}
112
159
Q_EMIT scriptThreadsChanged (new_script_threads);
113
160
}
@@ -118,7 +165,7 @@ void OptionsQmlModel::setServer(bool new_server)
118
165
if (new_server != m_server) {
119
166
m_server = new_server;
120
167
if (m_onboarded) {
121
- m_node. updateRwSetting (" server" , new_server);
168
+ m_node-> updateRwSetting (" server" , new_server);
122
169
}
123
170
Q_EMIT serverChanged (new_server);
124
171
}
@@ -129,7 +176,7 @@ void OptionsQmlModel::setUpnp(bool new_upnp)
129
176
if (new_upnp != m_upnp) {
130
177
m_upnp = new_upnp;
131
178
if (m_onboarded) {
132
- m_node. updateRwSetting (" upnp" , new_upnp);
179
+ m_node-> updateRwSetting (" upnp" , new_upnp);
133
180
}
134
181
Q_EMIT upnpChanged (new_upnp);
135
182
}
@@ -158,6 +205,33 @@ QUrl OptionsQmlModel::getDefaultDataDirectory()
158
205
return QUrl::fromLocalFile (path);
159
206
}
160
207
208
+ void OptionsQmlModel::defaultReset ()
209
+ {
210
+ QSettings settings;
211
+ // Save the strDataDir setting
212
+ QString path = GUIUtil::getDefaultDataDirectory ();
213
+
214
+ setDataDir (path);
215
+
216
+ // Remove all entries from our QSettings object
217
+ settings.clear ();
218
+
219
+ // Set strDataDir
220
+ settings.setValue (" strDataDir" , path);
221
+
222
+ // Set that this was reset
223
+ settings.setValue (" fReset" , true );
224
+
225
+ // Clear the settings
226
+ gArgs .LockSettings ([&](common::Settings& s) { s = m_previous_settings; });
227
+
228
+ // reinstate command line arguments
229
+ gArgs .LockSettings ([&](common::Settings& cs) { cs = m_cli_settings; });
230
+ gArgs .SoftSetBoolArg (" -printtoconsole" , false );
231
+
232
+ gArgs .ClearPathCache ();
233
+ }
234
+
161
235
bool OptionsQmlModel::setCustomDataDirArgs (QString path)
162
236
{
163
237
if (!path.isEmpty ()) {
@@ -168,12 +242,29 @@ bool OptionsQmlModel::setCustomDataDirArgs(QString path)
168
242
QString newPrefix = " /storage/self/primary/" ;
169
243
QString path = uri.replace (originalPrefix, newPrefix);
170
244
#else
245
+ QSettings settings;
171
246
path = QUrl (path).toLocalFile ();
172
247
#endif // __ANDROID__
173
- qDebug () << " PlaceHolder: Created data directory: " << path;
248
+ // Delet before merge
249
+ // qDebug() << "PlaceHolder: Created data directory: " << path;
250
+ try {
251
+ if (TryCreateDirectories (GUIUtil::QStringToPath (path))) {
252
+ // qDebug() << "Created data directory: " << path;
253
+ TryCreateDirectories (GUIUtil::QStringToPath (path) / " wallets" );
254
+ }
255
+ } catch (const std::exception& e) {
256
+ qDebug () << " Error creating data directory: " << e.what ();
257
+ }
258
+ #ifndef __ANDROID__
259
+ settings.setValue (" strDataDir" , path);
260
+ #endif // __ANDROID__
261
+ if (path != GUIUtil::getDefaultDataDirectory ()) {
262
+ gArgs .SoftSetArg (" -datadir" , fs::PathToString (GUIUtil::QStringToPath (path)));
263
+ }
264
+ gArgs .ClearPathCache ();
265
+ Q_EMIT customDataDirStringChanged (m_custom_datadir_string);
174
266
175
267
m_custom_datadir_string = path;
176
- Q_EMIT customDataDirStringChanged (path);
177
268
setDataDir (path);
178
269
return true ;
179
270
}
@@ -203,27 +294,28 @@ void OptionsQmlModel::setDataDir(QString new_data_dir)
203
294
204
295
void OptionsQmlModel::onboard ()
205
296
{
206
- m_node. resetSettings ();
297
+ m_node-> resetSettings ();
207
298
if (m_dbcache_size_mib != nDefaultDbCache) {
208
- m_node. updateRwSetting (" dbcache" , m_dbcache_size_mib);
299
+ m_node-> updateRwSetting (" dbcache" , m_dbcache_size_mib);
209
300
}
210
301
if (m_listen) {
211
- m_node. updateRwSetting (" listen" , m_listen);
302
+ m_node-> updateRwSetting (" listen" , m_listen);
212
303
}
213
304
if (m_natpmp) {
214
- m_node. updateRwSetting (" natpmp" , m_natpmp);
305
+ m_node-> updateRwSetting (" natpmp" , m_natpmp);
215
306
}
216
307
if (m_prune) {
217
- m_node. updateRwSetting (" prune" , pruneSetting ());
308
+ m_node-> updateRwSetting (" prune" , pruneSetting ());
218
309
}
219
310
if (m_script_threads != DEFAULT_SCRIPTCHECK_THREADS) {
220
- m_node. updateRwSetting (" par" , m_script_threads);
311
+ m_node-> updateRwSetting (" par" , m_script_threads);
221
312
}
222
313
if (m_server) {
223
- m_node. updateRwSetting (" server" , m_server);
314
+ m_node-> updateRwSetting (" server" , m_server);
224
315
}
225
316
if (m_upnp) {
226
- m_node. updateRwSetting (" upnp" , m_upnp);
317
+ m_node-> updateRwSetting (" upnp" , m_upnp);
227
318
}
319
+
228
320
m_onboarded = true ;
229
321
}
0 commit comments