1. 23 Mar, 2021 3 commits
  2. 21 Mar, 2021 8 commits
  3. 20 Mar, 2021 5 commits
    • Michael Pyne's avatar
      701c365b
    • Michael Pyne's avatar
      playlistbox: Use QVector instead of QList for list of playlists. · 16b7811c
      Michael Pyne authored
      Along with more assorted modernization and cleanup.
      16b7811c
    • Michael Pyne's avatar
      playlistbox: Modernize code a bit. · 18b1b6c4
      Michael Pyne authored
      18b1b6c4
    • Michael Pyne's avatar
      playlistcollection: Minor cleanups, rename object(). · 9971b7b3
      Michael Pyne authored
      So the PlaylistBox stuff exists in a sort of unusual class structure:
      
        * PlaylistCollection, a plain class just holding playlist info
        * PlaylistCollection::ActionHandler, used for non-GUI stuff that still
          needs signals/slots (i.e. action handling)
        * PlaylistBox, the actual GUI class with full-blown QWidgets and the
          rest.
      
      This sort of makes sense (it's an early instance of the approach Qt
      would take with Model/View in Qt4) but it was even confusing me again.
      So I've tried to rename to make the roles more clear, removed "using
      namespace" stuff that muddies the picture up more and did some minor
      other cleanups while I was here.
      9971b7b3
    • Michael Pyne's avatar
      ui: Focus the playlist search line edit on startup. · 2995715e
      Michael Pyne authored
      This helps avoid the new QToolButton in the status bar from being
      highlighted for no reason and is more convenient for playing music when
      you first start JuK up.
      
      In the process, use the standard Qt focus proxy feature rather than
      manually emulating the effect, though this needs me to enable C++14 to
      use the nicer qOverload<> instead of QOverload.
      2995715e
  4. 18 Mar, 2021 5 commits
    • Michael Pyne's avatar
      history: Enforce specific date format that sorts right. · d4bf5912
      Michael Pyne authored
      The QTreeWidget we're using sorts by display text by default. This makes
      the date column in the history playlist a bit useless to sort by in the
      normal format.
      
      The ISO date format is a bit too ugly though, so I manually implement
      something more akin to RFC 3339. To properly fix this we should
      implement a specific role in each item that can be sorted by the
      underlying model. If the underlying model is a QStandardItemModel this
      might already be easy but I don't have time now to investigate further.
      d4bf5912
    • Michael Pyne's avatar
      Address undefined behavior during shutdown. · fce79085
      Michael Pyne authored
      Event filters strike again, along with our old friend, sibling ordering
      dependencies not captured by the Qt memory hierarchy. Again, noted by
      ubsan.
      fce79085
    • Michael Pyne's avatar
      playlist: Avoid resizing columns until after we've generated weights. · 66ddbb3b
      Michael Pyne authored
      This avoids warnings about undefined use of NaN and similar, when we try
      to resize the columns too early (before there are any tracks to use to
      inform average column widths).
      66ddbb3b
    • Michael Pyne's avatar
      Fix undefined behavior in PlaylistItem. · b67785f9
      Michael Pyne authored
      The PlaylistItem ctor meant to be called from its subclass's constructor
      (CollectionListItem) copied the this pointer too early. When
      PlaylistItem is being constructed, by C++ rules the PlaylistItem is not
      a CollectionListItem yet. This was appropriately flagged by ubsan.
      
      I fixed this by ensuring the only user of this subclass fixes up the
      pointer as soon as it can, and making it a private constructor so it's
      not used elsewhere by mistake.
      b67785f9
    • Michael Pyne's avatar
      Fix use of undefined behavior in status label. · 10110d76
      Michael Pyne authored
      The event filter doesn't check that the received event is a QMouseEvent
      but it is possible (and actually happened) to receive other events from
      Qt.
      
      But in this case we don't even need an event filter, we're just handling
      mouse events and Qt provides entirely usable methods for that already.
      10110d76
  5. 13 Mar, 2021 1 commit
  6. 24 Feb, 2021 1 commit
  7. 23 Feb, 2021 1 commit
    • Michael Pyne's avatar
      clazy: Fix most remaining warnings. · 288c69eb
      Michael Pyne authored
      I'm not going to worry about non-POD statics in an application, and I
      can't fix the Q_PROPERTY warnings in Phonon. Other than that, all
      default clazy warnings should be gone now.
      
      Of note is the tagtransactionmanager.cpp setFile call, which is not just
      a warning but an actual bug (good job clazy!).
      288c69eb
  8. 22 Feb, 2021 5 commits
  9. 13 Feb, 2021 2 commits
    • Michael Pyne's avatar
      test: Fix tagguessertest lookup error with ctest. · 3a3bc5e5
      Michael Pyne authored
      For whatever reason, running plain ctest or even "ninja test" on a
      testing-enabled does not succeed in finding tagguessertest to run it,
      probably because this test is located in the build directory's /bin
      subfolder and the test metadata is incorrect.
      
      However I was able to solve this just by using the existing ECM macro to
      add a single test (https://api.kde.org/ecm/module/ECMAddTests.html)
      directly, so that's what I did. ctest now runs and passes both tests
      fine again.
      3a3bc5e5
    • Michael Pyne's avatar
      cmake: Remove needless checks for Taglib format support. · 082914b0
      Michael Pyne authored
      The recent commit 9a54d6e7 to use
      FindTaglib from ECM breaks detection of Ogg Opus support in Taglib for
      some reason. This causes crashes when playing Ogg Opus files because
      their relevant Taglib::File subclass is not created from our MediaFiles
      factory.
      
      However the check is needless. Taglib support for ASF and MP4 files has
      been standard since 2012 or so, and Ogg Opus support was made standard
      around the same time frame. So rather than check for these as optional
      features, just assume that supported versions of Taglib support these
      formats.
      082914b0
  10. 11 Feb, 2021 1 commit
    • Michael Pyne's avatar
      Merge branch 'neoninteger/juk-fix-rename-folders' · 8956f56d
      Michael Pyne authored
      Merging a change from Callum Parsey to fix a bug with the file renamer
      where it was, in essence, trying to treat the resulting file basename as
      if it were another directory in the path, and failing as a result.
      
      This comes extremely late, as I somehow missed this merge request
      hanging out for JuK until after an unrelated one came in recently. But
      no excuses, that's my fault. My apologies to the submitter.
      
      I didn't see a corresponding bug to close. This fix should land in
      version 20.12.3 and later.
      8956f56d
  11. 10 Feb, 2021 1 commit
  12. 06 Feb, 2021 3 commits
  13. 29 Jan, 2021 1 commit
  14. 02 Jan, 2021 1 commit
  15. 01 Jan, 2021 1 commit
  16. 02 Dec, 2020 1 commit