1. 31 Jan, 2018 1 commit
    • Michael Pyne's avatar
      Remove the 'emitChanged' hack in Playlist::createItem<> · 894e87d6
      Michael Pyne authored
      Whichever code is creating these items is in the best spot to know
      whether there will be one or many of these items and when the best time
      is to permit the playlist to sync up afterwards.  This permits the
      createItem functions to focus more on just that function.
      894e87d6
  2. 30 Aug, 2017 2 commits
  3. 09 Aug, 2017 1 commit
  4. 26 Jul, 2017 1 commit
  5. 30 Nov, 2013 1 commit
    • Michael Pyne's avatar
      GIT_SILENT: Update source code license headers. · d969a0b4
      Michael Pyne authored
      Thanks to Eric Newberry (from Google Code-In) for running the heavy
      lifting on this.
      
      I made some other corrections since we're touching all the source
      anyways (e.g. fixing my email addresses), fixing the encoding of Richard
      Lärkäng's name, and I've also chosen to avoid the fancy box-shaped
      comments so that there's no issue with trailing spaces/tabs.
      
      REVIEW:114216
      d969a0b4
  6. 26 Jun, 2013 1 commit
    • Michael Pyne's avatar
      startup: Async-ify cached item loading on startup, add timers. · bf4df116
      Michael Pyne authored
      In an attempt to get rid of processEvents() (related to several existing
      crash bugs) I am trying to port the startup code towards more
      async-friendly schemes.
      
      There's no threading but we at least get back to the event loop much
      more frequently while loading files.
      
      Additionally I have added debug output with instrumentation to show how
      long it takes to advance through each step of the startup (I think this
      might be the first time anyone has understood JuK startup sequence in
      years).
      
      This leaves some essentially dead code with Cache (which no longer
      acts as a container), which I will try to cleanup in later commits.
      bf4df116
  7. 05 May, 2011 1 commit
    • Michael Pyne's avatar
      Add very slight optimization to collection list creation. · 392e641b
      Michael Pyne authored
      In my efforts to figure out wth it takes so long for JuK to startup I've
      managed to shave a (unfortunately very small) amount of time off by not
      requiring tons of function calls to find the singleton CollectionList when the
      CollectionList can just pass itself to CollectionListItems that it creates.
      
      svn path=/trunk/KDE/kdemultimedia/juk/; revision=1230441
      392e641b
  8. 24 Aug, 2008 1 commit
    • Michael Pyne's avatar
      JuK optimizapalooza! · c8f53250
      Michael Pyne authored
      * Add whatever X-DBUS-foo line KUniqueApplication says we need.
      * Restructure the startup sequence to postpone all the hard work until after the GUI is setup
        as much as possible to allow passing our reply over DBUS ASAP.
      * Don't call hasCover from PlaylistItem like, ever.  I made CoverInfo::hasCover() take longer
        when I added support for APIC frames but didn't catch all unnecessary instances of their use
        last time.  Luckily this is the big win and is backportable.
      * Also, don't force CoverInfo::coverId() to call hasCover() for no reason.
      
      Hopefully this should remove the egregrious Plasma freeze-ups while starting but even after
      returning from KUniqueApplication::newInstance() quickly it seems to take a while for the reply
      to go over the D-BUS...
      
      svn path=/trunk/KDE/kdemultimedia/juk/; revision=851610
      c8f53250
  9. 01 Oct, 2007 1 commit
  10. 24 May, 2007 1 commit
    • Michael Pyne's avatar
      Fairly large overhaul of the JuK codebase to beat out a lot of the Qt 3 stuff. · 2c297413
      Michael Pyne authored
      Still a lot of Qt 3 code to go but at this point Q3ValueList, Q3Vector, Q3PtrDict and
      Q3Dict should all be gone.
      
      In addition many loops have been foreach()'ed, which really does make it more readable.
      
      There is a crash fix as well, now the polish() function in Playlist has been replaced
      with an initialization slot which is singleShot'ed since the timing of the polish event
      is apparently different than it was in Qt 3, which was making new Playlists crash when
      they were first shown.
      
      Also I went through almost every header and pared it down to the minimum reasonably
      achievable, which required some additional headers in a few .cpp files but overall
      compilation time should be down and you won't have to rebuild all of JuK just because
      a header file got touched.
      
      I haven't seen any regressions yet but then again I still can't play music either.
      
      svn path=/trunk/KDE/kdemultimedia/juk/; revision=667815
      2c297413
  11. 18 May, 2007 2 commits
  12. 07 May, 2006 1 commit
    • Tim Beaulen's avatar
      KDialogBase to KDialog · ed916737
      Tim Beaulen authored
      And some other updates to fix the layout of the search dialog.
      
      
      svn path=/trunk/KDE/kdemultimedia/juk/; revision=538290
      ed916737
  13. 26 Feb, 2006 3 commits
  14. 01 Sep, 2005 1 commit
  15. 23 Feb, 2005 1 commit
    • Scott Wheeler's avatar
      Ok, more than five hours late and coolo still hasn't turned me into a pumpkin. · 5fc3e83d
      Scott Wheeler authored
      I've been assured that this will happen in the morning, though after three hours
      of sleep, I think the effect would be natural.
      
      The moral of the story:  test features in apps you maintain before the day of the
      freeze.  (I knew that the play queue was broken, but not quite how badly -- this
      was mostly Michael's turf, but he's away for another few weeks.)
      
      Ok, so stuff that happened:
      
      Fixed the "magical not-showing-back-up" Play Queue (was related to saving the
      play queue, which even when set up properly just caused all sorts of crashes.
      Commented out for now, ideally to be reenabled in 3.4.1) -- #99191
      
      Fixed up a lot of the quirkiness with the interaction of the Play Queue and the
      rest of the application playlists.  This hopefully fixes #98473 (if not, just
      reopen)
      
      Double clicking on an item (anywhere) plays it immediately. #97021
      
      And the catch all, #88888, "this sucks" was mostly implemented.  Some of the things
      I took a different line on, but you got at least 3 of the 6.  The last two I don't
      agree with.  If you feel so compelled, open more specific requests from here on out.
      
      Basically this structurally changed things so that instead of adding items to the
      play queue when turned on and always using that as the main location for playing
      now the play queue is only used when there's stuff in it.  When it's empty again
      playing resumes in the list that the last item in the play queue came from.  It
      will jump back into the play queue as soon as something is added.
      
      This is still a little rough, but it doesn't crash all the time like it was before
      (fixed at least three crashes on this one) and is close enough to actually being
      releasable for me to now get a couple hours sleep.
      
      BUG:99191
      BUG:98473
      BUG:97021
      BUG:88888
      
      svn path=/trunk/kdemultimedia/juk/; revision=392533
      5fc3e83d
  16. 20 Feb, 2005 2 commits
  17. 17 Jan, 2005 1 commit
  18. 10 Nov, 2004 1 commit
  19. 27 Sep, 2004 1 commit
    • Michael Pyne's avatar
      Implement bug 61340 (Add undo support for multi-tagging). · a64bdc6d
      Michael Pyne authored
      What this does is introduce a class that manages changes to PlaylistItems.  A number of PlaylistItems can be altered before the underlying files are changed.  Once the files are changed, a record is kept of the changes, which can then be used to undo what happened.  Also, this class takes care of items that are to be renamed.
      
      All code paths that are capable of altering a tag have been changed to use this class.
      
      Note that the underlying code could probably use some cleaning up.  e.g. adding a copy ctor to Tag instead of making a duplicateTag() function. ;-)
      
      I've tested this on a temp directory of copied music, so I'm pretty confident this all works and is safe.  However, you may want to test on a backup first to make sure it works on your system too. =D
      
      Now the question is whether I should backport this or not. :-/
      
      CCMAIL:61340-done@bugs.kde.org
      
      svn path=/trunk/kdemultimedia/juk/; revision=349640
      a64bdc6d
  20. 08 Sep, 2004 1 commit
  21. 28 Aug, 2004 1 commit
    • Michael Pyne's avatar
      This commit changes the following: · b1933ed2
      Michael Pyne authored
      * Use KDirLister as suggested by dfaure to track changes to the folders we're watching.  This allows us to track deletion and refreshes in addition to additions.
      * Shave about 20% off of the time needed to initialize the tree view mode.
      * Correct my spacing errors in playlistbox.cpp
      * Change the map used to hold the tree view text tags to a hash table, which should be faster as well.
      
      It's all in one commit because I'm crappy at patch management. =D
      
      svn path=/trunk/kdemultimedia/juk/; revision=342054
      b1933ed2
  22. 25 Jul, 2004 1 commit
    • Michael Pyne's avatar
      Fix a bug with renaming files that is exposed by the History list. When · 4839a25f
      Michael Pyne authored
      renaming a file, the map of file names to collection list items wasn't updated,
      which caused duplicate entries to appear when the History list added an entry
      when you play the newly-renamed file.
      
      Although disabling the KDirWatch doesn't appear to be actually necessary to fix
      the bug, I'm leaving that part in because I think that once 85534 is fixed it
      will expose the bug again.
      
      svn path=/trunk/kdemultimedia/juk/; revision=332434
      4839a25f
  23. 24 Jul, 2004 1 commit
    • Michael Pyne's avatar
      Change the tree view mode in JuK to create and delete playlists as needed to · 0fdc1c20
      Michael Pyne authored
      keep in sync with your music collection.  What this means is that if you
      should remove a song, or edit a tag such that one of the tree view categories
      is empty, the category will automatically delete itself.  Also, adding tracks
      or editing a new tag will automatically create the appropriate entry, even if
      you've already expanded the tree view out.
      
      This fixes a couple of bugs, and although the patch is rather large, it has been
      reviewed by Scott <wheeler@kde.org>, with some of his suggestions implemented.
      Of course, I would appreciate testing, I've been running it here for quite a few days.
      
      No strings were harmed during the making of this patch. :-)
      
      CCMAIL:62303-done@bugs.kde.org
      CCMAIL:74598-done@bugs.kde.org
      
      svn path=/trunk/kdemultimedia/juk/; revision=332224
      0fdc1c20
  24. 19 Jun, 2004 2 commits
  25. 06 Jun, 2004 1 commit
    • Michael Pyne's avatar
      Flesh out the rest of the DCOP interface. · 117c8e05
      Michael Pyne authored
      The DCOP interface is called Collection.
      The master playlist is called "Collection List".
      
      * playlists() - Returns list of playlists
      * createPlaylist(QString) - Creates an empty playlist with the given name.
      * remove() - Removes the currently selected playlist.  May ask user for confirmation.
      * openFile(playlist,file) - Adds file to the given playlist.
      * openFile(playlist,files) - Adds files (QStringList of filenames) to the given playlist.
      * removeTrack(playlist,key) - Removes the track ID'd by key from the playlist.
      * removeTrack(playlist,keys) - Removes the tracks (QStringList of keys) from the playlist.
      * playlist() - Returns name of currently selected playlist.
      * setPlaylist() - Selects the given playlist.
      * playlistTracks() - Returns a QStringList of the keys of the songs in the given playlist.
      * trackProperty(key,property) - Similar to trackProperty() in the Player interface, returns the given property of the given file.
      
      Notes:
      Scott and I agree that a DCOP call to erase a file from disk won't happen.
      You can simulate this in a script by first removing the file from Collection
      List, and then removing the file from disk in your script.  Use
      Collection/trackProperty(), with a Property name of Path to get the file name.
      
      To see a list of all valid properties for trackProperty(), use the
      trackProperties() call in the DCOP Player interface for JuK.
      
      In the current implementation, the key for a song will actually be its filename.
      Don't rely on this behavior, as the code may be changed later to return a
      string ID that, although unique, bears no resemblance to a filename.  You can
      always retrieve the file name for a song from its key using the trackProperty()
      DCOP call.
      
      Also, it's sort of a hack, but you can start playing a different playlist by
      stopping playback, selecting the playlist you want to play, and then starting
      playback.
      Example:
        $ dcop juk Player stop
        $ dcop juk Collection setPlaylist <playlist-name-here>
        $ dcop juk Player play
      
      It's also now possible to show the track announcement popup via DCOP, by
      activating the showPopup action.
      Example: $ dcop juk juk-mainwindow#1 activateAction showPopup
      
      I'll try to work on e.g. search functionality for DCOP, but I won't guarantee
      that it will make it for 3.3.
      
      CCMAIL:64419-done@bugs.kde.org
      CCMAIL:69083-done@bugs.kde.org
      CCMAIL:80327-done@bugs.kde.org
      
      svn path=/trunk/kdemultimedia/juk/; revision=318068
      117c8e05
  26. 03 Jun, 2004 1 commit
  27. 01 Jun, 2004 1 commit
    • Scott Wheeler's avatar
      Ok, big cleanups essentially implimenting the stuff that has been in the · 08f5d033
      Scott Wheeler authored
      TODO for a while:
      
      *) Ditch the PlaylistSplitter class mostly in favor of the PlaylistCollection
      *) Move to a more linear class interaction path rather than having PlaylistSplitter
         as an ugly thing trying to mediate between a bunch of unrelated classes
      *) Rely more heavily on the global action collection and try to instantiate actions
         in the classes that they're related to
      *) Remove a few dozen dirty hacks
      *) Got rid of about 250 lines of code in the process
      
      There are still a couple of outstanding issues but since my home internet connection
      has decided that it doesn't like me at the moment and people are waiting on these
      changes for further work I'm committing.  Stuff that still needs to be done (I'll
      likely finish this tonight and commit it at work tomorrow):
      
      *) Create the Artist / Album / Genre playlists in the Tree View Mode.  This is
         essentially easy, it just requires sticking a new constructor in and making sure
         that it works.
      *) Make it so that the HistoryPlaylist is properly instantiated and shown when its
         asked for
      *) Make sure that the status bar is updated with the current playlist information
      *) Create dynamic playlists on multiple select
      
      While that sounds like quite a bit that's really just a little bit of work, but
      managing such a huge patch set off-line is getting rather tedious and most stuff
      works now.  I should have a patch for the rest tomorrow.
      
      svn path=/trunk/kdemultimedia/juk/; revision=316735
      08f5d033
  28. 31 May, 2004 1 commit
  29. 13 Apr, 2004 1 commit
  30. 12 Apr, 2004 1 commit
    • Scott Wheeler's avatar
      *) Ported Playlist::createItem() over to using FileHandle. · a289864b
      Scott Wheeler authored
      *) Removed an extra copy of the path in CollectionListItem
      *) Avoid two calls to PlaylistItem::refresh() on creating CollectionListItems
      *) Moved resolveSymLinks() from being a static public of Playlist to being
         a helper function in FileHandle.
      
      svn path=/trunk/kdemultimedia/juk/; revision=303018
      a289864b
  31. 11 Apr, 2004 2 commits
    • Scott Wheeler's avatar
      CVS_SILENT more leftovers · 7549de2b
      Scott Wheeler authored
      svn path=/trunk/kdemultimedia/juk/; revision=302749
      7549de2b
    • Scott Wheeler's avatar
      PlaylistItem and CollectionListItem are no longer QObject. This meant moving · 81c845da
      Scott Wheeler authored
      over thier signal and slot code to normal method calls.  This code was pretty
      ugly so this actually made things much more clear.
      
      Also this required coming up with a more self contained MusicBrainz confirmation
      process, so that's now been moved into MusicBrainzFileQuery.
      
      Fixed a lot of includes along the way and removed a lot of unused cruft...
      
      svn path=/trunk/kdemultimedia/juk/; revision=302745
      81c845da
  32. 14 Mar, 2004 1 commit
  33. 29 Feb, 2004 1 commit
    • Scott Wheeler's avatar
      fixincludes · 1ed5929d
      Scott Wheeler authored
      svn path=/trunk/kdemultimedia/juk/; revision=292445
      1ed5929d