@@ -146,9 +146,22 @@ void GSettingsSchemaQml::setPath(const QByteArray &path) {
148GSettingsQml::GSettingsQml(QObject *parent)
148GSettingsQml::GSettingsQml(QObject *parent)
149− : QObject(parent)
149+ : QObject(parent),
151 m_schema = new GSettingsSchemaQml(this);
152 m_schema = new GSettingsSchemaQml(this);
155+void GSettingsQml::classBegin()
159+void GSettingsQml::componentComplete()
161+ // Emulate what the real GSettings module does, and only return undefined
162+ // values until we are completed loading.
152 connect(GSettingsControllerQml::instance(), &GSettingsControllerQml::pictureUriChanged,
165 connect(GSettingsControllerQml::instance(), &GSettingsControllerQml::pictureUriChanged,
153 this, &GSettingsQml::pictureUriChanged);
166 this, &GSettingsQml::pictureUriChanged);
154 connect(GSettingsControllerQml::instance(), &GSettingsControllerQml::usageModeChanged,
167 connect(GSettingsControllerQml::instance(), &GSettingsControllerQml::usageModeChanged,
@@ -167,98 +180,98 @@ GSettingsSchemaQml * GSettingsQml::schema() const {
167 return m_schema;
180 return m_schema;
170−QString GSettingsQml::pictureUri() const
183+QVariant GSettingsQml::pictureUri() const
172− if (m_schema->id() == "org.gnome.desktop.background") {
185+ if (m_valid && m_schema->id() == "org.gnome.desktop.background") {
173 return GSettingsControllerQml::instance()->pictureUri();
186 return GSettingsControllerQml::instance()->pictureUri();
175− return "";
188+ return QVariant();
179−void GSettingsQml::setPictureUri(const QString &str)
192+void GSettingsQml::setPictureUri(const QVariant &str)
181− if (m_schema->id() == "org.gnome.desktop.background") {
194+ if (m_valid && m_schema->id() == "org.gnome.desktop.background") {
182− GSettingsControllerQml::instance()->setPictureUri(str);
195+ GSettingsControllerQml::instance()->setPictureUri(str.toString());
186−QString GSettingsQml::usageMode() const
199+QVariant GSettingsQml::usageMode() const
188− if (m_schema->id() == "com.canonical.Unity8") {
201+ if (m_valid && m_schema->id() == "com.canonical.Unity8") {
189 return GSettingsControllerQml::instance()->usageMode();
202 return GSettingsControllerQml::instance()->usageMode();
191− return "";
204+ return QVariant();
195−void GSettingsQml::setUsageMode(const QString &usageMode)
208+void GSettingsQml::setUsageMode(const QVariant &usageMode)
197− if (m_schema->id() == "com.canonical.Unity8") {
210+ if (m_valid && m_schema->id() == "com.canonical.Unity8") {
198− GSettingsControllerQml::instance()->setUsageMode(usageMode);
211+ GSettingsControllerQml::instance()->setUsageMode(usageMode.toString());
202−qint64 GSettingsQml::lockedOutTime() const
215+QVariant GSettingsQml::lockedOutTime() const
204− if (m_schema->id() == "com.canonical.Unity8.Greeter") {
217+ if (m_valid && m_schema->id() == "com.canonical.Unity8.Greeter") {
205 return GSettingsControllerQml::instance()->lockedOutTime();
218 return GSettingsControllerQml::instance()->lockedOutTime();
207− return 0;
220+ return QVariant();
211−void GSettingsQml::setLockedOutTime(qint64 timestamp)
224+void GSettingsQml::setLockedOutTime(const QVariant ×tamp)
213− if (m_schema->id() == "com.canonical.Unity8.Greeter") {
226+ if (m_valid && m_schema->id() == "com.canonical.Unity8.Greeter") {
214− GSettingsControllerQml::instance()->setLockedOutTime(timestamp);
227+ GSettingsControllerQml::instance()->setLockedOutTime(timestamp.value<qint64>());
218−QStringList GSettingsQml::lifecycleExemptAppids() const
231+QVariant GSettingsQml::lifecycleExemptAppids() const
220− if (m_schema->id() == "com.canonical.qtmir") {
233+ if (m_valid && m_schema->id() == "com.canonical.qtmir") {
221 return GSettingsControllerQml::instance()->lifecycleExemptAppids();
234 return GSettingsControllerQml::instance()->lifecycleExemptAppids();
223− return QStringList();
236+ return QVariant();
227−bool GSettingsQml::autohideLauncher() const
240+QVariant GSettingsQml::autohideLauncher() const
229− if (m_schema->id() == "com.canonical.Unity8") {
242+ if (m_valid && m_schema->id() == "com.canonical.Unity8") {
230 return GSettingsControllerQml::instance()->autohideLauncher();
243 return GSettingsControllerQml::instance()->autohideLauncher();
232− return false;
245+ return QVariant();
236−int GSettingsQml::launcherWidth() const
249+QVariant GSettingsQml::launcherWidth() const
238− if (m_schema->id() == "com.canonical.Unity8") {
251+ if (m_valid && m_schema->id() == "com.canonical.Unity8") {
239 return GSettingsControllerQml::instance()->launcherWidth();
252 return GSettingsControllerQml::instance()->launcherWidth();
241− return false;
254+ return QVariant();
245−void GSettingsQml::setLifecycleExemptAppids(const QStringList &appIds)
258+void GSettingsQml::setLifecycleExemptAppids(const QVariant &appIds)
247− if (m_schema->id() == "com.canonical.qtmir") {
260+ if (m_valid && m_schema->id() == "com.canonical.qtmir") {
248− GSettingsControllerQml::instance()->setLifecycleExemptAppids(appIds);
261+ GSettingsControllerQml::instance()->setLifecycleExemptAppids(appIds.toStringList());
252−void GSettingsQml::setAutohideLauncher(bool autohideLauncher)
265+void GSettingsQml::setAutohideLauncher(const QVariant &autohideLauncher)
254− if (m_schema->id() == "com.canonical.Unity8") {
267+ if (m_valid && m_schema->id() == "com.canonical.Unity8") {
255− GSettingsControllerQml::instance()->setAutohideLauncher(autohideLauncher);
268+ GSettingsControllerQml::instance()->setAutohideLauncher(autohideLauncher.toBool());
259−void GSettingsQml::setLauncherWidth(int launcherWidth)
272+void GSettingsQml::setLauncherWidth(const QVariant &launcherWidth)
261− if (m_schema->id() == "com.canonical.Unity8") {
274+ if (m_valid && m_schema->id() == "com.canonical.Unity8") {
262− GSettingsControllerQml::instance()->setLauncherWidth(launcherWidth);
275+ GSettingsControllerQml::instance()->setLauncherWidth(launcherWidth.toInt());