aboutsummaryrefslogtreecommitdiff
path: root/src/widgets
diff options
context:
space:
mode:
authorTrickyLeifa <date.epoch@gmail.com>2024-05-16 03:09:21 +0200
committerTrickyLeifa <date.epoch@gmail.com>2024-05-16 03:09:21 +0200
commit39e4354b1dae5d8487ea5b84be9f304b1950a61a (patch)
tree734c99d3ef1a8e69007dd870a8b6763deca5ffce /src/widgets
parenta0cee58c048772b2dcfe3992f60728d5a6f7d786 (diff)
Reimplemented favorite server widget, ...
* Reworked favorite server widget * Renamed `server_type` to `ServerInfo` * Renamed `connection_type` to `ServerConnectionType` * Refactored `AOCharButton` * Reimplemented `AOButton` * Partially reimplemented `AOEmoteButton` * Refactored `AOEvidenceButton`
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/add_server_dialog.cpp96
-rw-r--r--src/widgets/add_server_dialog.h40
-rw-r--r--src/widgets/direct_connect_dialog.cpp25
-rw-r--r--src/widgets/direct_connect_dialog.h26
-rw-r--r--src/widgets/edit_server_dialog.cpp75
-rw-r--r--src/widgets/edit_server_dialog.h42
-rw-r--r--src/widgets/server_editor_dialog.cpp93
-rw-r--r--src/widgets/server_editor_dialog.h43
8 files changed, 163 insertions, 277 deletions
diff --git a/src/widgets/add_server_dialog.cpp b/src/widgets/add_server_dialog.cpp
deleted file mode 100644
index dfc302f0..00000000
--- a/src/widgets/add_server_dialog.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-#include "add_server_dialog.h"
-
-#include "datatypes.h"
-#include "options.h"
-#include "gui_utils.h"
-
-#include <QComboBox>
-#include <QDebug>
-#include <QDialogButtonBox>
-#include <QFile>
-#include <QLabel>
-#include <QLineEdit>
-#include <QPlainTextEdit>
-#include <QPushButton>
-#include <QSpinBox>
-#include <QUiLoader>
-#include <QVBoxLayout>
-
-AddServerDialog::AddServerDialog()
-{
- QUiLoader l_loader(this);
- QFile l_uiFile(Options::getInstance().getUIAsset(DEFAULT_UI));
-
- if (!l_uiFile.open(QFile::ReadOnly))
- {
- qCritical() << "Unable to open file " << l_uiFile.fileName();
- return;
- }
- ui_widget = l_loader.load(&l_uiFile, this);
-
- auto l_layout = new QVBoxLayout(this);
- l_layout->addWidget(ui_widget);
-
- FROM_UI(QLineEdit, server_display_name_edit);
- FROM_UI(QLineEdit, server_hostname_edit);
- FROM_UI(QSpinBox, server_port_box);
- FROM_UI(QComboBox, server_protocol_box);
- FROM_UI(QPlainTextEdit, server_description_edit);
- FROM_UI(QDialogButtonBox, server_dialog_button);
- connect(ui_server_dialog_button, &QDialogButtonBox::accepted, this, &::AddServerDialog::onSavePressed);
- connect(ui_server_dialog_button, &QDialogButtonBox::rejected, this, &AddServerDialog::onCancelPressed);
-
- FROM_UI(QLabel, server_legacy_lbl);
- FROM_UI(QLineEdit, server_legacy_edit);
- FROM_UI(QPushButton, server_legacy_load_button);
- connect(ui_server_legacy_load_button, &QPushButton::released, this, &AddServerDialog::parseLegacyServerEntry);
-}
-
-void AddServerDialog::onSavePressed()
-{
- server_type server;
- server.name = ui_server_display_name_edit->text();
- server.ip = ui_server_hostname_edit->text();
- server.port = ui_server_port_box->value();
- server.desc = ui_server_description_edit->toPlainText();
- server.socket_type = ui_server_protocol_box->currentIndex() == TCP_INDEX ? TCP : WEBSOCKETS;
- Options::getInstance().addFavorite(server);
- close();
-}
-
-void AddServerDialog::onCancelPressed()
-{
- close();
- deleteLater();
-}
-
-void AddServerDialog::parseLegacyServerEntry()
-{
- QStringList l_legacy_entry = ui_server_legacy_edit->text().split(":");
- server_type l_server_entry;
- if (l_legacy_entry.isEmpty())
- {
- qDebug() << "Legacy entry empty.";
- return;
- }
-
- int l_item_count = l_legacy_entry.size();
-
- if (l_item_count >= 3)
- {
- ui_server_hostname_edit->setText(l_legacy_entry.at(0));
- ui_server_port_box->setValue(l_legacy_entry.at(1).toInt());
- ui_server_display_name_edit->setText(l_legacy_entry.at(2));
- if (l_item_count >= 4)
- {
- if (l_legacy_entry.at(3) == "ws")
- {
- ui_server_protocol_box->setCurrentIndex(1);
- }
- else
- {
- ui_server_protocol_box->setCurrentIndex(0);
- }
- }
- }
-}
diff --git a/src/widgets/add_server_dialog.h b/src/widgets/add_server_dialog.h
deleted file mode 100644
index 5df868cc..00000000
--- a/src/widgets/add_server_dialog.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#pragma once
-
-#include "interfaces/server_dialog.h"
-
-#include <QComboBox>
-#include <QDialogButtonBox>
-#include <QLabel>
-#include <QLineEdit>
-#include <QPlainTextEdit>
-#include <QPushButton>
-#include <QSpinBox>
-
-class AddServerDialog : public AttorneyOnline::UI::FavoriteServerDialog
-{
- Q_OBJECT
-
-public:
- AddServerDialog();
- ~AddServerDialog() = default;
-
-private:
- QWidget *ui_widget;
-
- QLineEdit *ui_server_display_name_edit;
- QLineEdit *ui_server_hostname_edit;
- QSpinBox *ui_server_port_box;
- QComboBox *ui_server_protocol_box;
- QPlainTextEdit *ui_server_description_edit;
- QDialogButtonBox *ui_server_dialog_button;
-
- // Legacy Server UI
- QLabel *ui_server_legacy_lbl;
- QLineEdit *ui_server_legacy_edit;
- QPushButton *ui_server_legacy_load_button;
-
-private Q_SLOTS:
- void onSavePressed() override;
- void onCancelPressed() override;
- void parseLegacyServerEntry();
-};
diff --git a/src/widgets/direct_connect_dialog.cpp b/src/widgets/direct_connect_dialog.cpp
index 40e75b76..db4cde62 100644
--- a/src/widgets/direct_connect_dialog.cpp
+++ b/src/widgets/direct_connect_dialog.cpp
@@ -9,11 +9,16 @@
#include <QUiLoader>
#include <QVBoxLayout>
-DirectConnectDialog::DirectConnectDialog(NetworkManager *p_net_manager)
- : net_manager(p_net_manager)
+const QString DirectConnectDialog::UI_FILE_PATH = "direct_connect_dialog.ui";
+const QRegularExpression DirectConnectDialog::SCHEME_PATTERN{"^\\w+://.+$"};
+const int DirectConnectDialog::CONNECT_TIMEOUT = 5 * 1000;
+
+DirectConnectDialog::DirectConnectDialog(NetworkManager *netManager, QWidget *parent)
+ : QDialog(parent)
+ , net_manager(netManager)
{
QUiLoader l_loader(this);
- QFile l_uiFile(Options::getInstance().getUIAsset(DEFAULT_UI));
+ QFile l_uiFile(Options::getInstance().getUIAsset(UI_FILE_PATH));
if (!l_uiFile.open(QFile::ReadOnly))
{
@@ -36,8 +41,8 @@ DirectConnectDialog::DirectConnectDialog(NetworkManager *p_net_manager)
connect(net_manager, &NetworkManager::server_connected, this, &DirectConnectDialog::onServerConnected);
- connect(&connect_timeout, &QTimer::timeout, this, &DirectConnectDialog::onConnectTimeout);
- connect_timeout.setSingleShot(true);
+ connect(&m_connect_timeout, &QTimer::timeout, this, &DirectConnectDialog::onConnectTimeout);
+ m_connect_timeout.setSingleShot(true);
}
void DirectConnectDialog::onConnectPressed()
@@ -53,9 +58,9 @@ void DirectConnectDialog::onConnectPressed()
call_error(tr("Invalid URL."));
return;
}
- if (!to_connection_type.contains(l_url.scheme()))
+ if (!SERVER_CONNECTION_TYPE_STRING_MAP.contains(l_url.scheme()))
{
- call_error(tr("Scheme not recognized. Must be either of the following: ") % QStringList::fromVector(to_connection_type.keys().toVector()).join(", "));
+ call_error(tr("Scheme not recognized. Must be either of the following: ") % QStringList::fromVector(SERVER_CONNECTION_TYPE_STRING_MAP.keys().toVector()).join(", "));
return;
}
if (l_url.port() == -1)
@@ -63,8 +68,8 @@ void DirectConnectDialog::onConnectPressed()
call_error(tr("Invalid server port."));
return;
}
- server_type l_server;
- l_server.socket_type = to_connection_type[l_url.scheme()];
+ ServerInfo l_server;
+ l_server.socket_type = SERVER_CONNECTION_TYPE_STRING_MAP[l_url.scheme()];
l_server.ip = l_url.host();
l_server.port = l_url.port();
l_server.name = "Direct Connection";
@@ -73,7 +78,7 @@ void DirectConnectDialog::onConnectPressed()
ui_direct_connect_button->setEnabled(false);
ui_direct_connection_status_lbl->setText("Connecting...");
ui_direct_connection_status_lbl->setStyleSheet("color : rgb(0,64,156)");
- connect_timeout.start(CONNECT_TIMEOUT);
+ m_connect_timeout.start(CONNECT_TIMEOUT);
}
void DirectConnectDialog::onServerConnected()
diff --git a/src/widgets/direct_connect_dialog.h b/src/widgets/direct_connect_dialog.h
index fc34f748..b2ac9be3 100644
--- a/src/widgets/direct_connect_dialog.h
+++ b/src/widgets/direct_connect_dialog.h
@@ -16,16 +16,17 @@ class DirectConnectDialog : public QDialog
Q_OBJECT
public:
- DirectConnectDialog(NetworkManager *p_net_manager);
- ~DirectConnectDialog() = default;
-
-private Q_SLOTS:
- void onConnectPressed();
- void onServerConnected();
- void onConnectTimeout();
+ DirectConnectDialog(NetworkManager *netManager, QWidget *parent = nullptr);
private:
+ static const QString UI_FILE_PATH;
+ static const QRegularExpression SCHEME_PATTERN;
+ static const int CONNECT_TIMEOUT;
+
NetworkManager *net_manager;
+ QTimer m_connect_timeout;
+
+ QWidget *ui_widget;
QLineEdit *ui_direct_hostname_edit;
@@ -33,11 +34,8 @@ private:
QPushButton *ui_direct_connect_button;
QPushButton *ui_direct_cancel_button;
- QWidget *ui_widget;
- QTimer connect_timeout;
-
- const int TCP_INDEX = 0;
- const QRegularExpression SCHEME_PATTERN{"^\\w+://.+$"};
- const int CONNECT_TIMEOUT = 5 * 1000;
- const QString DEFAULT_UI = "direct_connect_dialog.ui";
+private Q_SLOTS:
+ void onConnectPressed();
+ void onServerConnected();
+ void onConnectTimeout();
};
diff --git a/src/widgets/edit_server_dialog.cpp b/src/widgets/edit_server_dialog.cpp
deleted file mode 100644
index a302f372..00000000
--- a/src/widgets/edit_server_dialog.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-#include "edit_server_dialog.h"
-
-#include "datatypes.h"
-#include "gui_utils.h"
-#include "options.h"
-
-#include <QFile>
-#include <QUiLoader>
-#include <QVBoxLayout>
-
-EditServerDialog::EditServerDialog(int index)
- : index(index) // lol
-{
- QUiLoader l_loader(this);
- QFile l_uiFile(Options::getInstance().getUIAsset(DEFAULT_UI));
-
- if (!l_uiFile.open(QFile::ReadOnly))
- {
- qCritical() << "Unable to open file " << l_uiFile.fileName();
- return;
- }
- ui_widget = l_loader.load(&l_uiFile, this);
-
- auto l_layout = new QVBoxLayout(this);
- l_layout->addWidget(ui_widget);
-
- FROM_UI(QLineEdit, server_display_name_edit);
- FROM_UI(QLineEdit, server_hostname_edit);
- FROM_UI(QSpinBox, server_port_box);
- FROM_UI(QComboBox, server_protocol_box);
- FROM_UI(QPlainTextEdit, server_description_edit);
- FROM_UI(QDialogButtonBox, server_dialog_button);
- connect(ui_server_dialog_button, &QDialogButtonBox::accepted, this, &::EditServerDialog::onSavePressed);
- connect(ui_server_dialog_button, &QDialogButtonBox::rejected, this, &EditServerDialog::onCancelPressed);
-
- // We don't need you.
- FROM_UI(QLabel, server_legacy_lbl);
- FROM_UI(QLineEdit, server_legacy_edit);
- FROM_UI(QPushButton, server_legacy_load_button);
-
- ui_server_legacy_lbl->setVisible(false);
- ui_server_legacy_edit->setVisible(false);
- ui_server_legacy_load_button->setVisible(false);
-
- loadEntry();
-}
-
-void EditServerDialog::loadEntry()
-{
- server_type server = Options::getInstance().favorites().at(index);
- ui_server_display_name_edit->setText(server.name);
- ui_server_hostname_edit->setText(server.ip);
- ui_server_port_box->setValue(server.port);
- ui_server_description_edit->setPlainText(server.desc);
- ui_server_protocol_box->setCurrentIndex(server.socket_type);
-}
-
-void EditServerDialog::onSavePressed()
-{
- server_type server;
- server.name = ui_server_display_name_edit->text();
- server.ip = ui_server_hostname_edit->text();
- server.port = ui_server_port_box->value();
- server.desc = ui_server_description_edit->toPlainText();
- server.socket_type = ui_server_protocol_box->currentIndex() == TCP_INDEX ? TCP : WEBSOCKETS;
- Options::getInstance().updateFavorite(server, index);
- close();
- deleteLater();
-}
-
-void EditServerDialog::onCancelPressed()
-{
- close();
- deleteLater();
-}
diff --git a/src/widgets/edit_server_dialog.h b/src/widgets/edit_server_dialog.h
deleted file mode 100644
index 628ea606..00000000
--- a/src/widgets/edit_server_dialog.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#pragma once
-
-#include "interfaces/server_dialog.h"
-
-#include <QComboBox>
-#include <QDialogButtonBox>
-#include <QLabel>
-#include <QLineEdit>
-#include <QPlainTextEdit>
-#include <QPushButton>
-#include <QSpinBox>
-
-class EditServerDialog : public AttorneyOnline::UI::FavoriteServerDialog
-{
- Q_OBJECT
-
-public:
- EditServerDialog(int index);
- ~EditServerDialog() = default;
-
-private:
- QWidget *ui_widget;
-
- QLineEdit *ui_server_display_name_edit;
- QLineEdit *ui_server_hostname_edit;
- QSpinBox *ui_server_port_box;
- QComboBox *ui_server_protocol_box;
- QPlainTextEdit *ui_server_description_edit;
- QDialogButtonBox *ui_server_dialog_button;
-
- // Legacy Server UI
- QLabel *ui_server_legacy_lbl;
- QLineEdit *ui_server_legacy_edit;
- QPushButton *ui_server_legacy_load_button;
-
- int index;
- void loadEntry();
-
-private Q_SLOTS:
- void onSavePressed() override;
- void onCancelPressed() override;
-};
diff --git a/src/widgets/server_editor_dialog.cpp b/src/widgets/server_editor_dialog.cpp
new file mode 100644
index 00000000..102e9030
--- /dev/null
+++ b/src/widgets/server_editor_dialog.cpp
@@ -0,0 +1,93 @@
+#include "server_editor_dialog.h"
+
+#include "datatypes.h"
+#include "gui_utils.h"
+#include "options.h"
+
+#include <QFile>
+#include <QUiLoader>
+#include <QVBoxLayout>
+
+const QString ServerEditorDialog::UI_FILE_PATH = "favorite_server_dialog.ui";
+
+ServerEditorDialog::ServerEditorDialog(QWidget *parent)
+ : QDialog(parent)
+{
+ QUiLoader loader(this);
+ QFile file(Options::getInstance().getUIAsset(UI_FILE_PATH));
+
+ if (!file.open(QFile::ReadOnly))
+ {
+ qFatal("Unable to open file %s", qPrintable(file.fileName()));
+ return;
+ }
+ ui_body = loader.load(&file, this);
+
+ auto layout = new QVBoxLayout(this);
+ layout->addWidget(ui_body);
+
+ FROM_UI(QLineEdit, name);
+ FROM_UI(QLineEdit, hostname);
+ FROM_UI(QSpinBox, port);
+ FROM_UI(QComboBox, protocol);
+ FROM_UI(QPlainTextEdit, description);
+ FROM_UI(QDialogButtonBox, button_box);
+
+ FROM_UI(QLineEdit, legacy_edit);
+ FROM_UI(QPushButton, parse_legacy);
+
+ connect(ui_parse_legacy, &QPushButton::released, this, &ServerEditorDialog::parseLegacyEntry);
+
+ connect(ui_button_box, &QDialogButtonBox::accepted, this, &ServerEditorDialog::accept);
+ connect(ui_button_box, &QDialogButtonBox::rejected, this, &ServerEditorDialog::reject);
+}
+
+ServerInfo ServerEditorDialog::currentServerInfo() const
+{
+ ServerInfo server;
+ server.name = ui_name->text();
+ server.ip = ui_hostname->text();
+ server.port = ui_port->value();
+ server.description = ui_description->toPlainText();
+ server.socket_type = ServerConnectionType(ui_protocol->currentIndex());
+ return server;
+}
+
+void ServerEditorDialog::loadServerInfo(ServerInfo server)
+{
+ ui_name->setText(server.name);
+ ui_hostname->setText(server.ip);
+ ui_port->setValue(server.port);
+ ui_description->setPlainText(server.description);
+ ui_protocol->setCurrentIndex(server.socket_type);
+}
+
+void ServerEditorDialog::parseLegacyEntry()
+{
+ QStringList entry = ui_legacy_edit->text().split(":");
+ ServerInfo l_server_entry;
+ if (entry.isEmpty())
+ {
+ qDebug() << "Legacy entry empty.";
+ return;
+ }
+
+ int item_count = entry.size();
+ if (item_count >= 3)
+ {
+ ui_hostname->setText(entry.at(0));
+ ui_port->setValue(entry.at(1).toInt());
+ ui_name->setText(entry.at(2));
+ if (item_count >= 4)
+ {
+ if (entry.at(3) == "ws")
+ {
+ ui_protocol->setCurrentIndex(1);
+ }
+ else
+ {
+ ui_protocol->setCurrentIndex(0);
+ }
+ }
+ }
+}
diff --git a/src/widgets/server_editor_dialog.h b/src/widgets/server_editor_dialog.h
new file mode 100644
index 00000000..1ceb3524
--- /dev/null
+++ b/src/widgets/server_editor_dialog.h
@@ -0,0 +1,43 @@
+#pragma once
+
+#include "datatypes.h"
+
+#include <QComboBox>
+#include <QDialog>
+#include <QDialogButtonBox>
+#include <QLabel>
+#include <QLineEdit>
+#include <QPlainTextEdit>
+#include <QPushButton>
+#include <QSpinBox>
+
+class ServerEditorDialog : public QDialog
+{
+ Q_OBJECT
+
+public:
+ ServerEditorDialog(QWidget *parent = nullptr);
+ ServerEditorDialog(const ServerInfo &server, QWidget *parent = nullptr);
+
+ ServerInfo currentServerInfo() const;
+
+ void loadServerInfo(ServerInfo server);
+
+private:
+ static const QString UI_FILE_PATH;
+
+ QWidget *ui_body;
+
+ QLineEdit *ui_name;
+ QLineEdit *ui_hostname;
+ QSpinBox *ui_port;
+ QComboBox *ui_protocol;
+ QPlainTextEdit *ui_description;
+ QDialogButtonBox *ui_button_box;
+
+ QLineEdit *ui_legacy_edit;
+ QPushButton *ui_parse_legacy;
+
+private Q_SLOTS:
+ void parseLegacyEntry();
+};