~adeodato/ code/ minirok/ csl2.blog/ stuff/ playlist merge log
------------------------------------------------------------
revno: 374
committer: Adeodato Simó <dato@net.com.org.es>
branch nick: minirok.kde4
timestamp: Fri 2008-02-29 12:45:16 +0100
message:
  Really merge from the playlist branch (hiccup with `replay` above).
    ------------------------------------------------------------
    revno: 359.1.1
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-01-30 11:35:01 +0100
    message:
      Start rewriting the playlist with the Model/View framework.
      
      We can't use a stock search line because of this. :-(
    ------------------------------------------------------------
    revno: 359.1.2
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-01-30 11:38:26 +0100
    message:
      Drop acceptDrag(), superceded by mimeTypes().
    ------------------------------------------------------------
    revno: 359.1.3
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-01-30 12:07:27 +0100
    message:
      Merge from minirok.kde4.
    ------------------------------------------------------------
    revno: 359.1.4
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-01-30 12:51:03 +0100
    message:
      Create a QUndoStack, and associated actions, placing them in the toolbar.
    ------------------------------------------------------------
    revno: 359.1.5
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-01-30 13:28:26 +0100
    message:
      Add explanatory comment.
    ------------------------------------------------------------
    revno: 359.1.6
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-01-30 18:49:17 +0100
    message:
      Initial support for adding items to the playlist, with undo/redo support!
      
      There are two functions, insert_items() and remove_items(), that are in
      charge of modifying self._items, call the appropriate model functions,
      and general housekeeping. Nothing else should ever touch self._items, I
      think.
      
      Then there are two sublclasses of QUndoCommand, InsertItemsCmd and
      RemoveItemsCmd, which should be used whenever there are modifications to
      make to the playlist. They use the two methods mentioned above, and
      nothing else should ever call these methods, I think.
    ------------------------------------------------------------
    revno: 359.1.7
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-01-30 19:11:47 +0100
    message:
      Port the "append if Control is pressed" behavior.
      
      Drop superseded slot_accept_drop().
    ------------------------------------------------------------
    revno: 359.1.8
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Sat 2008-02-02 15:11:06 +0100
    message:
      Use a custom QMimeData() for internal playlist drag & dropping.
    ------------------------------------------------------------
    revno: 359.1.9
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: removecmd_non_contiguous
    timestamp: Sat 2008-02-02 15:12:07 +0100
    message:
      Make RemoveItemsCmd able to remove a non-contiguous list of items.
    ------------------------------------------------------------
    revno: 359.1.10
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: removecmd_non_contiguous
    timestamp: Sat 2008-02-02 16:40:25 +0100
    message:
      Add a function to retrieve a simple list of itmes the command removed.
    ------------------------------------------------------------
    revno: 359.1.11
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Sat 2008-02-02 16:43:31 +0100
    message:
      Implement internal drop, based on the previous 3 commits.
    ------------------------------------------------------------
    revno: 359.1.12
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Sat 2008-02-02 18:09:44 +0100
    message:
      Preserve the selection after internal drop.
    ------------------------------------------------------------
    revno: 359.1.13
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Sun 2008-02-03 12:28:15 +0100
    message:
      Add a KDE4 TODO marker to every function that still needs porting.
    ------------------------------------------------------------
    revno: 359.1.14
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-04 11:46:38 +0100
    message:
      Use a dummy apply_preferences().
    ------------------------------------------------------------
    revno: 359.1.15
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-04 12:10:29 +0100
    message:
      Do nothing if requested to insert/remove empty lists.
    ------------------------------------------------------------
    revno: 359.1.16
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-04 12:21:11 +0100
    message:
      Fix add_files_untrusted().
      
      For this, merge the logic in drag.mimedata_playable_files() and the
      nested _can_play_with_warning() function into util.playable_from_untrusted().
    ------------------------------------------------------------
    revno: 359.1.17
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-04 12:48:33 +0100
    message:
      Start making PlaylistItem a bit useful.
    ------------------------------------------------------------
    revno: 359.1.18
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-04 17:09:41 +0100
    message:
      Only call fmt_seconds() if we have a length.
    ------------------------------------------------------------
    revno: 359.1.19
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-04 17:10:43 +0100
    message:
      Improve PlaylistItem, allowing to fetch tags by index.
      
      ALLOWED_TAGS is now a dict, but mostly everywhere works the same.
    ------------------------------------------------------------
    revno: 359.1.20
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-04 17:12:05 +0100
    message:
      No changes needed for tags_from_filename().
    ------------------------------------------------------------
    revno: 359.1.21
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-04 17:15:39 +0100
    message:
      Start adding PlaylistItems to the playlist instead of strings.
      
      Use inconditionally a TagReader for now. Move the position/row logic
      from dropMimeData() to add_files(). Add a dummy create_item().
    ------------------------------------------------------------
    revno: 359.1.22
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-04 17:18:37 +0100
    message:
      Oops.
    ------------------------------------------------------------
    revno: 359.1.23
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-04 18:21:56 +0100
    message:
      Implement headerData().
    ------------------------------------------------------------
    revno: 359.1.24
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-04 18:37:11 +0100
    message:
      Import QtCore.Qt directly into our namespace, thank you very much.
    ------------------------------------------------------------
    revno: 359.1.25
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-04 18:44:48 +0100
    message:
      Set "all columns show focus", now that we have columns.
    ------------------------------------------------------------
    revno: 359.1.26
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-04 19:00:39 +0100
    message:
      Make Columns a QHeaderView, and port exec_popup().
    ------------------------------------------------------------
    revno: 359.1.27
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Tue 2008-02-05 10:51:50 +0100
    message:
      Remove unneeded blah.
    ------------------------------------------------------------
    revno: 359.1.28
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Tue 2008-02-05 12:34:34 +0100
    message:
      Er, go back to ALLOWED_TAGS being a list.
    ------------------------------------------------------------
    revno: 359.1.29
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Tue 2008-02-05 12:47:44 +0100
    message:
      Rewrite the configuration handling of Columns.
      
      Now a single option is used, that contains all the necessary information.
      Note that the setup has to move out from __init__, else it does not work
      (probably because it's not associated to a view yet). Since KConfig
      crashes at the moment with PyKDE, use a fake stub config object.
      
      Also, drop minirokrc now (defaults are in the code now, but they could
      still be overriden with a system-wide configuration file AFAIK).
    ------------------------------------------------------------
    revno: 359.1.30
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Tue 2008-02-05 13:04:19 +0100
    message:
      Rewrite Columns.slot_save_config().
    ------------------------------------------------------------
    revno: 359.1.31
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Tue 2008-02-05 13:08:23 +0100
    message:
      Move down.
    ------------------------------------------------------------
    revno: 359.1.32
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-06 12:22:54 +0100
    message:
      Move the view class below the model.
    ------------------------------------------------------------
    revno: 359.1.33
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-06 12:24:14 +0100
    message:
      Fix keyPressEvent(), now moved to the view.
    ------------------------------------------------------------
    revno: 359.1.34
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-06 12:38:30 +0100
    message:
      Emit "list_changed" from the very deep insert/remove_items.
    ------------------------------------------------------------
    revno: 359.1.35
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-06 13:09:10 +0100
    message:
      Fix stupid stupid bug in playable_from_untrusted().
    ------------------------------------------------------------
    revno: 359.1.36
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-06 13:11:38 +0100
    message:
      Fix slot_save_config() and friends.
    ------------------------------------------------------------
    revno: 359.1.37
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-06 13:34:42 +0100
    message:
      Do not let the loading of the saved playlist be undoable.
    ------------------------------------------------------------
    revno: 359.1.38
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-06 14:08:31 +0100
    message:
      Finish with the playlist's __init__.
    ------------------------------------------------------------
    revno: 359.1.39
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-06 15:50:10 +0100
    message:
      The clicked() signal does not cut it, use mousePressEvent() instead.
      
      (Basically, when the slot gets called it is too late to find out via
      QApplication.mouseButtons() which button was clicked.)
      
      Also, clear the selection if the click is not over an item, and drop
      superseded eventFilter() from the old playlist.
    ------------------------------------------------------------
    revno: 359.1.40
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-06 16:02:55 +0100
    message:
      Add item about recent bug.
    ------------------------------------------------------------
    revno: 359.1.41
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-06 16:30:05 +0100
    message:
      Do not eat Ctrl+LeftButton.
    ------------------------------------------------------------
    revno: 359.1.42
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-06 16:31:20 +0100
    message:
      Add helper selected/unselected_rows() methods.
    ------------------------------------------------------------
    revno: 359.1.43
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-06 16:45:54 +0100
    message:
      Be lazy and give a default parameter value to rowCount().
    ------------------------------------------------------------
    revno: 359.1.44
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-06 16:46:33 +0100
    message:
      Merge from minirok.kde4.
    ------------------------------------------------------------
    revno: 359.1.45
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-06 16:48:02 +0100
    message:
      Fix slot_append_visible().
    ------------------------------------------------------------
    revno: 359.1.46
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-06 18:39:17 +0100
    message:
      Port the contextual menu on right button click.
      
      The menu moves from the old playlist to the playlist view, in
      mousePressEvent.
      
      Drop select_* methods from the old class that are no longer used.
    ------------------------------------------------------------
    revno: 359.1.47
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-06 20:26:12 +0100
    message:
      Merge trunk.
        ------------------------------------------------------------
        revno: 296.1.15
        committer: Adeodato Simó <dato@net.com.org.es>
        branch nick: minirok.dev
        timestamp: Sat 2008-02-02 12:24:59 +0100
        message:
          Open 0.9.
        ------------------------------------------------------------
        revno: 296.1.16
        committer: Adeodato Simó <dato@net.com.org.es>
        branch nick: minirok.dev
        timestamp: Wed 2008-02-06 20:24:15 +0100
        message:
          Use a black drawRect() instead of black_tiny_stop.png.
    ------------------------------------------------------------
    revno: 359.1.48
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-06 23:03:52 +0100
    message:
      Port PlaylistItem.paintCell() to an item delegate for the Track column.
    ------------------------------------------------------------
    revno: 359.1.49
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-06 23:04:48 +0100
    message:
      Delete an extra pixel here.
    ------------------------------------------------------------
    revno: 359.1.50
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Thu 2008-02-07 13:21:08 +0100
    message:
      Oops, only pack in the mime data each row once, not once per column.
    ------------------------------------------------------------
    revno: 359.1.51
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Thu 2008-02-07 13:23:42 +0100
    message:
      Set the selection behavior, though SelectRows seems to be the default already.
    ------------------------------------------------------------
    revno: 359.1.52
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Thu 2008-02-07 18:06:04 +0100
    message:
      Drop unused import.
    ------------------------------------------------------------
    revno: 359.1.53
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Thu 2008-02-07 19:10:04 +0100
    message:
      Another pixel.
    ------------------------------------------------------------
    revno: 359.1.54
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Thu 2008-02-07 19:47:31 +0100
    message:
      Fix toggle_stop_after() and family.
    ------------------------------------------------------------
    revno: 359.1.55
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Thu 2008-02-07 20:38:35 +0100
    message:
      Fix stupid bug in remove_items().
    ------------------------------------------------------------
    revno: 359.1.56
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Thu 2008-02-07 20:42:04 +0100
    message:
      Fix slot_list_changed() and slot_engine_status_changed().
    ------------------------------------------------------------
    revno: 359.1.57
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Thu 2008-02-07 20:46:41 +0100
    message:
      Further "stop after" fixes.
    ------------------------------------------------------------
    revno: 359.1.58
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Fri 2008-02-08 12:01:52 +0100
    message:
      Keep a mapping item => row, to improve performance.
      
      (I think we'll use object-based look up a lot, but this may be premature
      optimization?)
    ------------------------------------------------------------
    revno: 359.1.59
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Fri 2008-02-08 12:16:12 +0100
    message:
      Keep FIRST_ITEM in slot_list_changed(), current_item is not an index.
    ------------------------------------------------------------
    revno: 359.1.60
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Fri 2008-02-08 12:32:10 +0100
    message:
      Implement RandomOrderedList.extend().
    ------------------------------------------------------------
    revno: 359.1.61
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Fri 2008-02-08 12:32:50 +0100
    message:
      Fix my_first_child() and maybe_populate_random_queue().
      
      For the latter, and now that we have a direct list of items, use the new
      RandomOrderedList.extend(), which means a huge performance boost.
    ------------------------------------------------------------
    revno: 359.1.62
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Fri 2008-02-08 12:47:28 +0100
    message:
      Allow for row2 to be None.
    ------------------------------------------------------------
    revno: 359.1.63
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Fri 2008-02-08 12:58:16 +0100
    message:
      Fix slot_play(), and some neighbours that needed no changes.
    ------------------------------------------------------------
    revno: 359.1.64
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Fri 2008-02-08 13:16:56 +0100
    message:
      Use a different temp implementation.
    ------------------------------------------------------------
    revno: 359.1.65
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Fri 2008-02-08 13:18:25 +0100
    message:
      Temporarily disable these setters for playing to somewhat work.
    ------------------------------------------------------------
    revno: 359.1.66
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Fri 2008-02-08 14:00:00 +0100
    message:
      Also emit list_changed.
    ------------------------------------------------------------
    revno: 359.1.67
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Fri 2008-02-08 14:00:05 +0100
    message:
      Fix slot_next() and slot_previous().
    ------------------------------------------------------------
    revno: 359.1.68
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 11:05:04 +0100
    message:
      Prefix these methods with "row_".
    ------------------------------------------------------------
    revno: 359.1.69
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 11:05:18 +0100
    message:
      Use "is" instead of "==".
    ------------------------------------------------------------
    revno: 359.1.70
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 12:18:54 +0100
    message:
      Remove unneeded sort().
    ------------------------------------------------------------
    revno: 359.1.71
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 12:25:08 +0100
    message:
      Draw indicator around the current item.
    ------------------------------------------------------------
    revno: 359.1.72
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 12:40:45 +0100
    message:
      Merge add_file() into create_item().
    ------------------------------------------------------------
    revno: 359.1.73
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 12:53:44 +0100
    message:
      Note that these need porting.
    ------------------------------------------------------------
    revno: 359.1.74
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 12:54:20 +0100
    message:
      Remove now fixed TODO item.
    ------------------------------------------------------------
    revno: 359.1.75
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 12:55:10 +0100
    message:
      Add TODO item.
    ------------------------------------------------------------
    revno: 359.1.76
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 12:58:43 +0100
    message:
      Fix TagReader, making it directly a ThreadedWorker.
      
      Now the updating of items is done in the model, which makes more sense.
    ------------------------------------------------------------
    revno: 359.1.77
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 13:01:47 +0100
    message:
      Finish fixing _set_current_item().
    ------------------------------------------------------------
    revno: 359.1.78
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 13:11:40 +0100
    message:
      Drop superceded code in paintCell().
    ------------------------------------------------------------
    revno: 359.1.79
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 13:38:31 +0100
    message:
      Fix slot_toggle_stop_after_current().
    ------------------------------------------------------------
    revno: 359.1.80
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 13:49:48 +0100
    message:
      Fix StopAction, yay.
    ------------------------------------------------------------
    revno: 359.1.81
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 17:44:54 +0100
    message:
      Do not make Playlist.currently_playing a dict via a property.
      
      Let it be a normal item, as with current_item, and provide a
      get_current_tags() method instead.
      
      Move everybody to use this new method.
    ------------------------------------------------------------
    revno: 359.1.82
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 17:51:28 +0100
    message:
      Fix _set_currently_playing().
    ------------------------------------------------------------
    revno: 359.1.83
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 17:52:06 +0100
    message:
      Paint the currently playing item in italics (ported).
    ------------------------------------------------------------
    revno: 359.1.84
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 18:04:06 +0100
    message:
      Heh, remove unneeded walk to the action collection.
    ------------------------------------------------------------
    revno: 359.1.85
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 18:05:59 +0100
    message:
      Port MidButton click on currently playing item.
    ------------------------------------------------------------
    revno: 359.1.86
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 18:08:23 +0100
    message:
      Oops, this is an elif: no further action for non-valid indexes.
    ------------------------------------------------------------
    revno: 359.1.87
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 18:28:50 +0100
    message:
      Only emit dataChanged() if there are modified rows.
    ------------------------------------------------------------
    revno: 359.1.88
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 18:50:47 +0100
    message:
      Fix toggle_enqueued() and queue_pop(), plus friends.
    ------------------------------------------------------------
    revno: 359.1.89
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 18:51:14 +0100
    message:
      FIRST_ITEM stays, so remove XXX comment.
    ------------------------------------------------------------
    revno: 359.1.90
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 18:52:16 +0100
    message:
      Drop more unneeded XXX-KDE4 markers.
    ------------------------------------------------------------
    revno: 359.1.91
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 19:07:17 +0100
    message:
      Drop unneeded methods from PlaylistItem.
    ------------------------------------------------------------
    revno: 359.1.92
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 19:12:16 +0100
    message:
      Fix slot_activate_index().
    ------------------------------------------------------------
    revno: 359.1.93
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 19:13:40 +0100
    message:
      One pixel less here seems to completely hide the focus indicator.
    ------------------------------------------------------------
    revno: 359.1.94
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 19:23:34 +0100
    message:
      Do not eat exceptions here.
    ------------------------------------------------------------
    revno: 359.1.95
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 19:30:53 +0100
    message:
      Cope with possible race condition.
    ------------------------------------------------------------
    revno: 359.1.96
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-11 19:42:25 +0100
    message:
      Update the undo stuff.
    ------------------------------------------------------------
    revno: 359.1.97
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Tue 2008-02-12 13:40:36 +0100
    message:
      Do not add items to random_queue on creation, but on insertion.
      
      This makes more sense, and is going to be useful after the next commits,
      in which we'll pop items from random_queue in remove_items() [think undo].
      
      Also, keep a flag to show whether an item has already been played (i.e.,
      popped from random_queue), in order to only re-add those that weren't.
    ------------------------------------------------------------
    revno: 359.1.98
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Tue 2008-02-12 13:45:30 +0100
    message:
      Correctness: only update tags if the item is not deleted.
    ------------------------------------------------------------
    revno: 359.1.99
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Tue 2008-02-12 14:21:21 +0100
    message:
      Port the remove_items() housekeeping.
    ------------------------------------------------------------
    revno: 359.1.100
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Tue 2008-02-12 14:30:57 +0100
    message:
      Do not enqueue in the TagReader on item creation, but on insertion.
      
      Again, this makes more sense, bla bla, is more efficient (the previous
      time was *much* more efficient as well), and allows to re-queueing items
      in the TagReader if necessary when undoing a removal.
    ------------------------------------------------------------
    revno: 359.1.101
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Tue 2008-02-12 14:37:43 +0100
    message:
      Merge from minirok.kde4.
    ------------------------------------------------------------
    revno: 359.1.102
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Tue 2008-02-12 14:40:44 +0100
    message:
      Use generators instead of list comprehensions.
    ------------------------------------------------------------
    revno: 359.1.103
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Tue 2008-02-12 19:10:00 +0100
    message:
      Better comment.
    ------------------------------------------------------------
    revno: 359.1.104
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Tue 2008-02-12 20:25:08 +0100
    message:
      Restore the queue position when undoing a removal.
    ------------------------------------------------------------
    revno: 359.1.105
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-13 13:22:26 +0100
    message:
      Use min/max instead of sorting.
    ------------------------------------------------------------
    revno: 359.1.106
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-13 18:54:36 +0100
    message:
      Add notes and comment about dataChange() abuse.
    ------------------------------------------------------------
    revno: 359.1.107
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-13 18:58:10 +0100
    message:
      Since we're abusing dataChanged() anyway, abuse it efficiently.
    ------------------------------------------------------------
    revno: 359.1.108
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-13 19:50:33 +0100
    message:
      Rename methods to make explicit they receive rows and not items.
    ------------------------------------------------------------
    revno: 359.1.109
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-13 20:43:51 +0100
    message:
      Abstract the dataChanged() abuse into a signal.
      
      For now the model conects to it and emits the appropriate dataChanged(),
      but hopefully some day we'll found how the view could do it itself.
    ------------------------------------------------------------
    revno: 359.1.110
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Fri 2008-02-15 12:56:48 +0100
    message:
      Merge from minirok.kde4.
    ------------------------------------------------------------
    revno: 359.1.111
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Fri 2008-02-15 13:14:02 +0100
    message:
      Use KConfig in Columns.
    ------------------------------------------------------------
    revno: 359.1.112
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Fri 2008-02-15 13:25:23 +0100
    message:
      Cope with sectionSize() returning 0 for hidden sections.
    ------------------------------------------------------------
    revno: 359.1.113
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Fri 2008-02-15 19:51:11 +0100
    message:
      Revamp the queue handling, making it way more efficient.
      
      Changes:
      
        * Introduce a toggle_enqueued_many() function that takes a list of
          items, and toggles their enqueued state. When dequeueing, it also
          updates the queue_position attribute of items that were later in the
          queue (I think that wasn't been done in the previous version).
      
          Move insert_items() and remove_items() to use this new function, and
          make queue_pop() a convenience wrapper around it.
      
        * Make toggle_enqueued_row() just a wrapper around the above function,
          and introduce a toggle_enqueued_many_rows() to be used from the
          view's mousePressEvent().
    ------------------------------------------------------------
    revno: 359.1.114
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Fri 2008-02-15 20:31:33 +0100
    message:
      Sort before enqueueing.
    ------------------------------------------------------------
    revno: 359.1.115
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Sat 2008-02-16 12:36:46 +0100
    message:
      Fix the pending bug in toggle_enqueued_many(), and make it faster.
      
      We now pop() items based on their queue_position directly, instead of
      searching for them in the queue.
      
      The recalculation of queue_position for the rest of items is now fixed,
      based on contiguous chunks of removed items.
    ------------------------------------------------------------
    revno: 359.1.116
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Sat 2008-02-16 13:01:49 +0100
    message:
      Rewrite row_queue_position() to use the queue_position attribute (faster).
      
      This very much hopes that queue_position is always right. *crossesfingers*
    ------------------------------------------------------------
    revno: 359.1.117
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Sat 2008-02-16 13:39:58 +0100
    message:
      User iteritems().
    ------------------------------------------------------------
    revno: 359.1.118
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Sat 2008-02-16 17:14:47 +0100
    message:
      Move the handling of the queue on item re-insertion to RemoveItemsCmd.
      
      This is necessary because the previous state of the queue can only be
      meaningfully restored if we are restoring all the removed items in the
      same go (otherwise the sorted indexes may not be valid), but insert_items
      is used in batches on contiguous rows, so it does not work.
      
      There is one case in which having RemoveItemsCmd remove items from the
      queue is not wanted: when doing internal drag and drop, items are removed
      with RemoveItemsCmd, but are re-inserted with InsertItemsCmd, which does
      not touch the queue at all (and would not have access to the old queue
      indexes anyway).
      
      For this, rename the previous RemoveItemsCmd to RemoveItemsCmdNoQueue,
      and derive from that a new RemoveItemsCmd that adds the logic to handle
      the queue, and make dropMimeData() use RemoveItemsCmdNoQueue.
      
      Finally, all this allows us to get rid of the keep_queue_position_attr
      hack in toggle_enqueued_many().
    ------------------------------------------------------------
    revno: 359.1.119
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Mon 2008-02-18 20:23:10 +0100
    message:
      Hah! Remove unused "rows" list everywhere.
    ------------------------------------------------------------
    revno: 359.1.120
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Tue 2008-02-19 12:24:55 +0100
    message:
      D'oh, _itemdict much better implemented as an attribute of items.
    ------------------------------------------------------------
    revno: 359.1.121
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Tue 2008-02-19 12:43:08 +0100
    message:
      Split toggle_stop_after_row() to wrapper plus toggle_stop_after().
    ------------------------------------------------------------
    revno: 359.1.122
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Tue 2008-02-19 14:12:40 +0100
    message:
      gobject.threads_init() still needed for gtk signals to work.
    ------------------------------------------------------------
    revno: 359.1.123
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Tue 2008-02-19 14:12:56 +0100
    message:
      slot_engine_end_of_stream() works unmodified.
    ------------------------------------------------------------
    revno: 359.1.124
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Thu 2008-02-21 10:39:38 +0100
    message:
      Add TODO item.
    ------------------------------------------------------------
    revno: 359.1.125
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Thu 2008-02-21 14:18:20 +0100
    message:
      Better wording for NEWS entry.
    ------------------------------------------------------------
    revno: 359.1.126
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Thu 2008-02-21 14:34:17 +0100
    message:
      Add TODO item about ensureItemVisible().
    ------------------------------------------------------------
    revno: 359.1.127
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Thu 2008-02-21 14:34:25 +0100
    message:
      Revamp the Undo/Redo classes, to make InsertItemsCmd grok the queue.
      
      (Having the queue handling only in RemoveItemsCmd was not right, since
      you may add items, queue some of them, and then undo de insertion.)
      
      Changes:
      
        * Factor out all the code from InsertItemsCmd, RemoveItemsCmd and
          RemoveItemsCmdNoQueue to a common AlterItemlistMixin, which provides
          a copule of insert_items() and remove_items() command that undo each
          other. This mixin does not inherit from QUndoCommand.
      
        * Make InsertItemsCmd and RemoveItemsCmd inherit from the mixin and
          QUndoCommand, and make their undo/redo methods pointers to the two
          methods above as appropriate.
      
        * Drop RemoveItemsCmdNoQueue, and give the mixin (and commands) a
          do_queue flag to make them not mess with the queue at all. Make
          dropMimeData() use this flag for internal drag'n'drop.
    ------------------------------------------------------------
    revno: 359.1.128
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Thu 2008-02-21 16:08:47 +0100
    message:
      Add a comment about the need for Columns.setup_from_config().
    ------------------------------------------------------------
    revno: 359.1.129
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Thu 2008-02-21 16:27:21 +0100
    message:
      Restore current item when undoing if appropriate.
    ------------------------------------------------------------
    revno: 359.1.130
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Fri 2008-02-22 11:31:25 +0100
    message:
      Better condition for dequeueing from tag_reader.
    ------------------------------------------------------------
    revno: 359.1.131
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Fri 2008-02-22 12:18:36 +0100
    message:
      Implement slot_clear, with a ClearItemlistCmd plus clear_itemlist().
    ------------------------------------------------------------
    revno: 359.1.132
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Fri 2008-02-22 12:24:26 +0100
    message:
      Add TODO item.
    ------------------------------------------------------------
    revno: 359.1.133
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Fri 2008-02-22 12:37:56 +0100
    message:
      Give undo commands a descriptive text.
    ------------------------------------------------------------
    revno: 359.1.134
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Fri 2008-02-22 12:59:24 +0100
    message:
      Update the "Known bugs" section.
    ------------------------------------------------------------
    revno: 359.1.135
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Fri 2008-02-22 13:01:32 +0100
    message:
      Typos and grammar.
    ------------------------------------------------------------
    revno: 359.1.136
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Fri 2008-02-22 18:33:10 +0100
    message:
      Regain the ensureItemVisible() functionality.
    ------------------------------------------------------------
    revno: 359.1.137
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-27 18:36:43 +0100
    message:
      Rename queue_pop(0) to queue_popfront().
    ------------------------------------------------------------
    revno: 359.1.138
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-27 18:45:39 +0100
    message:
      Fix the AFTER_QUEUE stop mode.
      
      (This had been broken since moving queue_pop to use toggle_enqueued_many.
      Previously, this method would just modify the queue itsef, skipping the
      stop_after logic in toggle_enqueued.)
      
      Fix by introducing a preserve_stop_after in toggle_enqueued_many(), to
      be used from queue_popfront().
    ------------------------------------------------------------
    revno: 359.1.139
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Wed 2008-02-27 18:52:02 +0100
    message:
      Simplify slot_engine_end_of_stream() by comparing items directly.
      
      Instead of comparing the URI provided by the engine with the stop_after
      path, compare the just finished item with stop_after directly. (If the
      engine emits end_of_stream, we actually *know* what has just finished.)
      
      Do no longer emit URI with end_of_stream in engine.py.
    ------------------------------------------------------------
    revno: 359.1.140
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Thu 2008-02-28 12:52:02 +0100
    message:
      Handle/port re-adding the currently (and absent) playing item.
      
      This moves from create_item() to insert_items(), where it belongs.
      Also, no need for the self._currently_playing_taken flag, since it's
      possible to detect that condition by just looking at current_item.
    ------------------------------------------------------------
    revno: 359.1.141
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Thu 2008-02-28 13:02:05 +0100
    message:
      Remove unneeded/obsolete setColumnWidth() method.
    ------------------------------------------------------------
    revno: 359.1.142
    committer: Adeodato Simó <dato@net.com.org.es>
    branch nick: minirok.kde4_playlist
    timestamp: Thu 2008-02-28 23:42:00 +0100
    message:
      When dequeueing, adjust the queue position of other items *before* popping.
      
      This is way more straightforward, and, heh, efficient (each position gets
      adjusted exactly once, unlike our previous implementation).
      
      This improvement was thought of (sigh/yay) while blogging for the CUSL2.