1515
1616#include < cassert>
1717
18- OptionsQmlModel::OptionsQmlModel (interfaces::Node& node)
18+ OptionsQmlModel::OptionsQmlModel (interfaces::Node& node, bool is_onboarded )
1919 : m_node{node}
20+ , m_onboarded{is_onboarded}
2021{
2122 m_dbcache_size_mib = SettingToInt (m_node.getPersistentSetting (" dbcache" ), nDefaultDbCache);
2223
@@ -31,7 +32,9 @@ void OptionsQmlModel::setDbcacheSizeMiB(int new_dbcache_size_mib)
3132{
3233 if (new_dbcache_size_mib != m_dbcache_size_mib) {
3334 m_dbcache_size_mib = new_dbcache_size_mib;
34- m_node.updateRwSetting (" dbcache" , new_dbcache_size_mib);
35+ if (m_onboarded) {
36+ m_node.updateRwSetting (" dbcache" , new_dbcache_size_mib);
37+ }
3538 Q_EMIT dbcacheSizeMiBChanged (new_dbcache_size_mib);
3639 }
3740}
@@ -40,7 +43,9 @@ void OptionsQmlModel::setListen(bool new_listen)
4043{
4144 if (new_listen != m_listen) {
4245 m_listen = new_listen;
43- m_node.updateRwSetting (" listen" , new_listen);
46+ if (m_onboarded) {
47+ m_node.updateRwSetting (" listen" , new_listen);
48+ }
4449 Q_EMIT listenChanged (new_listen);
4550 }
4651}
@@ -49,7 +54,9 @@ void OptionsQmlModel::setNatpmp(bool new_natpmp)
4954{
5055 if (new_natpmp != m_natpmp) {
5156 m_natpmp = new_natpmp;
52- m_node.updateRwSetting (" natpmp" , new_natpmp);
57+ if (m_onboarded) {
58+ m_node.updateRwSetting (" natpmp" , new_natpmp);
59+ }
5360 Q_EMIT natpmpChanged (new_natpmp);
5461 }
5562}
@@ -58,7 +65,9 @@ void OptionsQmlModel::setPrune(bool new_prune)
5865{
5966 if (new_prune != m_prune) {
6067 m_prune = new_prune;
61- m_node.updateRwSetting (" prune" , pruneSetting ());
68+ if (m_onboarded) {
69+ m_node.updateRwSetting (" prune" , pruneSetting ());
70+ }
6271 Q_EMIT pruneChanged (new_prune);
6372 }
6473}
@@ -67,7 +76,9 @@ void OptionsQmlModel::setPruneSizeGB(int new_prune_size_gb)
6776{
6877 if (new_prune_size_gb != m_prune_size_gb) {
6978 m_prune_size_gb = new_prune_size_gb;
70- m_node.updateRwSetting (" prune" , pruneSetting ());
79+ if (m_onboarded) {
80+ m_node.updateRwSetting (" prune" , pruneSetting ());
81+ }
7182 Q_EMIT pruneSizeGBChanged (new_prune_size_gb);
7283 }
7384}
@@ -76,7 +87,9 @@ void OptionsQmlModel::setScriptThreads(int new_script_threads)
7687{
7788 if (new_script_threads != m_script_threads) {
7889 m_script_threads = new_script_threads;
79- m_node.updateRwSetting (" par" , new_script_threads);
90+ if (m_onboarded) {
91+ m_node.updateRwSetting (" par" , new_script_threads);
92+ }
8093 Q_EMIT scriptThreadsChanged (new_script_threads);
8194 }
8295}
@@ -85,7 +98,9 @@ void OptionsQmlModel::setServer(bool new_server)
8598{
8699 if (new_server != m_server) {
87100 m_server = new_server;
88- m_node.updateRwSetting (" server" , new_server);
101+ if (m_onboarded) {
102+ m_node.updateRwSetting (" server" , new_server);
103+ }
89104 Q_EMIT serverChanged (new_server);
90105 }
91106}
@@ -94,7 +109,9 @@ void OptionsQmlModel::setUpnp(bool new_upnp)
94109{
95110 if (new_upnp != m_upnp) {
96111 m_upnp = new_upnp;
97- m_node.updateRwSetting (" upnp" , new_upnp);
112+ if (m_onboarded) {
113+ m_node.updateRwSetting (" upnp" , new_upnp);
114+ }
98115 Q_EMIT upnpChanged (new_upnp);
99116 }
100117}
@@ -104,3 +121,30 @@ util::SettingsValue OptionsQmlModel::pruneSetting() const
104121 assert (!m_prune || m_prune_size_gb >= 1 );
105122 return m_prune ? PruneGBtoMiB (m_prune_size_gb) : 0 ;
106123}
124+
125+ void OptionsQmlModel::onboard ()
126+ {
127+ m_node.resetSettings ();
128+ if (m_dbcache_size_mib != nDefaultDbCache) {
129+ m_node.updateRwSetting (" dbcache" , m_dbcache_size_mib);
130+ }
131+ if (m_listen) {
132+ m_node.updateRwSetting (" listen" , m_listen);
133+ }
134+ if (m_natpmp) {
135+ m_node.updateRwSetting (" natpmp" , m_natpmp);
136+ }
137+ if (m_prune) {
138+ m_node.updateRwSetting (" prune" , pruneSetting ());
139+ }
140+ if (m_script_threads != DEFAULT_SCRIPTCHECK_THREADS) {
141+ m_node.updateRwSetting (" par" , m_script_threads);
142+ }
143+ if (m_server) {
144+ m_node.updateRwSetting (" server" , m_server);
145+ }
146+ if (m_upnp) {
147+ m_node.updateRwSetting (" upnp" , m_upnp);
148+ }
149+ m_onboarded = true ;
150+ }
0 commit comments