[kde-doc-english] [amarok] /: Separate delete and trash collection tree actions
Matěj Laitl
matej at laitl.cz
Sat Nov 12 15:13:11 UTC 2011
Git commit 3c2f14dd62241312275b5a5b821dba0a628a37ed by Matěj Laitl.
Committed on 12/11/2011 at 16:01.
Pushed by laitl into branch 'master'.
Separate delete and trash collection tree actions
The "delete" action was previously only accessible through holding
Shift when clicking Delete, which was secret, inconsistent and
inconvenient. The old shift + click behaviour is not preserved.
BUG: 286356
FIXED-IN: 2.5
GUI: Move to Trash action added to collection browser context menu
Handbook needs updating.
M +2 -0 ChangeLog
M +32 -23 src/browsers/CollectionTreeView.cpp
M +2 -1 src/browsers/CollectionTreeView.h
http://commits.kde.org/amarok/3c2f14dd62241312275b5a5b821dba0a628a37ed
diff --git a/ChangeLog b/ChangeLog
index 54b9a87..9376afd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -26,6 +26,8 @@ Version 2.5.0-Beta 1
* Auto-save the playlist so that it is not lost if Amarok crashes.
CHANGES:
+ * Both Delete and Move to Trash actions are now offered in the collection
+ browser context menu. (BR 286356)
* Amarok now depends on libmygpo-qt > 1.0.5.
* New USB Mass Storage media-device plugin using the Amarok Collection Scanner.
* Browser widget backgrounds can now be enabled/disabled.
diff --git a/src/browsers/CollectionTreeView.cpp b/src/browsers/CollectionTreeView.cpp
index ecb009e..c9069c7 100644
--- a/src/browsers/CollectionTreeView.cpp
+++ b/src/browsers/CollectionTreeView.cpp
@@ -1063,23 +1063,24 @@ QHash<QAction*, Collections::Collection*> CollectionTreeView::getRemoveActions(
{
QHash<QAction*, Collections::Collection*> currentRemoveDestination;
- if( onlyOneCollection( indices) )
- {
- Collections::Collection *collection = getCollection( indices.first() );
- if( collection && collection->isWritable() )
- {
- //writableCollections.append( collection );
- KAction *action = new KAction( KIcon( "remove-amarok" ), i18n( "Delete Tracks" ), 0 );
- action->setProperty( "popupdropper_svg_id", "delete" );
-
- connect( action, SIGNAL(triggered(Qt::MouseButtons,Qt::KeyboardModifiers)),
- this, SLOT(slotRemoveTracks(Qt::MouseButtons,Qt::KeyboardModifiers)) );
+ if( !onlyOneCollection( indices ) )
+ return currentRemoveDestination;
+ Collections::Collection *collection = getCollection( indices.first() );
+ if( !collection || !collection->isWritable() )
+ return currentRemoveDestination;
+
+ KAction *trashAction = new KAction( KIcon( "user-trash" ), i18n( "Move Tracks to Trash" ), 0 );
+ trashAction->setProperty( "popupdropper_svg_id", "delete" );
+ connect( trashAction, SIGNAL(triggered(Qt::MouseButtons,Qt::KeyboardModifiers)),
+ this, SLOT(slotTrashTracks()) );
+ currentRemoveDestination.insert( trashAction, collection );
+
+ KAction *deleteAction = new KAction( KIcon( "remove-amarok" ), i18n( "Delete Tracks" ), 0 );
+ deleteAction->setProperty( "popupdropper_svg_id", "delete" );
+ connect( deleteAction, SIGNAL(triggered(Qt::MouseButtons,Qt::KeyboardModifiers)),
+ this, SLOT(slotRemoveTracks()) );
+ currentRemoveDestination.insert( deleteAction, collection );
- currentRemoveDestination.insert( action, collection );
- }
-
-
- }
return currentRemoveDestination;
}
@@ -1173,15 +1174,23 @@ void CollectionTreeView::slotMoveTracks()
}
}
-void CollectionTreeView::slotRemoveTracks( Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers )
+void
+CollectionTreeView::slotTrashTracks()
{
- Q_UNUSED( buttons )
KAction *action = qobject_cast<KAction*>( sender() );
- if( action )
- {
- bool skipTrash = modifiers.testFlag( Qt::ShiftModifier );
- removeTracks( m_currentItems, !skipTrash );
- }
+ if( !action )
+ return;
+ // TODO: can use m_currentRemoveDestination[ action ] and pass it to removeTracks()
+ removeTracks( m_currentItems, true /* use trash */ );
+}
+
+void CollectionTreeView::slotRemoveTracks()
+{
+ KAction *action = qobject_cast<KAction*>( sender() );
+ if( !action )
+ return;
+ // TODO: can use m_currentRemoveDestination[ action ] and pass it to removeTracks()
+ removeTracks( m_currentItems, false /* do not use trash */ );
}
void CollectionTreeView::slotOrganize()
diff --git a/src/browsers/CollectionTreeView.h b/src/browsers/CollectionTreeView.h
index 9ed71e0..b70f99d 100644
--- a/src/browsers/CollectionTreeView.h
+++ b/src/browsers/CollectionTreeView.h
@@ -85,7 +85,8 @@ class CollectionTreeView: public Amarok::PrettyTreeView
void slotEditTracks();
void slotCopyTracks();
void slotMoveTracks();
- void slotRemoveTracks( Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers );
+ void slotTrashTracks();
+ void slotRemoveTracks();
void slotOrganize();
private:
More information about the kde-doc-english
mailing list