Exemple #1
0
 def toggle_repeat(self):
     if self.repeat == WidgetStateStore.get_repeat_playlist():
         self.set_repeat(WidgetStateStore.get_repeat_track())
     elif self.repeat == WidgetStateStore.get_repeat_track():
         self.set_repeat(WidgetStateStore.get_repeat_off())
     elif self.repeat == WidgetStateStore.get_repeat_off():
         self.set_repeat(WidgetStateStore.get_repeat_playlist())
     #handle unknown values
     else:
         self.set_repeat(WidgetStateStore.get_repeat_off())
Exemple #2
0
 def toggle_repeat(self):
     if self.repeat == WidgetStateStore.get_repeat_playlist():
         self.set_repeat(WidgetStateStore.get_repeat_track())
     elif self.repeat == WidgetStateStore.get_repeat_track():
         self.set_repeat(WidgetStateStore.get_repeat_off())
     elif self.repeat == WidgetStateStore.get_repeat_off():
         self.set_repeat(WidgetStateStore.get_repeat_playlist())
     #handle unknown values
     else:
         self.set_repeat(WidgetStateStore.get_repeat_off())
Exemple #3
0
    def should_resume(self):
        if self.force_resume:
            return True

        if self.shuffle == True or self.repeat != WidgetStateStore.get_repeat_off():
            return False

        currently_playing = self.playlist.currently_playing
        return self.item_resume_policy(currently_playing)
Exemple #4
0
    def should_resume(self):
        if self.force_resume:
            return True

        if(self.shuffle == True or 
           self.repeat != WidgetStateStore.get_repeat_off()):
           return False

        currently_playing = self.playlist.currently_playing
        return self.item_resume_policy(currently_playing)
Exemple #5
0
 def find_next_item(self, not_skipped_by_user=True):
     #if track repeat is on and the user doesn't skip,
     #shuffle doesn't matter
     if ((self.repeat == WidgetStateStore.get_repeat_track()
          and not_skipped_by_user)):
         return self.currently_playing
     elif ((not self.shuffle
            and self.repeat == WidgetStateStore.get_repeat_playlist()
            and self.is_playing_last_item())):
         return self._find_playable(self.model.get_first_info())
     elif (self.shuffle
           and self.repeat == WidgetStateStore.get_repeat_off()
           or self.shuffle
           and self.repeat == WidgetStateStore.get_repeat_track()):
         next_item = self.next_shuffle_item()
         if next_item is None:
             self.shuffle_upcoming = self.generate_upcoming_shuffle_items()
             self.shuffle_history = []
             return None  #stop playback
         else:
             # Remove currently playing item from history if it
             # was removed from the playlist.
             if not self.shuffle_history:
                 logging.info('find_next_item: shuffle history empty: '
                              'case 1')
             else:
                 if self._is_playing_filtered_item():
                     self.shuffle_history.pop()
             self.shuffle_history.append(next_item.id)
             return next_item
     elif self.shuffle and WidgetStateStore.get_repeat_playlist():
         next_item = self.next_shuffle_item()
         if next_item is None:
             #populate with new items
             self.shuffle_upcoming = self.generate_upcoming_shuffle_items()
             next_item = self.next_shuffle_item()
             if next_item is None:
                 #17492 - nothing playable in list
                 return None
         # Remove currently playing item from history if it
         # was removed from the playlist.
         if not self.shuffle_history:
             logging.info('find_next_item: shuffle history empty: case 2')
         else:
             if self._is_playing_filtered_item():
                 self.shuffle_history.pop()
         self.shuffle_history.append(next_item.id)
         return next_item
     else:
         if self._is_playing_filtered_item():
             return self.model.get_first_info()
         else:
             next_item = self.model.get_next_info(self.currently_playing.id)
             return self._find_playable(next_item)
Exemple #6
0
 def find_next_item(self, not_skipped_by_user=True):
     #if track repeat is on and the user doesn't skip, 
     #shuffle doesn't matter
     if ((self.repeat == WidgetStateStore.get_repeat_track()
          and not_skipped_by_user)):
         return self.currently_playing
     elif ((not self.shuffle and
          self.repeat == WidgetStateStore.get_repeat_playlist()
          and self.is_playing_last_item())):
         return self._find_playable(self.model.get_first_info())
     elif (self.shuffle and self.repeat == WidgetStateStore.get_repeat_off()
          or self.shuffle and self.repeat == WidgetStateStore.get_repeat_track()):
         next_item = self.next_shuffle_item()
         if next_item is None:
             self.shuffle_upcoming = self.generate_upcoming_shuffle_items()
             self.shuffle_history = []
             return None #stop playback 
         else:
             # Remove currently playing item from history if it
             # was removed from the playlist.
             if not self.shuffle_history:
                 logging.info('find_next_item: shuffle history empty: '
                              'case 1')
             else:
                 if self._is_playing_filtered_item():
                     self.shuffle_history.pop()
             self.shuffle_history.append(next_item.id)
             return next_item
     elif self.shuffle and WidgetStateStore.get_repeat_playlist():
         next_item = self.next_shuffle_item()
         if next_item is None:
             #populate with new items
             self.shuffle_upcoming = self.generate_upcoming_shuffle_items() 
             next_item = self.next_shuffle_item()
             if next_item is None:
                 #17492 - nothing playable in list
                 return None
         # Remove currently playing item from history if it
         # was removed from the playlist.
         if not self.shuffle_history:
             logging.info('find_next_item: shuffle history empty: case 2')
         else:
             if self._is_playing_filtered_item():
                 self.shuffle_history.pop()
         self.shuffle_history.append(next_item.id)
         return next_item
     else:
         if self._is_playing_filtered_item():
             return self.model.get_first_info()
         else:
             next_item = self.model.get_next_info(self.currently_playing.id)
             return self._find_playable(next_item)
