aboutsummaryrefslogtreecommitdiff
path: root/src/aoapplication.cpp
diff options
context:
space:
mode:
authorLeifa♥ <26681464+TrickyLeifa@users.noreply.github.com>2022-07-31 04:57:01 +0200
committerGitHub <noreply@github.com>2022-07-31 05:57:01 +0300
commit1cfbfd51a70ae61279f53a1b14dbc0c81fe1d259 (patch)
tree65bb1eee810a15016498740c0c8d23d073e664b3 /src/aoapplication.cpp
parent14731a0fca83f3ce193ec03a19bc2f5fefe70c6c (diff)
Added server list context menu, ... (#835)
* Added server list context menu, ... Resolve #832, #560 * The demo server listing now always appears at the top for consistency. * Add a context menu to server listing. Only appears during favorite server listing. Requires a valid item under cursor. Cannot be the demo server item. * Add a new UI element: `remove_from_fav` Only appears during favorite server listing. Require a selection to remove. Cannot be the demo server. Uses `removefromfav.png` and `removefromfav_pressed.png` images as textures. * Favorite servers are now loaded whenever the Lobby is created in addition to refresh and server listing switch. * `serverlist.txt` is now renamed to `(deprecated)serverlist.txt` if read from. * Updated comments * Typos
Diffstat (limited to 'src/aoapplication.cpp')
-rw-r--r--src/aoapplication.cpp58
1 files changed, 40 insertions, 18 deletions
diff --git a/src/aoapplication.cpp b/src/aoapplication.cpp
index 25ec7878..d52fc8b6 100644
--- a/src/aoapplication.cpp
+++ b/src/aoapplication.cpp
@@ -51,6 +51,7 @@ void AOApplication::construct_lobby()
return;
}
+ load_favorite_list();
w_lobby = new Lobby(this);
lobby_constructed = true;
@@ -125,9 +126,34 @@ QString AOApplication::get_version_string()
void AOApplication::reload_theme() { current_theme = read_theme(); }
-void AOApplication::set_favorite_list()
+void AOApplication::load_favorite_list()
{
- favorite_list = read_serverlist_txt();
+ favorite_list = read_favorite_servers();
+}
+
+void AOApplication::save_favorite_list()
+{
+ QSettings favorite_servers_ini(get_base_path() + "favorite_servers.ini", QSettings::IniFormat);
+ favorite_servers_ini.setIniCodec("UTF-8");
+
+ favorite_servers_ini.clear();
+ // skip demo server entry, demo server entry is always at index 0
+ for(int i = 1; i < favorite_list.size(); ++i) {
+ auto fav_server = favorite_list.at(i);
+ favorite_servers_ini.beginGroup(QString::number(i));
+ favorite_servers_ini.setValue("name", fav_server.name);
+ favorite_servers_ini.setValue("address", fav_server.ip);
+ favorite_servers_ini.setValue("port", fav_server.port);
+ favorite_servers_ini.setValue("desc", fav_server.desc);
+
+ if (fav_server.socket_type == TCP) {
+ favorite_servers_ini.setValue("protocol", "tcp");
+ } else {
+ favorite_servers_ini.setValue("protocol", "ws");
+ }
+ favorite_servers_ini.endGroup();
+ }
+ favorite_servers_ini.sync();
}
QString AOApplication::get_current_char()
@@ -142,25 +168,21 @@ void AOApplication::add_favorite_server(int p_server)
{
if (p_server < 0 || p_server >= server_list.size())
return;
+ favorite_list.append(server_list.at(p_server));
+ save_favorite_list();
+}
- server_type fav_server = server_list.at(p_server);
- QSettings l_favorite_ini(get_base_path() + "favorite_servers.ini", QSettings::IniFormat);
- QString l_new_group = QString::number(l_favorite_ini.childGroups().size());
- l_favorite_ini.setIniCodec("UTF-8");
+void AOApplication::remove_favorite_server(int p_server)
+{
+ if (p_server < 0 || p_server >= favorite_list.size())
+ return;
+ favorite_list.removeAt(p_server);
+ save_favorite_list();
+}
- l_favorite_ini.beginGroup(l_new_group);
- l_favorite_ini.setValue("name", fav_server.name);
- l_favorite_ini.setValue("address", fav_server.ip);
- l_favorite_ini.setValue("port", fav_server.port);
- l_favorite_ini.setValue("desc", fav_server.desc);
+void AOApplication::prompt_remove_favorite_server(int p_server)
+{
- if (fav_server.socket_type == TCP) {
- l_favorite_ini.setValue("protocol", "tcp");
- }
- else {
- l_favorite_ini.setValue("protocol", "ws");
- }
- l_favorite_ini.sync();
}
void AOApplication::server_disconnected()