add custom keys configuration
This commit is contained in:
@@ -61,6 +61,64 @@ extern string UNKNOWN_ARTIST;
|
||||
extern string UNKNOWN_TITLE;
|
||||
extern string UNKNOWN_ALBUM;
|
||||
|
||||
string DisplayKeys(int *key, int size)
|
||||
{
|
||||
bool backspace = 1;
|
||||
string result = "\t";
|
||||
for (int i = 0; i < size; i++)
|
||||
{
|
||||
if (key[i] == null_key);
|
||||
else if (key[i] == 259)
|
||||
result += "Up";
|
||||
else if (key[i] == 258)
|
||||
result += "Down";
|
||||
else if (key[i] == 339)
|
||||
result += "Page Up";
|
||||
else if (key[i] == 338)
|
||||
result += "Page Down";
|
||||
else if (key[i] == 262)
|
||||
result += "Home";
|
||||
else if (key[i] == 360)
|
||||
result += "End";
|
||||
else if (key[i] == 32)
|
||||
result += "Space";
|
||||
else if (key[i] == 10)
|
||||
result += "Enter";
|
||||
else if (key[i] == 330)
|
||||
result += "Delete";
|
||||
else if (key[i] == 261)
|
||||
result += "Right";
|
||||
else if (key[i] == 260)
|
||||
result += "Left";
|
||||
else if (key[i] == 9)
|
||||
result += "Tab";
|
||||
else if (key[i] >= 1 && key[i] <= 26)
|
||||
{
|
||||
result += "Ctrl-";
|
||||
result += key[i]+64;
|
||||
}
|
||||
else if (key[i] >= 265 && key[i] <= 276)
|
||||
{
|
||||
result += "F";
|
||||
result += key[i]-216;
|
||||
}
|
||||
else if ((key[i] == 263 || key[i] == 127) && !backspace);
|
||||
else if ((key[i] == 263 || key[i] == 127) && backspace)
|
||||
{
|
||||
result += "Backspace";
|
||||
backspace = 0;
|
||||
}
|
||||
else
|
||||
result += key[i];
|
||||
result += " ";
|
||||
}
|
||||
if (result.length() > 12)
|
||||
result = result.substr(0, 12);
|
||||
for (int i = result.length(); i <= 12; result += " ", i++);
|
||||
result += ": ";
|
||||
return result;
|
||||
}
|
||||
|
||||
bool Keypressed(int in, const int *key)
|
||||
{
|
||||
return in == key[0] || in == key[1];
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
|
||||
extern ncmpcpp_config Config;
|
||||
|
||||
string DisplayKeys(int *, int = 2);
|
||||
bool Keypressed(int, const int *);
|
||||
bool SortSongsByTrack(Song *, Song *);
|
||||
bool CaseInsensitiveComparison(string, string);
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
const string playlist_max_message = "playlist is at the max size";
|
||||
|
||||
MPDConnection::MPDConnection() : isConnected(0), MPD_HOST("localhost"), MPD_PORT(6600), MPD_TIMEOUT(30), itsUpdater(0), itsErrorHandler(0), itsMaxPlaylistLength(-1)
|
||||
MPDConnection::MPDConnection() : isConnected(0), itsMaxPlaylistLength(-1), MPD_HOST("localhost"), MPD_PORT(6600), MPD_TIMEOUT(15), itsUpdater(0), itsErrorHandler(0)
|
||||
{
|
||||
itsConnection = 0;
|
||||
itsCurrentStats = 0;
|
||||
@@ -61,7 +61,7 @@ bool MPDConnection::Connect()
|
||||
return true;
|
||||
}
|
||||
|
||||
bool MPDConnection::Connected()
|
||||
bool MPDConnection::Connected() const
|
||||
{
|
||||
return isConnected;
|
||||
}
|
||||
@@ -88,7 +88,7 @@ void MPDConnection::Disconnect()
|
||||
ClearQueue();
|
||||
}
|
||||
|
||||
void MPDConnection::SendPassword()
|
||||
void MPDConnection::SendPassword() const
|
||||
{
|
||||
mpd_sendPasswordCommand(itsConnection, MPD_PASSWORD.c_str());
|
||||
mpd_finishCommand(itsConnection);
|
||||
@@ -475,7 +475,7 @@ bool MPDConnection::CommitQueue()
|
||||
return retval;
|
||||
}
|
||||
|
||||
void MPDConnection::DeletePlaylist(const string &name)
|
||||
void MPDConnection::DeletePlaylist(const string &name) const
|
||||
{
|
||||
if (isConnected)
|
||||
{
|
||||
@@ -484,7 +484,7 @@ void MPDConnection::DeletePlaylist(const string &name)
|
||||
}
|
||||
}
|
||||
|
||||
bool MPDConnection::SavePlaylist(const string &name)
|
||||
bool MPDConnection::SavePlaylist(const string &name) const
|
||||
{
|
||||
if (isConnected)
|
||||
{
|
||||
|
||||
15
src/mpdpp.h
15
src/mpdpp.h
@@ -76,14 +76,14 @@ class MPDConnection
|
||||
~MPDConnection();
|
||||
|
||||
bool Connect();
|
||||
bool Connected();
|
||||
bool Connected() const;
|
||||
void Disconnect();
|
||||
|
||||
void SetHostname(string hostname) { MPD_HOST = hostname; }
|
||||
void SetPort(int port) { MPD_PORT = port; }
|
||||
void SetTimeout(int timeout) { MPD_TIMEOUT = timeout; }
|
||||
void SetPassword(string password) { MPD_PASSWORD = password; }
|
||||
void SendPassword();
|
||||
void SendPassword() const;
|
||||
|
||||
void SetStatusUpdater(StatusUpdater, void *);
|
||||
void SetErrorHandler(ErrorHandler, void *);
|
||||
@@ -112,7 +112,7 @@ class MPDConnection
|
||||
long long GetOldPlaylistID() const { return isConnected && itsOldStatus ? itsOldStatus->playlist : -1; }
|
||||
int GetElapsedTime() const { return isConnected && itsCurrentStatus ? itsCurrentStatus->elapsedTime : -1; }
|
||||
|
||||
unsigned int GetMaxPlaylistLength() { return itsMaxPlaylistLength; }
|
||||
unsigned int GetMaxPlaylistLength() const { return itsMaxPlaylistLength; }
|
||||
int GetPlaylistLength() const { return isConnected && itsCurrentStatus ? itsCurrentStatus->playlistLength : 0; }
|
||||
void GetPlaylistChanges(long long, SongList &) const;
|
||||
|
||||
@@ -136,8 +136,8 @@ class MPDConnection
|
||||
void QueueDeleteSongId(int);
|
||||
bool CommitQueue();
|
||||
|
||||
void DeletePlaylist(const string &);
|
||||
bool SavePlaylist(const string &);
|
||||
void DeletePlaylist(const string &) const;
|
||||
bool SavePlaylist(const string &) const;
|
||||
|
||||
void StartSearch(bool) const;
|
||||
void AddSearch(mpd_TagItems, const string &) const;
|
||||
@@ -151,11 +151,13 @@ class MPDConnection
|
||||
private:
|
||||
int CheckForErrors();
|
||||
void ClearQueue();
|
||||
string itsLastErrorMessage;
|
||||
|
||||
mpd_Connection *itsConnection;
|
||||
bool isConnected;
|
||||
|
||||
string itsLastErrorMessage;
|
||||
unsigned int itsMaxPlaylistLength;
|
||||
|
||||
string MPD_HOST;
|
||||
int MPD_PORT;
|
||||
int MPD_TIMEOUT;
|
||||
@@ -172,7 +174,6 @@ class MPDConnection
|
||||
void *itsErrorHandlerUserdata;
|
||||
|
||||
std::vector<QueueCommand *> itsQueue;
|
||||
unsigned int itsMaxPlaylistLength;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
119
src/ncmpcpp.cpp
119
src/ncmpcpp.cpp
@@ -52,10 +52,10 @@
|
||||
|
||||
#ifdef HAVE_TAGLIB_H
|
||||
const string tag_screen = "Tag editor";
|
||||
const string tag_screen_keydesc = "\te : Edit song's tags\n";
|
||||
const string tag_screen_keydesc = "Edit song's tags\n";
|
||||
#else
|
||||
const string tag_screen = "Tag info";
|
||||
const string tag_screen_keydesc = "\te : Show song's tags\n";
|
||||
const string tag_screen_keydesc = "Show song's tags\n";
|
||||
#endif
|
||||
|
||||
ncmpcpp_config Config;
|
||||
@@ -149,6 +149,7 @@ int main(int argc, char *argv[])
|
||||
DefaultConfiguration(Config);
|
||||
DefaultKeys(Key);
|
||||
ReadConfiguration(Config);
|
||||
ReadKeys(Key);
|
||||
DefineEmptyTags();
|
||||
|
||||
Mpd = new MPDConnection;
|
||||
@@ -207,80 +208,80 @@ int main(int argc, char *argv[])
|
||||
sLyrics = new Scrollpad(sHelp->EmptyClone());
|
||||
|
||||
sHelp->Add(" [b]Keys - Movement\n -----------------------------------------[/b]\n");
|
||||
sHelp->Add("\tUp k : Move Cursor up\n");
|
||||
sHelp->Add("\tDown j : Move Cursor down\n");
|
||||
sHelp->Add("\tPage up : Page up\n");
|
||||
sHelp->Add("\tPage down : Page down\n");
|
||||
sHelp->Add("\tHome : Home\n");
|
||||
sHelp->Add("\tEnd : End\n\n");
|
||||
sHelp->Add(DisplayKeys(Key.Up) + "Move Cursor up\n");
|
||||
sHelp->Add(DisplayKeys(Key.Down) + "Move Cursor down\n");
|
||||
sHelp->Add(DisplayKeys(Key.PageUp) + "Page up\n");
|
||||
sHelp->Add(DisplayKeys(Key.PageDown) + "Page down\n");
|
||||
sHelp->Add(DisplayKeys(Key.Home) + "Home\n");
|
||||
sHelp->Add(DisplayKeys(Key.End) + "End\n\n");
|
||||
|
||||
sHelp->Add("\tTab : Switch between playlist and browser\n");
|
||||
sHelp->Add("\t1 : Help screen\n");
|
||||
sHelp->Add("\t2 : Playlist screen\n");
|
||||
sHelp->Add("\t3 : Browse screen\n");
|
||||
sHelp->Add("\t4 : Search engine\n");
|
||||
sHelp->Add("\t5 : Media library\n\n\n");
|
||||
sHelp->Add(DisplayKeys(Key.ScreenSwitcher) + "Switch between playlist and browser\n");
|
||||
sHelp->Add(DisplayKeys(Key.Help) + "Help screen\n");
|
||||
sHelp->Add(DisplayKeys(Key.Playlist) + "Playlist screen\n");
|
||||
sHelp->Add(DisplayKeys(Key.Browser) + "Browse screen\n");
|
||||
sHelp->Add(DisplayKeys(Key.SearchEngine) + "Search engine\n");
|
||||
sHelp->Add(DisplayKeys(Key.MediaLibrary) + "Media library\n\n\n");
|
||||
|
||||
sHelp->Add(" [b]Keys - Global\n -----------------------------------------[/b]\n");
|
||||
sHelp->Add("\ts : Stop\n");
|
||||
sHelp->Add("\tP : Pause\n");
|
||||
sHelp->Add("\t> : Next track\n");
|
||||
sHelp->Add("\t< : Previous track\n");
|
||||
sHelp->Add("\tf : Seek forward\n");
|
||||
sHelp->Add("\tb : Seek backward\n");
|
||||
sHelp->Add("\t- Left : Decrease volume\n");
|
||||
sHelp->Add("\t+ Right : Increase volume\n\n");
|
||||
sHelp->Add(DisplayKeys(Key.Stop) + "Stop\n");
|
||||
sHelp->Add(DisplayKeys(Key.Pause) + "Pause\n");
|
||||
sHelp->Add(DisplayKeys(Key.Next) + "Next track\n");
|
||||
sHelp->Add(DisplayKeys(Key.Prev) + "Previous track\n");
|
||||
sHelp->Add(DisplayKeys(Key.SeekForward) + "Seek forward\n");
|
||||
sHelp->Add(DisplayKeys(Key.SeekBackward) + "Seek backward\n");
|
||||
sHelp->Add(DisplayKeys(Key.VolumeDown) + "Decrease volume\n");
|
||||
sHelp->Add(DisplayKeys(Key.VolumeUp) + "Increase volume\n\n");
|
||||
|
||||
sHelp->Add("\tr : Toggle repeat mode\n");
|
||||
sHelp->Add("\tz : Toggle random mode\n");
|
||||
sHelp->Add("\tZ : Shuffle playlist\n");
|
||||
sHelp->Add("\tx : Toggle crossfade mode\n");
|
||||
sHelp->Add("\tX : Set crossfade\n");
|
||||
sHelp->Add("\tu : Start a music database update\n\n");
|
||||
sHelp->Add(DisplayKeys(Key.ToggleRepeat) + "Toggle repeat mode\n");
|
||||
sHelp->Add(DisplayKeys(Key.ToggleRandom) + "Toggle random mode\n");
|
||||
sHelp->Add(DisplayKeys(Key.Shuffle) + "Shuffle playlist\n");
|
||||
sHelp->Add(DisplayKeys(Key.ToggleCrossfade) + "Toggle crossfade mode\n");
|
||||
sHelp->Add(DisplayKeys(Key.SetCrossfade) + "Set crossfade\n");
|
||||
sHelp->Add(DisplayKeys(Key.UpdateDB) + "Start a music database update\n\n");
|
||||
|
||||
sHelp->Add("\t/ : Forward find\n");
|
||||
sHelp->Add("\t? : Backward find\n");
|
||||
sHelp->Add("\t, : Go to previous found position\n");
|
||||
sHelp->Add("\t. : Go to next found position\n");
|
||||
sHelp->Add(tag_screen_keydesc);
|
||||
sHelp->Add("\tg : Go to chosen position in current song\n");
|
||||
sHelp->Add("\tl : Show/hide song's lyrics\n\n");
|
||||
sHelp->Add(DisplayKeys(Key.FindForward) + "Forward find\n");
|
||||
sHelp->Add(DisplayKeys(Key.FindBackward) + "Backward find\n");
|
||||
sHelp->Add(DisplayKeys(Key.PrevFoundPosition) + "Go to previous found position\n");
|
||||
sHelp->Add(DisplayKeys(Key.NextFoundPosition) + "Go to next found position\n");
|
||||
sHelp->Add(DisplayKeys(Key.EditTags) + tag_screen_keydesc);
|
||||
sHelp->Add(DisplayKeys(Key.GoToPosition) + "Go to chosen position in current song\n");
|
||||
sHelp->Add(DisplayKeys(Key.Lyrics) + "Show/hide song's lyrics\n\n");
|
||||
|
||||
sHelp->Add("\tQ q : Quit\n\n\n");
|
||||
sHelp->Add(DisplayKeys(Key.Quit) + "Quit\n\n\n");
|
||||
|
||||
sHelp->Add(" [b]Keys - Playlist screen\n -----------------------------------------[/b]\n");
|
||||
sHelp->Add("\tEnter : Play\n");
|
||||
sHelp->Add("\tDelete d : Delete song from playlist\n");
|
||||
sHelp->Add("\tc : Clear whole playlist\n");
|
||||
sHelp->Add("\tC : Clear playlist but hold currently playing song\n");
|
||||
sHelp->Add("\tm : Move song up\n");
|
||||
sHelp->Add("\tn : Move song down\n");
|
||||
sHelp->Add("\tS : Save playlist\n");
|
||||
sHelp->Add("\to : Go to currently playing position\n");
|
||||
sHelp->Add("\tU : Toggle auto center mode\n\n\n");
|
||||
sHelp->Add(DisplayKeys(Key.Enter) + "Play\n");
|
||||
sHelp->Add(DisplayKeys(Key.Delete) + "Delete song from playlist\n");
|
||||
sHelp->Add(DisplayKeys(Key.Clear) + "Clear whole playlist\n");
|
||||
sHelp->Add(DisplayKeys(Key.Crop) + "Clear playlist but hold currently playing song\n");
|
||||
sHelp->Add(DisplayKeys(Key.MvSongUp) + "Move song up\n");
|
||||
sHelp->Add(DisplayKeys(Key.MvSongDown) + "Move song down\n");
|
||||
sHelp->Add(DisplayKeys(Key.SavePlaylist) + "Save playlist\n");
|
||||
sHelp->Add(DisplayKeys(Key.GoToNowPlaying) + "Go to currently playing position\n");
|
||||
sHelp->Add(DisplayKeys(Key.ToggleAutoCenter) + "Toggle auto center mode\n\n\n");
|
||||
|
||||
sHelp->Add(" [b]Keys - Browse screen\n -----------------------------------------[/b]\n");
|
||||
sHelp->Add("\tEnter : Enter directory/Add item to playlist and play\n");
|
||||
sHelp->Add("\tSpace : Add item to playlist\n");
|
||||
sHelp->Add("\tBackspace : Go to parent directory\n");
|
||||
sHelp->Add("\tDelete d : Delete playlist\n\n\n");
|
||||
sHelp->Add(DisplayKeys(Key.Enter) + "Enter directory/Add item to playlist and play\n");
|
||||
sHelp->Add(DisplayKeys(Key.Space) + "Add item to playlist\n");
|
||||
sHelp->Add(DisplayKeys(Key.GoToParentDir) + "Go to parent directory\n");
|
||||
sHelp->Add(DisplayKeys(Key.Delete) + "Delete playlist\n\n\n");
|
||||
|
||||
sHelp->Add(" [b]Keys - Search engine\n -----------------------------------------[/b]\n");
|
||||
sHelp->Add("\tEnter : Change option/Add to playlist and play song\n");
|
||||
sHelp->Add("\tSpace : Add song to playlist\n\n\n");
|
||||
sHelp->Add(DisplayKeys(Key.Enter) + "Change option/Add to playlist and play song\n");
|
||||
sHelp->Add(DisplayKeys(Key.Space) + "Add song to playlist\n\n\n");
|
||||
|
||||
sHelp->Add(" [b]Keys - Media library\n -----------------------------------------[/b]\n");
|
||||
sHelp->Add("\tLeft : Previous column\n");
|
||||
sHelp->Add("\tRight : Next column\n");
|
||||
sHelp->Add("\tEnter : Add to playlist and play song/album/artist's songs\n");
|
||||
sHelp->Add("\tSpace : Add to playlist song/album/artist's songs\n\n\n");
|
||||
sHelp->Add(DisplayKeys(&Key.VolumeDown[0], 1) + "Previous column\n");
|
||||
sHelp->Add(DisplayKeys(&Key.VolumeUp[0], 1) + "Next column\n");
|
||||
sHelp->Add(DisplayKeys(Key.Enter) + "Add to playlist and play song/album/artist's songs\n");
|
||||
sHelp->Add(DisplayKeys(Key.Space) + "Add to playlist song/album/artist's songs\n\n\n");
|
||||
|
||||
# ifdef HAVE_TAGLIB_H
|
||||
sHelp->Add(" [b]Keys - Tag editor\n -----------------------------------------[/b]\n");
|
||||
sHelp->Add("\tEnter : Change option\n");
|
||||
sHelp->Add(DisplayKeys(Key.Enter) + "Change option\n");
|
||||
# else
|
||||
sHelp->Add(" [b]Keys - Tag info\n -----------------------------------------[/b]\n");
|
||||
sHelp->Add("\tEnter : Return\n");
|
||||
sHelp->Add(DisplayKeys(Key.Enter) + "Return\n");
|
||||
# endif
|
||||
|
||||
if (Config.header_visibility)
|
||||
@@ -1245,7 +1246,7 @@ int main(int argc, char *argv[])
|
||||
if (playlist_name.find("/") != string::npos)
|
||||
{
|
||||
ShowMessage("Playlist name cannot contain slashes!");
|
||||
break;
|
||||
continue;
|
||||
}
|
||||
if (!playlist_name.empty())
|
||||
{
|
||||
@@ -1487,7 +1488,7 @@ int main(int argc, char *argv[])
|
||||
UNLOCK_STATUSBAR;
|
||||
timer = time(NULL);
|
||||
if (findme.empty())
|
||||
break;
|
||||
continue;
|
||||
transform(findme.begin(), findme.end(), findme.begin(), tolower);
|
||||
|
||||
if (Keypressed(input, Key.FindForward)) // forward
|
||||
|
||||
@@ -35,10 +35,6 @@ const bool UNICODE = 0;
|
||||
# define NCMPCPP_TO_WSTRING(x) (x)
|
||||
#endif
|
||||
|
||||
#define KEY_TAB 9
|
||||
#define ENTER 10
|
||||
#define KEY_SPACE 32
|
||||
|
||||
#ifdef HAVE_TAGLIB_H
|
||||
# include "fileref.h"
|
||||
# include "tag.h"
|
||||
|
||||
165
src/settings.cpp
165
src/settings.cpp
@@ -21,13 +21,12 @@
|
||||
#include "settings.h"
|
||||
|
||||
const string config_file = home_folder + "/.ncmpcpprc";
|
||||
const string keys_config_file = home_folder + "/.ncmpcpp_keys";
|
||||
|
||||
using std::ifstream;
|
||||
|
||||
void DefaultKeys(ncmpcpp_keys &keys)
|
||||
{
|
||||
const int null_key = 0x0fffffff;
|
||||
|
||||
keys.Up[0] = KEY_UP;
|
||||
keys.Down[0] = KEY_DOWN;
|
||||
keys.PageUp[0] = KEY_PPAGE;
|
||||
@@ -150,6 +149,29 @@ void DefaultConfiguration(ncmpcpp_config &conf)
|
||||
conf.message_delay_time = 4;
|
||||
}
|
||||
|
||||
void GetKeys(string line, int *key)
|
||||
{
|
||||
int i = line.find("=")+1;
|
||||
line = line.substr(i, line.length()-i);
|
||||
i = 0;
|
||||
if (line[i] == ' ')
|
||||
while (line[++i] == ' ');
|
||||
line = line.substr(i, line.length()-i);
|
||||
i = line.find(" ");
|
||||
string one;
|
||||
string two;
|
||||
if (i != string::npos)
|
||||
{
|
||||
one = line.substr(0, i);
|
||||
i++;
|
||||
two = line.substr(i, line.length()-i);
|
||||
}
|
||||
else
|
||||
one = line;
|
||||
key[0] = !one.empty() && one[0] == '\'' ? one[1] : (atoi(one.c_str()) == 0 ? null_key : atoi(one.c_str()));
|
||||
key[1] = !two.empty() && two[0] == '\'' ? two[1] : (atoi(two.c_str()) == 0 ? null_key : atoi(two.c_str()));
|
||||
}
|
||||
|
||||
string GetConfigLineValue(const string &line)
|
||||
{
|
||||
int i = 0;
|
||||
@@ -176,19 +198,19 @@ string IntoStr(COLOR color)
|
||||
|
||||
if (color == clBlack)
|
||||
result = "black";
|
||||
if (color == clRed)
|
||||
else if (color == clRed)
|
||||
result = "red";
|
||||
if (color == clGreen)
|
||||
else if (color == clGreen)
|
||||
result = "green";
|
||||
if (color == clYellow)
|
||||
else if (color == clYellow)
|
||||
result = "yellow";
|
||||
if (color == clBlue)
|
||||
else if (color == clBlue)
|
||||
result = "blue";
|
||||
if (color == clMagenta)
|
||||
else if (color == clMagenta)
|
||||
result = "magenta";
|
||||
if (color == clCyan)
|
||||
else if (color == clCyan)
|
||||
result = "cyan";
|
||||
if (color == clWhite)
|
||||
else if (color == clWhite)
|
||||
result = "white";
|
||||
|
||||
return result;
|
||||
@@ -200,24 +222,135 @@ COLOR IntoColor(const string &color)
|
||||
|
||||
if (color == "black")
|
||||
result = clBlack;
|
||||
if (color == "red")
|
||||
else if (color == "red")
|
||||
result = clRed;
|
||||
if (color == "green")
|
||||
else if (color == "green")
|
||||
result = clGreen;
|
||||
if (color == "yellow")
|
||||
else if (color == "yellow")
|
||||
result = clYellow;
|
||||
if (color == "blue")
|
||||
else if (color == "blue")
|
||||
result = clBlue;
|
||||
if (color == "magenta")
|
||||
else if (color == "magenta")
|
||||
result = clMagenta;
|
||||
if (color == "cyan")
|
||||
else if (color == "cyan")
|
||||
result = clCyan;
|
||||
if (color == "white")
|
||||
else if (color == "white")
|
||||
result = clWhite;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void ReadKeys(ncmpcpp_keys &keys)
|
||||
{
|
||||
ifstream f(keys_config_file.c_str());
|
||||
|
||||
string key_line;
|
||||
vector<string> keys_sets;
|
||||
|
||||
if (f.is_open())
|
||||
{
|
||||
while (!f.eof())
|
||||
{
|
||||
getline(f, key_line);
|
||||
if (!key_line.empty() && key_line[0] != '#')
|
||||
keys_sets.push_back(key_line);
|
||||
}
|
||||
for (vector<string>::const_iterator it = keys_sets.begin(); it != keys_sets.end(); it++)
|
||||
{
|
||||
if (it->find("key_up ") != string::npos)
|
||||
GetKeys(*it, keys.Up);
|
||||
else if (it->find("key_down ") != string::npos)
|
||||
GetKeys(*it, keys.Down);
|
||||
else if (it->find("key_page_up ") != string::npos)
|
||||
GetKeys(*it, keys.PageUp);
|
||||
else if (it->find("key_page_down ") != string::npos)
|
||||
GetKeys(*it, keys.PageDown);
|
||||
else if (it->find("key_home ") != string::npos)
|
||||
GetKeys(*it, keys.Home);
|
||||
else if (it->find("key_end ") != string::npos)
|
||||
GetKeys(*it, keys.End);
|
||||
else if (it->find("key_space ") != string::npos)
|
||||
GetKeys(*it, keys.Space);
|
||||
else if (it->find("key_enter ") != string::npos)
|
||||
GetKeys(*it, keys.Enter);
|
||||
else if (it->find("key_delete ") != string::npos)
|
||||
GetKeys(*it, keys.Delete);
|
||||
else if (it->find("key_volume_up ") != string::npos)
|
||||
GetKeys(*it, keys.VolumeUp);
|
||||
else if (it->find("key_volume_down ") != string::npos)
|
||||
GetKeys(*it, keys.VolumeDown);
|
||||
else if (it->find("key_screen_switcher ") != string::npos)
|
||||
GetKeys(*it, keys.ScreenSwitcher);
|
||||
else if (it->find("key_help ") != string::npos)
|
||||
GetKeys(*it, keys.Help);
|
||||
else if (it->find("key_playlist ") != string::npos)
|
||||
GetKeys(*it, keys.Playlist);
|
||||
else if (it->find("key_browser ") != string::npos)
|
||||
GetKeys(*it, keys.Browser);
|
||||
else if (it->find("key_search_engine ") != string::npos)
|
||||
GetKeys(*it, keys.SearchEngine);
|
||||
else if (it->find("key_media_library ") != string::npos)
|
||||
GetKeys(*it, keys.MediaLibrary);
|
||||
else if (it->find("key_stop ") != string::npos)
|
||||
GetKeys(*it, keys.Stop);
|
||||
else if (it->find("key_pause ") != string::npos)
|
||||
GetKeys(*it, keys.Pause);
|
||||
else if (it->find("key_next ") != string::npos)
|
||||
GetKeys(*it, keys.Next);
|
||||
else if (it->find("key_prev ") != string::npos)
|
||||
GetKeys(*it, keys.Prev);
|
||||
else if (it->find("key_seek_forward ") != string::npos)
|
||||
GetKeys(*it, keys.SeekForward);
|
||||
else if (it->find("key_seek_backward ") != string::npos)
|
||||
GetKeys(*it, keys.SeekBackward);
|
||||
else if (it->find("key_toggle_repeat ") != string::npos)
|
||||
GetKeys(*it, keys.ToggleRepeat);
|
||||
else if (it->find("key_toggle_random ") != string::npos)
|
||||
GetKeys(*it, keys.ToggleRandom);
|
||||
else if (it->find("key_shuffle ") != string::npos)
|
||||
GetKeys(*it, keys.Shuffle);
|
||||
else if (it->find("key_toggle_crossfade ") != string::npos)
|
||||
GetKeys(*it, keys.ToggleCrossfade);
|
||||
else if (it->find("key_set_crossfade ") != string::npos)
|
||||
GetKeys(*it, keys.SetCrossfade);
|
||||
else if (it->find("key_update_db ") != string::npos)
|
||||
GetKeys(*it, keys.UpdateDB);
|
||||
else if (it->find("key_find_forward ") != string::npos)
|
||||
GetKeys(*it, keys.FindForward);
|
||||
else if (it->find("key_find_backward ") != string::npos)
|
||||
GetKeys(*it, keys.FindBackward);
|
||||
else if (it->find("key_next_found_position ") != string::npos)
|
||||
GetKeys(*it, keys.NextFoundPosition);
|
||||
else if (it->find("key_prev_found_position ") != string::npos)
|
||||
GetKeys(*it, keys.PrevFoundPosition);
|
||||
else if (it->find("key_edit_tags ") != string::npos)
|
||||
GetKeys(*it, keys.EditTags);
|
||||
else if (it->find("key_go_to_position ") != string::npos)
|
||||
GetKeys(*it, keys.GoToPosition);
|
||||
else if (it->find("key_lyrics ") != string::npos)
|
||||
GetKeys(*it, keys.Lyrics);
|
||||
else if (it->find("key_clear ") != string::npos)
|
||||
GetKeys(*it, keys.Clear);
|
||||
else if (it->find("key_crop ") != string::npos)
|
||||
GetKeys(*it, keys.Crop);
|
||||
else if (it->find("key_move_song_up ") != string::npos)
|
||||
GetKeys(*it, keys.MvSongUp);
|
||||
else if (it->find("key_move_song_down ") != string::npos)
|
||||
GetKeys(*it, keys.MvSongDown);
|
||||
else if (it->find("key_save_playlist ") != string::npos)
|
||||
GetKeys(*it, keys.SavePlaylist);
|
||||
else if (it->find("key_go_to_now_playing ") != string::npos)
|
||||
GetKeys(*it, keys.GoToNowPlaying);
|
||||
else if (it->find("key_toggle_auto_center ") != string::npos)
|
||||
GetKeys(*it, keys.ToggleAutoCenter);
|
||||
else if (it->find("key_go_to_parent_dir ") != string::npos)
|
||||
GetKeys(*it, keys.GoToParentDir);
|
||||
else if (it->find("key_quit ") != string::npos)
|
||||
GetKeys(*it, keys.Quit);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ReadConfiguration(ncmpcpp_config &conf)
|
||||
{
|
||||
ifstream f(config_file.c_str());
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
|
||||
#include "ncmpcpp.h"
|
||||
|
||||
const int null_key = 0x0fffffff;
|
||||
|
||||
struct ncmpcpp_keys
|
||||
{
|
||||
int Up[2];
|
||||
@@ -108,9 +110,11 @@ struct ncmpcpp_config
|
||||
|
||||
void DefaultKeys(ncmpcpp_keys &);
|
||||
void DefaultConfiguration(ncmpcpp_config &);
|
||||
void GetKeys(string, int *);
|
||||
string GetLineValue(const string &);
|
||||
string IntoStr(COLOR);
|
||||
COLOR IntoColor(const string &);
|
||||
void ReadKeys(ncmpcpp_keys &);
|
||||
void ReadConfiguration(ncmpcpp_config &);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -293,6 +293,11 @@ void NcmpcppStatusChanged(MPDConnection *Mpd, MPDStatusChanges changed, void *da
|
||||
PlayerState mpd_state = Mpd->GetState();
|
||||
switch (mpd_state)
|
||||
{
|
||||
case psUnknown:
|
||||
{
|
||||
player_state = "[unknown]";
|
||||
break;
|
||||
}
|
||||
case psPlay:
|
||||
{
|
||||
player_state = "Playing: ";
|
||||
|
||||
Reference in New Issue
Block a user