[gnome-music] widgets: Load list in PlaylistDialog from Tracker
- From: Vadim Rutkovsky <vrutkovsky src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music] widgets: Load list in PlaylistDialog from Tracker
- Date: Thu, 5 Jun 2014 09:08:43 +0000 (UTC)
commit fe6db7a52466ed2353a08a317d94bcf04ea277d0
Author: Arnel Borja <arnelborja src gnome org>
Date: Tue Jun 3 21:31:59 2014 +0800
widgets: Load list in PlaylistDialog from Tracker
data/PlaylistDialog.ui | 2 ++
gnomemusic/widgets.py | 33 +++++++++++++++++++++------------
2 files changed, 23 insertions(+), 12 deletions(-)
---
diff --git a/data/PlaylistDialog.ui b/data/PlaylistDialog.ui
index 5d7c5db..41ae47a 100644
--- a/data/PlaylistDialog.ui
+++ b/data/PlaylistDialog.ui
@@ -92,6 +92,8 @@
<column type="gchararray"/>
<!-- column-name editable -->
<column type="gboolean"/>
+ <!-- column-name item -->
+ <column type="GObject"/>
</columns>
</object>
</interface>
diff --git a/gnomemusic/widgets.py b/gnomemusic/widgets.py
index 9120f58..abc6827 100644
--- a/gnomemusic/widgets.py
+++ b/gnomemusic/widgets.py
@@ -650,15 +650,14 @@ class PlaylistDialog():
self.view.connect('row-activated', self._on_item_activated)
self.model = self.ui.get_object('liststore1')
- playlist_names = playlist.get_playlists()
- self.populate(playlist_names)
+ self.populate()
self.title_bar = self.ui.get_object('headerbar1')
self.dialog_box.set_titlebar(self.title_bar)
self._cancel_button = self.ui.get_object('cancel-button')
self._select_button = self.ui.get_object('select-button')
- self._select_button.set_sensitive(len(playlist_names) > 0)
+ self._select_button.set_sensitive(False)
self._cancel_button.connect('clicked', self._on_cancel_button_clicked)
self._select_button.connect('clicked', self._on_selection)
@@ -690,11 +689,26 @@ class PlaylistDialog():
self.view.append_column(cols)
@log
- def populate(self, items):
- for playlist_name in sorted(items):
- self.model.append([playlist_name, False])
+ def populate(self):
self.add_playlist_iter = self.model.append()
self.model.set(self.add_playlist_iter, [0, 1], [_("New Playlist"), True])
+ if grilo.tracker:
+ GLib.idle_add(grilo.populate_playlists, 0, self._add_item)
+
+ @log
+ def _add_item(self, source, param, item, remaining=0, data=None):
+ if item:
+ self._add_item_to_model(item)
+
+ @log
+ def _add_item_to_model(self, item):
+ new_iter = self.model.insert_before(self.add_playlist_iter)
+ self.model.set(
+ new_iter,
+ [0, 1, 2],
+ [AlbumArtCache.get_media_title(item), False, item]
+ )
+ return new_iter
@log
def _on_list_text_render(self, col, cell, model, _iter, data):
@@ -733,12 +747,7 @@ class PlaylistDialog():
@log
def _on_playlist_created(self, playlists, item):
- new_iter = self.model.insert_before(self.add_playlist_iter)
- self.model.set(
- new_iter,
- [0, 1],
- [AlbumArtCache.get_media_title(item), False]
- )
+ new_iter = self._add_item_to_model(item)
self.view.set_cursor(self.model.get_path(new_iter),
self.view.get_columns()[0], False)
self.view.row_activated(self.model.get_path(new_iter),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]