Exemple #7
0
 def __init__(self, item_tracker, start_id):
     signals.SignalEmitter.__init__(self, "position-changed", "playing-info-changed")
     self.item_tracker = item_tracker
     self.model = item_tracker.item_list.model
     self._tracker_callbacks = [
         item_tracker.connect("items-will-change", self._on_items_will_change),
         item_tracker.connect("items-changed", self._on_items_changed),
         item_tracker.connect("items-removed-from-source", self._on_items_removed_from_source),
     ]
     self.repeat = WidgetStateStore.get_repeat_off()
     self.shuffle = False
     self.shuffle_history = []
     self.currently_playing = None
     self.shuffle_upcoming = self.generate_upcoming_shuffle_items()
     self._pick_initial_item(start_id)
Exemple #8
0
 def __init__(self, item_tracker, start_id):
     signals.SignalEmitter.__init__(self, 'position-changed',
                                    'playing-info-changed')
     self.item_tracker = item_tracker
     self.model = item_tracker.item_list.model
     self._tracker_callbacks = [
         item_tracker.connect('items-will-change',
                              self._on_items_will_change),
         item_tracker.connect('items-changed', self._on_items_changed),
         item_tracker.connect('items-removed-from-source',
                              self._on_items_removed_from_source)
     ]
     self.repeat = WidgetStateStore.get_repeat_off()
     self.shuffle = False
     self.shuffle_history = []
     self.currently_playing = None
     self.shuffle_upcoming = self.generate_upcoming_shuffle_items()
     self._pick_initial_item(start_id)
Exemple #9
0
 def __init__(self):
     signals.SignalEmitter.__init__(self)
     self.player = None
     self.video_display = None
     self.removing_video_display = False
     self.detached_window = None
     self.previous_left_width = 0
     self.previous_left_widget = None
     self.is_fullscreen = False
     self.is_playing = False
     self.is_playing_audio = False
     self.is_paused = False
     self.is_suspended = False
     self.shuffle = False
     self.repeat = WidgetStateStore.get_repeat_off() 
     self.open_finished = False
     self.open_successful = False
     self.playlist = None
     self.mark_as_watched_timeout = None
     self.update_timeout = None
     self.manual_item_list = None
     self.selected_tab_list = self.selected_tabs = None
     self.presentation_mode = 'fit-to-bounds'
     self.create_signal('will-start')
     self.create_signal('selecting-file')
     self.create_signal('playing-info-changed')
     self.create_signal('cant-play-file')
     self.create_signal('will-play')
     self.create_signal('did-start-playing')
     self.create_signal('will-play-attached')
     self.create_signal('will-play-detached')
     self.create_signal('will-pause')
     self.create_signal('will-stop')
     self.create_signal('did-stop')
     self.create_signal('will-fullscreen')
     self.create_signal('playback-did-progress')
     self.create_signal('update-shuffle')
     self.create_signal('update-repeat')
Exemple #10
0
 def generate_upcoming_shuffle_items(self):
     if not self.shuffle:
         return []
     elif self.repeat == WidgetStateStore.get_repeat_off() or self.repeat == WidgetStateStore.get_repeat_track():
         # random order
         items = self.get_all_playable_items()
         shuffle(items)
         # do not include currently playing item
         if self.currently_playing:
             try:
                 items.remove(self.currently_playing.id)
             except ValueError:
                 pass
         return items
     elif self.repeat == WidgetStateStore.get_repeat_playlist():
         # random items
         items = self.get_all_playable_items()
         if items:
             return self.random_sequence(items, self.currently_playing.id)
         else:
             return []
     else:
         return []
Exemple #11
0
 def generate_upcoming_shuffle_items(self):
     if not self.shuffle:
         return []
     elif (self.repeat == WidgetStateStore.get_repeat_off()
           or self.repeat == WidgetStateStore.get_repeat_track()):
         #random order
         items = self.get_all_playable_items()
         shuffle(items)
         #do not include currently playing item
         if self.currently_playing:
             try:
                 items.remove(self.currently_playing.id)
             except ValueError:
                 pass
         return items
     elif self.repeat == WidgetStateStore.get_repeat_playlist():
         #random items
         items = self.get_all_playable_items()
         if items:
             return self.random_sequence(items, self.currently_playing.id)
         else:
             return []
     else:
         return []