~ahayzen/music-app/refactor-pull-now-playing-sidebar

« back to all changes in this revision

Viewing changes to app/ui/SongsView.qml

  • Committer: Andrew Hayzen
  • Date: 2015-06-28 03:17:10 UTC
  • mfrom: (846.2.30 refactor)
  • Revision ID: ahayzen@gmail.com-20150628031710-5di845pa3qsnkh26
* Merge of lp:music-app/refactor

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18
18
 */
19
19
 
20
 
import QtQuick 2.3
21
 
import Ubuntu.Components 1.1
 
20
import QtQuick 2.4
 
21
import Ubuntu.Components 1.2
22
22
import Ubuntu.Components.ListItems 1.0 as ListItem
23
23
import Ubuntu.Components.Popups 1.0
24
24
import Ubuntu.MediaScanner 0.1
54
54
 
55
55
    property bool loaded: false  // used to detect difference between first and further loads
56
56
 
57
 
    property bool playlistChanged: false
58
 
 
59
57
    onVisibleChanged: {
60
 
        if (playlistChanged) {
61
 
            playlistChanged = false
 
58
        if (page.childrenChanged) {
 
59
            page.childrenChanged = false
62
60
            refreshWaitTimer.start()
63
61
        }
64
62
    }
70
68
            if (songStackPage.line1 === i18n.tr("Playlist")) {
71
69
                if (songStackPage.visible) {
72
70
                    albumTracksModel.filterPlaylistTracks(line2)
 
71
                    covers = Playlists.getPlaylistCovers(line2)
73
72
                } else {
74
 
                    songStackPage.playlistChanged = true
 
73
                    songStackPage.page.childrenChanged = true;
75
74
                }
76
75
            }
77
76
        }
80
79
    Timer {  // FIXME: workaround for when the playlist is deleted and the delegate being deleting causes freezing
81
80
        id: refreshWaitTimer
82
81
        interval: 250
83
 
        onTriggered: albumTracksModel.filterPlaylistTracks(line2)
 
82
        onTriggered: {
 
83
            if (songStackPage.line1 === i18n.tr("Playlist")) {
 
84
                albumTracksModel.filterPlaylistTracks(line2)
 
85
            }
 
86
        }
 
87
    }
 
88
 
 
89
    function recentChangedHelper()
 
90
    {
 
91
        // if parent Recent then set changed otherwise refilter
 
92
        if (songStackPage.page.title === i18n.tr("Recent")) {
 
93
            if (songStackPage.page !== undefined) {
 
94
                songStackPage.page.changed = true
 
95
            }
 
96
        } else {
 
97
            recentModel.filterRecent()
 
98
        }
84
99
    }
85
100
 
86
101
    function playlistChangedHelper(force)
97
112
        }
98
113
 
99
114
        if (Library.recentContainsPlaylist(songStackPage.line2) || force) {
100
 
            // if parent Recent then set changed otherwise refilter
101
 
            if (songStackPage.page.title === i18n.tr("Recent")) {
102
 
                if (songStackPage.page !== undefined) {
103
 
                    songStackPage.page.changed = true
104
 
                }
105
 
            } else {
106
 
                recentModel.filterRecent()
107
 
            }
 
115
            recentChangedHelper();
108
116
        }
109
117
    }
110
118
 
152
160
            thisPage: songStackPage
153
161
 
154
162
            onRemoved: {
155
 
                for (var i=0; i < selectedItems.length; i++) {
156
 
                    Playlists.removeFromPlaylist(songStackPage.line2, selectedItems[i])
157
 
 
158
 
                    // Update indexes as an index has been removed
159
 
                    for (var j=i + 1; j < selectedItems.length; j++) {
160
 
                        if (selectedItems[j] > selectedItems[i]) {
161
 
                            selectedItems[j]--;
162
 
                        }
163
 
                    }
164
 
                }
 
163
                Playlists.removeFromPlaylist(songStackPage.line2, selectedItems)
165
164
 
166
165
                playlistChangedHelper()  // update recent/playlist models
167
166
 
207
206
                            console.debug("Unknown type to add to recent")
208
207
                        }
209
208
 
210
 
                        recentModel.filterRecent()
 
209
                        recentChangedHelper();
211
210
                    }
212
211
                }
213
212
                QueueAllButton {
226
225
                            console.debug("Unknown type to add to recent")
227
226
                        }
228
227
 
229
 
                        recentModel.filterRecent()
 
228
                        recentChangedHelper();
230
229
                    }
231
230
                }
232
231
            }
326
325
 
327
326
                },
328
327
                AddToPlaylist {
329
 
 
330
328
                }
331
329
            ]
332
330
 
341
339
                    console.debug("Unknown type to add to recent")
342
340
                }
343
341
 
344
 
                recentModel.filterRecent()
 
342
                recentChangedHelper();
345
343
            }
346
344
            onReorder: {
347
345
                console.debug("Move: ", from, to);
355
353
                id: playlistRemoveAction
356
354
                sourceComponent: Remove {
357
355
                    onTriggered: {
358
 
                        Playlists.removeFromPlaylist(songStackPage.line2, model.i)
 
356
                        Playlists.removeFromPlaylist(songStackPage.line2, [model.i])
359
357
 
360
358
                        playlistChangedHelper()  // update recent/playlist models
361
359