atrooney-online-2/include/lobby.h
Leifa♥ 1cfbfd51a7
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
2022-07-31 05:57:01 +03:00

116 lines
2.7 KiB
C++

#ifndef LOBBY_H
#define LOBBY_H
#include "aobutton.h"
#include "aoimage.h"
#include "aopacket.h"
#include "aotextarea.h"
#include <QLabel>
#include <QLineEdit>
#include <QListWidget>
#include <QMainWindow>
#include <QPlainTextEdit>
#include <QProgressBar>
#include <QTextBrowser>
#include <QTreeWidget>
#include <QDebug>
#include <QScrollBar>
#include <QHeaderView>
#ifdef ANDROID
#include <QtAndroidExtras/QtAndroid>
#endif
class AOApplication;
class Lobby : public QMainWindow {
Q_OBJECT
public:
Lobby(AOApplication *p_ao_app);
void set_widgets();
void list_servers();
void list_favorites();
void get_motd();
void check_for_updates();
void append_chatmessage(QString f_name, QString f_message);
void append_error(QString f_message);
void set_player_count(int players_online, int max_players);
void set_server_description(const QString& server_description);
void set_stylesheet(QWidget *widget);
void set_stylesheets();
void set_fonts();
void set_font(QWidget *widget, QString p_identifier);
void set_loading_text(QString p_text);
void show_loading_overlay() { ui_loading_background->show(); }
void hide_loading_overlay() { ui_loading_background->hide(); }
QString get_chatlog();
int get_selected_server();
void enable_connect_button();
void reset_selection();
void set_loading_value(int p_value);
bool public_servers_selected = true;
bool doubleclicked = false;
~Lobby();
private:
AOApplication *ao_app;
AOImage *ui_background;
AOButton *ui_public_servers;
AOButton *ui_favorites;
AOButton *ui_refresh;
AOButton *ui_add_to_fav;
AOButton *ui_remove_from_fav;
AOButton *ui_connect;
QLabel *ui_version;
AOButton *ui_about;
AOButton *ui_settings;
QTreeWidget *ui_server_list;
QLineEdit *ui_server_search;
QLabel *ui_player_count;
AOTextArea *ui_description;
AOTextArea *ui_chatbox;
AOImage *ui_loading_background;
QTextEdit *ui_loading_text;
QProgressBar *ui_progress_bar;
AOButton *ui_cancel;
int last_index = -1;
void set_size_and_pos(QWidget *p_widget, QString p_identifier);
private slots:
void on_public_servers_clicked();
void on_favorites_clicked();
void on_refresh_pressed();
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);
};
#endif // LOBBY_H