Exemple #1
0
    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)
    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
Exemple #4
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):    
        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)