def render_online_lists(self, playlists, thread_id): if self.online_thread_id != thread_id: return if len(playlists) > 0: items = [ MusicListItem(data, list_type=MusicListItem.PLAYLIST_TYPE) for data in playlists ] self.category_list.add_items(items)
def load(self): objs = utils.load_db(self.listen_db_file) if objs: items = [] for title, bsongs in objs: item = MusicListItem(title, list_type=MusicListItem.LOCAL_TYPE) songs = [] for d in bsongs: s = Song() s.init_from_dict(d, cmp_key="sid") songs.append(s) item.add_songs(songs) items.append(item) self.category_list.add_items(items, insert_pos=1)
def __init__(self): super(MusicPlaylist, self).__init__() self.listen_db_file = get_cache_file("baidumusic/local_listen.db") self.status_db_file = get_cache_file("baidumusic/status.db") # Init default items self.default_list_item = MusicListItem( "试听列表", list_type=MusicListItem.DEFAULT_TYPE) self.collect_list_item = MusicListItem( "我的收藏", list_type=MusicListItem.COLLECT_TYPE, has_separator=True) # Init category list. self.category_list = CategoryView(enable_drag_drop=False, enable_multiple_select=True) self.category_list.add_items( [self.default_list_item, self.collect_list_item]) del self.category_list.keymap["Delete"] self.category_list.draw_mask = self.draw_category_list_mask self.category_list.set_size_request(CATEGROYLIST_WIDTH, -1) self.category_list.connect("single-click-item", self.on_category_single_click) self.category_list.connect("right-press-items", self.on_category_right_press) self.category_list.set_highlight_item(self.default_list_item) # View box self.view_box = gtk.VBox() self.view_box.connect("size-allocate", self.on_viewbox_size_allocate) self.view_box.add(self.default_list_item.list_widget) # bottom_box = gtk.HBox(spacing=45) # bottom_box_align = gtk.Alignment() # bottom_box_align.set(0.5, 0.5, 1, 1) # bottom_box_align.set_padding(2, 2, 28, 0) # bottom_box_align.set_size_request(-1, 22) # bottom_box_align.add(bottom_box) # bottom_box_align.connect("expose_event", self.on_bottombox_expose_event) # self.search_button = create_toggle_button("toolbar/search", parent=bottom_box) # self.person_button = create_button("combo/artist", parent=bottom_box, no_hover=True) main_paned = HPaned(handle_color=app_theme.get_color("panedHandler"), enable_drag=True) main_paned.pack1(self.category_list, True, True) main_paned.pack2(self.view_box, True, False) # events event_manager.connect("login-success", self.on_event_login_success) event_manager.connect("collect-songs", self.on_event_collect_songs) event_manager.connect("add-songs", self.on_event_add_songs) event_manager.connect("play-songs", self.on_event_play_songs) event_manager.connect("save-listen-lists", self.on_event_save_listen_lists) event_manager.connect("save-playlist-status", self.save_status) # load playlists. self.online_thread_id = 0 self.new_list_thread_id = 0 self.load() self.load_online_lists() self.load_status() self.add(main_paned)
def render_new_online_list(self, data, thread_id): if self.new_list_thread_id != thread_id: return item = MusicListItem(data, list_type=MusicListItem.PLAYLIST_TYPE) self.category_list.add_items([item])
def create_list(name): if name.strip(): item = MusicListItem(name, list_type=MusicListItem.LOCAL_TYPE) self.category_list.add_items([item], insert_pos=1)