actions: split Delete into Delete{PlaylistItems,BrowserItems,StoredPlaylists}
This commit is contained in:
@@ -144,7 +144,10 @@
|
|||||||
# press_enter
|
# press_enter
|
||||||
#
|
#
|
||||||
#def_key "delete"
|
#def_key "delete"
|
||||||
# delete
|
# delete_playlist_items
|
||||||
|
#
|
||||||
|
#def_key "delete"
|
||||||
|
# delete_stored_playlist
|
||||||
#
|
#
|
||||||
#def_key "right"
|
#def_key "right"
|
||||||
# next_column
|
# next_column
|
||||||
|
|||||||
@@ -781,21 +781,40 @@ void VolumeDown::Run()
|
|||||||
Mpd.SetVolume(Mpd.GetVolume()-1);
|
Mpd.SetVolume(Mpd.GetVolume()-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Delete::Run()
|
bool DeletePlaylistItems::canBeRun() const
|
||||||
{
|
{
|
||||||
if (myScreen == myPlaylist && !myPlaylist->main().empty())
|
return (myScreen == myPlaylist && !myPlaylist->main().empty())
|
||||||
|
|| (myScreen->isActiveWindow(myPlaylistEditor->Content) && !myPlaylistEditor->Content.empty());
|
||||||
|
}
|
||||||
|
|
||||||
|
void DeletePlaylistItems::Run()
|
||||||
|
{
|
||||||
|
if (myScreen == myPlaylist)
|
||||||
{
|
{
|
||||||
Statusbar::msg("Deleting items...");
|
Statusbar::msg("Deleting items...");
|
||||||
auto delete_fun = std::bind(&MPD::Connection::Delete, _1, _2);
|
auto delete_fun = std::bind(&MPD::Connection::Delete, _1, _2);
|
||||||
if (deleteSelectedSongs(myPlaylist->main(), delete_fun))
|
if (deleteSelectedSongs(myPlaylist->main(), delete_fun))
|
||||||
Statusbar::msg("Item(s) deleted");
|
Statusbar::msg("Item(s) deleted");
|
||||||
}
|
}
|
||||||
# ifndef WIN32
|
else if (myScreen->isActiveWindow(myPlaylistEditor->Content))
|
||||||
else if (myScreen == myBrowser && !myBrowser->main().empty())
|
|
||||||
{
|
{
|
||||||
if (!myBrowser->isLocal() && !isMPDMusicDirSet())
|
std::string playlist = myPlaylistEditor->Playlists.current().value();
|
||||||
return;
|
auto delete_fun = std::bind(&MPD::Connection::PlaylistDelete, _1, playlist, _2);
|
||||||
|
Statusbar::msg("Deleting items...");
|
||||||
|
if (deleteSelectedSongs(myPlaylistEditor->Content, delete_fun))
|
||||||
|
Statusbar::msg("Item(s) deleted");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DeleteBrowserItems::canBeRun() const
|
||||||
|
{
|
||||||
|
return myScreen == myBrowser
|
||||||
|
&& !myBrowser->main().empty()
|
||||||
|
&& isMPDMusicDirSet();
|
||||||
|
}
|
||||||
|
|
||||||
|
void DeleteBrowserItems::Run()
|
||||||
|
{
|
||||||
std::string question;
|
std::string question;
|
||||||
if (hasSelected(myBrowser->main().begin(), myBrowser->main().end()))
|
if (hasSelected(myBrowser->main().begin(), myBrowser->main().end()))
|
||||||
question = "Delete selected items?";
|
question = "Delete selected items?";
|
||||||
@@ -833,17 +852,23 @@ void Delete::Run()
|
|||||||
}
|
}
|
||||||
if (success)
|
if (success)
|
||||||
{
|
{
|
||||||
if (!myBrowser->isLocal())
|
if (myBrowser->isLocal())
|
||||||
|
myBrowser->GetDirectory(myBrowser->CurrentDir());
|
||||||
|
else
|
||||||
Mpd.UpdateDirectory(myBrowser->CurrentDir());
|
Mpd.UpdateDirectory(myBrowser->CurrentDir());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Statusbar::msg("Aborted");
|
Statusbar::msg("Aborted");
|
||||||
}
|
}
|
||||||
# endif // !WIN32
|
|
||||||
else if (myScreen == myPlaylistEditor && !myPlaylistEditor->Content.empty())
|
bool DeleteStoredPlaylist::canBeRun() const
|
||||||
{
|
{
|
||||||
if (myScreen->isActiveWindow(myPlaylistEditor->Playlists))
|
return myScreen->isActiveWindow(myPlaylistEditor->Playlists)
|
||||||
|
&& myPlaylistEditor->Playlists.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
void DeleteStoredPlaylist::Run()
|
||||||
{
|
{
|
||||||
std::string question;
|
std::string question;
|
||||||
if (hasSelected(myPlaylistEditor->Playlists.begin(), myPlaylistEditor->Playlists.end()))
|
if (hasSelected(myPlaylistEditor->Playlists.begin(), myPlaylistEditor->Playlists.end()))
|
||||||
@@ -867,16 +892,6 @@ void Delete::Run()
|
|||||||
else
|
else
|
||||||
Statusbar::msg("Aborted");
|
Statusbar::msg("Aborted");
|
||||||
}
|
}
|
||||||
else if (myScreen->isActiveWindow(myPlaylistEditor->Content))
|
|
||||||
{
|
|
||||||
std::string playlist = myPlaylistEditor->Playlists.current().value();
|
|
||||||
auto delete_fun = std::bind(&MPD::Connection::PlaylistDelete, _1, playlist, _2);
|
|
||||||
Statusbar::msg("Deleting items...");
|
|
||||||
if (deleteSelectedSongs(myPlaylistEditor->Content, delete_fun))
|
|
||||||
Statusbar::msg("Item(s) deleted");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ReplaySong::Run()
|
void ReplaySong::Run()
|
||||||
{
|
{
|
||||||
@@ -2552,7 +2567,9 @@ void populateActions()
|
|||||||
insertAction(new SlaveScreen());
|
insertAction(new SlaveScreen());
|
||||||
insertAction(new VolumeUp());
|
insertAction(new VolumeUp());
|
||||||
insertAction(new VolumeDown());
|
insertAction(new VolumeDown());
|
||||||
insertAction(new Delete());
|
insertAction(new DeletePlaylistItems());
|
||||||
|
insertAction(new DeleteStoredPlaylist());
|
||||||
|
insertAction(new DeleteBrowserItems());
|
||||||
insertAction(new ReplaySong());
|
insertAction(new ReplaySong());
|
||||||
insertAction(new PreviousSong());
|
insertAction(new PreviousSong());
|
||||||
insertAction(new NextSong());
|
insertAction(new NextSong());
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ enum ActionType
|
|||||||
aDummy, aMouseEvent, aScrollUp, aScrollDown, aScrollUpArtist, aScrollUpAlbum, aScrollDownArtist,
|
aDummy, aMouseEvent, aScrollUp, aScrollDown, aScrollUpArtist, aScrollUpAlbum, aScrollDownArtist,
|
||||||
aScrollDownAlbum, aPageUp, aPageDown, aMoveHome, aMoveEnd, aToggleInterface, aJumpToParentDirectory,
|
aScrollDownAlbum, aPageUp, aPageDown, aMoveHome, aMoveEnd, aToggleInterface, aJumpToParentDirectory,
|
||||||
aPressEnter, aPressSpace, aPreviousColumn, aNextColumn, aMasterScreen, aSlaveScreen, aVolumeUp,
|
aPressEnter, aPressSpace, aPreviousColumn, aNextColumn, aMasterScreen, aSlaveScreen, aVolumeUp,
|
||||||
aVolumeDown, aDelete, aReplaySong, aPrevious, aNext, aPause, aStop, aSavePlaylist,
|
aVolumeDown, aDeletePlaylistItems, aDeleteStoredPlaylist, aDeleteBrowserItems, aReplaySong, aPrevious, aNext, aPause, aStop, aSavePlaylist,
|
||||||
aMoveSortOrderUp, aMoveSortOrderDown, aMoveSelectedItemsUp, aMoveSelectedItemsDown,
|
aMoveSortOrderUp, aMoveSortOrderDown, aMoveSelectedItemsUp, aMoveSelectedItemsDown,
|
||||||
aMoveSelectedItemsTo, aAdd, aSeekForward, aSeekBackward, aToggleDisplayMode, aToggleSeparatorsBetweenAlbums,
|
aMoveSelectedItemsTo, aAdd, aSeekForward, aSeekBackward, aToggleDisplayMode, aToggleSeparatorsBetweenAlbums,
|
||||||
aToggleLyricsFetcher, aToggleFetchingLyricsInBackground, aTogglePlayingSongCentering, aUpdateDatabase,
|
aToggleLyricsFetcher, aToggleFetchingLyricsInBackground, aTogglePlayingSongCentering, aUpdateDatabase,
|
||||||
@@ -294,11 +294,30 @@ protected:
|
|||||||
virtual void Run();
|
virtual void Run();
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Delete : public Action
|
struct DeletePlaylistItems : public Action
|
||||||
{
|
{
|
||||||
Delete() : Action(aDelete, "delete") { }
|
DeletePlaylistItems() : Action(aDeletePlaylistItems, "delete_playlist_items") { }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
virtual bool canBeRun() const;
|
||||||
|
virtual void Run();
|
||||||
|
};
|
||||||
|
|
||||||
|
struct DeleteStoredPlaylist : public Action
|
||||||
|
{
|
||||||
|
DeleteStoredPlaylist() : Action(aDeleteStoredPlaylist, "delete_stored_playlist") { }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual bool canBeRun() const;
|
||||||
|
virtual void Run();
|
||||||
|
};
|
||||||
|
|
||||||
|
struct DeleteBrowserItems : public Action
|
||||||
|
{
|
||||||
|
DeleteBrowserItems() : Action(aDeleteBrowserItems, "delete_browser_items") { }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual bool canBeRun() const;
|
||||||
virtual void Run();
|
virtual void Run();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -256,6 +256,11 @@ bool BindingsConfiguration::read(const std::string &file)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
error() << "invalid line: '" << line << "'\n";
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (key_def_in_progress)
|
if (key_def_in_progress)
|
||||||
bind_key_def();
|
bind_key_def();
|
||||||
@@ -293,7 +298,10 @@ void BindingsConfiguration::generateDefaults()
|
|||||||
if (notBound(k = stringToKey("enter")))
|
if (notBound(k = stringToKey("enter")))
|
||||||
bind(k, aPressEnter);
|
bind(k, aPressEnter);
|
||||||
if (notBound(k = stringToKey("delete")))
|
if (notBound(k = stringToKey("delete")))
|
||||||
bind(k, aDelete);
|
{
|
||||||
|
bind(k, aDeletePlaylistItems);
|
||||||
|
bind(k, aDeleteStoredPlaylist);
|
||||||
|
}
|
||||||
if (notBound(k = stringToKey("right")))
|
if (notBound(k = stringToKey("right")))
|
||||||
{
|
{
|
||||||
bind(k, aNextColumn);
|
bind(k, aNextColumn);
|
||||||
|
|||||||
@@ -27,6 +27,7 @@
|
|||||||
#include "browser.h"
|
#include "browser.h"
|
||||||
#include "charset.h"
|
#include "charset.h"
|
||||||
#include "display.h"
|
#include "display.h"
|
||||||
|
#include "error.h"
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "helpers.h"
|
#include "helpers.h"
|
||||||
#include "playlist.h"
|
#include "playlist.h"
|
||||||
@@ -555,9 +556,8 @@ void Browser::ChangeBrowseMode()
|
|||||||
|
|
||||||
bool Browser::deleteItem(const MPD::Item &item)
|
bool Browser::deleteItem(const MPD::Item &item)
|
||||||
{
|
{
|
||||||
// parent dir
|
if (isParentDirectory((item)))
|
||||||
if (item.type == itDirectory && item.name == "..")
|
FatalError("Parent directory passed to Browser::deleteItem");
|
||||||
return false;
|
|
||||||
|
|
||||||
// playlist created by mpd
|
// playlist created by mpd
|
||||||
if (!isLocal() && item.type == itPlaylist && CurrentDir() == "/")
|
if (!isLocal() && item.type == itPlaylist && CurrentDir() == "/")
|
||||||
@@ -571,7 +571,7 @@ bool Browser::deleteItem(const MPD::Item &item)
|
|||||||
if (item.type == itDirectory)
|
if (item.type == itDirectory)
|
||||||
ClearDirectory(path);
|
ClearDirectory(path);
|
||||||
|
|
||||||
return remove(path.c_str()) == 0;
|
return std::remove(path.c_str()) == 0;
|
||||||
}
|
}
|
||||||
#endif // !WIN32
|
#endif // !WIN32
|
||||||
|
|
||||||
|
|||||||
@@ -268,7 +268,7 @@ void Help::GetKeybindings()
|
|||||||
|
|
||||||
KeysSection("Playlist");
|
KeysSection("Playlist");
|
||||||
KeyDesc(aPressEnter, "Play selected item");
|
KeyDesc(aPressEnter, "Play selected item");
|
||||||
KeyDesc(aDelete, "Delete selected item(s) from playlist");
|
KeyDesc(aDeletePlaylistItems, "Delete selected item(s) from playlist");
|
||||||
KeyDesc(aClearMainPlaylist, "Clear playlist");
|
KeyDesc(aClearMainPlaylist, "Clear playlist");
|
||||||
KeyDesc(aCropMainPlaylist, "Clear playlist except selected item(s)");
|
KeyDesc(aCropMainPlaylist, "Clear playlist except selected item(s)");
|
||||||
KeyDesc(aSetSelectedItemsPriority, "Set priority of selected items");
|
KeyDesc(aSetSelectedItemsPriority, "Set priority of selected items");
|
||||||
@@ -298,7 +298,7 @@ void Help::GetKeybindings()
|
|||||||
KeyDesc(aToggleBrowserSortMode, "Toggle sort mode");
|
KeyDesc(aToggleBrowserSortMode, "Toggle sort mode");
|
||||||
KeyDesc(aJumpToPlayingSong, "Locate playing song");
|
KeyDesc(aJumpToPlayingSong, "Locate playing song");
|
||||||
KeyDesc(aJumpToParentDirectory, "Jump to parent directory");
|
KeyDesc(aJumpToParentDirectory, "Jump to parent directory");
|
||||||
KeyDesc(aDelete, "Delete item");
|
KeyDesc(aDeleteBrowserItems, "Delete selected items from disk");
|
||||||
KeyDesc(aJumpToPlaylistEditor, "Jump to playlist editor (playlists only)");
|
KeyDesc(aJumpToPlaylistEditor, "Jump to playlist editor (playlists only)");
|
||||||
|
|
||||||
KeysSection("Search engine");
|
KeysSection("Search engine");
|
||||||
@@ -333,6 +333,8 @@ void Help::GetKeybindings()
|
|||||||
KeyDesc(aEditPlaylistName, "Edit playlist name");
|
KeyDesc(aEditPlaylistName, "Edit playlist name");
|
||||||
KeyDesc(aMoveSelectedItemsUp, "Move selected item(s) up");
|
KeyDesc(aMoveSelectedItemsUp, "Move selected item(s) up");
|
||||||
KeyDesc(aMoveSelectedItemsDown, "Move selected item(s) down");
|
KeyDesc(aMoveSelectedItemsDown, "Move selected item(s) down");
|
||||||
|
KeyDesc(aDeleteStoredPlaylist, "Delete selected playlists (left column)");
|
||||||
|
KeyDesc(aDeletePlaylistItems, "Delete selected item(s) from playlist (right column)");
|
||||||
KeyDesc(aClearPlaylist, "Clear playlist");
|
KeyDesc(aClearPlaylist, "Clear playlist");
|
||||||
KeyDesc(aCropPlaylist, "Clear playlist except selected items");
|
KeyDesc(aCropPlaylist, "Clear playlist except selected items");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user