Add support for fetching lyrics in background for selected songs
[ncmpcpp.git] / src / actions.h
blobbfe329347deeac4d4c9eca4f9eb520176a0ca281
1 /***************************************************************************
2 * Copyright (C) 2008-2016 by Andrzej Rybczak *
3 * electricityispower@gmail.com *
4 * *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the *
17 * Free Software Foundation, Inc., *
18 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
19 ***************************************************************************/
21 #ifndef NCMPCPP_ACTIONS_H
22 #define NCMPCPP_ACTIONS_H
24 #include <boost/date_time/posix_time/posix_time_types.hpp>
25 #include <boost/format.hpp>
26 #include <map>
27 #include <string>
28 #include "interfaces.h"
29 #include "window.h"
31 // forward declarations
32 struct SongList;
34 namespace Actions {
36 enum class Type
38 MacroUtility = 0,
39 Dummy,
40 UpdateEnvironment,
41 MouseEvent,
42 ScrollUp,
43 ScrollDown,
44 ScrollUpArtist,
45 ScrollUpAlbum,
46 ScrollDownArtist,
47 ScrollDownAlbum,
48 PageUp,
49 PageDown,
50 MoveHome,
51 MoveEnd,
52 ToggleInterface,
53 JumpToParentDirectory,
54 RunAction,
55 PreviousColumn,
56 NextColumn,
57 MasterScreen,
58 SlaveScreen,
59 VolumeUp,
60 VolumeDown,
61 AddItemToPlaylist,
62 PlayItem,
63 DeletePlaylistItems,
64 DeleteStoredPlaylist,
65 DeleteBrowserItems,
66 ReplaySong,
67 Previous,
68 Next,
69 Pause,
70 Stop,
71 ExecuteCommand,
72 SavePlaylist,
73 MoveSortOrderUp,
74 MoveSortOrderDown,
75 MoveSelectedItemsUp,
76 MoveSelectedItemsDown,
77 MoveSelectedItemsTo,
78 Add,
79 SeekForward,
80 SeekBackward,
81 ToggleDisplayMode,
82 ToggleSeparatorsBetweenAlbums,
83 ToggleLyricsUpdateOnSongChange,
84 ToggleLyricsFetcher,
85 ToggleFetchingLyricsInBackground,
86 TogglePlayingSongCentering,
87 UpdateDatabase,
88 JumpToPlayingSong,
89 ToggleRepeat,
90 Shuffle,
91 ToggleRandom,
92 StartSearching,
93 SaveTagChanges,
94 ToggleSingle,
95 ToggleConsume,
96 ToggleCrossfade,
97 SetCrossfade,
98 SetVolume,
99 EnterDirectory,
100 EditSong,
101 EditLibraryTag,
102 EditLibraryAlbum,
103 EditDirectoryName,
104 EditPlaylistName,
105 EditLyrics,
106 JumpToBrowser,
107 JumpToMediaLibrary,
108 JumpToPlaylistEditor,
109 ToggleScreenLock,
110 JumpToTagEditor,
111 JumpToPositionInSong,
112 SelectItem,
113 SelectRange,
114 ReverseSelection,
115 RemoveSelection,
116 SelectAlbum,
117 SelectFoundItems,
118 AddSelectedItems,
119 CropMainPlaylist,
120 CropPlaylist,
121 ClearMainPlaylist,
122 ClearPlaylist,
123 SortPlaylist,
124 ReversePlaylist,
125 ApplyFilter,
126 Find,
127 FindItemForward,
128 FindItemBackward,
129 NextFoundItem,
130 PreviousFoundItem,
131 ToggleFindMode,
132 ToggleReplayGainMode,
133 ToggleAddMode,
134 ToggleMouse,
135 ToggleBitrateVisibility,
136 AddRandomItems,
137 ToggleBrowserSortMode,
138 ToggleLibraryTagType,
139 ToggleMediaLibrarySortMode,
140 FetchLyricsInBackground,
141 RefetchLyrics,
142 SetSelectedItemsPriority,
143 ToggleOutput,
144 ToggleVisualizationType,
145 SetVisualizerSampleMultiplier,
146 ShowSongInfo,
147 ShowArtistInfo,
148 ShowLyrics,
149 Quit,
150 NextScreen,
151 PreviousScreen,
152 ShowHelp,
153 ShowPlaylist,
154 ShowBrowser,
155 ChangeBrowseMode,
156 ShowSearchEngine,
157 ResetSearchEngine,
158 ShowMediaLibrary,
159 ToggleMediaLibraryColumnsMode,
160 ShowPlaylistEditor,
161 ShowTagEditor,
162 ShowOutputs,
163 ShowVisualizer,
164 ShowClock,
165 ShowServerInfo,
166 _numberOfActions // needed to dynamically calculate size of action array
169 void validateScreenSize();
170 void initializeScreens();
171 void setResizeFlags();
172 void resizeScreen(bool reload_main_window);
173 void setWindowsDimensions();
175 void confirmAction(const boost::format &description);
176 inline void confirmAction(const std::string &description)
178 confirmAction(boost::format(description));
181 bool isMPDMusicDirSet();
183 extern bool OriginalStatusbarVisibility;
184 extern bool ExitMainLoop;
186 extern size_t HeaderHeight;
187 extern size_t FooterHeight;
188 extern size_t FooterStartY;
190 struct BaseAction
192 BaseAction(Type type_, const char *name_): m_name(name_), m_type(type_) { }
194 const std::string &name() const { return m_name; }
195 Type type() const { return m_type; }
197 virtual bool canBeRun() { return true; }
199 bool execute()
201 if (canBeRun())
203 run();
204 return true;
206 return false;
209 protected:
210 std::string m_name;
212 private:
213 virtual void run() = 0;
215 Type m_type;
218 BaseAction &get(Type at);
219 BaseAction *get(const std::string &name);
221 struct Dummy: BaseAction
223 Dummy(): BaseAction(Type::Dummy, "dummy") { }
225 private:
226 virtual void run() override { }
229 struct UpdateEnvironment: BaseAction
231 UpdateEnvironment();
233 void run(bool update_status, bool refresh_window);
235 private:
236 boost::posix_time::ptime m_past;
238 virtual void run() override;
241 struct MouseEvent: BaseAction
243 MouseEvent(): BaseAction(Type::MouseEvent, "mouse_event")
245 m_old_mouse_event.bstate = 0;
246 m_mouse_event.bstate = 0;
249 private:
250 virtual bool canBeRun() override;
251 virtual void run() override;
253 MEVENT m_mouse_event;
254 MEVENT m_old_mouse_event;
257 struct ScrollUp: BaseAction
259 ScrollUp(): BaseAction(Type::ScrollUp, "scroll_up") { }
261 private:
262 virtual void run() override;
265 struct ScrollDown: BaseAction
267 ScrollDown(): BaseAction(Type::ScrollDown, "scroll_down") { }
269 private:
270 virtual void run() override;
273 struct ScrollUpArtist: BaseAction
275 ScrollUpArtist(): BaseAction(Type::ScrollUpArtist, "scroll_up_artist") { }
277 private:
278 virtual bool canBeRun() override;
279 virtual void run() override;
281 NC::List *m_list;
282 SongList *m_songs;
285 struct ScrollUpAlbum: BaseAction
287 ScrollUpAlbum(): BaseAction(Type::ScrollUpAlbum, "scroll_up_album") { }
289 private:
290 virtual bool canBeRun() override;
291 virtual void run() override;
293 NC::List *m_list;
294 SongList *m_songs;
297 struct ScrollDownArtist: BaseAction
299 ScrollDownArtist(): BaseAction(Type::ScrollDownArtist, "scroll_down_artist") { }
301 private:
302 virtual bool canBeRun() override;
303 virtual void run() override;
305 NC::List *m_list;
306 SongList *m_songs;
309 struct ScrollDownAlbum: BaseAction
311 ScrollDownAlbum(): BaseAction(Type::ScrollDownAlbum, "scroll_down_album") { }
313 private:
314 virtual bool canBeRun() override;
315 virtual void run() override;
317 NC::List *m_list;
318 SongList *m_songs;
321 struct PageUp: BaseAction
323 PageUp(): BaseAction(Type::PageUp, "page_up") { }
325 private:
326 virtual void run() override;
329 struct PageDown: BaseAction
331 PageDown(): BaseAction(Type::PageDown, "page_down") { }
333 private:
334 virtual void run() override;
337 struct MoveHome: BaseAction
339 MoveHome(): BaseAction(Type::MoveHome, "move_home") { }
341 private:
342 virtual void run() override;
345 struct MoveEnd: BaseAction
347 MoveEnd(): BaseAction(Type::MoveEnd, "move_end") { }
349 private:
350 virtual void run() override;
353 struct ToggleInterface: BaseAction
355 ToggleInterface(): BaseAction(Type::ToggleInterface, "toggle_interface") { }
357 private:
358 virtual void run() override;
361 struct JumpToParentDirectory: BaseAction
363 JumpToParentDirectory(): BaseAction(Type::JumpToParentDirectory, "jump_to_parent_directory") { }
365 private:
366 virtual bool canBeRun() override;
367 virtual void run() override;
370 struct RunAction: BaseAction
372 RunAction(): BaseAction(Type::RunAction, "run_action") { }
374 private:
375 virtual bool canBeRun() override;
376 virtual void run() override;
378 HasActions *m_ha;
381 struct PreviousColumn: BaseAction
383 PreviousColumn(): BaseAction(Type::PreviousColumn, "previous_column") { }
385 private:
386 virtual bool canBeRun() override;
387 virtual void run() override;
389 HasColumns *m_hc;
392 struct NextColumn: BaseAction
394 NextColumn(): BaseAction(Type::NextColumn, "next_column") { }
396 private:
397 virtual bool canBeRun() override;
398 virtual void run() override;
400 HasColumns *m_hc;
403 struct MasterScreen: BaseAction
405 MasterScreen(): BaseAction(Type::MasterScreen, "master_screen") { }
407 private:
408 virtual bool canBeRun() override;
409 virtual void run() override;
412 struct SlaveScreen: BaseAction
414 SlaveScreen(): BaseAction(Type::SlaveScreen, "slave_screen") { }
416 private:
417 virtual bool canBeRun() override;
418 virtual void run() override;
421 struct VolumeUp: BaseAction
423 VolumeUp(): BaseAction(Type::VolumeUp, "volume_up") { }
425 private:
426 virtual void run() override;
429 struct VolumeDown: BaseAction
431 VolumeDown(): BaseAction(Type::VolumeDown, "volume_down") { }
433 private:
434 virtual void run() override;
437 struct AddItemToPlaylist: BaseAction
439 AddItemToPlaylist(): BaseAction(Type::AddItemToPlaylist, "add_item_to_playlist") { }
441 private:
442 virtual bool canBeRun() override;
443 virtual void run() override;
445 HasSongs *m_hs;
448 struct PlayItem: BaseAction
450 PlayItem(): BaseAction(Type::PlayItem, "play_item") { }
452 private:
453 virtual bool canBeRun() override;
454 virtual void run() override;
456 HasSongs *m_hs;
459 struct DeletePlaylistItems: BaseAction
461 DeletePlaylistItems(): BaseAction(Type::DeletePlaylistItems, "delete_playlist_items") { }
463 private:
464 virtual bool canBeRun() override;
465 virtual void run() override;
468 struct DeleteStoredPlaylist: BaseAction
470 DeleteStoredPlaylist(): BaseAction(Type::DeleteStoredPlaylist, "delete_stored_playlist") { }
472 private:
473 virtual bool canBeRun() override;
474 virtual void run() override;
477 struct DeleteBrowserItems: BaseAction
479 DeleteBrowserItems(): BaseAction(Type::DeleteBrowserItems, "delete_browser_items") { }
481 private:
482 virtual bool canBeRun() override;
483 virtual void run() override;
486 struct ReplaySong: BaseAction
488 ReplaySong(): BaseAction(Type::ReplaySong, "replay_song") { }
490 private:
491 virtual void run() override;
494 struct PreviousSong: BaseAction
496 PreviousSong(): BaseAction(Type::Previous, "previous") { }
498 private:
499 virtual void run() override;
502 struct NextSong: BaseAction
504 NextSong(): BaseAction(Type::Next, "next") { }
506 private:
507 virtual void run() override;
510 struct Pause: BaseAction
512 Pause(): BaseAction(Type::Pause, "pause") { }
514 private:
515 virtual void run() override;
518 struct Stop: BaseAction
520 Stop(): BaseAction(Type::Stop, "stop") { }
522 private:
523 virtual void run() override;
526 struct ExecuteCommand: BaseAction
528 ExecuteCommand(): BaseAction(Type::ExecuteCommand, "execute_command") { }
530 private:
531 virtual void run() override;
534 struct SavePlaylist: BaseAction
536 SavePlaylist(): BaseAction(Type::SavePlaylist, "save_playlist") { }
538 private:
539 virtual void run() override;
542 struct MoveSortOrderUp: BaseAction
544 MoveSortOrderUp(): BaseAction(Type::MoveSortOrderUp, "move_sort_order_up") { }
546 private:
547 virtual bool canBeRun() override;
548 virtual void run() override;
551 struct MoveSortOrderDown: BaseAction
553 MoveSortOrderDown(): BaseAction(Type::MoveSortOrderDown, "move_sort_order_down") { }
555 private:
556 virtual bool canBeRun() override;
557 virtual void run() override;
560 struct MoveSelectedItemsUp: BaseAction
562 MoveSelectedItemsUp(): BaseAction(Type::MoveSelectedItemsUp, "move_selected_items_up") { }
564 private:
565 virtual bool canBeRun() override;
566 virtual void run() override;
569 struct MoveSelectedItemsDown: BaseAction
571 MoveSelectedItemsDown(): BaseAction(Type::MoveSelectedItemsDown, "move_selected_items_down") { }
573 private:
574 virtual bool canBeRun() override;
575 virtual void run() override;
578 struct MoveSelectedItemsTo: BaseAction
580 MoveSelectedItemsTo(): BaseAction(Type::MoveSelectedItemsTo, "move_selected_items_to") { }
582 private:
583 virtual bool canBeRun() override;
584 virtual void run() override;
587 struct Add: BaseAction
589 Add(): BaseAction(Type::Add, "add") { }
591 private:
592 virtual bool canBeRun() override;
593 virtual void run() override;
596 struct SeekForward: BaseAction
598 SeekForward(): BaseAction(Type::SeekForward, "seek_forward") { }
600 private:
601 virtual bool canBeRun() override;
602 virtual void run() override;
605 struct SeekBackward: BaseAction
607 SeekBackward(): BaseAction(Type::SeekBackward, "seek_backward") { }
609 private:
610 virtual bool canBeRun() override;
611 virtual void run() override;
614 struct ToggleDisplayMode: BaseAction
616 ToggleDisplayMode(): BaseAction(Type::ToggleDisplayMode, "toggle_display_mode") { }
618 private:
619 virtual bool canBeRun() override;
620 virtual void run() override;
623 struct ToggleSeparatorsBetweenAlbums: BaseAction
625 ToggleSeparatorsBetweenAlbums()
626 : BaseAction(Type::ToggleSeparatorsBetweenAlbums, "toggle_separators_between_albums") { }
628 private:
629 virtual bool canBeRun() override;
630 virtual void run() override;
633 struct ToggleLyricsUpdateOnSongChange: BaseAction
635 ToggleLyricsUpdateOnSongChange()
636 : BaseAction(Type::ToggleLyricsUpdateOnSongChange, "toggle_lyrics_update_on_song_change") { }
638 private:
639 virtual bool canBeRun() override;
640 virtual void run() override;
643 struct ToggleLyricsFetcher: BaseAction
645 ToggleLyricsFetcher(): BaseAction(Type::ToggleLyricsFetcher, "toggle_lyrics_fetcher") { }
647 private:
648 virtual void run() override;
651 struct ToggleFetchingLyricsInBackground: BaseAction
653 ToggleFetchingLyricsInBackground()
654 : BaseAction(Type::ToggleFetchingLyricsInBackground, "toggle_fetching_lyrics_in_background") { }
656 private:
657 virtual void run() override;
660 struct TogglePlayingSongCentering: BaseAction
662 TogglePlayingSongCentering()
663 : BaseAction(Type::TogglePlayingSongCentering, "toggle_playing_song_centering") { }
665 private:
666 virtual void run() override;
669 struct UpdateDatabase: BaseAction
671 UpdateDatabase(): BaseAction(Type::UpdateDatabase, "update_database") { }
673 private:
674 virtual void run() override;
677 struct JumpToPlayingSong: BaseAction
679 JumpToPlayingSong(): BaseAction(Type::JumpToPlayingSong, "jump_to_playing_song") { }
681 private:
682 virtual bool canBeRun() override;
683 virtual void run() override;
686 struct ToggleRepeat: BaseAction
688 ToggleRepeat(): BaseAction(Type::ToggleRepeat, "toggle_repeat") { }
690 private:
691 virtual void run() override;
694 struct Shuffle: BaseAction
696 Shuffle(): BaseAction(Type::Shuffle, "shuffle") { }
698 private:
699 virtual bool canBeRun() override;
700 virtual void run() override;
702 NC::Menu<MPD::Song>::ConstIterator m_begin;
703 NC::Menu<MPD::Song>::ConstIterator m_end;
706 struct ToggleRandom: BaseAction
708 ToggleRandom(): BaseAction(Type::ToggleRandom, "toggle_random") { }
710 private:
711 virtual void run() override;
714 struct StartSearching: BaseAction
716 StartSearching(): BaseAction(Type::StartSearching, "start_searching") { }
718 private:
719 virtual bool canBeRun() override;
720 virtual void run() override;
723 struct SaveTagChanges: BaseAction
725 SaveTagChanges(): BaseAction(Type::SaveTagChanges, "save_tag_changes") { }
727 private:
728 virtual bool canBeRun() override;
729 virtual void run() override;
732 struct ToggleSingle: BaseAction
734 ToggleSingle(): BaseAction(Type::ToggleSingle, "toggle_single") { }
736 private:
737 virtual void run() override;
740 struct ToggleConsume: BaseAction
742 ToggleConsume(): BaseAction(Type::ToggleConsume, "toggle_consume") { }
744 private:
745 virtual void run() override;
748 struct ToggleCrossfade: BaseAction
750 ToggleCrossfade(): BaseAction(Type::ToggleCrossfade, "toggle_crossfade") { }
752 private:
753 virtual void run() override;
756 struct SetCrossfade: BaseAction
758 SetCrossfade(): BaseAction(Type::SetCrossfade, "set_crossfade") { }
760 private:
761 virtual void run() override;
764 struct SetVolume: BaseAction
766 SetVolume(): BaseAction(Type::SetVolume, "set_volume") { }
768 private:
769 virtual void run() override;
772 struct EnterDirectory: BaseAction
774 EnterDirectory(): BaseAction(Type::EnterDirectory, "enter_directory") { }
776 private:
777 virtual bool canBeRun() override;
778 virtual void run() override;
782 struct EditSong: BaseAction
784 EditSong(): BaseAction(Type::EditSong, "edit_song") { }
786 private:
787 virtual bool canBeRun() override;
788 virtual void run() override;
790 #ifdef HAVE_TAGLIB_H
791 const MPD::Song *m_song;
792 #endif // HAVE_TAGLIB_H
795 struct EditLibraryTag: BaseAction
797 EditLibraryTag(): BaseAction(Type::EditLibraryTag, "edit_library_tag") { }
799 private:
800 virtual bool canBeRun() override;
801 virtual void run() override;
804 struct EditLibraryAlbum: BaseAction
806 EditLibraryAlbum(): BaseAction(Type::EditLibraryAlbum, "edit_library_album") { }
808 private:
809 virtual bool canBeRun() override;
810 virtual void run() override;
813 struct EditDirectoryName: BaseAction
815 EditDirectoryName(): BaseAction(Type::EditDirectoryName, "edit_directory_name") { }
817 private:
818 virtual bool canBeRun() override;
819 virtual void run() override;
822 struct EditPlaylistName: BaseAction
824 EditPlaylistName(): BaseAction(Type::EditPlaylistName, "edit_playlist_name") { }
826 private:
827 virtual bool canBeRun() override;
828 virtual void run() override;
831 struct EditLyrics: BaseAction
833 EditLyrics(): BaseAction(Type::EditLyrics, "edit_lyrics") { }
835 private:
836 virtual bool canBeRun() override;
837 virtual void run() override;
840 struct JumpToBrowser: BaseAction
842 JumpToBrowser(): BaseAction(Type::JumpToBrowser, "jump_to_browser") { }
844 private:
845 virtual bool canBeRun() override;
846 virtual void run() override;
848 const MPD::Song *m_song;
851 struct JumpToMediaLibrary: BaseAction
853 JumpToMediaLibrary(): BaseAction(Type::JumpToMediaLibrary, "jump_to_media_library") { }
855 private:
856 virtual bool canBeRun() override;
857 virtual void run() override;
859 const MPD::Song *m_song;
862 struct JumpToPlaylistEditor: BaseAction
864 JumpToPlaylistEditor(): BaseAction(Type::JumpToPlaylistEditor, "jump_to_playlist_editor") { }
866 private:
867 virtual bool canBeRun() override;
868 virtual void run() override;
871 struct ToggleScreenLock: BaseAction
873 ToggleScreenLock(): BaseAction(Type::ToggleScreenLock, "toggle_screen_lock") { }
875 private:
876 virtual void run() override;
879 struct JumpToTagEditor: BaseAction
881 JumpToTagEditor(): BaseAction(Type::JumpToTagEditor, "jump_to_tag_editor") { }
883 private:
884 virtual bool canBeRun() override;
885 virtual void run() override;
887 #ifdef HAVE_TAGLIB_H
888 const MPD::Song *m_song;
889 #endif // HAVE_TAGLIB_H
892 struct JumpToPositionInSong: BaseAction
894 JumpToPositionInSong(): BaseAction(Type::JumpToPositionInSong, "jump_to_position_in_song") { }
896 private:
897 virtual bool canBeRun() override;
898 virtual void run() override;
901 struct SelectItem: BaseAction
903 SelectItem(): BaseAction(Type::SelectItem, "select_item") { }
905 private:
906 virtual bool canBeRun() override;
907 virtual void run() override;
909 NC::List *m_list;
912 struct SelectRange: BaseAction
914 SelectRange(): BaseAction(Type::SelectRange, "select_range") { }
916 private:
917 virtual bool canBeRun() override;
918 virtual void run() override;
920 NC::List *m_list;
921 NC::List::Iterator m_begin;
922 NC::List::Iterator m_end;
925 struct ReverseSelection: BaseAction
927 ReverseSelection(): BaseAction(Type::ReverseSelection, "reverse_selection") { }
929 private:
930 virtual bool canBeRun() override;
931 virtual void run() override;
933 NC::List *m_list;
936 struct RemoveSelection: BaseAction
938 RemoveSelection(): BaseAction(Type::RemoveSelection, "remove_selection") { }
940 private:
941 virtual bool canBeRun() override;
942 virtual void run() override;
944 NC::List *m_list;
947 struct SelectAlbum: BaseAction
949 SelectAlbum(): BaseAction(Type::SelectAlbum, "select_album") { }
951 private:
952 virtual bool canBeRun() override;
953 virtual void run() override;
955 NC::List *m_list;
956 SongList *m_songs;
959 struct SelectFoundItems: BaseAction
961 SelectFoundItems(): BaseAction(Type::SelectFoundItems, "select_found_items") { }
963 private:
964 virtual bool canBeRun() override;
965 virtual void run() override;
967 NC::List *m_list;
968 Searchable *m_searchable;
971 struct AddSelectedItems: BaseAction
973 AddSelectedItems(): BaseAction(Type::AddSelectedItems, "add_selected_items") { }
975 private:
976 virtual bool canBeRun() override;
977 virtual void run() override;
980 struct CropMainPlaylist: BaseAction
982 CropMainPlaylist(): BaseAction(Type::CropMainPlaylist, "crop_main_playlist") { }
984 private:
985 virtual void run() override;
988 struct CropPlaylist: BaseAction
990 CropPlaylist(): BaseAction(Type::CropPlaylist, "crop_playlist") { }
992 private:
993 virtual bool canBeRun() override;
994 virtual void run() override;
997 struct ClearMainPlaylist: BaseAction
999 ClearMainPlaylist(): BaseAction(Type::ClearMainPlaylist, "clear_main_playlist") { }
1001 private:
1002 virtual void run() override;
1005 struct ClearPlaylist: BaseAction
1007 ClearPlaylist(): BaseAction(Type::ClearPlaylist, "clear_playlist") { }
1009 private:
1010 virtual bool canBeRun() override;
1011 virtual void run() override;
1014 struct SortPlaylist: BaseAction
1016 SortPlaylist(): BaseAction(Type::SortPlaylist, "sort_playlist") { }
1018 private:
1019 virtual bool canBeRun() override;
1020 virtual void run() override;
1023 struct ReversePlaylist: BaseAction
1025 ReversePlaylist(): BaseAction(Type::ReversePlaylist, "reverse_playlist") { }
1027 private:
1028 virtual bool canBeRun() override;
1029 virtual void run() override;
1031 NC::Menu<MPD::Song>::ConstIterator m_begin;
1032 NC::Menu<MPD::Song>::ConstIterator m_end;
1035 struct ApplyFilter: public BaseAction
1037 ApplyFilter(): BaseAction(Type::ApplyFilter, "apply_filter") { }
1039 private:
1040 virtual bool canBeRun() override;
1041 virtual void run() override;
1043 Filterable *m_filterable;
1046 struct Find: BaseAction
1048 Find(): BaseAction(Type::Find, "find") { }
1050 private:
1051 virtual bool canBeRun() override;
1052 virtual void run() override;
1055 struct FindItemForward: BaseAction
1057 FindItemForward(): BaseAction(Type::FindItemForward, "find_item_forward") { }
1059 private:
1060 virtual bool canBeRun() override;
1061 virtual void run() override;
1064 struct FindItemBackward: BaseAction
1066 FindItemBackward(): BaseAction(Type::FindItemBackward, "find_item_backward") { }
1068 private:
1069 virtual bool canBeRun() override;
1070 virtual void run() override;
1073 struct NextFoundItem: BaseAction
1075 NextFoundItem(): BaseAction(Type::NextFoundItem, "next_found_item") { }
1077 private:
1078 virtual bool canBeRun() override;
1079 virtual void run() override;
1082 struct PreviousFoundItem: BaseAction
1084 PreviousFoundItem(): BaseAction(Type::PreviousFoundItem, "previous_found_item") { }
1086 private:
1087 virtual bool canBeRun() override;
1088 virtual void run() override;
1091 struct ToggleFindMode: BaseAction
1093 ToggleFindMode(): BaseAction(Type::ToggleFindMode, "toggle_find_mode") { }
1095 private:
1096 virtual void run() override;
1099 struct ToggleReplayGainMode: BaseAction
1101 ToggleReplayGainMode(): BaseAction(Type::ToggleReplayGainMode, "toggle_replay_gain_mode") { }
1103 private:
1104 virtual void run() override;
1107 struct ToggleAddMode: BaseAction
1109 ToggleAddMode(): BaseAction(Type::ToggleAddMode, "toggle_add_mode") { }
1111 private:
1112 virtual void run() override;
1115 struct ToggleMouse: BaseAction
1117 ToggleMouse(): BaseAction(Type::ToggleMouse, "toggle_mouse") { }
1119 private:
1120 virtual void run() override;
1123 struct ToggleBitrateVisibility: BaseAction
1125 ToggleBitrateVisibility(): BaseAction(Type::ToggleBitrateVisibility, "toggle_bitrate_visibility") { }
1127 private:
1128 virtual void run() override;
1131 struct AddRandomItems: BaseAction
1133 AddRandomItems(): BaseAction(Type::AddRandomItems, "add_random_items") { }
1135 private:
1136 virtual void run() override;
1139 struct ToggleBrowserSortMode: BaseAction
1141 ToggleBrowserSortMode(): BaseAction(Type::ToggleBrowserSortMode, "toggle_browser_sort_mode") { }
1143 private:
1144 virtual bool canBeRun() override;
1145 virtual void run() override;
1148 struct ToggleLibraryTagType: BaseAction
1150 ToggleLibraryTagType(): BaseAction(Type::ToggleLibraryTagType, "toggle_library_tag_type") { }
1152 private:
1153 virtual bool canBeRun() override;
1154 virtual void run() override;
1157 struct ToggleMediaLibrarySortMode: BaseAction
1159 ToggleMediaLibrarySortMode()
1160 : BaseAction(Type::ToggleMediaLibrarySortMode, "toggle_media_library_sort_mode") { }
1162 private:
1163 virtual bool canBeRun() override;
1164 virtual void run() override;
1167 struct FetchLyricsInBackground: BaseAction
1169 FetchLyricsInBackground()
1170 : BaseAction(Type::FetchLyricsInBackground, "fetch_lyrics_in_background") { }
1172 private:
1173 virtual bool canBeRun() override;
1174 virtual void run() override;
1176 HasSongs *m_hs;
1179 struct RefetchLyrics: BaseAction
1181 RefetchLyrics(): BaseAction(Type::RefetchLyrics, "refetch_lyrics") { }
1183 private:
1184 virtual bool canBeRun() override;
1185 virtual void run() override;
1188 struct SetSelectedItemsPriority: BaseAction
1190 SetSelectedItemsPriority()
1191 : BaseAction(Type::SetSelectedItemsPriority, "set_selected_items_priority") { }
1193 private:
1194 virtual bool canBeRun() override;
1195 virtual void run() override;
1198 struct ToggleOutput: BaseAction
1200 ToggleOutput(): BaseAction(Type::ToggleOutput, "toggle_output") { }
1202 private:
1203 virtual bool canBeRun() override;
1204 virtual void run() override;
1207 struct ToggleVisualizationType: BaseAction
1209 ToggleVisualizationType()
1210 : BaseAction(Type::ToggleVisualizationType, "toggle_visualization_type") { }
1212 private:
1214 virtual bool canBeRun() override;
1215 virtual void run() override;
1218 struct SetVisualizerSampleMultiplier: BaseAction
1220 SetVisualizerSampleMultiplier()
1221 : BaseAction(Type::SetVisualizerSampleMultiplier, "set_visualizer_sample_multiplier") { }
1223 private:
1224 virtual bool canBeRun() override;
1225 virtual void run() override;
1228 struct ShowSongInfo: BaseAction
1230 ShowSongInfo(): BaseAction(Type::ShowSongInfo, "show_song_info") { }
1232 private:
1233 virtual void run() override;
1236 struct ShowArtistInfo: BaseAction
1238 ShowArtistInfo(): BaseAction(Type::ShowArtistInfo, "show_artist_info") { }
1240 private:
1241 virtual bool canBeRun() override;
1242 virtual void run() override;
1245 struct ShowLyrics: BaseAction
1247 ShowLyrics(): BaseAction(Type::ShowLyrics, "show_lyrics") { }
1249 private:
1250 virtual bool canBeRun() override;
1251 virtual void run() override;
1253 const MPD::Song *m_song;
1256 struct Quit: BaseAction
1258 Quit(): BaseAction(Type::Quit, "quit") { }
1260 private:
1261 virtual void run() override;
1264 struct NextScreen: BaseAction
1266 NextScreen(): BaseAction(Type::NextScreen, "next_screen") { }
1268 private:
1269 virtual void run() override;
1272 struct PreviousScreen: BaseAction
1274 PreviousScreen(): BaseAction(Type::PreviousScreen, "previous_screen") { }
1276 private:
1277 virtual void run() override;
1280 struct ShowHelp: BaseAction
1282 ShowHelp(): BaseAction(Type::ShowHelp, "show_help") { }
1284 private:
1285 virtual bool canBeRun() override;
1286 virtual void run() override;
1289 struct ShowPlaylist: BaseAction
1291 ShowPlaylist(): BaseAction(Type::ShowPlaylist, "show_playlist") { }
1293 private:
1294 virtual bool canBeRun() override;
1295 virtual void run() override;
1298 struct ShowBrowser: BaseAction
1300 ShowBrowser(): BaseAction(Type::ShowBrowser, "show_browser") { }
1302 private:
1303 virtual bool canBeRun() override;
1304 virtual void run() override;
1307 struct ChangeBrowseMode: BaseAction
1309 ChangeBrowseMode(): BaseAction(Type::ChangeBrowseMode, "change_browse_mode") { }
1311 private:
1312 virtual bool canBeRun() override;
1313 virtual void run() override;
1316 struct ShowSearchEngine: BaseAction
1318 ShowSearchEngine(): BaseAction(Type::ShowSearchEngine, "show_search_engine") { }
1320 private:
1321 virtual bool canBeRun() override;
1322 virtual void run() override;
1325 struct ResetSearchEngine: BaseAction
1327 ResetSearchEngine(): BaseAction(Type::ResetSearchEngine, "reset_search_engine") { }
1329 private:
1330 virtual bool canBeRun() override;
1331 virtual void run() override;
1334 struct ShowMediaLibrary: BaseAction
1336 ShowMediaLibrary(): BaseAction(Type::ShowMediaLibrary, "show_media_library") { }
1338 private:
1339 virtual bool canBeRun() override;
1340 virtual void run() override;
1343 struct ToggleMediaLibraryColumnsMode: BaseAction
1345 ToggleMediaLibraryColumnsMode()
1346 : BaseAction(Type::ToggleMediaLibraryColumnsMode, "toggle_media_library_columns_mode") { }
1348 private:
1349 virtual bool canBeRun() override;
1350 virtual void run() override;
1353 struct ShowPlaylistEditor: BaseAction
1355 ShowPlaylistEditor(): BaseAction(Type::ShowPlaylistEditor, "show_playlist_editor") { }
1357 private:
1358 virtual bool canBeRun() override;
1359 virtual void run() override;
1362 struct ShowTagEditor: BaseAction
1364 ShowTagEditor(): BaseAction(Type::ShowTagEditor, "show_tag_editor") { }
1366 private:
1367 virtual bool canBeRun() override;
1368 virtual void run() override;
1371 struct ShowOutputs: BaseAction
1373 ShowOutputs(): BaseAction(Type::ShowOutputs, "show_outputs") { }
1375 private:
1376 virtual bool canBeRun() override;
1377 virtual void run() override;
1380 struct ShowVisualizer: BaseAction
1382 ShowVisualizer(): BaseAction(Type::ShowVisualizer, "show_visualizer") { }
1384 private:
1385 virtual bool canBeRun() override;
1386 virtual void run() override;
1389 struct ShowClock: BaseAction
1391 ShowClock(): BaseAction(Type::ShowClock, "show_clock") { }
1393 private:
1394 virtual bool canBeRun() override;
1395 virtual void run() override;
1398 struct ShowServerInfo: BaseAction
1400 ShowServerInfo(): BaseAction(Type::ShowServerInfo, "show_server_info") { }
1402 private:
1403 # ifdef HAVE_TAGLIB_H
1404 virtual bool canBeRun() override;
1405 # endif // HAVE_TAGLIB_H
1406 virtual void run() override;
1411 #endif // NCMPCPP_ACTIONS_H