aboutsummaryrefslogtreecommitdiff
path: root/include/lobby.h
blob: 5b1add79c53959f3adc504f5f62410ca6adfb540 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#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 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_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_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_search_edited(QString p_text);
};

#endif // LOBBY_H