aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/aoapplication.h10
-rw-r--r--include/aooptionsdialog.h7
-rw-r--r--include/lobby.h6
-rw-r--r--include/networkmanager.h73
4 files changed, 40 insertions, 56 deletions
diff --git a/include/aoapplication.h b/include/aoapplication.h
index ab738220..c094a333 100644
--- a/include/aoapplication.h
+++ b/include/aoapplication.h
@@ -75,10 +75,8 @@ public:
void construct_courtroom();
void destruct_courtroom();
- void ms_packet_received(AOPacket *p_packet);
void server_packet_received(AOPacket *p_packet);
- void send_ms_packet(AOPacket *p_packet);
void send_server_packet(AOPacket *p_packet, bool encoded = true);
void call_settings_menu();
@@ -136,7 +134,7 @@ public:
QVector<server_type> &get_favorite_list() { return favorite_list; }
void add_favorite_server(int p_server);
- void set_server_list();
+ void set_server_list(QVector<server_type> &servers) { server_list = servers; }
QVector<server_type> &get_server_list() { return server_list; }
// reads the theme from config.ini and sets it accordingly
@@ -522,6 +520,9 @@ public:
// Get a list of custom mount paths
QStringList get_mount_paths();
+ // Get whether to opt out of player count metrics sent to the master server
+ bool get_player_count_optout();
+
// Currently defined subtheme
QString subtheme;
@@ -561,9 +562,6 @@ private:
QHash<uint, QString> dir_listing_cache;
QSet<uint> dir_listing_exist_cache;
-private slots:
- void ms_connect_finished(bool connected, bool will_retry);
-
public slots:
void server_disconnected();
void loading_cancelled();
diff --git a/include/aooptionsdialog.h b/include/aooptionsdialog.h
index ac8f2f36..9c4d0d94 100644
--- a/include/aooptionsdialog.h
+++ b/include/aooptionsdialog.h
@@ -24,6 +24,7 @@
#include <QDirIterator>
#include <QListWidget>
+#include <QTextBrowser>
#include <QTextStream>
class Lobby;
@@ -192,6 +193,12 @@ private:
QPushButton *ui_mount_down;
QPushButton *ui_mount_clear_cache;
+ QWidget *ui_privacy_tab;
+ QVBoxLayout *ui_privacy_layout;
+ QCheckBox *ui_privacy_optout_cb;
+ QFrame *ui_privacy_separator;
+ QTextBrowser *ui_privacy_policy;
+
bool asset_cache_dirty = false;
bool needs_default_audiodev();
diff --git a/include/lobby.h b/include/lobby.h
index 0f1610f9..61c93c5e 100644
--- a/include/lobby.h
+++ b/include/lobby.h
@@ -30,6 +30,8 @@ public:
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);
@@ -76,9 +78,6 @@ private:
AOTextArea *ui_chatbox;
- QLineEdit *ui_chatname;
- QLineEdit *ui_chatmessage;
-
AOImage *ui_loading_background;
QTextEdit *ui_loading_text;
QProgressBar *ui_progress_bar;
@@ -103,7 +102,6 @@ private slots:
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);
- void on_chatfield_return_pressed();
};
#endif // LOBBY_H
diff --git a/include/networkmanager.h b/include/networkmanager.h
index ed57a956..1e1a60b7 100644
--- a/include/networkmanager.h
+++ b/include/networkmanager.h
@@ -1,83 +1,64 @@
#ifndef NETWORKMANAGER_H
#define NETWORKMANAGER_H
-// Qt for Android has stubbed QDnsLookup. This is not documented in any part of
-// their wiki. This prevents SRV lookup/failover behavior from functioning.
-// https://bugreports.qt.io/browse/QTBUG-56143
-#ifndef ANDROID
-#define MS_FAILOVER_SUPPORTED
-#endif
-
-//#define LOCAL_MS
-
-#ifdef LOCAL_MS
-#undef MS_FAILOVER_SUPPORTED
-#endif
-
#include "aoapplication.h"
#include "aopacket.h"
#include <QDnsLookup>
+#include <QNetworkAccessManager>
#include <QTcpSocket>
#include <QTime>
#include <QTimer>
+
#include <cstring>
+enum MSDocumentType {
+ PrivacyPolicy,
+ Motd,
+ ClientVersion
+};
+
class NetworkManager : public QObject {
Q_OBJECT
public:
- NetworkManager(AOApplication *parent);
- ~NetworkManager();
+ explicit NetworkManager(AOApplication *parent);
+ ~NetworkManager() = default;
AOApplication *ao_app;
- QTcpSocket *ms_socket;
+ QNetworkAccessManager *http;
QTcpSocket *server_socket;
- QDnsLookup *ms_dns;
- QTimer *ms_reconnect_timer;
-
- const QString ms_srv_hostname = "_aoms._tcp.aceattorneyonline.com";
-#ifdef LOCAL_MS
- QString ms_nosrv_hostname = "localhost";
-#else
- QString ms_nosrv_hostname = "master.aceattorneyonline.com";
-#endif
+ QTimer *heartbeat_timer;
- const quint16 ms_port = 27016;
- const int timeout_milliseconds = 2000;
+ const QString DEFAULT_MS_BASEURL = "https://servers.aceattorneyonline.com";
+ QString ms_baseurl = DEFAULT_MS_BASEURL;
- // in seconds
- const int ms_reconnect_delay = 7;
-
- bool ms_partial_packet = false;
- QString ms_temp_packet = "";
+ const int heartbeat_interval = 60 * 5;
bool partial_packet = false;
QString temp_packet = "";
unsigned int s_decryptor = 5;
- void connect_to_master();
- void connect_to_master_nosrv();
void connect_to_server(server_type p_server);
public slots:
- void ship_ms_packet(QString p_packet);
+ void get_server_list(const std::function<void()> &cb);
void ship_server_packet(QString p_packet);
+ void handle_server_packet();
-signals:
- void ms_connect_finished(bool success, bool will_retry);
+ void request_document(MSDocumentType document_type,
+ const std::function<void(QString)> &cb);
+ void send_heartbeat();
+private slots:
+ void ms_request_finished(QNetworkReply *reply,
+ const std::function<void()> &cb);
private:
- void perform_srv_lookup();
-
-private slots:
- void on_srv_lookup();
- void handle_ms_packet();
- void handle_server_packet();
- void on_ms_nosrv_connect_success();
- void on_ms_socket_error(QAbstractSocket::SocketError error);
- void retry_ms_connect();
+ QString get_user_agent() const {
+ return QStringLiteral("AttorneyOnline/%1 (Desktop)")
+ .arg(ao_app->get_version_string());
+ }
};
#endif // NETWORKMANAGER_H