ce1671aa4af705c480263ba036879e816538be17
[jamaendo] / jamaui / albumlist.py
1 import gtk
2 import hildon
3 import jamaendo
4 from settings import settings
5 from postoffice import postoffice
6 import logging
7
8 log = logging.getLogger(__name__)
9
10 class AlbumList(gtk.TreeView):
11     def __init__(self):
12         gtk.TreeView.__init__(self)
13         self.__store = gtk.ListStore(str, int)
14         self.set_model(self.__store)
15
16         col = gtk.TreeViewColumn('Name')
17         self.append_column(col)
18         cell = gtk.CellRendererText()
19         col.pack_start(cell, True)
20         col.add_attribute(cell, 'text', 0)
21         self.set_search_column(0)
22         col.set_sort_column_id(0)
23
24         self.__show_artist = True
25
26     def add_album(self, album):
27         if self.__show_artist:
28             txt = "%s - %s" % (album.artist_name, album.name)
29         else:
30             txt = album.name
31         self.__store.append([txt, album.ID])
32
33     def get_album_id(self, path):
34         treeiter = self.__store.get_iter(path)
35         _, _id = self.__store.get(treeiter, 0, 1)
36         return _id
37
38     def show_artist(self, show):
39         self.__show_artist = show
40
41 class TrackList(gtk.TreeView):
42     def __init__(self, numbers = True):
43         gtk.TreeView.__init__(self)
44         self.track_numbers = numbers
45         self.__store = gtk.ListStore(int, str, int)
46         self.set_model(self.__store)
47
48         if numbers:
49             col0 = gtk.TreeViewColumn('Num')
50             self.append_column(col0)
51             cell0 = gtk.CellRendererText()
52             col0.pack_start(cell0, True)
53             col0.add_attribute(cell0, 'text', 0)
54
55         col = gtk.TreeViewColumn('Name')
56         self.append_column(col)
57         cell = gtk.CellRendererText()
58         col.pack_start(cell, True)
59         col.add_attribute(cell, 'text', 1)
60
61         self.set_search_column(1 if numbers else 0)
62         col.set_sort_column_id(0)
63
64     def add_track(self, track):
65         self.__store.append([track.numalbum, track.name, track.ID])
66
67     def get_track_id(self, path):
68         treeiter = self.__store.get_iter(path)
69         _, _, _id = self.__store.get(treeiter, 0, 1, 2)
70         return _id
71
72 class RadioList(gtk.TreeView):
73     def __init__(self):
74         gtk.TreeView.__init__(self)
75         self.__store = gtk.ListStore(str, int)
76         self.set_model(self.__store)
77
78         col = gtk.TreeViewColumn('Name')
79         self.append_column(col)
80         cell = gtk.CellRendererText()
81         col.pack_start(cell, True)
82         col.add_attribute(cell, 'text', 0)
83
84         self.set_search_column(0)
85         col.set_sort_column_id(0)
86
87     def add_radio(self, radio):
88         self.__store.append([self.radio_name(radio), radio.ID])
89
90     def get_radio_id(self, path):
91         treeiter = self.__store.get_iter(path)
92         _, _id = self.__store.get(treeiter, 0, 1)
93         return _id
94
95     def radio_name(self, radio):
96         if radio.idstr:
97             return radio.idstr.capitalize()
98         elif radio.name:
99             return radio.name
100         else:
101             return "Radio #%s" % (radio.ID)