1. 01 Apr, 2020 1 commit
  2. 24 Mar, 2020 1 commit
  3. 18 Mar, 2020 1 commit
  4. 15 Mar, 2020 1 commit
  5. 05 Mar, 2020 1 commit
  6. 02 Mar, 2020 1 commit
  7. 01 Mar, 2020 2 commits
  8. 29 Feb, 2020 1 commit
  9. 24 Feb, 2020 4 commits
  10. 23 Feb, 2020 4 commits
    • Michael Pyne's avatar
      playlist: Simplify dynamic playlist tracking of other playlists. · d8a5c948
      Michael Pyne authored
      We store pointers to other `Playlist` entries to ensure we can update
      their playing item state (which in the old JuK was a 'playback arrow'
      icon that would show up in the row for playing items). The idea being
      that there would be an entry in the Play Queue showing that an item was
      playing but also the same source item in the source playlist would also
      indicate that it was playing.
      
      This has been susceptible to all the normal frailties of storing
      pointers to objects whose lifetime is unpredictable. By using guarded
      pointers we can at least hopefully avoid crashing (especially on
      shutdown).
      d8a5c948
    • Michael Pyne's avatar
    • Michael Pyne's avatar
      playlist: Move M3U-based file loading to happen after ctor runs. · f4401608
      Michael Pyne authored
      This is another bug detected by LGTM
      https://lgtm.com/projects/g/KDE/juk?mode=list
      
      `loadFile()` itself calls at least four virtual methods. Rather than
      trying to de-virtualize them as I did in the last fix, I decided to just
      have the file load happen after the class is fully constructed, using
      the Qt event loop.
      f4401608
    • Michael Pyne's avatar
      playlist: Don't rely on overridden column count during construction. · a800c1b3
      Michael Pyne authored
      The LGTM code scanning site has coverage of JuK by virtue of its Github
      mirror, and reported [1] that `Playlist` was calling a function that was
      indirectly reliant on a virtual function (`columnOffset()`) that is
      overridden by subclasses like `HistoryPlaylist`.
      
      This is a bug since the C++ language specifies that a superclass
      constructor will be statically bound to call its own version of a
      virtual function (or an even higher superclass's), rather than whatever
      the subclass reimplementation might ultimately be.
      
      This is fixed by using the data we already have at the time of
      construction to set aside the right number of columns and then just
      holding onto the header labels generated rather than trying to
      introspect later.
      
      [1] https://lgtm.com/projects/g/KDE/juk?mode=list
      a800c1b3
  11. 18 Feb, 2020 2 commits
    • Michael Pyne's avatar
      ui: Fix bug in scrolling from playlist to search line. · 64b95b30
      Michael Pyne authored
      When the search filter was activated then the test for being the topmost
      item would be wrong (there would be a topmost item but it's probably
      filtered out!). Instead use the existing check for the *visible* item,
      which wasn't even reached by the buggy code.
      64b95b30
    • Michael Pyne's avatar
      ui: Fix return key failing to start playback. · b70139c9
      Michael Pyne authored
      The search bar was broken because a missing `returnPressed` signal
      declaration broke the signal/slot chain that was already present. An
      update to the existing key press filter was sufficient to make pressing
      return on a selected track in the Playlist work again, without the
      downsides of using `QListWidget::itemActivated`.
      b70139c9
  12. 15 Feb, 2020 1 commit
    • Michael Pyne's avatar
      search: Fix crash when clicking search playlist after startup. · b93e8cf4
      Michael Pyne authored
      Search playlists that are loaded with JuK on startup (i.e. because they
      were saved from a previous JuK invocation) cause a crash as soon as you
      click on the playlist after the recent merge request !18 (which
      refactors the search-handling code).
      
      The direct cause is that we were passing a pointer to a stack-allocated
      object (in the operator>> for SearchPlaylist), which caused a dangling
      pointer once the flow of execution left the stack frame. I did not catch
      this during the code review, but found a second instance of this in
      PlaylistCollection which I've also fixed.
      b93e8cf4
  13. 14 Feb, 2020 1 commit
  14. 13 Feb, 2020 3 commits
  15. 03 Feb, 2020 1 commit
  16. 02 Feb, 2020 1 commit
  17. 29 Jan, 2020 2 commits
  18. 26 Jan, 2020 2 commits
  19. 21 Jan, 2020 1 commit
  20. 15 Jan, 2020 2 commits
  21. 13 Jan, 2020 1 commit
  22. 06 Jan, 2020 1 commit
  23. 05 Jan, 2020 1 commit
  24. 30 Dec, 2019 2 commits
  25. 29 Dec, 2019 1 commit
    • Abdel-Rahman Abdel-Rahman's avatar
      PlayerManager: Unify volume slots · 50559afa
      Abdel-Rahman Abdel-Rahman authored
      slotVolumeChanged and setVolume should have the same effect but are
      effectively different. One propagates the signal, and one sets the
      actual volume. Both are used separately and thus the volume value
      doesn't become synchronized throughout the application. This commit
      unifies both functions into a single slot.
      
      BUG: 405973
      50559afa
  26. 28 Dec, 2019 1 commit