move anonymous namespaces to the top
This commit is contained in:
110
src/settings.cpp
110
src/settings.cpp
@@ -28,6 +28,61 @@ const string keys_config_file = config_dir + "keys";
|
|||||||
|
|
||||||
using std::ifstream;
|
using std::ifstream;
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
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()));
|
||||||
|
}
|
||||||
|
|
||||||
|
Color IntoColor(const string &color)
|
||||||
|
{
|
||||||
|
Color result = clDefault;
|
||||||
|
|
||||||
|
if (color == "black")
|
||||||
|
result = clBlack;
|
||||||
|
else if (color == "red")
|
||||||
|
result = clRed;
|
||||||
|
else if (color == "green")
|
||||||
|
result = clGreen;
|
||||||
|
else if (color == "yellow")
|
||||||
|
result = clYellow;
|
||||||
|
else if (color == "blue")
|
||||||
|
result = clBlue;
|
||||||
|
else if (color == "magenta")
|
||||||
|
result = clMagenta;
|
||||||
|
else if (color == "cyan")
|
||||||
|
result = clCyan;
|
||||||
|
else if (color == "white")
|
||||||
|
result = clWhite;
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
Border IntoBorder(const string &color)
|
||||||
|
{
|
||||||
|
return (Border) IntoColor(color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CreateConfigDir()
|
void CreateConfigDir()
|
||||||
{
|
{
|
||||||
mkdir(config_dir.c_str(), 0755);
|
mkdir(config_dir.c_str(), 0755);
|
||||||
@@ -279,61 +334,6 @@ mpd_TagItems IntoTagItem(char c)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace
|
|
||||||
{
|
|
||||||
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()));
|
|
||||||
}
|
|
||||||
|
|
||||||
Color IntoColor(const string &color)
|
|
||||||
{
|
|
||||||
Color result = clDefault;
|
|
||||||
|
|
||||||
if (color == "black")
|
|
||||||
result = clBlack;
|
|
||||||
else if (color == "red")
|
|
||||||
result = clRed;
|
|
||||||
else if (color == "green")
|
|
||||||
result = clGreen;
|
|
||||||
else if (color == "yellow")
|
|
||||||
result = clYellow;
|
|
||||||
else if (color == "blue")
|
|
||||||
result = clBlue;
|
|
||||||
else if (color == "magenta")
|
|
||||||
result = clMagenta;
|
|
||||||
else if (color == "cyan")
|
|
||||||
result = clCyan;
|
|
||||||
else if (color == "white")
|
|
||||||
result = clWhite;
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
Border IntoBorder(const string &color)
|
|
||||||
{
|
|
||||||
return (Border) IntoColor(color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ReadKeys(ncmpcpp_keys &keys)
|
void ReadKeys(ncmpcpp_keys &keys)
|
||||||
{
|
{
|
||||||
ifstream f(keys_config_file.c_str());
|
ifstream f(keys_config_file.c_str());
|
||||||
|
|||||||
@@ -41,6 +41,127 @@ extern Menu<string> *mTagEditor;
|
|||||||
extern Window *wFooter;
|
extern Window *wFooter;
|
||||||
extern Window *wPrev;
|
extern Window *wPrev;
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
const string patterns_list_file = config_dir + "patterns.list";
|
||||||
|
vector<string> patterns_list;
|
||||||
|
|
||||||
|
void GetPatternList()
|
||||||
|
{
|
||||||
|
if (patterns_list.empty())
|
||||||
|
{
|
||||||
|
std::ifstream input(patterns_list_file.c_str());
|
||||||
|
if (input.is_open())
|
||||||
|
{
|
||||||
|
string line;
|
||||||
|
while (getline(input, line))
|
||||||
|
{
|
||||||
|
if (!line.empty())
|
||||||
|
patterns_list.push_back(line);
|
||||||
|
}
|
||||||
|
input.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SavePatternList()
|
||||||
|
{
|
||||||
|
std::ofstream output(patterns_list_file.c_str());
|
||||||
|
if (output.is_open())
|
||||||
|
{
|
||||||
|
for (vector<string>::const_iterator it = patterns_list.begin(); it != patterns_list.end() && it != patterns_list.begin()+30; it++)
|
||||||
|
output << *it << std::endl;
|
||||||
|
output.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SongSetFunction IntoSetFunction(char c)
|
||||||
|
{
|
||||||
|
switch (c)
|
||||||
|
{
|
||||||
|
case 'a':
|
||||||
|
return &Song::SetArtist;
|
||||||
|
case 't':
|
||||||
|
return &Song::SetTitle;
|
||||||
|
case 'b':
|
||||||
|
return &Song::SetAlbum;
|
||||||
|
case 'y':
|
||||||
|
return &Song::SetYear;
|
||||||
|
case 'n':
|
||||||
|
return &Song::SetTrack;
|
||||||
|
case 'g':
|
||||||
|
return &Song::SetGenre;
|
||||||
|
case 'c':
|
||||||
|
return &Song::SetComposer;
|
||||||
|
case 'p':
|
||||||
|
return &Song::SetPerformer;
|
||||||
|
case 'd':
|
||||||
|
return &Song::SetDisc;
|
||||||
|
case 'C':
|
||||||
|
return &Song::SetComment;
|
||||||
|
default:
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
string GenerateFilename(const Song &s, string &pattern)
|
||||||
|
{
|
||||||
|
string result = Window::OmitBBCodes(DisplaySong(s, &pattern));
|
||||||
|
EscapeUnallowedChars(result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
string ParseFilename(Song &s, string mask, bool preview)
|
||||||
|
{
|
||||||
|
std::stringstream result;
|
||||||
|
vector<string> separators;
|
||||||
|
vector< std::pair<char, string> > tags;
|
||||||
|
string file = s.GetName().substr(0, s.GetName().find_last_of("."));
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
for (int i = mask.find("%"); i != string::npos; i = mask.find("%"))
|
||||||
|
{
|
||||||
|
tags.push_back(make_pair(mask.at(i+1), ""));
|
||||||
|
mask = mask.substr(i+2);
|
||||||
|
i = mask.find("%");
|
||||||
|
if (!mask.empty())
|
||||||
|
separators.push_back(mask.substr(0, i));
|
||||||
|
}
|
||||||
|
int i = 0;
|
||||||
|
for (vector<string>::const_iterator it = separators.begin(); it != separators.end(); it++, i++)
|
||||||
|
{
|
||||||
|
int j = file.find(*it);
|
||||||
|
tags.at(i).second = file.substr(0, j);
|
||||||
|
file = file.substr(j+it->length());
|
||||||
|
}
|
||||||
|
if (!file.empty())
|
||||||
|
tags.at(i).second = file;
|
||||||
|
}
|
||||||
|
catch (std::out_of_range)
|
||||||
|
{
|
||||||
|
return "Error while parsing filename!";
|
||||||
|
}
|
||||||
|
|
||||||
|
for (vector< std::pair<char, string> >::iterator it = tags.begin(); it != tags.end(); it++)
|
||||||
|
{
|
||||||
|
for (string::iterator j = it->second.begin(); j != it->second.end(); j++)
|
||||||
|
if (*j == '_')
|
||||||
|
*j = ' ';
|
||||||
|
|
||||||
|
if (!preview)
|
||||||
|
{
|
||||||
|
SongSetFunction set = IntoSetFunction(it->first);
|
||||||
|
if (set)
|
||||||
|
(s.*set)(it->second);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
result << "%" << it->first << ": " << it->second << "\n";
|
||||||
|
}
|
||||||
|
return result.str();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SongSetFunction IntoSetFunction(mpd_TagItems tag)
|
SongSetFunction IntoSetFunction(mpd_TagItems tag)
|
||||||
{
|
{
|
||||||
switch (tag)
|
switch (tag)
|
||||||
@@ -294,127 +415,6 @@ bool WriteTags(Song &s)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace
|
|
||||||
{
|
|
||||||
const string patterns_list_file = config_dir + "patterns.list";
|
|
||||||
vector<string> patterns_list;
|
|
||||||
|
|
||||||
void GetPatternList()
|
|
||||||
{
|
|
||||||
if (patterns_list.empty())
|
|
||||||
{
|
|
||||||
std::ifstream input(patterns_list_file.c_str());
|
|
||||||
if (input.is_open())
|
|
||||||
{
|
|
||||||
string line;
|
|
||||||
while (getline(input, line))
|
|
||||||
{
|
|
||||||
if (!line.empty())
|
|
||||||
patterns_list.push_back(line);
|
|
||||||
}
|
|
||||||
input.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void SavePatternList()
|
|
||||||
{
|
|
||||||
std::ofstream output(patterns_list_file.c_str());
|
|
||||||
if (output.is_open())
|
|
||||||
{
|
|
||||||
for (vector<string>::const_iterator it = patterns_list.begin(); it != patterns_list.end() && it != patterns_list.begin()+30; it++)
|
|
||||||
output << *it << std::endl;
|
|
||||||
output.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SongSetFunction IntoSetFunction(char c)
|
|
||||||
{
|
|
||||||
switch (c)
|
|
||||||
{
|
|
||||||
case 'a':
|
|
||||||
return &Song::SetArtist;
|
|
||||||
case 't':
|
|
||||||
return &Song::SetTitle;
|
|
||||||
case 'b':
|
|
||||||
return &Song::SetAlbum;
|
|
||||||
case 'y':
|
|
||||||
return &Song::SetYear;
|
|
||||||
case 'n':
|
|
||||||
return &Song::SetTrack;
|
|
||||||
case 'g':
|
|
||||||
return &Song::SetGenre;
|
|
||||||
case 'c':
|
|
||||||
return &Song::SetComposer;
|
|
||||||
case 'p':
|
|
||||||
return &Song::SetPerformer;
|
|
||||||
case 'd':
|
|
||||||
return &Song::SetDisc;
|
|
||||||
case 'C':
|
|
||||||
return &Song::SetComment;
|
|
||||||
default:
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
string GenerateFilename(const Song &s, string &pattern)
|
|
||||||
{
|
|
||||||
string result = Window::OmitBBCodes(DisplaySong(s, &pattern));
|
|
||||||
EscapeUnallowedChars(result);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
string ParseFilename(Song &s, string mask, bool preview)
|
|
||||||
{
|
|
||||||
std::stringstream result;
|
|
||||||
vector<string> separators;
|
|
||||||
vector< std::pair<char, string> > tags;
|
|
||||||
string file = s.GetName().substr(0, s.GetName().find_last_of("."));
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
for (int i = mask.find("%"); i != string::npos; i = mask.find("%"))
|
|
||||||
{
|
|
||||||
tags.push_back(make_pair(mask.at(i+1), ""));
|
|
||||||
mask = mask.substr(i+2);
|
|
||||||
i = mask.find("%");
|
|
||||||
if (!mask.empty())
|
|
||||||
separators.push_back(mask.substr(0, i));
|
|
||||||
}
|
|
||||||
int i = 0;
|
|
||||||
for (vector<string>::const_iterator it = separators.begin(); it != separators.end(); it++, i++)
|
|
||||||
{
|
|
||||||
int j = file.find(*it);
|
|
||||||
tags.at(i).second = file.substr(0, j);
|
|
||||||
file = file.substr(j+it->length());
|
|
||||||
}
|
|
||||||
if (!file.empty())
|
|
||||||
tags.at(i).second = file;
|
|
||||||
}
|
|
||||||
catch (std::out_of_range)
|
|
||||||
{
|
|
||||||
return "Error while parsing filename!";
|
|
||||||
}
|
|
||||||
|
|
||||||
for (vector< std::pair<char, string> >::iterator it = tags.begin(); it != tags.end(); it++)
|
|
||||||
{
|
|
||||||
for (string::iterator j = it->second.begin(); j != it->second.end(); j++)
|
|
||||||
if (*j == '_')
|
|
||||||
*j = ' ';
|
|
||||||
|
|
||||||
if (!preview)
|
|
||||||
{
|
|
||||||
SongSetFunction set = IntoSetFunction(it->first);
|
|
||||||
if (set)
|
|
||||||
(s.*set)(it->second);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
result << "%" << it->first << ": " << it->second << "\n";
|
|
||||||
}
|
|
||||||
return result.str();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void __deal_with_filenames(SongList &v)
|
void __deal_with_filenames(SongList &v)
|
||||||
{
|
{
|
||||||
int width = 30;
|
int width = 30;
|
||||||
|
|||||||
Reference in New Issue
Block a user