actions: split Delete into Delete{PlaylistItems,BrowserItems,StoredPlaylists}

master
Andrzej Rybczak 14 years ago
parent b57428db90
commit 552bc77318
  1. 5
      doc/bindings
  2. 59
      src/actions.cpp
  3. 25
      src/actions.h
  4. 10
      src/bindings.cpp
  5. 8
      src/browser.cpp
  6. 6
      src/help.cpp

@ -144,7 +144,10 @@
# press_enter
#
#def_key "delete"
# delete
# delete_playlist_items
#
#def_key "delete"
# delete_stored_playlist
#
#def_key "right"
# next_column

@ -781,21 +781,40 @@ void VolumeDown::Run()
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...");
auto delete_fun = std::bind(&MPD::Connection::Delete, _1, _2);
if (deleteSelectedSongs(myPlaylist->main(), delete_fun))
Statusbar::msg("Item(s) deleted");
}
# ifndef WIN32
else if (myScreen == myBrowser && !myBrowser->main().empty())
else if (myScreen->isActiveWindow(myPlaylistEditor->Content))
{
if (!myBrowser->isLocal() && !isMPDMusicDirSet())
return;
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");
}
}
bool DeleteBrowserItems::canBeRun() const
{
return myScreen == myBrowser
&& !myBrowser->main().empty()
&& isMPDMusicDirSet();
}
void DeleteBrowserItems::Run()
{
std::string question;
if (hasSelected(myBrowser->main().begin(), myBrowser->main().end()))
question = "Delete selected items?";
@ -833,17 +852,23 @@ void Delete::Run()
}
if (success)
{
if (!myBrowser->isLocal())
if (myBrowser->isLocal())
myBrowser->GetDirectory(myBrowser->CurrentDir());
else
Mpd.UpdateDirectory(myBrowser->CurrentDir());
}
}
else
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;
if (hasSelected(myPlaylistEditor->Playlists.begin(), myPlaylistEditor->Playlists.end()))
@ -867,16 +892,6 @@ void Delete::Run()
else
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()
{
@ -2552,7 +2567,9 @@ void populateActions()
insertAction(new SlaveScreen());
insertAction(new VolumeUp());
insertAction(new VolumeDown());
insertAction(new Delete());
insertAction(new DeletePlaylistItems());
insertAction(new DeleteStoredPlaylist());
insertAction(new DeleteBrowserItems());
insertAction(new ReplaySong());
insertAction(new PreviousSong());
insertAction(new NextSong());

@ -31,7 +31,7 @@ enum ActionType
aDummy, aMouseEvent, aScrollUp, aScrollDown, aScrollUpArtist, aScrollUpAlbum, aScrollDownArtist,
aScrollDownAlbum, aPageUp, aPageDown, aMoveHome, aMoveEnd, aToggleInterface, aJumpToParentDirectory,
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,
aMoveSelectedItemsTo, aAdd, aSeekForward, aSeekBackward, aToggleDisplayMode, aToggleSeparatorsBetweenAlbums,
aToggleLyricsFetcher, aToggleFetchingLyricsInBackground, aTogglePlayingSongCentering, aUpdateDatabase,
@ -294,11 +294,30 @@ protected:
virtual void Run();
};
struct Delete : public Action
struct DeletePlaylistItems : public Action
{
Delete() : Action(aDelete, "delete") { }
DeletePlaylistItems() : Action(aDeletePlaylistItems, "delete_playlist_items") { }
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();
};

@ -256,6 +256,11 @@ bool BindingsConfiguration::read(const std::string &file)
break;
}
}
else
{
error() << "invalid line: '" << line << "'\n";
break;
}
}
if (key_def_in_progress)
bind_key_def();
@ -293,7 +298,10 @@ void BindingsConfiguration::generateDefaults()
if (notBound(k = stringToKey("enter")))
bind(k, aPressEnter);
if (notBound(k = stringToKey("delete")))
bind(k, aDelete);
{
bind(k, aDeletePlaylistItems);
bind(k, aDeleteStoredPlaylist);
}
if (notBound(k = stringToKey("right")))
{
bind(k, aNextColumn);

@ -27,6 +27,7 @@
#include "browser.h"
#include "charset.h"
#include "display.h"
#include "error.h"
#include "global.h"
#include "helpers.h"
#include "playlist.h"
@ -555,9 +556,8 @@ void Browser::ChangeBrowseMode()
bool Browser::deleteItem(const MPD::Item &item)
{
// parent dir
if (item.type == itDirectory && item.name == "..")
return false;
if (isParentDirectory((item)))
FatalError("Parent directory passed to Browser::deleteItem");
// playlist created by mpd
if (!isLocal() && item.type == itPlaylist && CurrentDir() == "/")
@ -571,7 +571,7 @@ bool Browser::deleteItem(const MPD::Item &item)
if (item.type == itDirectory)
ClearDirectory(path);
return remove(path.c_str()) == 0;
return std::remove(path.c_str()) == 0;
}
#endif // !WIN32

@ -268,7 +268,7 @@ void Help::GetKeybindings()
KeysSection("Playlist");
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(aCropMainPlaylist, "Clear playlist except selected item(s)");
KeyDesc(aSetSelectedItemsPriority, "Set priority of selected items");
@ -298,7 +298,7 @@ void Help::GetKeybindings()
KeyDesc(aToggleBrowserSortMode, "Toggle sort mode");
KeyDesc(aJumpToPlayingSong, "Locate playing song");
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)");
KeysSection("Search engine");
@ -333,6 +333,8 @@ void Help::GetKeybindings()
KeyDesc(aEditPlaylistName, "Edit playlist name");
KeyDesc(aMoveSelectedItemsUp, "Move selected item(s) up");
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(aCropPlaylist, "Clear playlist except selected items");

Loading…
Cancel
Save