From 1cfbfd51a70ae61279f53a1b14dbc0c81fe1d259 Mon Sep 17 00:00:00 2001 From: Leifa♥ <26681464+TrickyLeifa@users.noreply.github.com> Date: Sun, 31 Jul 2022 04:57:01 +0200 Subject: 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 --- include/aoapplication.h | 24 +++++++++++++++++++----- include/lobby.h | 4 ++++ 2 files changed, 23 insertions(+), 5 deletions(-) (limited to 'include') diff --git a/include/aoapplication.h b/include/aoapplication.h index f1ba9d7..52b7673 100644 --- a/include/aoapplication.h +++ b/include/aoapplication.h @@ -131,11 +131,14 @@ public: /////////////////////////////////////////// - void set_favorite_list(); + void load_favorite_list(); + void save_favorite_list(); QVector &get_favorite_list() { return favorite_list; } // Adds the server to favorite_servers.ini void add_favorite_server(int p_server); + void remove_favorite_server(int p_server); + void prompt_remove_favorite_server(int p_server); void set_server_list(QVector &servers) { server_list = servers; } QVector &get_server_list() { return server_list; } @@ -331,13 +334,24 @@ public: // Append to the currently open demo file if there is one void append_to_demofile(QString packet_string); - // Returns the contents of serverlist.txt - QVector read_serverlist_txt(); + /** + * @brief Reads favorite_servers.ini and returns a list of servers. + * + * The demo server entry is always present at the top of the list. + * + * If the server list returned was to be empty (exluding the demo server entry), + * will return a list of servers from the legacy serverlist.txt file. + * + * @return A list of servers. + */ + QVector read_favorite_servers(); /** - * @brief Migrates the favorite serverlist format from txt to ini. + * @brief Reads serverlist.txt and returns a list of servers. + * + * @return A list of servers. */ - void migrate_serverlist_txt(QFile &p_serverlist_txt); + QVector read_legacy_favorite_servers(); // Returns the value of p_identifier in the design.ini file in p_design_path QString read_design_ini(QString p_identifier, VPath p_design_path); diff --git a/include/lobby.h b/include/lobby.h index 18d4c4e..d39d7f9 100644 --- a/include/lobby.h +++ b/include/lobby.h @@ -67,6 +67,7 @@ private: AOButton *ui_refresh; AOButton *ui_add_to_fav; + AOButton *ui_remove_from_fav; AOButton *ui_connect; QLabel *ui_version; @@ -99,12 +100,15 @@ private slots: void on_refresh_released(); void on_add_to_fav_pressed(); void on_add_to_fav_released(); + void on_remove_from_fav_pressed(); + void on_remove_from_fav_released(); void on_connect_pressed(); void on_connect_released(); void on_about_clicked(); void on_settings_clicked(); void on_server_list_clicked(QTreeWidgetItem *p_item, int column); void on_server_list_doubleclicked(QTreeWidgetItem *p_item, int column); + void on_server_list_context_menu_requested(const QPoint &point); void on_server_search_edited(QString p_text); }; -- cgit