def __init__(self): gtk.VBox.__init__(self) self.set_spacing(5) # home slider. self.home_slider = SlideSwitcher() self.home_slider.set_size_request(-1, 200) # recommmend tab switcher. self.recommend_tab = PageSwitcher([_("Hot MHz"), _("Pop MHz")]) self.recommend_tab.connect("tab-switch-start", lambda switcher, tab_index: self.switch_recommend_view(tab_index)) # Init recommend view. self.hot_recommend_box = NetworkRadioView(tag=TAG_HOT, padding_y=5) self.fast_recommend_box = NetworkRadioView(tag=TAG_FAST, padding_y=5) # Use switch recommend view. self.recommend_page_box = gtk.VBox() self.recommend_page_box.add(self.hot_recommend_box) self.pack_start(self.home_slider, False, True) self.pack_start(self.recommend_tab, False, True) self.pack_start(self.recommend_page_box, True, True) # Init data self.banner_thread_id = 0
class HomePage(gtk.VBox): def __init__(self): gtk.VBox.__init__(self) self.set_spacing(5) # home slider. self.home_slider = SlideSwitcher() self.home_slider.set_size_request(-1, 200) # recommmend tab switcher. self.recommend_tab = PageSwitcher([_("Hot MHz"), _("Pop MHz")]) self.recommend_tab.connect("tab-switch-start", lambda switcher, tab_index: self.switch_recommend_view(tab_index)) # Init recommend view. self.hot_recommend_box = NetworkRadioView(tag=TAG_HOT, padding_y=5) self.fast_recommend_box = NetworkRadioView(tag=TAG_FAST, padding_y=5) # Use switch recommend view. self.recommend_page_box = gtk.VBox() self.recommend_page_box.add(self.hot_recommend_box) self.pack_start(self.home_slider, False, True) self.pack_start(self.recommend_tab, False, True) self.pack_start(self.recommend_page_box, True, True) # Init data self.banner_thread_id = 0 def switch_recommend_view(self, tab_index): if tab_index == 0: switch_tab(self.recommend_page_box, self.hot_recommend_box) if tab_index == 1: switch_tab(self.recommend_page_box, self.fast_recommend_box) def start_fetch_channels(self): self.set_banner_channels() self.hot_recommend_box.start_fetch_channels() self.fast_recommend_box.start_fetch_channels() def set_banner_channels(self): self.banner_thread_id += 1 banner_thread_id = copy.deepcopy(self.banner_thread_id) utils.ThreadFetch( fetch_funcs=(self.fetch_banner_channels, ()), success_funcs=(self.load_banner_channels, (banner_thread_id,)), ).start() def fetch_banner_channels(self): ret = fmlib.get_hot_chls(start=random.randrange(100, 1500, 5), limit=5) return ret.get("data", {}).get("channels", []) @post_gui def load_banner_channels(self, channels, thread_id): if thread_id != self.banner_thread_id: return if not channels: return self.home_slider.set_infos(channels)
class HomePage(gtk.VBox): def __init__(self): gtk.VBox.__init__(self) self.set_spacing(5) # home slider. self.home_slider = SlideSwitcher() self.home_slider.set_size_request(-1, 200) # recommmend tab switcher. self.recommend_tab = PageSwitcher([_("Hot MHz"), _("Pop MHz")]) self.recommend_tab.connect("tab-switch-start", lambda switcher, tab_index: self.switch_recommend_view(tab_index)) # Init recommend view. self.hot_recommend_box = NetworkRadioView(tag=TAG_HOT, padding_y=5) self.fast_recommend_box = NetworkRadioView(tag=TAG_FAST, padding_y=5) # Use switch recommend view. self.recommend_page_box = gtk.VBox() self.recommend_page_box.add(self.hot_recommend_box) self.pack_start(self.home_slider, False, True) self.pack_start(self.recommend_tab, False, True) self.pack_start(self.recommend_page_box, True, True) # Init data self.banner_thread_id = 0 def switch_recommend_view(self, tab_index): if tab_index == 0: switch_tab(self.recommend_page_box, self.hot_recommend_box) if tab_index == 1: switch_tab(self.recommend_page_box, self.fast_recommend_box) def start_fetch_channels(self): self.set_banner_channels() self.hot_recommend_box.start_fetch_channels() self.fast_recommend_box.start_fetch_channels() def set_banner_channels(self): self.banner_thread_id += 1 banner_thread_id = copy.deepcopy(self.banner_thread_id) utils.ThreadFetch( fetch_funcs=(self.fetch_banner_channels, ()), success_funcs=(self.load_banner_channels, (banner_thread_id,)), ).start() def fetch_banner_channels(self): start = random.randrange(0, 25, 5) ret = fmlib.get_hot_chls(start=start, limit=5) return ret.get("data", {}).get("channels", []) @post_gui def load_banner_channels(self, channels, thread_id): if thread_id != self.banner_thread_id: return if not channels: return # print channels self.home_slider.set_infos(channels)