1. 01 Sep, 2018 1 commit
  2. 16 Aug, 2018 1 commit
    • Jean Felder's avatar
      player: Refactor player playlist · d83b7de3
      Jean Felder authored
      Separate player logic from the playlist logic.
      Rename discovery logic to validation as this is more accurate of the
      underlying logic.
      PlayerPlaylist object handles the playlist and songs validation
      logic. Player object acts as a glue for the ui and the underlying
      logic (playlist and validation).
      Use Gobject Properties.
      
      There are 4 ways to launch a song:
      1. Click on a song in the current view. The set_playlist method is
      called.
      2. At the end of the current song. The next method is automatically called.
      3. click on the next buttom from the PlayerToolbar. The next method is called.
      4. click on the previous buttom from the PlayerToolbar. The previous
      method is called.
      
      Validation is a very expensive operation, so only do it when it's
      needed. See commit message from 6f1cb8d4.
      
      The Validation logic brings 3 features:
      - display an error icon if a song cannot be played
      - do not load a song that cannot be played
      - when the song changes, try to load the next possible one: if the
      next song cannot be loaded, try the one after, etc.
      
      In "set_playlist" method, if the song has already been played the
      validation information is already known, nothing to add. If the song
      has never been played, there is no information yet. In that case,
      validate_current_song and validate_next_song need to be called to
      trigger the validation mechanism.
      
      In "next" method, call validate_next_song to continue the validation
      mechanism if there is a next song.
      
      In "previous" method, call validate_previous_song to continue the validation
      mechanism if there is a previous song.
      
      Closes: #60, #154
      d83b7de3
  3. 05 Aug, 2018 1 commit
  4. 01 Aug, 2018 1 commit
  5. 29 Jul, 2018 1 commit
  6. 29 Jun, 2018 1 commit
  7. 22 Jun, 2018 1 commit
    • Marinus Schraal's avatar
      artistalbumswidget: Fix selection-mode regression · 1cfc01e0
      Marinus Schraal authored
      Right-click in a DiscBox nested inside an ArtistAlbumsWidget would not
      properly enter selection mode.
      Fix the flow of the selection-mode property signal emission to remedy this
      behaviour. Making ArtistAlbumsWidget -being the root widget- the
      'control-hub' for the selection mode propagation in this case.
      1cfc01e0
  8. 21 Jun, 2018 1 commit
  9. 20 Jun, 2018 4 commits
  10. 17 Jun, 2018 2 commits
  11. 16 Jun, 2018 1 commit
  12. 23 May, 2018 1 commit
  13. 19 May, 2018 1 commit
    • Marinus Schraal's avatar
      toolbar: Rename to HeaderBar and cleanup · c76d243b
      Marinus Schraal authored
      Rework the widget, highlights:
       * Rename Toolbar to HeaderBar
       * Split out the menu button to SelectionBarMenuButton
       * Use Gtk.Template for SelectionBarMenuButton
       * Make State internal to HeaderBar
       * Use Gtk.Template for HeaderBar
       * Use the state property directly in callers
       * Add selection-mode property to HeaderBar
      c76d243b
  14. 01 May, 2018 3 commits
  15. 30 Apr, 2018 3 commits
    • Jean Felder's avatar
      player: Factor out player ui · d9523565
      Jean Felder authored
      Move the player ui bits into a new class PlayerToolbar and modify
      Player class to deal with the new interaction.
      d9523565
    • Jean Felder's avatar
      player: Refactor SelectionToolbar · 8113a72d
      Jean Felder authored
      Move SelectionToolbar class to its own file and use Gtk.Template.
      
      Bump pygobject dependency version to support Gtk.Template.
      Disable build step from gitlab CI for the moment because pygobject is
      too old. It is version 3.28, but we need at least 3.29.1.
      8113a72d
    • Jean Felder's avatar
      player: Merge two redundant signals · bbabe1bf
      Jean Felder authored
      current-changed and playlist-item-changed signals are emitted for the
      same reason, they can be merged. The new signal is called song-changed.
      bbabe1bf
  16. 18 Apr, 2018 1 commit
  17. 04 Mar, 2018 1 commit
    • Jean Felder's avatar
      player: Use its own simplified model · c83e5ea7
      Jean Felder authored
      Player keeps an internal reference to the currently visible view, wich
      can be different from the currently played model. The main idea is to
      isolate player model. when set_playlist method from player is called, a
      simple copy is done. Therefore, when view changes, player model is not
      updated. This new model needs to stay synchronized by calling add_song
      or remove_song appropriately.
      This is not a fix. Just a workaround before player.py rewrite.
      Add an enum for player model fields.
      Remove 'song-position-changed' signal from playlists as it is not
      necessary anymore.
      
      Closes: #136
      c83e5ea7
  18. 05 Feb, 2018 2 commits
  19. 27 Dec, 2017 1 commit
  20. 24 Feb, 2017 3 commits
  21. 31 Dec, 2016 1 commit
  22. 25 Oct, 2016 1 commit
  23. 06 Oct, 2016 1 commit