uniformize ways to convert strings into screen type
This commit is contained in:
33
doc/config
33
doc/config
@@ -366,28 +366,21 @@
|
|||||||
#display_screens_numbers_on_start = "yes"
|
#display_screens_numbers_on_start = "yes"
|
||||||
#
|
#
|
||||||
##
|
##
|
||||||
## How shall key_screen_switcher work?
|
## How shall screen switcher work?
|
||||||
##
|
##
|
||||||
## - "previous" - switch between current and last used screen
|
## - "previous" - switch between the current and previous screen.
|
||||||
## - "sequence: 2 -> 9 -> 5" - switch between given sequence of screens.
|
## - "screen1,...,screenN" - switch between given sequence of screens.
|
||||||
##
|
##
|
||||||
## Screen numbers you can use after 'sequence' keyword are:
|
## Screens available for use: help, playlist, browser, search_engine,
|
||||||
|
## media_library, playlist_editor, tag_editor, outputs, visualizer, clock.
|
||||||
##
|
##
|
||||||
## - 1 - help
|
#screen_switcher_mode = "playlist, browser"
|
||||||
## - 2 - playlist
|
#
|
||||||
## - 3 - browser
|
|
||||||
## - 4 - search engine
|
|
||||||
## - 5 - media library
|
|
||||||
## - 6 - playlist editor
|
|
||||||
## - 7 - tag editor
|
|
||||||
## - 8 - outputs
|
|
||||||
## - 9 - visualizer
|
|
||||||
## - 10 - clock
|
|
||||||
##
|
##
|
||||||
## As you can see, above example will switch between
|
## Note: You can define startup screen for ncmpcpp
|
||||||
## playlist, visualizer and media library screens.
|
## by choosing screen from the list above.
|
||||||
##
|
##
|
||||||
#screen_switcher_mode = "sequence: 2 -> 3"
|
#startup_screen = "playlist"
|
||||||
#
|
#
|
||||||
##
|
##
|
||||||
## Default width of locked screen (in %).
|
## Default width of locked screen (in %).
|
||||||
@@ -398,12 +391,6 @@
|
|||||||
#
|
#
|
||||||
#ask_for_locked_screen_width_part = "yes"
|
#ask_for_locked_screen_width_part = "yes"
|
||||||
#
|
#
|
||||||
##
|
|
||||||
## Note: You can define startup screen for ncmpcpp
|
|
||||||
## by choosing screen number from the list above.
|
|
||||||
##
|
|
||||||
#startup_screen = "2"
|
|
||||||
#
|
|
||||||
#jump_to_now_playing_song_at_start = "yes"
|
#jump_to_now_playing_song_at_start = "yes"
|
||||||
#
|
#
|
||||||
#ask_before_clearing_main_playlist = "no"
|
#ask_before_clearing_main_playlist = "no"
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ Connect to server at port [6600]
|
|||||||
Use alternative configuration file
|
Use alternative configuration file
|
||||||
.TP
|
.TP
|
||||||
.B \-s, \-\-screen <name>
|
.B \-s, \-\-screen <name>
|
||||||
Specify the startup screen (<name> may be: help, playlist, browser, search-engine, media-library, playlist-editor, tag-editor, outputs, visualizer, clock)
|
Specify the startup screen (<name> may be: help, playlist, browser, search_engine, media_library, playlist_editor, tag_editor, outputs, visualizer, clock)
|
||||||
.TP
|
.TP
|
||||||
.B \-?, \-\-help
|
.B \-?, \-\-help
|
||||||
Display help.
|
Display help.
|
||||||
@@ -256,7 +256,10 @@ If set to "playlist", Search engine will perform searching in current MPD playli
|
|||||||
If enabled, screens' names and their keybindings will be shown in header window until key is pressed, otherwise they won't be displayed at all.
|
If enabled, screens' names and their keybindings will be shown in header window until key is pressed, otherwise they won't be displayed at all.
|
||||||
.TP
|
.TP
|
||||||
.B screen_switcher_mode = SWITCHER_MODE
|
.B screen_switcher_mode = SWITCHER_MODE
|
||||||
If set to "previous", key_screen_switcher will switch between current and last used screen. If set to "sequence: user_defined_sequence", it will switch between given sequence of screens. Syntax clarification can be found in example config file.
|
If set to "previous", key_screen_switcher will switch between current and last used screen. If set to "screen1,...screenN" (a list of screens) it will switch between them in a sequence. Syntax clarification can be found in example config file.
|
||||||
|
.TP
|
||||||
|
.B startup_screen = SCREEN_NAME
|
||||||
|
Screen that has to be displayed at start (playlist by default).
|
||||||
.TP
|
.TP
|
||||||
.B locked_screen_width_part = 20-80
|
.B locked_screen_width_part = 20-80
|
||||||
If you want to lock a screen, ncmpcpp asks for % of locked screen's width to be reserved before that and provides a default value, which is the one you can set here.
|
If you want to lock a screen, ncmpcpp asks for % of locked screen's width to be reserved before that and provides a default value, which is the one you can set here.
|
||||||
@@ -264,9 +267,6 @@ If you want to lock a screen, ncmpcpp asks for % of locked screen's width to be
|
|||||||
.B ask_for_locked_screen_width_part = yes/no
|
.B ask_for_locked_screen_width_part = yes/no
|
||||||
If enabled, ncmpcpp will ask for % of locked screen's width each time you want to lock a screen. If you disable that, it'll silently attempt to use default value.
|
If enabled, ncmpcpp will ask for % of locked screen's width each time you want to lock a screen. If you disable that, it'll silently attempt to use default value.
|
||||||
.TP
|
.TP
|
||||||
.B startup_screen = SCREEN_NUMBER
|
|
||||||
Screen that has to be displayed at start (playlist by default).
|
|
||||||
.TP
|
|
||||||
.B jump_to_now_playing_song_at_start = yes/no
|
.B jump_to_now_playing_song_at_start = yes/no
|
||||||
If enabled, ncmpcpp will jump at start to now playing song if mpd is playing or paused.
|
If enabled, ncmpcpp will jump at start to now playing song if mpd is playing or paused.
|
||||||
.TP
|
.TP
|
||||||
|
|||||||
@@ -2213,11 +2213,13 @@ void NextScreen::run()
|
|||||||
}
|
}
|
||||||
else if (!Config.screens_seq.empty())
|
else if (!Config.screens_seq.empty())
|
||||||
{
|
{
|
||||||
auto screen = std::find(Config.screens_seq.begin(), Config.screens_seq.end(), myScreen);
|
auto screen_type = std::find(Config.screens_seq.begin(), Config.screens_seq.end(),
|
||||||
if (++screen == Config.screens_seq.end())
|
myScreen->type()
|
||||||
Config.screens_seq.front()->switchTo();
|
);
|
||||||
|
if (++screen_type == Config.screens_seq.end())
|
||||||
|
toScreen(Config.screens_seq.front())->switchTo();
|
||||||
else
|
else
|
||||||
(*screen)->switchTo();
|
toScreen(*screen_type)->switchTo();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2230,11 +2232,13 @@ void PreviousScreen::run()
|
|||||||
}
|
}
|
||||||
else if (!Config.screens_seq.empty())
|
else if (!Config.screens_seq.empty())
|
||||||
{
|
{
|
||||||
auto screen = std::find(Config.screens_seq.begin(), Config.screens_seq.end(), myScreen);
|
auto screen_type = std::find(Config.screens_seq.begin(), Config.screens_seq.end(),
|
||||||
if (screen == Config.screens_seq.begin())
|
myScreen->type()
|
||||||
Config.screens_seq.back()->switchTo();
|
);
|
||||||
|
if (screen_type == Config.screens_seq.begin())
|
||||||
|
toScreen(Config.screens_seq.back())->switchTo();
|
||||||
else
|
else
|
||||||
(*--screen)->switchTo();
|
toScreen(*--screen_type)->switchTo();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,29 +18,13 @@
|
|||||||
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
|
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include <cassert>
|
|
||||||
#include <cstring>
|
|
||||||
#include <boost/algorithm/string/replace.hpp>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
#include "actions.h"
|
|
||||||
#include "charset.h"
|
|
||||||
#include "cmdargs.h"
|
#include "cmdargs.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "mpdpp.h"
|
#include "mpdpp.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
|
|
||||||
#include "help.h"
|
|
||||||
#include "playlist.h"
|
|
||||||
#include "browser.h"
|
|
||||||
#include "search_engine.h"
|
|
||||||
#include "media_library.h"
|
|
||||||
#include "playlist_editor.h"
|
|
||||||
#include "tag_editor.h"
|
|
||||||
#include "outputs.h"
|
|
||||||
#include "visualizer.h"
|
|
||||||
#include "clock.h"
|
|
||||||
|
|
||||||
void ParseArgv(int argc, char **argv)
|
void ParseArgv(int argc, char **argv)
|
||||||
{
|
{
|
||||||
for (int i = 1; i < argc; ++i)
|
for (int i = 1; i < argc; ++i)
|
||||||
@@ -122,39 +106,14 @@ void ParseArgv(int argc, char **argv)
|
|||||||
|
|
||||||
if (!strcmp(argv[i], "-s") || !strcmp(argv[i], "--screen"))
|
if (!strcmp(argv[i], "-s") || !strcmp(argv[i], "--screen"))
|
||||||
{
|
{
|
||||||
if (++i == argc) {
|
if (++i == argc)
|
||||||
|
{
|
||||||
std::cerr << "No screen specified" << std::endl;
|
std::cerr << "No screen specified" << std::endl;
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
if (!strcmp(argv[i], "help"))
|
Config.startup_screen_type = stringtoStartupScreenType(argv[i]);
|
||||||
Config.startup_screen = myHelp;
|
if (Config.startup_screen_type == ScreenType::Unknown)
|
||||||
else if (!strcmp(argv[i], "playlist"))
|
{
|
||||||
Config.startup_screen = myPlaylist;
|
|
||||||
else if (!strcmp(argv[i], "browser"))
|
|
||||||
Config.startup_screen = myBrowser;
|
|
||||||
else if (!strcmp(argv[i], "search-engine"))
|
|
||||||
Config.startup_screen = mySearcher;
|
|
||||||
else if (!strcmp(argv[i], "media-library"))
|
|
||||||
Config.startup_screen = myLibrary;
|
|
||||||
else if (!strcmp(argv[i], "playlist-editor"))
|
|
||||||
Config.startup_screen = myPlaylistEditor;
|
|
||||||
# ifdef HAVE_TAGLIB_H
|
|
||||||
else if (!strcmp(argv[i], "tag-editor"))
|
|
||||||
Config.startup_screen = myTagEditor;
|
|
||||||
# endif // HAVE_TAGLIB_H
|
|
||||||
# ifdef ENABLE_OUTPUTS
|
|
||||||
else if (!strcmp(argv[i], "outputs"))
|
|
||||||
Config.startup_screen = myOutputs;
|
|
||||||
# endif // ENABLE_OUTPUTS
|
|
||||||
# ifdef ENABLE_VISUALIZER
|
|
||||||
else if (!strcmp(argv[i], "visualizer"))
|
|
||||||
Config.startup_screen = myVisualizer;
|
|
||||||
# endif // ENABLE_VISUALIZER
|
|
||||||
# ifdef ENABLE_CLOCK
|
|
||||||
else if (!strcmp(argv[i], "clock"))
|
|
||||||
Config.startup_screen = myClock;
|
|
||||||
# endif // ENABLE_CLOCK
|
|
||||||
else {
|
|
||||||
std::cerr << "Invalid screen: " << argv[i] << std::endl;
|
std::cerr << "Invalid screen: " << argv[i] << std::endl;
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -206,8 +206,8 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// go to startup screen
|
// go to startup screen
|
||||||
if (Config.startup_screen != myScreen)
|
if (Config.startup_screen_type != myScreen->type())
|
||||||
Config.startup_screen->switchTo();
|
toScreen(Config.startup_screen_type)->switchTo();
|
||||||
|
|
||||||
myBrowser->fetchSupportedExtensions();
|
myBrowser->fetchSupportedExtensions();
|
||||||
# ifdef ENABLE_OUTPUTS
|
# ifdef ENABLE_OUTPUTS
|
||||||
|
|||||||
@@ -18,43 +18,72 @@
|
|||||||
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
|
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
#include "screen_type.h"
|
#include "screen_type.h"
|
||||||
|
|
||||||
ScreenType stringtoStarterScreenType(const std::string &s)
|
#include "browser.h"
|
||||||
|
#include "clock.h"
|
||||||
|
#include "help.h"
|
||||||
|
#include "lastfm.h"
|
||||||
|
#include "lyrics.h"
|
||||||
|
#include "media_library.h"
|
||||||
|
#include "outputs.h"
|
||||||
|
#include "playlist.h"
|
||||||
|
#include "playlist_editor.h"
|
||||||
|
#include "search_engine.h"
|
||||||
|
#include "sel_items_adder.h"
|
||||||
|
#include "server_info.h"
|
||||||
|
#include "song_info.h"
|
||||||
|
#include "sort_playlist.h"
|
||||||
|
#include "tag_editor.h"
|
||||||
|
#include "tiny_tag_editor.h"
|
||||||
|
#include "visualizer.h"
|
||||||
|
|
||||||
|
ScreenType stringtoStartupScreenType(const std::string &s)
|
||||||
{
|
{
|
||||||
ScreenType result = ScreenType::Unknown;
|
ScreenType result = ScreenType::Unknown;
|
||||||
if (s == "browser")
|
if (s == "browser")
|
||||||
result = ScreenType::Browser;
|
result = ScreenType::Browser;
|
||||||
|
# ifdef ENABLE_CLOCK
|
||||||
else if (s == "clock")
|
else if (s == "clock")
|
||||||
result = ScreenType::Clock;
|
result = ScreenType::Clock;
|
||||||
|
# endif // ENABLE_CLOCK
|
||||||
else if (s == "help")
|
else if (s == "help")
|
||||||
result = ScreenType::Help;
|
result = ScreenType::Help;
|
||||||
else if (s == "media_library")
|
else if (s == "media_library")
|
||||||
result = ScreenType::MediaLibrary;
|
result = ScreenType::MediaLibrary;
|
||||||
|
# ifdef ENABLE_OUTPUTS
|
||||||
else if (s == "outputs")
|
else if (s == "outputs")
|
||||||
result = ScreenType::Outputs;
|
result = ScreenType::Outputs;
|
||||||
|
# endif // ENABLE_OUTPUTS
|
||||||
else if (s == "playlist")
|
else if (s == "playlist")
|
||||||
result = ScreenType::Playlist;
|
result = ScreenType::Playlist;
|
||||||
else if (s == "playlist_editor")
|
else if (s == "playlist_editor")
|
||||||
result = ScreenType::PlaylistEditor;
|
result = ScreenType::PlaylistEditor;
|
||||||
else if (s == "search_engine")
|
else if (s == "search_engine")
|
||||||
result = ScreenType::SearchEngine;
|
result = ScreenType::SearchEngine;
|
||||||
|
# ifdef HAVE_TAGLIB_H
|
||||||
else if (s == "tag_editor")
|
else if (s == "tag_editor")
|
||||||
result = ScreenType::TagEditor;
|
result = ScreenType::TagEditor;
|
||||||
|
# endif // HAVE_TAGLIB_H
|
||||||
|
# ifdef ENABLE_VISUALIZER
|
||||||
else if (s == "visualizer")
|
else if (s == "visualizer")
|
||||||
result = ScreenType::Visualizer;
|
result = ScreenType::Visualizer;
|
||||||
|
# endif // ENABLE_VISUALIZER
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
ScreenType stringToScreenType(const std::string &s)
|
ScreenType stringToScreenType(const std::string &s)
|
||||||
{
|
{
|
||||||
ScreenType result = stringtoStarterScreenType(s);
|
ScreenType result = stringtoStartupScreenType(s);
|
||||||
if (result == ScreenType::Unknown)
|
if (result == ScreenType::Unknown)
|
||||||
{
|
{
|
||||||
if (s == "last_fm")
|
if (s == "lyrics")
|
||||||
result = ScreenType::Lastfm;
|
|
||||||
else if (s == "lyrics")
|
|
||||||
result = ScreenType::Lyrics;
|
result = ScreenType::Lyrics;
|
||||||
|
# ifdef HAVE_CURL_CURL_H
|
||||||
|
else if (s == "last_fm")
|
||||||
|
result = ScreenType::Lastfm;
|
||||||
|
# endif // HAVE_CURL_CURL_H
|
||||||
else if (s == "selected_items_adder")
|
else if (s == "selected_items_adder")
|
||||||
result = ScreenType::SelectedItemsAdder;
|
result = ScreenType::SelectedItemsAdder;
|
||||||
else if (s == "server_info")
|
else if (s == "server_info")
|
||||||
@@ -63,8 +92,61 @@ ScreenType stringToScreenType(const std::string &s)
|
|||||||
result = ScreenType::SongInfo;
|
result = ScreenType::SongInfo;
|
||||||
else if (s == "sort_playlist_dialog")
|
else if (s == "sort_playlist_dialog")
|
||||||
result = ScreenType::SortPlaylistDialog;
|
result = ScreenType::SortPlaylistDialog;
|
||||||
|
# ifdef HAVE_TAGLIB_H
|
||||||
else if (s == "tiny_tag_editor")
|
else if (s == "tiny_tag_editor")
|
||||||
result = ScreenType::TinyTagEditor;
|
result = ScreenType::TinyTagEditor;
|
||||||
|
# endif // HAVE_TAGLIB_H
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BaseScreen *toScreen(ScreenType st)
|
||||||
|
{
|
||||||
|
switch (st)
|
||||||
|
{
|
||||||
|
case ScreenType::Browser:
|
||||||
|
return myBrowser;
|
||||||
|
# ifdef ENABLE_CLOCK
|
||||||
|
case ScreenType::Clock:
|
||||||
|
return myClock;
|
||||||
|
# endif // ENABLE_CLOCK
|
||||||
|
case ScreenType::Help:
|
||||||
|
return myHelp;
|
||||||
|
case ScreenType::Lastfm:
|
||||||
|
return myLastfm;
|
||||||
|
case ScreenType::Lyrics:
|
||||||
|
return myLyrics;
|
||||||
|
case ScreenType::MediaLibrary:
|
||||||
|
return myLibrary;
|
||||||
|
# ifdef ENABLE_OUTPUTS
|
||||||
|
case ScreenType::Outputs:
|
||||||
|
return myOutputs;
|
||||||
|
# endif // ENABLE_OUTPUTS
|
||||||
|
case ScreenType::Playlist:
|
||||||
|
return myPlaylist;
|
||||||
|
case ScreenType::PlaylistEditor:
|
||||||
|
return myPlaylistEditor;
|
||||||
|
case ScreenType::SearchEngine:
|
||||||
|
return mySearcher;
|
||||||
|
case ScreenType::SelectedItemsAdder:
|
||||||
|
return mySelectedItemsAdder;
|
||||||
|
case ScreenType::ServerInfo:
|
||||||
|
return myServerInfo;
|
||||||
|
case ScreenType::SongInfo:
|
||||||
|
return mySongInfo;
|
||||||
|
case ScreenType::SortPlaylistDialog:
|
||||||
|
return mySortPlaylistDialog;
|
||||||
|
# ifdef HAVE_TAGLIB_H
|
||||||
|
case ScreenType::TagEditor:
|
||||||
|
return myTagEditor;
|
||||||
|
case ScreenType::TinyTagEditor:
|
||||||
|
return myTinyTagEditor;
|
||||||
|
# endif // HAVE_TAGLIB_H
|
||||||
|
# ifdef ENABLE_VISUALIZER
|
||||||
|
case ScreenType::Visualizer:
|
||||||
|
return myVisualizer;
|
||||||
|
# endif // ENABLE_VISUALIZER
|
||||||
|
default:
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -22,15 +22,25 @@
|
|||||||
#define NCMPCPP_SCREEN_TYPE_H
|
#define NCMPCPP_SCREEN_TYPE_H
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
// forward declaration
|
||||||
|
struct BaseScreen;
|
||||||
|
|
||||||
enum class ScreenType {
|
enum class ScreenType {
|
||||||
Browser,
|
Browser,
|
||||||
|
# ifdef ENABLE_CLOCK
|
||||||
Clock,
|
Clock,
|
||||||
|
# endif // ENABLE_CLOCK
|
||||||
Help,
|
Help,
|
||||||
|
# ifdef HAVE_CURL_CURL_H
|
||||||
Lastfm,
|
Lastfm,
|
||||||
|
# endif // HAVE_CURL_CURL_H
|
||||||
Lyrics,
|
Lyrics,
|
||||||
MediaLibrary,
|
MediaLibrary,
|
||||||
|
# ifdef ENABLE_OUTPUTS
|
||||||
Outputs,
|
Outputs,
|
||||||
|
# endif // ENABLE_OUTPUTS
|
||||||
Playlist,
|
Playlist,
|
||||||
PlaylistEditor,
|
PlaylistEditor,
|
||||||
SearchEngine,
|
SearchEngine,
|
||||||
@@ -38,13 +48,19 @@ enum class ScreenType {
|
|||||||
ServerInfo,
|
ServerInfo,
|
||||||
SongInfo,
|
SongInfo,
|
||||||
SortPlaylistDialog,
|
SortPlaylistDialog,
|
||||||
|
# ifdef HAVE_TAGLIB_H
|
||||||
TagEditor,
|
TagEditor,
|
||||||
TinyTagEditor,
|
TinyTagEditor,
|
||||||
|
# endif // HAVE_TAGLIB_H
|
||||||
Unknown,
|
Unknown,
|
||||||
|
# ifdef ENABLE_VISUALIZER
|
||||||
Visualizer,
|
Visualizer,
|
||||||
|
# endif // ENABLE_VISUALIZER
|
||||||
};
|
};
|
||||||
|
|
||||||
ScreenType stringtoStarterScreenType(const std::string &s);
|
ScreenType stringtoStartupScreenType(const std::string &s);
|
||||||
ScreenType stringToScreenType(const std::string &s);
|
ScreenType stringToScreenType(const std::string &s);
|
||||||
|
|
||||||
|
BaseScreen *toScreen(ScreenType st);
|
||||||
|
|
||||||
#endif // NCMPCPP_SCREEN_TYPE_H
|
#endif // NCMPCPP_SCREEN_TYPE_H
|
||||||
|
|||||||
@@ -60,43 +60,6 @@ Configuration Config;
|
|||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
ScreenRef intToScreen(int n)
|
|
||||||
{
|
|
||||||
switch (n)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
return myHelp;
|
|
||||||
case 2:
|
|
||||||
return myPlaylist;
|
|
||||||
case 3:
|
|
||||||
return myBrowser;
|
|
||||||
case 4:
|
|
||||||
return mySearcher;
|
|
||||||
case 5:
|
|
||||||
return myLibrary;
|
|
||||||
case 6:
|
|
||||||
return myPlaylistEditor;
|
|
||||||
# ifdef HAVE_TAGLIB_H
|
|
||||||
case 7:
|
|
||||||
return myTagEditor;
|
|
||||||
# endif // HAVE_TAGLIB_H
|
|
||||||
# ifdef ENABLE_OUTPUTS
|
|
||||||
case 8:
|
|
||||||
return myOutputs;
|
|
||||||
# endif // ENABLE_OUTPUTS
|
|
||||||
# ifdef ENABLE_VISUALIZER
|
|
||||||
case 9:
|
|
||||||
return myVisualizer;
|
|
||||||
# endif // ENABLE_VISUALIZER
|
|
||||||
# ifdef ENABLE_CLOCK
|
|
||||||
case 10:
|
|
||||||
return myClock;
|
|
||||||
# endif // ENABLE_CLOCK
|
|
||||||
default:
|
|
||||||
return ScreenRef();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string GetOptionName(const std::string &s)
|
std::string GetOptionName(const std::string &s)
|
||||||
{
|
{
|
||||||
size_t equal = s.find('=');
|
size_t equal = s.find('=');
|
||||||
@@ -241,11 +204,11 @@ void Configuration::SetDefaults()
|
|||||||
if (system_encoding == "UTF-8") // mpd uses utf-8 by default so no need to convert
|
if (system_encoding == "UTF-8") // mpd uses utf-8 by default so no need to convert
|
||||||
system_encoding.clear();
|
system_encoding.clear();
|
||||||
# endif // HAVE_LANGINFO_H
|
# endif // HAVE_LANGINFO_H
|
||||||
startup_screen = myPlaylist;
|
startup_screen_type = ScreenType::Playlist;
|
||||||
browser_sort_mode = smName;
|
browser_sort_mode = smName;
|
||||||
// default screens sequence
|
// default screens sequence
|
||||||
screens_seq.push_back(myPlaylist);
|
screens_seq.push_back(ScreenType::Playlist);
|
||||||
screens_seq.push_back(myBrowser);
|
screens_seq.push_back(ScreenType::Browser);
|
||||||
}
|
}
|
||||||
|
|
||||||
Configuration::Configuration()
|
Configuration::Configuration()
|
||||||
@@ -625,24 +588,20 @@ void Configuration::Read()
|
|||||||
}
|
}
|
||||||
else if (name == "screen_switcher_mode")
|
else if (name == "screen_switcher_mode")
|
||||||
{
|
{
|
||||||
if (v.find("previous") != std::string::npos)
|
if (v == "previous")
|
||||||
{
|
|
||||||
screen_switcher_previous = true;
|
screen_switcher_previous = true;
|
||||||
}
|
else
|
||||||
else if (v.find("sequence") != std::string::npos)
|
|
||||||
{
|
{
|
||||||
screen_switcher_previous = false;
|
screen_switcher_previous = false;
|
||||||
screens_seq.clear();
|
screens_seq.clear();
|
||||||
for (std::string::const_iterator it = v.begin(); it != v.end(); )
|
boost::sregex_token_iterator i(v.begin(), v.end(), boost::regex("\\w+")), j;
|
||||||
|
for (; i != j; ++i)
|
||||||
{
|
{
|
||||||
while (it != v.end() && !isdigit(*it))
|
auto screen = stringtoStartupScreenType(*i);
|
||||||
++it;
|
if (screen != ScreenType::Unknown)
|
||||||
if (it == v.end())
|
|
||||||
break;
|
|
||||||
if (auto screen = intToScreen(atoi(&*it)))
|
|
||||||
screens_seq.push_back(screen);
|
screens_seq.push_back(screen);
|
||||||
while (it != v.end() && isdigit(*it))
|
else
|
||||||
++it;
|
std::cerr << "screen_switcher_mode: unknown screen: " << *i << "\n";
|
||||||
}
|
}
|
||||||
// throw away duplicates
|
// throw away duplicates
|
||||||
screens_seq.unique();
|
screens_seq.unique();
|
||||||
@@ -650,9 +609,9 @@ void Configuration::Read()
|
|||||||
}
|
}
|
||||||
else if (name == "startup_screen")
|
else if (name == "startup_screen")
|
||||||
{
|
{
|
||||||
startup_screen = intToScreen(atoi(v.c_str()));
|
startup_screen_type = stringtoStartupScreenType(v);
|
||||||
if (!startup_screen)
|
if (startup_screen_type == ScreenType::Unknown)
|
||||||
startup_screen = myPlaylist;
|
startup_screen_type = ScreenType::Playlist;
|
||||||
}
|
}
|
||||||
else if (name == "autocenter_mode")
|
else if (name == "autocenter_mode")
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
#include <mpd/client.h>
|
#include <mpd/client.h>
|
||||||
#include "actions.h"
|
#include "actions.h"
|
||||||
|
#include "screen_type.h"
|
||||||
#include "strbuffer.h"
|
#include "strbuffer.h"
|
||||||
|
|
||||||
struct BaseScreen; // forward declaration for screens sequence
|
struct BaseScreen; // forward declaration for screens sequence
|
||||||
@@ -46,27 +47,6 @@ struct Column
|
|||||||
bool display_empty_tag;
|
bool display_empty_tag;
|
||||||
};
|
};
|
||||||
|
|
||||||
// FIXME: temporary hack
|
|
||||||
struct ScreenRef
|
|
||||||
{
|
|
||||||
ScreenRef() : m_ptr(0) { }
|
|
||||||
template <typename ScreenT>
|
|
||||||
ScreenRef(ScreenT *&ptr) : m_ptr(reinterpret_cast<BaseScreen **>(&ptr)) { }
|
|
||||||
|
|
||||||
BaseScreen &operator*() const { return **m_ptr; }
|
|
||||||
BaseScreen *operator->() const { return *m_ptr; }
|
|
||||||
|
|
||||||
bool operator==(const ScreenRef &rhs) const { return m_ptr == rhs.m_ptr; }
|
|
||||||
bool operator!=(const ScreenRef &rhs) const { return m_ptr != rhs.m_ptr; }
|
|
||||||
bool operator==(const BaseScreen *rhs) const { return *m_ptr == rhs; }
|
|
||||||
bool operator!=(const BaseScreen *rhs) const { return *m_ptr != rhs; }
|
|
||||||
|
|
||||||
operator bool() { return m_ptr != 0; }
|
|
||||||
|
|
||||||
private:
|
|
||||||
BaseScreen **m_ptr;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Configuration
|
struct Configuration
|
||||||
{
|
{
|
||||||
Configuration();
|
Configuration();
|
||||||
@@ -208,8 +188,8 @@ struct Configuration
|
|||||||
size_t now_playing_prefix_length;
|
size_t now_playing_prefix_length;
|
||||||
size_t now_playing_suffix_length;
|
size_t now_playing_suffix_length;
|
||||||
|
|
||||||
ScreenRef startup_screen;
|
ScreenType startup_screen_type;
|
||||||
std::list<ScreenRef> screens_seq;
|
std::list<ScreenType> screens_seq;
|
||||||
|
|
||||||
SortMode browser_sort_mode;
|
SortMode browser_sort_mode;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user