Add '--quiet' comand line option to suppress some output
[ncmpcpp.git] / src / actions.h
blobc4444df9853d565cc595e36b20184c50dd2cd782
1 /***************************************************************************
2 * Copyright (C) 2008-2017 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 "curses/window.h"
29 #include "interfaces.h"
31 // forward declarations
32 struct SongList;
34 namespace Actions {
36 enum class Type
38 MacroUtility = -1,
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 ShowSongInfo,
146 ShowArtistInfo,
147 ShowLyrics,
148 Quit,
149 NextScreen,
150 PreviousScreen,
151 ShowHelp,
152 ShowPlaylist,
153 ShowBrowser,
154 ChangeBrowseMode,
155 ShowSearchEngine,
156 ResetSearchEngine,
157 ShowMediaLibrary,
158 ToggleMediaLibraryColumnsMode,
159 ShowPlaylistEditor,
160 ShowTagEditor,
161 ShowOutputs,
162 ShowVisualizer,
163 ShowClock,
164 ShowServerInfo,
165 _numberOfActions // needed to dynamically calculate size of action array
168 void validateScreenSize();
169 void initializeScreens();
170 void setResizeFlags();
171 void resizeScreen(bool reload_main_window);
172 void setWindowsDimensions();
174 void confirmAction(const boost::format &description);
175 inline void confirmAction(const std::string &description)
177 confirmAction(boost::format(description));
180 bool isMPDMusicDirSet();
182 extern bool OriginalStatusbarVisibility;
183 extern bool ExitMainLoop;
185 extern size_t HeaderHeight;
186 extern size_t FooterHeight;
187 extern size_t FooterStartY;
189 struct BaseAction
191 BaseAction(Type type_, const char *name_): m_name(name_), m_type(type_) { }
193 const std::string &name() const { return m_name; }
194 Type type() const { return m_type; }
196 virtual bool canBeRun() { return true; }
198 bool execute()
200 if (canBeRun())
202 run();
203 return true;
205 return false;
208 protected:
209 std::string m_name;
211 private:
212 virtual void run() = 0;
214 Type m_type;
217 BaseAction &get(Type at);
219 std::shared_ptr<BaseAction> get_(Type at);
220 std::shared_ptr<BaseAction> get_(const std::string &name);
222 struct Dummy: BaseAction
224 Dummy(): BaseAction(Type::Dummy, "dummy") { }
226 private:
227 virtual void run() override { }
230 struct UpdateEnvironment: BaseAction
232 UpdateEnvironment();
234 void run(bool update_status, bool refresh_window, bool mpd_sync);
236 private:
237 boost::posix_time::ptime m_past;
239 virtual void run() override;
242 struct MouseEvent: BaseAction
244 MouseEvent(): BaseAction(Type::MouseEvent, "mouse_event")
246 m_old_mouse_event.bstate = 0;
247 m_mouse_event.bstate = 0;
250 private:
251 virtual bool canBeRun() override;
252 virtual void run() override;
254 MEVENT m_mouse_event;
255 MEVENT m_old_mouse_event;
258 struct ScrollUp: BaseAction
260 ScrollUp(): BaseAction(Type::ScrollUp, "scroll_up") { }
262 private:
263 virtual void run() override;
266 struct ScrollDown: BaseAction
268 ScrollDown(): BaseAction(Type::ScrollDown, "scroll_down") { }
270 private:
271 virtual void run() override;
274 struct ScrollUpArtist: BaseAction
276 ScrollUpArtist(): BaseAction(Type::ScrollUpArtist, "scroll_up_artist") { }
278 private:
279 virtual bool canBeRun() override;
280 virtual void run() override;
282 NC::List *m_list;
283 const SongList *m_songs;
286 struct ScrollUpAlbum: BaseAction
288 ScrollUpAlbum(): BaseAction(Type::ScrollUpAlbum, "scroll_up_album") { }
290 private:
291 virtual bool canBeRun() override;
292 virtual void run() override;
294 NC::List *m_list;
295 const SongList *m_songs;
298 struct ScrollDownArtist: BaseAction
300 ScrollDownArtist(): BaseAction(Type::ScrollDownArtist, "scroll_down_artist") { }
302 private:
303 virtual bool canBeRun() override;
304 virtual void run() override;
306 NC::List *m_list;
307 const SongList *m_songs;
310 struct ScrollDownAlbum: BaseAction
312 ScrollDownAlbum(): BaseAction(Type::ScrollDownAlbum, "scroll_down_album") { }
314 private:
315 virtual bool canBeRun() override;
316 virtual void run() override;
318 NC::List *m_list;
319 const SongList *m_songs;
322 struct PageUp: BaseAction
324 PageUp(): BaseAction(Type::PageUp, "page_up") { }
326 private:
327 virtual void run() override;
330 struct PageDown: BaseAction
332 PageDown(): BaseAction(Type::PageDown, "page_down") { }
334 private:
335 virtual void run() override;
338 struct MoveHome: BaseAction
340 MoveHome(): BaseAction(Type::MoveHome, "move_home") { }
342 private:
343 virtual void run() override;
346 struct MoveEnd: BaseAction
348 MoveEnd(): BaseAction(Type::MoveEnd, "move_end") { }
350 private:
351 virtual void run() override;
354 struct ToggleInterface: BaseAction
356 ToggleInterface(): BaseAction(Type::ToggleInterface, "toggle_interface") { }
358 private:
359 virtual void run() override;
362 struct JumpToParentDirectory: BaseAction
364 JumpToParentDirectory(): BaseAction(Type::JumpToParentDirectory, "jump_to_parent_directory") { }
366 private:
367 virtual bool canBeRun() override;
368 virtual void run() override;
371 struct RunAction: BaseAction
373 RunAction(): BaseAction(Type::RunAction, "run_action") { }
375 private:
376 virtual bool canBeRun() override;
377 virtual void run() override;
379 HasActions *m_ha;
382 struct PreviousColumn: BaseAction
384 PreviousColumn(): BaseAction(Type::PreviousColumn, "previous_column") { }
386 private:
387 virtual bool canBeRun() override;
388 virtual void run() override;
390 HasColumns *m_hc;
393 struct NextColumn: BaseAction
395 NextColumn(): BaseAction(Type::NextColumn, "next_column") { }
397 private:
398 virtual bool canBeRun() override;
399 virtual void run() override;
401 HasColumns *m_hc;
404 struct MasterScreen: BaseAction
406 MasterScreen(): BaseAction(Type::MasterScreen, "master_screen") { }
408 private:
409 virtual bool canBeRun() override;
410 virtual void run() override;
413 struct SlaveScreen: BaseAction
415 SlaveScreen(): BaseAction(Type::SlaveScreen, "slave_screen") { }
417 private:
418 virtual bool canBeRun() override;
419 virtual void run() override;
422 struct VolumeUp: BaseAction
424 VolumeUp(): BaseAction(Type::VolumeUp, "volume_up") { }
426 private:
427 virtual void run() override;
430 struct VolumeDown: BaseAction
432 VolumeDown(): BaseAction(Type::VolumeDown, "volume_down") { }
434 private:
435 virtual void run() override;
438 struct AddItemToPlaylist: BaseAction
440 AddItemToPlaylist(): BaseAction(Type::AddItemToPlaylist, "add_item_to_playlist") { }
442 private:
443 virtual bool canBeRun() override;
444 virtual void run() override;
446 HasSongs *m_hs;
449 struct PlayItem: BaseAction
451 PlayItem(): BaseAction(Type::PlayItem, "play_item") { }
453 private:
454 virtual bool canBeRun() override;
455 virtual void run() override;
457 HasSongs *m_hs;
460 struct DeletePlaylistItems: BaseAction
462 DeletePlaylistItems(): BaseAction(Type::DeletePlaylistItems, "delete_playlist_items") { }
464 private:
465 virtual bool canBeRun() override;
466 virtual void run() override;
469 struct DeleteStoredPlaylist: BaseAction
471 DeleteStoredPlaylist(): BaseAction(Type::DeleteStoredPlaylist, "delete_stored_playlist") { }
473 private:
474 virtual bool canBeRun() override;
475 virtual void run() override;
478 struct DeleteBrowserItems: BaseAction
480 DeleteBrowserItems(): BaseAction(Type::DeleteBrowserItems, "delete_browser_items") { }
482 private:
483 virtual bool canBeRun() override;
484 virtual void run() override;
487 struct ReplaySong: BaseAction
489 ReplaySong(): BaseAction(Type::ReplaySong, "replay_song") { }
491 private:
492 virtual void run() override;
495 struct PreviousSong: BaseAction
497 PreviousSong(): BaseAction(Type::Previous, "previous") { }
499 private:
500 virtual void run() override;
503 struct NextSong: BaseAction
505 NextSong(): BaseAction(Type::Next, "next") { }
507 private:
508 virtual void run() override;
511 struct Pause: BaseAction
513 Pause(): BaseAction(Type::Pause, "pause") { }
515 private:
516 virtual void run() override;
519 struct Stop: BaseAction
521 Stop(): BaseAction(Type::Stop, "stop") { }
523 private:
524 virtual void run() override;
527 struct ExecuteCommand: BaseAction
529 ExecuteCommand(): BaseAction(Type::ExecuteCommand, "execute_command") { }
531 private:
532 virtual void run() override;
535 struct SavePlaylist: BaseAction
537 SavePlaylist(): BaseAction(Type::SavePlaylist, "save_playlist") { }
539 private:
540 virtual void run() override;
543 struct MoveSortOrderUp: BaseAction
545 MoveSortOrderUp(): BaseAction(Type::MoveSortOrderUp, "move_sort_order_up") { }
547 private:
548 virtual bool canBeRun() override;
549 virtual void run() override;
552 struct MoveSortOrderDown: BaseAction
554 MoveSortOrderDown(): BaseAction(Type::MoveSortOrderDown, "move_sort_order_down") { }
556 private:
557 virtual bool canBeRun() override;
558 virtual void run() override;
561 struct MoveSelectedItemsUp: BaseAction
563 MoveSelectedItemsUp(): BaseAction(Type::MoveSelectedItemsUp, "move_selected_items_up") { }
565 private:
566 virtual bool canBeRun() override;
567 virtual void run() override;
570 struct MoveSelectedItemsDown: BaseAction
572 MoveSelectedItemsDown(): BaseAction(Type::MoveSelectedItemsDown, "move_selected_items_down") { }
574 private:
575 virtual bool canBeRun() override;
576 virtual void run() override;
579 struct MoveSelectedItemsTo: BaseAction
581 MoveSelectedItemsTo(): BaseAction(Type::MoveSelectedItemsTo, "move_selected_items_to") { }
583 private:
584 virtual bool canBeRun() override;
585 virtual void run() override;
588 struct Add: BaseAction
590 Add(): BaseAction(Type::Add, "add") { }
592 private:
593 virtual bool canBeRun() override;
594 virtual void run() override;
597 struct SeekForward: BaseAction
599 SeekForward(): BaseAction(Type::SeekForward, "seek_forward") { }
601 private:
602 virtual bool canBeRun() override;
603 virtual void run() override;
606 struct SeekBackward: BaseAction
608 SeekBackward(): BaseAction(Type::SeekBackward, "seek_backward") { }
610 private:
611 virtual bool canBeRun() override;
612 virtual void run() override;
615 struct ToggleDisplayMode: BaseAction
617 ToggleDisplayMode(): BaseAction(Type::ToggleDisplayMode, "toggle_display_mode") { }
619 private:
620 virtual bool canBeRun() override;
621 virtual void run() override;
624 struct ToggleSeparatorsBetweenAlbums: BaseAction
626 ToggleSeparatorsBetweenAlbums()
627 : BaseAction(Type::ToggleSeparatorsBetweenAlbums, "toggle_separators_between_albums") { }
629 private:
630 virtual bool canBeRun() override;
631 virtual void run() override;
634 struct ToggleLyricsUpdateOnSongChange: BaseAction
636 ToggleLyricsUpdateOnSongChange()
637 : BaseAction(Type::ToggleLyricsUpdateOnSongChange, "toggle_lyrics_update_on_song_change") { }
639 private:
640 virtual bool canBeRun() override;
641 virtual void run() override;
644 struct ToggleLyricsFetcher: BaseAction
646 ToggleLyricsFetcher(): BaseAction(Type::ToggleLyricsFetcher, "toggle_lyrics_fetcher") { }
648 private:
649 virtual void run() override;
652 struct ToggleFetchingLyricsInBackground: BaseAction
654 ToggleFetchingLyricsInBackground()
655 : BaseAction(Type::ToggleFetchingLyricsInBackground, "toggle_fetching_lyrics_in_background") { }
657 private:
658 virtual void run() override;
661 struct TogglePlayingSongCentering: BaseAction
663 TogglePlayingSongCentering()
664 : BaseAction(Type::TogglePlayingSongCentering, "toggle_playing_song_centering") { }
666 private:
667 virtual void run() override;
670 struct UpdateDatabase: BaseAction
672 UpdateDatabase(): BaseAction(Type::UpdateDatabase, "update_database") { }
674 private:
675 virtual void run() override;
678 struct JumpToPlayingSong: BaseAction
680 JumpToPlayingSong(): BaseAction(Type::JumpToPlayingSong, "jump_to_playing_song") { }
682 private:
683 virtual bool canBeRun() override;
684 virtual void run() override;
686 MPD::Song m_song;
689 struct ToggleRepeat: BaseAction
691 ToggleRepeat(): BaseAction(Type::ToggleRepeat, "toggle_repeat") { }
693 private:
694 virtual void run() override;
697 struct Shuffle: BaseAction
699 Shuffle(): BaseAction(Type::Shuffle, "shuffle") { }
701 private:
702 virtual bool canBeRun() override;
703 virtual void run() override;
705 NC::Menu<MPD::Song>::ConstIterator m_begin;
706 NC::Menu<MPD::Song>::ConstIterator m_end;
709 struct ToggleRandom: BaseAction
711 ToggleRandom(): BaseAction(Type::ToggleRandom, "toggle_random") { }
713 private:
714 virtual void run() override;
717 struct StartSearching: BaseAction
719 StartSearching(): BaseAction(Type::StartSearching, "start_searching") { }
721 private:
722 virtual bool canBeRun() override;
723 virtual void run() override;
726 struct SaveTagChanges: BaseAction
728 SaveTagChanges(): BaseAction(Type::SaveTagChanges, "save_tag_changes") { }
730 private:
731 virtual bool canBeRun() override;
732 virtual void run() override;
735 struct ToggleSingle: BaseAction
737 ToggleSingle(): BaseAction(Type::ToggleSingle, "toggle_single") { }
739 private:
740 virtual void run() override;
743 struct ToggleConsume: BaseAction
745 ToggleConsume(): BaseAction(Type::ToggleConsume, "toggle_consume") { }
747 private:
748 virtual void run() override;
751 struct ToggleCrossfade: BaseAction
753 ToggleCrossfade(): BaseAction(Type::ToggleCrossfade, "toggle_crossfade") { }
755 private:
756 virtual void run() override;
759 struct SetCrossfade: BaseAction
761 SetCrossfade(): BaseAction(Type::SetCrossfade, "set_crossfade") { }
763 private:
764 virtual void run() override;
767 struct SetVolume: BaseAction
769 SetVolume(): BaseAction(Type::SetVolume, "set_volume") { }
771 private:
772 virtual void run() override;
775 struct EnterDirectory: BaseAction
777 EnterDirectory(): BaseAction(Type::EnterDirectory, "enter_directory") { }
779 private:
780 virtual bool canBeRun() override;
781 virtual void run() override;
785 struct EditSong: BaseAction
787 EditSong(): BaseAction(Type::EditSong, "edit_song") { }
789 private:
790 virtual bool canBeRun() override;
791 virtual void run() override;
793 #ifdef HAVE_TAGLIB_H
794 const MPD::Song *m_song;
795 #endif // HAVE_TAGLIB_H
798 struct EditLibraryTag: BaseAction
800 EditLibraryTag(): BaseAction(Type::EditLibraryTag, "edit_library_tag") { }
802 private:
803 virtual bool canBeRun() override;
804 virtual void run() override;
807 struct EditLibraryAlbum: BaseAction
809 EditLibraryAlbum(): BaseAction(Type::EditLibraryAlbum, "edit_library_album") { }
811 private:
812 virtual bool canBeRun() override;
813 virtual void run() override;
816 struct EditDirectoryName: BaseAction
818 EditDirectoryName(): BaseAction(Type::EditDirectoryName, "edit_directory_name") { }
820 private:
821 virtual bool canBeRun() override;
822 virtual void run() override;
825 struct EditPlaylistName: BaseAction
827 EditPlaylistName(): BaseAction(Type::EditPlaylistName, "edit_playlist_name") { }
829 private:
830 virtual bool canBeRun() override;
831 virtual void run() override;
834 struct EditLyrics: BaseAction
836 EditLyrics(): BaseAction(Type::EditLyrics, "edit_lyrics") { }
838 private:
839 virtual bool canBeRun() override;
840 virtual void run() override;
843 struct JumpToBrowser: BaseAction
845 JumpToBrowser(): BaseAction(Type::JumpToBrowser, "jump_to_browser") { }
847 private:
848 virtual bool canBeRun() override;
849 virtual void run() override;
851 const MPD::Song *m_song;
854 struct JumpToMediaLibrary: BaseAction
856 JumpToMediaLibrary(): BaseAction(Type::JumpToMediaLibrary, "jump_to_media_library") { }
858 private:
859 virtual bool canBeRun() override;
860 virtual void run() override;
862 const MPD::Song *m_song;
865 struct JumpToPlaylistEditor: BaseAction
867 JumpToPlaylistEditor(): BaseAction(Type::JumpToPlaylistEditor, "jump_to_playlist_editor") { }
869 private:
870 virtual bool canBeRun() override;
871 virtual void run() override;
874 struct ToggleScreenLock: BaseAction
876 ToggleScreenLock(): BaseAction(Type::ToggleScreenLock, "toggle_screen_lock") { }
878 private:
879 virtual void run() override;
882 struct JumpToTagEditor: BaseAction
884 JumpToTagEditor(): BaseAction(Type::JumpToTagEditor, "jump_to_tag_editor") { }
886 private:
887 virtual bool canBeRun() override;
888 virtual void run() override;
890 #ifdef HAVE_TAGLIB_H
891 const MPD::Song *m_song;
892 #endif // HAVE_TAGLIB_H
895 struct JumpToPositionInSong: BaseAction
897 JumpToPositionInSong(): BaseAction(Type::JumpToPositionInSong, "jump_to_position_in_song") { }
899 private:
900 virtual bool canBeRun() override;
901 virtual void run() override;
904 struct SelectItem: BaseAction
906 SelectItem(): BaseAction(Type::SelectItem, "select_item") { }
908 private:
909 virtual bool canBeRun() override;
910 virtual void run() override;
912 NC::List *m_list;
915 struct SelectRange: BaseAction
917 SelectRange(): BaseAction(Type::SelectRange, "select_range") { }
919 private:
920 virtual bool canBeRun() override;
921 virtual void run() override;
923 NC::List *m_list;
924 NC::List::Iterator m_begin;
925 NC::List::Iterator m_end;
928 struct ReverseSelection: BaseAction
930 ReverseSelection(): BaseAction(Type::ReverseSelection, "reverse_selection") { }
932 private:
933 virtual bool canBeRun() override;
934 virtual void run() override;
936 NC::List *m_list;
939 struct RemoveSelection: BaseAction
941 RemoveSelection(): BaseAction(Type::RemoveSelection, "remove_selection") { }
943 private:
944 virtual bool canBeRun() override;
945 virtual void run() override;
947 NC::List *m_list;
950 struct SelectAlbum: BaseAction
952 SelectAlbum(): BaseAction(Type::SelectAlbum, "select_album") { }
954 private:
955 virtual bool canBeRun() override;
956 virtual void run() override;
958 NC::List *m_list;
959 SongList *m_songs;
962 struct SelectFoundItems: BaseAction
964 SelectFoundItems(): BaseAction(Type::SelectFoundItems, "select_found_items") { }
966 private:
967 virtual bool canBeRun() override;
968 virtual void run() override;
970 NC::List *m_list;
971 Searchable *m_searchable;
974 struct AddSelectedItems: BaseAction
976 AddSelectedItems(): BaseAction(Type::AddSelectedItems, "add_selected_items") { }
978 private:
979 virtual bool canBeRun() override;
980 virtual void run() override;
983 struct CropMainPlaylist: BaseAction
985 CropMainPlaylist(): BaseAction(Type::CropMainPlaylist, "crop_main_playlist") { }
987 private:
988 virtual void run() override;
991 struct CropPlaylist: BaseAction
993 CropPlaylist(): BaseAction(Type::CropPlaylist, "crop_playlist") { }
995 private:
996 virtual bool canBeRun() override;
997 virtual void run() override;
1000 struct ClearMainPlaylist: BaseAction
1002 ClearMainPlaylist(): BaseAction(Type::ClearMainPlaylist, "clear_main_playlist") { }
1004 private:
1005 virtual void run() override;
1008 struct ClearPlaylist: BaseAction
1010 ClearPlaylist(): BaseAction(Type::ClearPlaylist, "clear_playlist") { }
1012 private:
1013 virtual bool canBeRun() override;
1014 virtual void run() override;
1017 struct SortPlaylist: BaseAction
1019 SortPlaylist(): BaseAction(Type::SortPlaylist, "sort_playlist") { }
1021 private:
1022 virtual bool canBeRun() override;
1023 virtual void run() override;
1026 struct ReversePlaylist: BaseAction
1028 ReversePlaylist(): BaseAction(Type::ReversePlaylist, "reverse_playlist") { }
1030 private:
1031 virtual bool canBeRun() override;
1032 virtual void run() override;
1034 NC::Menu<MPD::Song>::ConstIterator m_begin;
1035 NC::Menu<MPD::Song>::ConstIterator m_end;
1038 struct ApplyFilter: public BaseAction
1040 ApplyFilter(): BaseAction(Type::ApplyFilter, "apply_filter") { }
1042 private:
1043 virtual bool canBeRun() override;
1044 virtual void run() override;
1046 Filterable *m_filterable;
1049 struct Find: BaseAction
1051 Find(): BaseAction(Type::Find, "find") { }
1053 private:
1054 virtual bool canBeRun() override;
1055 virtual void run() override;
1058 struct FindItemForward: BaseAction
1060 FindItemForward(): BaseAction(Type::FindItemForward, "find_item_forward") { }
1062 private:
1063 virtual bool canBeRun() override;
1064 virtual void run() override;
1067 struct FindItemBackward: BaseAction
1069 FindItemBackward(): BaseAction(Type::FindItemBackward, "find_item_backward") { }
1071 private:
1072 virtual bool canBeRun() override;
1073 virtual void run() override;
1076 struct NextFoundItem: BaseAction
1078 NextFoundItem(): BaseAction(Type::NextFoundItem, "next_found_item") { }
1080 private:
1081 virtual bool canBeRun() override;
1082 virtual void run() override;
1085 struct PreviousFoundItem: BaseAction
1087 PreviousFoundItem(): BaseAction(Type::PreviousFoundItem, "previous_found_item") { }
1089 private:
1090 virtual bool canBeRun() override;
1091 virtual void run() override;
1094 struct ToggleFindMode: BaseAction
1096 ToggleFindMode(): BaseAction(Type::ToggleFindMode, "toggle_find_mode") { }
1098 private:
1099 virtual void run() override;
1102 struct ToggleReplayGainMode: BaseAction
1104 ToggleReplayGainMode(): BaseAction(Type::ToggleReplayGainMode, "toggle_replay_gain_mode") { }
1106 private:
1107 virtual void run() override;
1110 struct ToggleAddMode: BaseAction
1112 ToggleAddMode(): BaseAction(Type::ToggleAddMode, "toggle_add_mode") { }
1114 private:
1115 virtual void run() override;
1118 struct ToggleMouse: BaseAction
1120 ToggleMouse(): BaseAction(Type::ToggleMouse, "toggle_mouse") { }
1122 private:
1123 virtual void run() override;
1126 struct ToggleBitrateVisibility: BaseAction
1128 ToggleBitrateVisibility(): BaseAction(Type::ToggleBitrateVisibility, "toggle_bitrate_visibility") { }
1130 private:
1131 virtual void run() override;
1134 struct AddRandomItems: BaseAction
1136 AddRandomItems(): BaseAction(Type::AddRandomItems, "add_random_items") { }
1138 private:
1139 virtual void run() override;
1142 struct ToggleBrowserSortMode: BaseAction
1144 ToggleBrowserSortMode(): BaseAction(Type::ToggleBrowserSortMode, "toggle_browser_sort_mode") { }
1146 private:
1147 virtual bool canBeRun() override;
1148 virtual void run() override;
1151 struct ToggleLibraryTagType: BaseAction
1153 ToggleLibraryTagType(): BaseAction(Type::ToggleLibraryTagType, "toggle_library_tag_type") { }
1155 private:
1156 virtual bool canBeRun() override;
1157 virtual void run() override;
1160 struct ToggleMediaLibrarySortMode: BaseAction
1162 ToggleMediaLibrarySortMode()
1163 : BaseAction(Type::ToggleMediaLibrarySortMode, "toggle_media_library_sort_mode") { }
1165 private:
1166 virtual bool canBeRun() override;
1167 virtual void run() override;
1170 struct FetchLyricsInBackground: BaseAction
1172 FetchLyricsInBackground()
1173 : BaseAction(Type::FetchLyricsInBackground, "fetch_lyrics_in_background") { }
1175 private:
1176 virtual bool canBeRun() override;
1177 virtual void run() override;
1179 HasSongs *m_hs;
1182 struct RefetchLyrics: BaseAction
1184 RefetchLyrics(): BaseAction(Type::RefetchLyrics, "refetch_lyrics") { }
1186 private:
1187 virtual bool canBeRun() override;
1188 virtual void run() override;
1191 struct SetSelectedItemsPriority: BaseAction
1193 SetSelectedItemsPriority()
1194 : BaseAction(Type::SetSelectedItemsPriority, "set_selected_items_priority") { }
1196 private:
1197 virtual bool canBeRun() override;
1198 virtual void run() override;
1201 struct ToggleOutput: BaseAction
1203 ToggleOutput(): BaseAction(Type::ToggleOutput, "toggle_output") { }
1205 private:
1206 virtual bool canBeRun() override;
1207 virtual void run() override;
1210 struct ToggleVisualizationType: BaseAction
1212 ToggleVisualizationType()
1213 : BaseAction(Type::ToggleVisualizationType, "toggle_visualization_type") { }
1215 private:
1217 virtual bool canBeRun() override;
1218 virtual void run() override;
1221 struct ShowSongInfo: BaseAction
1223 ShowSongInfo(): BaseAction(Type::ShowSongInfo, "show_song_info") { }
1225 private:
1226 virtual void run() override;
1229 struct ShowArtistInfo: BaseAction
1231 ShowArtistInfo(): BaseAction(Type::ShowArtistInfo, "show_artist_info") { }
1233 private:
1234 virtual bool canBeRun() override;
1235 virtual void run() override;
1238 struct ShowLyrics: BaseAction
1240 ShowLyrics(): BaseAction(Type::ShowLyrics, "show_lyrics") { }
1242 private:
1243 virtual bool canBeRun() override;
1244 virtual void run() override;
1246 const MPD::Song *m_song;
1249 struct Quit: BaseAction
1251 Quit(): BaseAction(Type::Quit, "quit") { }
1253 private:
1254 virtual void run() override;
1257 struct NextScreen: BaseAction
1259 NextScreen(): BaseAction(Type::NextScreen, "next_screen") { }
1261 private:
1262 virtual void run() override;
1265 struct PreviousScreen: BaseAction
1267 PreviousScreen(): BaseAction(Type::PreviousScreen, "previous_screen") { }
1269 private:
1270 virtual void run() override;
1273 struct ShowHelp: BaseAction
1275 ShowHelp(): BaseAction(Type::ShowHelp, "show_help") { }
1277 private:
1278 virtual bool canBeRun() override;
1279 virtual void run() override;
1282 struct ShowPlaylist: BaseAction
1284 ShowPlaylist(): BaseAction(Type::ShowPlaylist, "show_playlist") { }
1286 private:
1287 virtual bool canBeRun() override;
1288 virtual void run() override;
1291 struct ShowBrowser: BaseAction
1293 ShowBrowser(): BaseAction(Type::ShowBrowser, "show_browser") { }
1295 private:
1296 virtual bool canBeRun() override;
1297 virtual void run() override;
1300 struct ChangeBrowseMode: BaseAction
1302 ChangeBrowseMode(): BaseAction(Type::ChangeBrowseMode, "change_browse_mode") { }
1304 private:
1305 virtual bool canBeRun() override;
1306 virtual void run() override;
1309 struct ShowSearchEngine: BaseAction
1311 ShowSearchEngine(): BaseAction(Type::ShowSearchEngine, "show_search_engine") { }
1313 private:
1314 virtual bool canBeRun() override;
1315 virtual void run() override;
1318 struct ResetSearchEngine: BaseAction
1320 ResetSearchEngine(): BaseAction(Type::ResetSearchEngine, "reset_search_engine") { }
1322 private:
1323 virtual bool canBeRun() override;
1324 virtual void run() override;
1327 struct ShowMediaLibrary: BaseAction
1329 ShowMediaLibrary(): BaseAction(Type::ShowMediaLibrary, "show_media_library") { }
1331 private:
1332 virtual bool canBeRun() override;
1333 virtual void run() override;
1336 struct ToggleMediaLibraryColumnsMode: BaseAction
1338 ToggleMediaLibraryColumnsMode()
1339 : BaseAction(Type::ToggleMediaLibraryColumnsMode, "toggle_media_library_columns_mode") { }
1341 private:
1342 virtual bool canBeRun() override;
1343 virtual void run() override;
1346 struct ShowPlaylistEditor: BaseAction
1348 ShowPlaylistEditor(): BaseAction(Type::ShowPlaylistEditor, "show_playlist_editor") { }
1350 private:
1351 virtual bool canBeRun() override;
1352 virtual void run() override;
1355 struct ShowTagEditor: BaseAction
1357 ShowTagEditor(): BaseAction(Type::ShowTagEditor, "show_tag_editor") { }
1359 private:
1360 virtual bool canBeRun() override;
1361 virtual void run() override;
1364 struct ShowOutputs: BaseAction
1366 ShowOutputs(): BaseAction(Type::ShowOutputs, "show_outputs") { }
1368 private:
1369 virtual bool canBeRun() override;
1370 virtual void run() override;
1373 struct ShowVisualizer: BaseAction
1375 ShowVisualizer(): BaseAction(Type::ShowVisualizer, "show_visualizer") { }
1377 private:
1378 virtual bool canBeRun() override;
1379 virtual void run() override;
1382 struct ShowClock: BaseAction
1384 ShowClock(): BaseAction(Type::ShowClock, "show_clock") { }
1386 private:
1387 virtual bool canBeRun() override;
1388 virtual void run() override;
1391 struct ShowServerInfo: BaseAction
1393 ShowServerInfo(): BaseAction(Type::ShowServerInfo, "show_server_info") { }
1395 private:
1396 # ifdef HAVE_TAGLIB_H
1397 virtual bool canBeRun() override;
1398 # endif // HAVE_TAGLIB_H
1399 virtual void run() override;
1404 #endif // NCMPCPP_ACTIONS_H