5c82637d891f5e8a0d78d97bd399adb424afa518
[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 ImageDownloader(object):
11     """
12     TODO: background downloader of images
13     for album lists, track lists, etc
14     """
15
16 class AlbumList(gtk.TreeView):
17     def __init__(self):
18         gtk.TreeView.__init__(self)
19         self.__store = gtk.ListStore(str, int)
20         self.set_model(self.__store)
21
22         col = gtk.TreeViewColumn('Name')
23         self.append_column(col)
24         cell = gtk.CellRendererText()
25         col.pack_start(cell, True)
26         col.add_attribute(cell, 'text', 0)
27         self.set_search_column(0)
28         col.set_sort_column_id(0)
29
30         self.__show_artist = True
31
32     def add_album(self, album):
33         if self.__show_artist:
34             txt = "%s - %s" % (album.artist_name, album.name)
35         else:
36             txt = album.name
37         self.__store.append([txt, album.ID])
38
39     def get_album_id(self, path):
40         treeiter = self.__store.get_iter(path)
41         _, _id = self.__store.get(treeiter, 0, 1)
42         return _id
43
44     def show_artist(self, show):
45         self.__show_artist = show
46
47 class TrackList(gtk.TreeView):
48     def __init__(self, numbers = True):
49         gtk.TreeView.__init__(self)
50         self.track_numbers = numbers
51         self.__store = gtk.ListStore(int, str, int)
52         self.set_model(self.__store)
53
54         if numbers:
55             col0 = gtk.TreeViewColumn('Num')
56             self.append_column(col0)
57             cell0 = gtk.CellRendererText()
58             col0.pack_start(cell0, True)
59             col0.add_attribute(cell0, 'text', 0)
60
61         col = gtk.TreeViewColumn('Name')
62         self.append_column(col)
63         cell = gtk.CellRendererText()
64         col.pack_start(cell, True)
65         col.add_attribute(cell, 'text', 1)
66
67         self.set_search_column(1 if numbers else 0)
68         col.set_sort_column_id(0)
69
70     def add_track(self, track):
71         self.__store.append([track.numalbum, track.name, track.ID])
72
73     def get_track_id(self, path):
74         treeiter = self.__store.get_iter(path)
75         _, _, _id = self.__store.get(treeiter, 0, 1, 2)
76         return _id
77
78 class RadioList(gtk.TreeView):
79     def __init__(self):
80         gtk.TreeView.__init__(self)
81         self.__store = gtk.ListStore(str, int)
82         self.set_model(self.__store)
83
84         col = gtk.TreeViewColumn('Name')
85         self.append_column(col)
86         cell = gtk.CellRendererText()
87         col.pack_start(cell, True)
88         col.add_attribute(cell, 'text', 0)
89
90         self.set_search_column(0)
91         col.set_sort_column_id(0)
92
93     def add_radio(self, radio):
94         self.__store.append([self.radio_name(radio), radio.ID])
95
96     def get_radio_id(self, path):
97         treeiter = self.__store.get_iter(path)
98         name, _id = self.__store.get(treeiter, 0, 1)
99         return name, _id
100
101     def radio_name(self, radio):
102         if radio.idstr:
103             return radio.idstr.capitalize()
104         elif radio.name:
105             return radio.name
106         else:
107             return "Radio #%s" % (radio.ID)