1. 18 May, 2019 2 commits
    • Michael Pyne's avatar
      Remove more compiler warnings for deprecated functions/uses. · 44d6bb2d
      Michael Pyne authored
      Still need to get rid of QSignalMapper using lambdas but that will need
      more thought.
      44d6bb2d
    • Michael Pyne's avatar
      Add 'override' decl to fix compiler warnings, fix drag-and-drop. · dc2d9c8e
      Michael Pyne authored
      This should shave off some 1,000+ warnings over the course of a build
      with GCC 9.1.
      
      This only addresses class declarations native to JuK, but Taglib and to
      a lesser extent Qt5 moc still have (or generate) code that can result in
      compiler warnings about suggested override declarations.
      
      In the process I noticed that an existing drag-and-drop support function
      (Playlist::decode) is no longer overriding Qt virtual functions, so it
      has been turned into an auxiliary function to fix existing drag-and-drop
      bugs from the KF5 port (tested by dropping files from Dolphin into a
      playlist view).
      
      Drag-and-drop from a playlist to another playlist (by dropping on the
      playlist name) still remains broken for now.
      
      CCBUG:392705
      FIXED-IN:19.04.2
      dc2d9c8e
  2. 19 Feb, 2019 1 commit
    • Michael Pyne's avatar
      Fix crash in filtering playlist to playing album/artist. · 5c1470d2
      Michael Pyne authored
      This was caused by infinite recursion in trying to grab the list of
      playlist items while trying to update the list of playlist items, which
      could be most easily caused by clicking on the artist or album link in
      the "now playing" bar while playing a song.
      
      BUG:402355
      FIXED-IN:18.12.3
      5c1470d2
  3. 18 Feb, 2019 1 commit
    • Michael Pyne's avatar
      Fix crash with threaded file loading. · 24b0edd1
      Michael Pyne authored
      Although Qt protects access to functions in the GUI thread (where I was
      seeing crashes in the new threaded file loading code in some
      situations), as long as you use signals/slots, Qt Concurrent doesn't do
      anything to keep your non-GUI threaded code from trampling on each
      other.
      
      Which is obvious enough, in retrospect, but that seems to have been the
      reason for the crashes I was sometimes seeing (TagLib and/or FileHandle
      not being thread-safe).
      
      The immediate bugfix is to serialize access into FileHandle/TagLib file
      reading code in DirectoryLoader, though I also did some cleanups in the
      process of debugging that I think are worth keeping.
      24b0edd1
  4. 21 Dec, 2018 3 commits
  5. 20 Dec, 2018 3 commits
    • Michael Pyne's avatar
      Disable tag updating from inline editor. · c6afa4c5
      Michael Pyne authored
      This mitigates a potential data-loss situation that might happen when
      adding new music items:
      
        Juk starts processing the new items in addFiles,
        Results in a new CollectionListItem being created,
        The resultant PlaylistItem superclass calls setFlags,
        This causes Qt to send a *data* changed signal from the QTreeWidget
          holding all the playlist items, saying that a *different*
          QTreeWidgetItem / PlaylistItem has been changed.
        This signal is normally only possible because of user interaction with
          the inline editor. As a result JuK assumes the signal is a user
          request to edit the track's tag, and does so. I have seen this
          cause existing files to take on the same tag values as one of the
          incoming new tracks.
      
      Although in theory a user could immediately select the "Undo" command to
      fix this, that's not a very good workaround. Since we have a separate
      tag editor already, we'll just use that instead until we can figure out
      a way to ensure that dataChanged signals are sent only when the data
      itself has changed (not just flags caused by unrelated items being
      created).
      
      CHANGELOG: Prevent opening new items from inadvertently editing track metadata on existing items.
      FIXED-IN:18.12.1
      c6afa4c5
    • Michael Pyne's avatar
    • Michael Pyne's avatar
      Prefer QVector to QList for most auxiliary lists. · 6e518da4
      Michael Pyne authored
      Includes template-template parameter usage in playlist.h's createItems
      until all usages of QList gone.
      6e518da4
  6. 19 Dec, 2018 3 commits
    • Michael Pyne's avatar
      Apply some cleanup to file loading code. · 13505df0
      Michael Pyne authored
      13505df0
    • Michael Pyne's avatar
      Use a thread pool for the threaded music loader. · eb4a4d15
      Michael Pyne authored
      Large music libraries can cause dozens/hundreds or even more of threads
      to be created at once. But all we really need is to do the loading off
      of the GUI thread, and the I/O will be the bottleneck no matter how many
      threads we use. So use Qt Concurrent to manage a threadpool instead,
      which also simplifies the code somewhat.
      
      I also fixed the broken global status updating when using threaded
      loader while refactoring to support this.
      eb4a4d15
    • Michael Pyne's avatar
      Move initial music load to a separate thread. · 3cf74c35
      Michael Pyne authored
      I ran into all the problems one might expect from adding threading to an
      old codebase but this variant seems pretty stable.
      
      The benefit is that the heavy I/O with large music libraries is now off
      of the GUI thread. So even though it will still take awhile to load all
      music until I fix the bug(s) with using cached tags, at least the
      application itself will be responsive while it loads audio.
      3cf74c35
  7. 11 Nov, 2018 1 commit
  8. 23 Sep, 2018 1 commit
  9. 04 Jul, 2018 1 commit
    • Michael Pyne's avatar
      Bring back inline tag editing. · 117646dd
      Michael Pyne authored
      This was a KDE 4 JuK feature that had been left disabled in the port to
      Plasma 5/KF5. I finished the implementation here in response to a user
      request.
      
      Given the code changes it's technically best described as a new feature
      (even if it used to work in KDE 4) so it probably won't show up until
      the next release of KDE Applications, though it should be safe to
      backport for interested distributions.
      
      GUI:
      BUG:395948
      FIXED-IN:18.08
      117646dd
  10. 17 Mar, 2018 1 commit
  11. 10 Feb, 2018 2 commits
    • Michael Pyne's avatar
      Extract Playlist::SharedSettings into a separate file. · 90a6b862
      Michael Pyne authored
      This helps declutter playlist.cpp and even makes it seem a bit easier to
      read through, I think.
      
      I also tried to fix a couple of outstanding bugs along the way, for
      instance reordering columns should work now, although there's still a
      lot of improvements that need to be made here.
      90a6b862
    • Michael Pyne's avatar
      More column-handling bugfixes in Playlist. · 2ea8a84d
      Michael Pyne authored
      - The showColumn/hideColumn functions work on visual indices, not
      logical indices, so converting a visual index to a logical one is both
      wrong and extra work.
      - The "Show Columns" menu was just flatly checking every column, even
      the ones that weren't shown.
      2ea8a84d
  12. 03 Feb, 2018 1 commit
    • Michael Pyne's avatar
      Bring back a visual indication of the playing item. · 0dd849ec
      Michael Pyne authored
      Turned out to be surprisingly more difficult than I thought, so
      hopefully no additional bugs.
      
      In particular some Phonon backends seem to insert a trip to a
      StoppedState when changing the MediaObject's current source, so I had to
      find a way around that to be able to call Playlist::stop() from
      PlaylistCollection (which is what actually clears the visual indication
      when playback stops).
      0dd849ec
  13. 02 Feb, 2018 1 commit
  14. 01 Feb, 2018 4 commits
  15. 31 Jan, 2018 3 commits
  16. 19 Jan, 2018 1 commit
  17. 07 Oct, 2017 1 commit
  18. 01 Oct, 2017 1 commit
    • Michael Pyne's avatar
      Remove Kdelibs4Support. · 1e3b90b8
      Michael Pyne authored
      This required a wide assortment of fixes, including deleting
      needless #include <koldfoo.h> headers, some minor additional porting
      tasks, and adding in includes that were previously only implicitly
      included.
      1e3b90b8
  19. 30 Sep, 2017 2 commits
  20. 29 Sep, 2017 3 commits
  21. 28 Aug, 2017 1 commit
  22. 27 Aug, 2017 1 commit
  23. 26 Aug, 2017 2 commits