~ci-train-bot/ubuntu-system-settings/ubuntu-system-settings-ubuntu-yakkety-1966

« back to all changes in this revision

Viewing changes to plugins/background/MainPage.qml

  • Committer: Iain Lane
  • Date: 2013-07-21 19:17:45 UTC
  • mto: This revision was merged to the branch mainline in revision 173.
  • Revision ID: iain.lane@canonical.com-20130721191745-38224w1lus9rkopx
Add a shared GSettings schema for settings-internal settings & make background use it

Show diffs side-by-side

added added

removed removed

Lines of Context:
35
35
        id: backgroundPanel
36
36
 
37
37
        function maybeUpdateSource() {
38
 
            var source = backgroundPanel.backgroundFile
 
38
            var source = backgroundPanel.backgroundFile;
39
39
            if (source != "" && source != undefined)
40
 
                testWelcomeImage.source = source
 
40
                testWelcomeImage.source = source;
41
41
            else if (testWelcomeImage.source == "")
42
 
                testWelcomeImage.source = testWelcomeImage.fallback
 
42
                testWelcomeImage.source = testWelcomeImage.fallback;
43
43
        }
44
44
 
45
45
        onBackgroundFileChanged: maybeUpdateSource()
49
49
    GSettings {
50
50
        id: background
51
51
        schema.id: "org.gnome.desktop.background"
 
52
        onChanged: {
 
53
            if (name == "pictureUri")
 
54
                testHomeImage.source = value
 
55
        }
52
56
    }
53
57
 
54
58
    Label {
74
78
 
75
79
        onClicked: pageStack.push(Utilities.createAlbumPage(
76
80
                                      i18n.tr("Welcome screen")))
 
81
 
 
82
        onSourceChanged: backgroundPanel.backgroundFile = source
77
83
    }
78
84
 
79
85
    Label {
102
108
 
103
109
        onClicked: pageStack.push(Utilities.createAlbumPage(
104
110
                                      i18n.tr("Home screen")))
 
111
 
 
112
        onSourceChanged: background.pictureUri = Qt.resolvedUrl(source);
105
113
    }
106
114
 
107
115
    /* We don't have a good way of doing this after passing an invalid image to
108
116
       SwappableImage, so test the image is valid /before/ showing it and show a
109
117
       fallback if it isn't. */
110
118
    function updateImage(testImage, targetImage) {
111
 
        // TODO: Doesn't yet fade when the background is changed, but probably
112
 
        // not a huge issue. Will resolve itself when we switch to the SDK's
113
 
        // CrossFadeImage
114
119
        if (testImage.status == Image.Ready) {
115
 
            targetImage.source = testImage.source
 
120
            targetImage.source = testImage.source;
116
121
        } else if (testImage.status == Image.Error) {
117
 
            targetImage.source = testImage.fallback
 
122
            targetImage.source = testImage.fallback;
118
123
        }
119
124
    }
120
125
 
145
150
        }
146
151
    }
147
152
 
 
153
    function setUpImages() {
 
154
        var mostRecent =
 
155
                systemSettingsSettings.backgroundSetLast == "home" ?
 
156
                    testHomeImage : testWelcomeImage;
 
157
        var leastRecent = mostRecent == testHomeImage ?
 
158
                    testWelcomeImage : testHomeImage;
 
159
 
 
160
        if (systemSettingsSettings.backgroundDuplicate) { //same
 
161
            /* save value of least recently changed to restore later */
 
162
            systemSettingsSettings.backgroundPreviouslySetValue =
 
163
                    leastRecent.source;
 
164
            /* copy most recently changed to least recently changed */
 
165
            leastRecent.source = mostRecent.source;
 
166
            homeImage.enabled = false;
 
167
        } else { // different
 
168
            /* restore least recently changd to previous value */
 
169
            leastRecent.source =
 
170
                    systemSettingsSettings.backgroundPreviouslySetValue;
 
171
            homeImage.enabled = true
 
172
        }
 
173
    }
 
174
 
 
175
    GSettings {
 
176
        // hahahaha
 
177
        id: systemSettingsSettings
 
178
        schema.id: "com.ubuntu.touch.system-settings"
 
179
        onChanged: {
 
180
            if (key == "backgroundDuplicate") {
 
181
                setUpImages()
 
182
            }
 
183
        }
 
184
    }
 
185
 
148
186
    ListItem.Standard {
149
187
        id: sameBackground
150
188
 
154
192
 
155
193
        text: i18n.tr("Same background for both")
156
194
 
157
 
        selected: false
 
195
        selected: systemSettingsSettings.backgroundDuplicate
158
196
 
159
197
        showDivider: false
160
198
 
161
 
        // XXX: Ultimately this should all be done by states.
162
 
        // The current implementation is a demo.
163
199
        onClicked: {
164
200
            if (sameBackground.selected)
165
201
                return
166
 
            homeImage.altSource = welcomeImage.source
167
 
            homeImage.enabled = false
168
 
            differentBackground.selected = false
169
 
            sameBackground.selected = true
 
202
            systemSettingsSettings.backgroundDuplicate = true
170
203
        }
171
204
    }
172
205
 
177
210
 
178
211
        text: i18n.tr("Different background for each")
179
212
 
180
 
        selected: true
 
213
        selected: !systemSettingsSettings.backgroundDuplicate
181
214
 
182
215
        onClicked: {
183
216
            if (differentBackground.selected)
184
217
                return
185
 
            homeImage.enabled = true
186
 
            differentBackground.selected = true
187
 
            sameBackground.selected = false
 
218
            systemSettingsSettings.backgroundDuplicate = false
188
219
        }
189
220
    }
190
221
}