From 5147ea391c4afc66471c5113f6e68b92c121d76b Mon Sep 17 00:00:00 2001 From: unK Date: Tue, 30 Sep 2008 18:49:35 +0200 Subject: [PATCH] store list of recent patterns in ~/.ncmpcpp/patterns.list file --- src/tag_editor.cpp | 69 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 63 insertions(+), 6 deletions(-) diff --git a/src/tag_editor.cpp b/src/tag_editor.cpp index 0448e30e..26d510fb 100644 --- a/src/tag_editor.cpp +++ b/src/tag_editor.cpp @@ -191,6 +191,38 @@ bool WriteTags(Song &s) namespace { + const string patterns_list_file = config_dir + "patterns.list"; + vector 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::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) @@ -283,6 +315,8 @@ void __deal_with_filenames(SongList &v) int width = 30; int height = 6; + GetPatternList(); + Menu *Main = new Menu((COLS-width)/2, (LINES-height)/2, width, height, "", Config.main_color, Config.window_border); Main->SetTimeout(ncmpcpp_window_timeout); Main->AddOption("Get tags from filename"); @@ -344,17 +378,22 @@ void __deal_with_filenames(SongList &v) Main = new Menu((COLS-width)/2, (LINES-height)/2, one_width, height, "", Config.main_color, Config.active_window_border); Main->SetTimeout(ncmpcpp_window_timeout); + if (!patterns_list.empty()) + Config.pattern = patterns_list.front(); Main->AddOption("[.b]Pattern:[/b] " + Config.pattern); Main->AddOption("Preview"); Main->AddOption("Legend"); Main->AddSeparator(); Main->AddOption("Proceed"); Main->AddOption("Cancel"); - /*Main->AddSeparator(); - Main->AddOption("Recent patterns", 1, 1, 0, lCenter); - Main->AddSeparator(); - Main->AddOption("item1"); - Main->AddOption("item2 etc.");*/ + if (!patterns_list.empty()) + { + Main->AddSeparator(); + Main->AddOption("Recent patterns", 1, 1, 0, lCenter); + Main->AddSeparator(); + for (vector::const_iterator it = patterns_list.begin(); it != patterns_list.end(); it++) + Main->AddOption(*it); + } Active = Main; Helper = Legend; @@ -438,7 +477,7 @@ void __deal_with_filenames(SongList &v) } if (!preview) s.SetNewName(new_file + extension); - Preview->Add(file + " [." + Config.color2 + "]->[/" + Config.color2 + "] " + new_file + extension + "\n"); + Preview->Add(file + " [." + Config.color2 + "]->[/" + Config.color2 + "] " + new_file + extension + "\n\n"); s.GetEmptyFields(0); } } @@ -447,6 +486,18 @@ void __deal_with_filenames(SongList &v) preview = 1; continue; } + else + { + for (int i = 0; i < patterns_list.size(); i++) + { + if (patterns_list[i] == Config.pattern) + { + patterns_list.erase(patterns_list.begin()+i); + i--; + } + } + patterns_list.insert(patterns_list.begin(), Config.pattern); + } ShowMessage("Operation finished!"); if (preview) { @@ -466,6 +517,11 @@ void __deal_with_filenames(SongList &v) Helper->Display(); break; } + default: + { + Config.pattern = Main->GetOption(); + Main->UpdateOption(0, "[.b]Pattern:[/b] " + Config.pattern); + } } } else if (Keypressed(input, Key.VolumeUp) && Active == Main) @@ -486,6 +542,7 @@ void __deal_with_filenames(SongList &v) } } } + SavePatternList(); delete Main; delete Legend; delete Preview;