From ef5509358660b36b17b4e53cad389968b535b6f2 Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Tue, 4 Sep 2012 20:47:29 +0200 Subject: [PATCH] move a few small functions to actions --- src/actions.cpp | 40 ++++++++++++++++++------ src/playlist.cpp | 67 ++++++++++++----------------------------- src/playlist.h | 8 ++--- src/playlist_editor.cpp | 21 ------------- src/playlist_editor.h | 5 ++- 5 files changed, 55 insertions(+), 86 deletions(-) diff --git a/src/actions.cpp b/src/actions.cpp index 6be3303e..81302bf8 100644 --- a/src/actions.cpp +++ b/src/actions.cpp @@ -980,7 +980,7 @@ bool MoveSortOrderUp::canBeRun() const void MoveSortOrderUp::Run() { - myPlaylist->AdjustSortOrder(Playlist::mUp); + myPlaylist->moveSortOrderUp(); } bool MoveSortOrderDown::canBeRun() const @@ -991,35 +991,55 @@ bool MoveSortOrderDown::canBeRun() const void MoveSortOrderDown::Run() { - myPlaylist->AdjustSortOrder(Playlist::mDown); + myPlaylist->moveSortOrderDown(); } bool MoveSelectedItemsUp::canBeRun() const { - return myScreen->ActiveWindow() == myPlaylist->Items - || myScreen->ActiveWindow() == myPlaylistEditor->Content; + return ((myScreen->ActiveWindow() == myPlaylist->Items + && !myPlaylist->Items->empty() + && !myPlaylist->Items->isFiltered()) + || (myScreen->ActiveWindow() == myPlaylistEditor->Content + && !myPlaylistEditor->Content->empty() + && !myPlaylistEditor->Content->isFiltered())); } void MoveSelectedItemsUp::Run() { if (myScreen == myPlaylist) - myPlaylist->MoveSelectedItems(Playlist::mUp); + { + moveSelectedItemsUp(*myPlaylist->Items, std::bind(&MPD::Connection::Move, _1, _2, _3)); + } else if (myScreen == myPlaylistEditor) - myPlaylistEditor->MoveSelectedItems(Playlist::mUp); + { + assert(!myPlaylistEditor->Playlists->empty()); + std::string playlist = myPlaylistEditor->Playlists->current().value(); + moveSelectedItemsUp(*myPlaylistEditor->Content, std::bind(&MPD::Connection::PlaylistMove, _1, playlist, _2, _3)); + } } bool MoveSelectedItemsDown::canBeRun() const { - return myScreen->ActiveWindow() == myPlaylist->Items - || myScreen->ActiveWindow() == myPlaylistEditor->Content; + return ((myScreen->ActiveWindow() == myPlaylist->Items + && !myPlaylist->Items->empty() + && !myPlaylist->Items->isFiltered()) + || (myScreen->ActiveWindow() == myPlaylistEditor->Content + && !myPlaylistEditor->Content->empty() + && !myPlaylistEditor->Content->isFiltered())); } void MoveSelectedItemsDown::Run() { if (myScreen == myPlaylist) - myPlaylist->MoveSelectedItems(Playlist::mDown); + { + moveSelectedItemsDown(*myPlaylist->Items, std::bind(&MPD::Connection::Move, _1, _2, _3)); + } else if (myScreen == myPlaylistEditor) - myPlaylistEditor->MoveSelectedItems(Playlist::mDown); + { + assert(!myPlaylistEditor->Playlists->empty()); + std::string playlist = myPlaylistEditor->Playlists->current().value(); + moveSelectedItemsDown(*myPlaylistEditor->Content, std::bind(&MPD::Connection::PlaylistMove, _1, playlist, _2, _3)); + } } bool MoveSelectedItemsTo::canBeRun() const diff --git a/src/playlist.cpp b/src/playlist.cpp index bddbb3ce..47e4f991 100644 --- a/src/playlist.cpp +++ b/src/playlist.cpp @@ -374,26 +374,6 @@ bool Playlist::isFiltered() return false; } -void Playlist::MoveSelectedItems(Movement where) -{ - if (Items->empty() || isFiltered()) - return; - - switch (where) - { - case mUp: - { - moveSelectedItemsUp(*Items, std::bind(&MPD::Connection::Move, _1, _2, _3)); - break; - } - case mDown: - { - moveSelectedItemsDown(*Items, std::bind(&MPD::Connection::Move, _1, _2, _3)); - break; - } - } -} - void Playlist::Sort() { if (isFiltered()) @@ -434,33 +414,6 @@ void Playlist::Reverse() ShowMessage("Playlist reversed"); } -void Playlist::AdjustSortOrder(Movement where) -{ - switch (where) - { - case mUp: - { - size_t pos = SortDialog->choice(); - if (pos > 0 && pos < SortOptions) - { - SortDialog->Swap(pos, pos-1); - SortDialog->scroll(NC::wUp); - } - break; - } - case mDown: - { - size_t pos = SortDialog->choice(); - if (pos < SortOptions-1) - { - SortDialog->Swap(pos, pos+1); - SortDialog->scroll(NC::wDown); - } - break; - } - } -} - void Playlist::EnableHighlighting() { Items->setHighlighting(1); @@ -620,6 +573,26 @@ bool Playlist::checkForSong(const MPD::Song &s) return itsSongHashes.find(s.getHash()) != itsSongHashes.end(); } +void Playlist::moveSortOrderDown() +{ + size_t pos = SortDialog->choice(); + if (pos < SortOptions-1) + { + SortDialog->Swap(pos, pos+1); + SortDialog->scroll(NC::wDown); + } +} + +void Playlist::moveSortOrderUp() +{ + size_t pos = SortDialog->choice(); + if (pos > 0 && pos < SortOptions) + { + SortDialog->Swap(pos, pos-1); + SortDialog->scroll(NC::wUp); + } +} + void Playlist::registerHash(size_t hash) { itsSongHashes[hash] += 1; diff --git a/src/playlist.h b/src/playlist.h index 40fc9fbe..db85b0fa 100644 --- a/src/playlist.h +++ b/src/playlist.h @@ -30,8 +30,6 @@ class Playlist : public Screen, public Filterable, public HasSongs, public Searchable { public: - enum Movement { mUp, mDown }; - Playlist() : NowPlaying(-1), itsTotalLength(0), itsRemainingTime(0), itsScrollBegin(0) { } ~Playlist() { } @@ -73,11 +71,8 @@ class Playlist : public Screen, public Filterable, public HasSongs, bool isPlaying() { return NowPlaying >= 0 && !Items->empty(); } const MPD::Song *NowPlayingSong(); - void MoveSelectedItems(Movement where); - void Sort(); void Reverse(); - void AdjustSortOrder(Movement where); bool SortingInProgress(); void EnableHighlighting(); @@ -92,6 +87,9 @@ class Playlist : public Screen, public Filterable, public HasSongs, bool checkForSong(const MPD::Song &s); + void moveSortOrderUp(); + void moveSortOrderDown(); + void registerHash(size_t hash); void unregisterHash(size_t hash); diff --git a/src/playlist_editor.cpp b/src/playlist_editor.cpp index e58d40d3..141be16f 100644 --- a/src/playlist_editor.cpp +++ b/src/playlist_editor.cpp @@ -208,26 +208,6 @@ void PlaylistEditor::Update() } } -void PlaylistEditor::MoveSelectedItems(Playlist::Movement where) -{ - if (Content->empty() || isContentFiltered()) - return; - - switch (where) - { - case Playlist::mUp: - { - moveSelectedItemsUp(*Content, std::bind(&MPD::Connection::PlaylistMove, _1, Playlists->current().value(), _2, _3)); - break; - } - case Playlist::mDown: - { - moveSelectedItemsDown(*Content, std::bind(&MPD::Connection::PlaylistMove, _1, Playlists->current().value(), _2, _3)); - break; - } - } -} - bool PlaylistEditor::isContentFiltered() { if (Content->isFiltered()) @@ -238,7 +218,6 @@ bool PlaylistEditor::isContentFiltered() return false; } - bool PlaylistEditor::isNextColumnAvailable() { if (w == Playlists) diff --git a/src/playlist_editor.h b/src/playlist_editor.h index f966243b..8ced9375 100644 --- a/src/playlist_editor.h +++ b/src/playlist_editor.h @@ -21,7 +21,8 @@ #ifndef _PLAYLIST_EDITOR_H #define _PLAYLIST_EDITOR_H -#include "playlist.h" +#include "interfaces.h" +#include "screen.h" class PlaylistEditor : public Screen, public Filterable, public HasSongs, public Searchable { @@ -62,8 +63,6 @@ class PlaylistEditor : public Screen, public Filterable, public HasS // private members virtual void Locate(const std::string &); - void MoveSelectedItems(Playlist::Movement where); - void requestPlaylistsUpdate() { playlistsUpdateRequested = true; } void requestContentsUpdate() { contentUpdateRequested = true; }