aboutsummaryrefslogtreecommitdiff
path: root/include/lobby.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/lobby.h')
-rw-r--r--include/lobby.h134
1 files changed, 63 insertions, 71 deletions
diff --git a/include/lobby.h b/include/lobby.h
index d39d7f9b..e5d35766 100644
--- a/include/lobby.h
+++ b/include/lobby.h
@@ -1,22 +1,17 @@
#ifndef LOBBY_H
#define LOBBY_H
-#include "aobutton.h"
-#include "aoimage.h"
-#include "aopacket.h"
-#include "aotextarea.h"
-
-#include <QLabel>
-#include <QLineEdit>
-#include <QListWidget>
+class QLabel;
+class QLineEdit;
+class QPushButton;
+class QTextBrowser;
+class QTreeWidget;
+class QTreeWidgetItem;
+
#include <QMainWindow>
-#include <QPlainTextEdit>
-#include <QProgressBar>
-#include <QTextBrowser>
-#include <QTreeWidget>
-#include <QDebug>
-#include <QScrollBar>
-#include <QHeaderView>
+#include "networkmanager.h"
+#include "file_functions.h"
+
#ifdef ANDROID
#include <QtAndroidExtras/QtAndroid>
#endif
@@ -25,91 +20,88 @@ class AOApplication;
class Lobby : public QMainWindow {
Q_OBJECT
-
public:
- Lobby(AOApplication *p_ao_app);
+ Lobby(AOApplication *p_ao_app, NetworkManager *p_net_man = nullptr);
+ ~Lobby();
- void set_widgets();
+ void set_player_count(int players_online, int max_players);
+ void set_server_description(const QString &server_description);
void list_servers();
+ int get_selected_server();
+ int pageSelected();
+
+private:
+ AOApplication *ao_app;
+ NetworkManager *net_manager;
+
+ const QString DEFAULT_UI = "lobby.ui";
+
void list_favorites();
+ void list_demos();
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;
+ int last_index = -1;
- ~Lobby();
+ enum TabPage { SERVER, FAVORITES, DEMOS };
-private:
- AOApplication *ao_app;
+ // UI-file Lobby
- AOImage *ui_background;
+ // Top Row
+ QLabel *ui_game_version_lbl;
+ QPushButton *ui_settings_button;
+ QPushButton *ui_about_button;
- AOButton *ui_public_servers;
- AOButton *ui_favorites;
+ // Server, Favs and Demo lists
+ QTabWidget *ui_connections_tabview;
- AOButton *ui_refresh;
- AOButton *ui_add_to_fav;
- AOButton *ui_remove_from_fav;
- AOButton *ui_connect;
+ QTreeWidget *ui_serverlist_tree;
+ QLineEdit *ui_serverlist_search;
- QLabel *ui_version;
- AOButton *ui_about;
+ QTreeWidget *ui_favorites_tree;
+ QLineEdit *ui_favorites_search;
- AOButton *ui_settings;
+ QTreeWidget *ui_demo_tree;
+ QLineEdit *ui_demo_search;
- QTreeWidget *ui_server_list;
- QLineEdit *ui_server_search;
+ QPushButton *ui_add_to_favorite_button;
+ QPushButton *ui_add_server_button;
+ QPushButton *ui_remove_from_favorites_button;
+ QPushButton *ui_edit_favorite_button;
+ QPushButton *ui_direct_connect_button;
+ QPushButton *ui_refresh_button;
- QLabel *ui_player_count;
- AOTextArea *ui_description;
+ // Serverinfo / MOTD Horizontal Row
+ QTextBrowser *ui_motd_text;
- AOTextArea *ui_chatbox;
+ QLabel *ui_server_player_count_lbl;
+ QTextBrowser *ui_server_description_text;
+ QPushButton *ui_connect_button;
- AOImage *ui_loading_background;
- QTextEdit *ui_loading_text;
- QProgressBar *ui_progress_bar;
- AOButton *ui_cancel;
+ // Optional Widget
+ QTextBrowser *ui_game_changelog_text;
- int last_index = -1;
+ void loadUI();
- void set_size_and_pos(QWidget *p_widget, QString p_identifier);
+ TabPage current_page = SERVER;
private slots:
- void on_public_servers_clicked();
- void on_favorites_clicked();
-
- void on_refresh_pressed();
+ void on_tab_changed(int index);
void on_refresh_released();
- void on_add_to_fav_pressed();
+ void on_direct_connect_released();
void on_add_to_fav_released();
- void on_remove_from_fav_pressed();
+ void on_add_server_to_fave_released();
+ void on_edit_favorite_released();
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_list_doubleclicked(QTreeWidgetItem *p_item, int column);
+ void on_favorite_tree_clicked(QTreeWidgetItem *p_item, int column);
void on_server_search_edited(QString p_text);
+ void on_demo_clicked(QTreeWidgetItem *item, int column);
+ void onReloadThemeRequested(); // Oh boy.
+ void onSettingsRequested();
};
#endif // LOBBY_H