1 /***************************************************************************
2 * Copyright (C) 2008-2016 by Andrzej Rybczak *
3 * electricityispower@gmail.com *
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. *
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. *
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 ***************************************************************************/
22 #include "screen_type.h"
29 #include "media_library.h"
32 #include "playlist_editor.h"
33 #include "search_engine.h"
34 #include "sel_items_adder.h"
35 #include "server_info.h"
36 #include "song_info.h"
37 #include "sort_playlist.h"
38 #include "tag_editor.h"
39 #include "tiny_tag_editor.h"
40 #include "visualizer.h"
42 std::string
screenTypeToString(ScreenType st
)
46 case ScreenType::Browser
:
49 case ScreenType::Clock
:
51 #endif // ENABLE_CLOCK
52 case ScreenType::Help
:
54 case ScreenType::Lastfm
:
56 case ScreenType::Lyrics
:
58 case ScreenType::MediaLibrary
:
59 return "media_library";
61 case ScreenType::Outputs
:
63 #endif // ENABLE_OUTPUTS
64 case ScreenType::Playlist
:
66 case ScreenType::PlaylistEditor
:
67 return "playlist_editor";
68 case ScreenType::SearchEngine
:
69 return "search_engine";
70 case ScreenType::SelectedItemsAdder
:
71 return "selected_items_adder";
72 case ScreenType::ServerInfo
:
74 case ScreenType::SongInfo
:
76 case ScreenType::SortPlaylistDialog
:
77 return "sort_playlist_dialog";
79 case ScreenType::TagEditor
:
81 case ScreenType::TinyTagEditor
:
82 return "tiny_tag_editor";
83 #endif // HAVE_TAGLIB_H
84 case ScreenType::Unknown
:
86 #ifdef ENABLE_VISUALIZER
87 case ScreenType::Visualizer
:
89 #endif // ENABLE_VISUALIZER
91 // silence gcc warning
92 throw std::runtime_error("unreachable");
95 ScreenType
stringtoStartupScreenType(const std::string
&s
)
97 ScreenType result
= ScreenType::Unknown
;
99 result
= ScreenType::Browser
;
101 else if (s
== "clock")
102 result
= ScreenType::Clock
;
103 # endif // ENABLE_CLOCK
104 else if (s
== "help")
105 result
= ScreenType::Help
;
106 else if (s
== "media_library")
107 result
= ScreenType::MediaLibrary
;
108 # ifdef ENABLE_OUTPUTS
109 else if (s
== "outputs")
110 result
= ScreenType::Outputs
;
111 # endif // ENABLE_OUTPUTS
112 else if (s
== "playlist")
113 result
= ScreenType::Playlist
;
114 else if (s
== "playlist_editor")
115 result
= ScreenType::PlaylistEditor
;
116 else if (s
== "search_engine")
117 result
= ScreenType::SearchEngine
;
118 # ifdef HAVE_TAGLIB_H
119 else if (s
== "tag_editor")
120 result
= ScreenType::TagEditor
;
121 # endif // HAVE_TAGLIB_H
122 # ifdef ENABLE_VISUALIZER
123 else if (s
== "visualizer")
124 result
= ScreenType::Visualizer
;
125 # endif // ENABLE_VISUALIZER
129 ScreenType
stringToScreenType(const std::string
&s
)
131 ScreenType result
= stringtoStartupScreenType(s
);
132 if (result
== ScreenType::Unknown
)
135 result
= ScreenType::Lyrics
;
136 else if (s
== "last_fm")
137 result
= ScreenType::Lastfm
;
138 else if (s
== "selected_items_adder")
139 result
= ScreenType::SelectedItemsAdder
;
140 else if (s
== "server_info")
141 result
= ScreenType::ServerInfo
;
142 else if (s
== "song_info")
143 result
= ScreenType::SongInfo
;
144 else if (s
== "sort_playlist_dialog")
145 result
= ScreenType::SortPlaylistDialog
;
146 # ifdef HAVE_TAGLIB_H
147 else if (s
== "tiny_tag_editor")
148 result
= ScreenType::TinyTagEditor
;
149 # endif // HAVE_TAGLIB_H
154 BaseScreen
*toScreen(ScreenType st
)
158 case ScreenType::Browser
:
161 case ScreenType::Clock
:
163 # endif // ENABLE_CLOCK
164 case ScreenType::Help
:
166 case ScreenType::Lastfm
:
168 case ScreenType::Lyrics
:
170 case ScreenType::MediaLibrary
:
172 # ifdef ENABLE_OUTPUTS
173 case ScreenType::Outputs
:
175 # endif // ENABLE_OUTPUTS
176 case ScreenType::Playlist
:
178 case ScreenType::PlaylistEditor
:
179 return myPlaylistEditor
;
180 case ScreenType::SearchEngine
:
182 case ScreenType::SelectedItemsAdder
:
183 return mySelectedItemsAdder
;
184 case ScreenType::ServerInfo
:
186 case ScreenType::SongInfo
:
188 case ScreenType::SortPlaylistDialog
:
189 return mySortPlaylistDialog
;
190 # ifdef HAVE_TAGLIB_H
191 case ScreenType::TagEditor
:
193 case ScreenType::TinyTagEditor
:
194 return myTinyTagEditor
;
195 # endif // HAVE_TAGLIB_H
196 # ifdef ENABLE_VISUALIZER
197 case ScreenType::Visualizer
:
199 # endif // ENABLE_VISUALIZER