Skip to content

Commit 6ea9194

Browse files
committed
qml: added getting custom datadir for display
1 parent 84d388d commit 6ea9194

File tree

2 files changed

+48
-7
lines changed

2 files changed

+48
-7
lines changed

src/qml/models/options_model.cpp

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ OptionsQmlModel::OptionsQmlModel(interfaces::Node& node, bool is_onboarded)
4343
m_server = SettingToBool(m_node.getPersistentSetting("server"), false);
4444

4545
m_upnp = SettingToBool(m_node.getPersistentSetting("upnp"), DEFAULT_UPNP);
46+
47+
m_dataDir = getDefaultDataDirString();
4648
}
4749

4850
void OptionsQmlModel::setDbcacheSizeMiB(int new_dbcache_size_mib)
@@ -144,7 +146,7 @@ QString PathToQString(const fs::path &path)
144146
return QString::fromStdString(path.u8string());
145147
}
146148

147-
QString OptionsQmlModel::getDefaultDataDirString()
149+
QString OptionsQmlModel::getDefaultDataDirString() const
148150
{
149151
return PathToQString(GetDefaultDataDir());
150152
}
@@ -156,11 +158,46 @@ QUrl OptionsQmlModel::getDefaultDataDirectory()
156158
return QUrl::fromLocalFile(path);
157159
}
158160

159-
void OptionsQmlModel::setCustomDataDirArgs(QString path)
161+
bool OptionsQmlModel::setCustomDataDirArgs(QString path)
160162
{
161163
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__
163173
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);
164201
}
165202
}
166203

src/qml/models/options_model.h

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class OptionsQmlModel : public QObject
3434
Q_PROPERTY(int scriptThreads READ scriptThreads WRITE setScriptThreads NOTIFY scriptThreadsChanged)
3535
Q_PROPERTY(bool server READ server WRITE setServer NOTIFY serverChanged)
3636
Q_PROPERTY(bool upnp READ upnp WRITE setUpnp NOTIFY upnpChanged)
37+
Q_PROPERTY(QString dataDir READ dataDir WRITE setDataDir NOTIFY dataDirChanged)
3738
Q_PROPERTY(QString getDefaultDataDirString READ getDefaultDataDirString CONSTANT)
3839
Q_PROPERTY(QUrl getDefaultDataDirectory READ getDefaultDataDirectory CONSTANT)
3940

@@ -60,14 +61,16 @@ class OptionsQmlModel : public QObject
6061
void setServer(bool new_server);
6162
bool upnp() const { return m_upnp; }
6263
void setUpnp(bool new_upnp);
63-
QString getDefaultDataDirString();
64+
QString dataDir() const { return m_dataDir; }
65+
void setDataDir(QString new_data_dir);
66+
QString getDefaultDataDirString() const;
6467
QUrl getDefaultDataDirectory();
65-
Q_INVOKABLE void setCustomDataDirArgs(QString path);
68+
Q_INVOKABLE bool setCustomDataDirArgs(QString path);
69+
Q_INVOKABLE QString getCustomDataDirString() const;
6670

6771
public Q_SLOTS:
6872
void setCustomDataDirString(const QString &new_custom_datadir_string) {
6973
m_custom_datadir_string = new_custom_datadir_string;
70-
m_signalReceived = true;
7174
}
7275
Q_INVOKABLE void onboard();
7376

@@ -81,6 +84,7 @@ public Q_SLOTS:
8184
void serverChanged(bool new_server);
8285
void upnpChanged(bool new_upnp);
8386
void customDataDirStringChanged(QString new_custom_datadir_string);
87+
void dataDirChanged(QString new_data_dir);
8488

8589
private:
8690
interfaces::Node& m_node;
@@ -100,7 +104,7 @@ public Q_SLOTS:
100104
bool m_server;
101105
bool m_upnp;
102106
QString m_custom_datadir_string;
103-
bool m_signalReceived = false;
107+
QString m_dataDir;
104108

105109
common::SettingsValue pruneSetting() const;
106110
};

0 commit comments

Comments
 (0)