@@ -43,6 +43,8 @@ OptionsQmlModel::OptionsQmlModel(interfaces::Node& node, bool is_onboarded)
43
43
m_server = SettingToBool (m_node.getPersistentSetting (" server" ), false );
44
44
45
45
m_upnp = SettingToBool (m_node.getPersistentSetting (" upnp" ), DEFAULT_UPNP);
46
+
47
+ m_dataDir = getDefaultDataDirString ();
46
48
}
47
49
48
50
void OptionsQmlModel::setDbcacheSizeMiB (int new_dbcache_size_mib)
@@ -144,7 +146,7 @@ QString PathToQString(const fs::path &path)
144
146
return QString::fromStdString (path.u8string ());
145
147
}
146
148
147
- QString OptionsQmlModel::getDefaultDataDirString ()
149
+ QString OptionsQmlModel::getDefaultDataDirString () const
148
150
{
149
151
return PathToQString (GetDefaultDataDir ());
150
152
}
@@ -156,11 +158,46 @@ QUrl OptionsQmlModel::getDefaultDataDirectory()
156
158
return QUrl::fromLocalFile (path);
157
159
}
158
160
159
- void OptionsQmlModel::setCustomDataDirArgs (QString path)
161
+ bool OptionsQmlModel::setCustomDataDirArgs (QString path)
160
162
{
161
163
if (!path.isEmpty ()) {
162
- // TODO: add actual custom data wiring
164
+ // TODO: add actual custom data wiring
165
+ #ifdef __ANDROID__
166
+ QString uri = path;
167
+ QString originalPrefix = " content://com.android.externalstorage.documents/tree/primary%3A" ;
168
+ QString newPrefix = " /storage/self/primary/" ;
169
+ QString path = uri.replace (originalPrefix, newPrefix);
170
+ #else
171
+ path = QUrl (path).toLocalFile ();
172
+ #endif // __ANDROID__
163
173
qDebug () << " PlaceHolder: Created data directory: " << path;
174
+
175
+ m_custom_datadir_string = path;
176
+ Q_EMIT customDataDirStringChanged (path);
177
+ setDataDir (path);
178
+ return true ;
179
+ }
180
+ return false ;
181
+ }
182
+
183
+ QString OptionsQmlModel::getCustomDataDirString () const
184
+ {
185
+ #ifdef __ANDROID__
186
+ m_custom_datadir_string = m_custom_datadir_string.replace (" content://com.android.externalstorage.documents/tree/primary%3A" , " /storage/self/primary/" );
187
+ #endif // __ANDROID__
188
+ return m_custom_datadir_string;
189
+ }
190
+
191
+ void OptionsQmlModel::setDataDir (QString new_data_dir)
192
+ {
193
+ if (new_data_dir != m_dataDir) {
194
+ m_dataDir = new_data_dir;
195
+ if (!getCustomDataDirString ().isEmpty () && (new_data_dir != getDefaultDataDirString ())) {
196
+ m_dataDir = getCustomDataDirString ();
197
+ } else {
198
+ m_dataDir = getDefaultDataDirString ();
199
+ }
200
+ Q_EMIT dataDirChanged (new_data_dir);
164
201
}
165
202
}
166
203
0 commit comments