diff options
| author | Leifa♥ <26681464+TrickyLeifa@users.noreply.github.com> | 2022-07-31 04:57:01 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-07-31 05:57:01 +0300 |
| commit | 1cfbfd51a70ae61279f53a1b14dbc0c81fe1d259 (patch) | |
| tree | 65bb1eee810a15016498740c0c8d23d073e664b3 /src/aoapplication.cpp | |
| parent | 14731a0fca83f3ce193ec03a19bc2f5fefe70c6c (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.cpp | 58 |
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() |
