aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt11
-rw-r--r--data/ui/favorite_server_dialog.ui36
-rw-r--r--src/aoapplication.h6
-rw-r--r--src/aobutton.cpp75
-rw-r--r--src/aobutton.h17
-rw-r--r--src/aocharbutton.cpp69
-rw-r--r--src/aocharbutton.h16
-rw-r--r--src/aoemotebutton.cpp85
-rw-r--r--src/aoemotebutton.h18
-rw-r--r--src/aoevidencebutton.cpp87
-rw-r--r--src/aoevidencebutton.h18
-rw-r--r--src/aoimage.cpp20
-rw-r--r--src/aoimage.h10
-rw-r--r--src/aopacket.cpp6
-rw-r--r--src/aopacket.h7
-rw-r--r--src/charselect.cpp29
-rw-r--r--src/chatlogpiece.cpp67
-rw-r--r--src/chatlogpiece.h19
-rw-r--r--src/courtroom.cpp201
-rw-r--r--src/courtroom.h16
-rw-r--r--src/datatypes.h60
-rw-r--r--src/demoserver.cpp8
-rw-r--r--src/emotes.cpp36
-rw-r--r--src/evidence.cpp108
-rw-r--r--src/interfaces/server_dialog.h20
-rw-r--r--src/lobby.cpp45
-rw-r--r--src/networkmanager.cpp32
-rw-r--r--src/networkmanager.h5
-rw-r--r--src/options.cpp30
-rw-r--r--src/options.h8
-rw-r--r--src/packet_distribution.cpp24
-rw-r--r--src/scrolltext.cpp10
-rw-r--r--src/scrolltext.h5
-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
41 files changed, 716 insertions, 928 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d6194a91..ba09819d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -66,13 +66,14 @@ add_executable(Attorney_Online
src/discord_rich_presence.cpp
src/discord_rich_presence.h
src/emotes.cpp
+ src/eventfilters.cpp
src/eventfilters.h
src/evidence.cpp
src/file_functions.cpp
src/file_functions.h
+ src/gui_utils.h
src/hardware_functions.cpp
src/hardware_functions.h
- src/interfaces/server_dialog.h
src/lobby.cpp
src/lobby.h
src/main.cpp
@@ -85,17 +86,13 @@ add_executable(Attorney_Online
src/scrolltext.cpp
src/scrolltext.h
src/text_file_functions.cpp
- src/gui_utils.h
- src/widgets/add_server_dialog.cpp
- src/widgets/add_server_dialog.h
src/widgets/aooptionsdialog.cpp
src/widgets/aooptionsdialog.h
src/widgets/direct_connect_dialog.cpp
src/widgets/direct_connect_dialog.h
- src/widgets/edit_server_dialog.cpp
- src/widgets/edit_server_dialog.h
+ src/widgets/server_editor_dialog.cpp
+ src/widgets/server_editor_dialog.h
data.qrc
- src/eventfilters.cpp
)
set_target_properties(Attorney_Online PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin")
diff --git a/data/ui/favorite_server_dialog.ui b/data/ui/favorite_server_dialog.ui
index a1d5f28e..f0f60cb4 100644
--- a/data/ui/favorite_server_dialog.ui
+++ b/data/ui/favorite_server_dialog.ui
@@ -23,17 +23,17 @@
<item row="2" column="0">
<layout class="QHBoxLayout" name="server_legacy_layout">
<item>
- <widget class="QLabel" name="server_legacy_lbl">
+ <widget class="QLabel" name="label">
<property name="text">
<string>Legacy Entry :</string>
</property>
</widget>
</item>
<item>
- <widget class="QLineEdit" name="server_legacy_edit"/>
+ <widget class="QLineEdit" name="legacy_edit"/>
</item>
<item>
- <widget class="QPushButton" name="server_legacy_load_button">
+ <widget class="QPushButton" name="parse_legacy">
<property name="text">
<string>Convert</string>
</property>
@@ -44,48 +44,48 @@
<item row="0" column="0">
<layout class="QFormLayout" name="server_new_layout">
<item row="0" column="0">
- <widget class="QLabel" name="server_display_name_lbl">
+ <widget class="QLabel" name="label_3">
<property name="text">
- <string>Display Name:</string>
+ <string>Name:</string>
</property>
</widget>
</item>
<item row="0" column="1">
- <widget class="QLineEdit" name="server_display_name_edit"/>
+ <widget class="QLineEdit" name="name"/>
</item>
<item row="1" column="0">
- <widget class="QLabel" name="server_hostname_lbl">
+ <widget class="QLabel" name="label_4">
<property name="text">
- <string>Hostname :</string>
+ <string>Hostname:</string>
</property>
</widget>
</item>
<item row="1" column="1">
- <widget class="QLineEdit" name="server_hostname_edit"/>
+ <widget class="QLineEdit" name="hostname"/>
</item>
<item row="2" column="0">
- <widget class="QLabel" name="server_port_lbl">
+ <widget class="QLabel" name="label_5">
<property name="text">
<string>Port:</string>
</property>
</widget>
</item>
<item row="2" column="1">
- <widget class="QSpinBox" name="server_port_box">
+ <widget class="QSpinBox" name="port">
<property name="maximum">
<number>65535</number>
</property>
</widget>
</item>
<item row="3" column="0">
- <widget class="QLabel" name="server_protocol_lbl">
+ <widget class="QLabel" name="label_6">
<property name="text">
- <string>Protocol :</string>
+ <string>Protocol:</string>
</property>
</widget>
</item>
<item row="3" column="1">
- <widget class="QComboBox" name="server_protocol_box">
+ <widget class="QComboBox" name="protocol">
<item>
<property name="text">
<string>TCP</string>
@@ -99,14 +99,14 @@
</widget>
</item>
<item row="4" column="0">
- <widget class="QLabel" name="server_description_lbl">
+ <widget class="QLabel" name="label_2">
<property name="text">
<string>Description:</string>
</property>
</widget>
</item>
<item row="4" column="1">
- <widget class="QPlainTextEdit" name="server_description_edit">
+ <widget class="QPlainTextEdit" name="description">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
@@ -118,7 +118,7 @@
</layout>
</item>
<item row="1" column="0">
- <widget class="Line" name="server_legacy_bar">
+ <widget class="Line" name="line">
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
@@ -128,7 +128,7 @@
</widget>
</item>
<item row="3" column="0">
- <widget class="QDialogButtonBox" name="server_dialog_button">
+ <widget class="QDialogButtonBox" name="button_box">
<property name="standardButtons">
<set>QDialogButtonBox::Close|QDialogButtonBox::Save</set>
</property>
diff --git a/src/aoapplication.h b/src/aoapplication.h
index 419377f1..1ff059b6 100644
--- a/src/aoapplication.h
+++ b/src/aoapplication.h
@@ -128,8 +128,8 @@ public:
///////////////////////////////////////////
- void set_server_list(QVector<server_type> &servers) { server_list = servers; }
- QVector<server_type> &get_server_list() { return server_list; }
+ void set_server_list(QVector<ServerInfo> &servers) { server_list = servers; }
+ QVector<ServerInfo> &get_server_list() { return server_list; }
// implementation in path_functions.cpp
VPath get_theme_path(QString p_file, QString p_theme = QString());
@@ -359,7 +359,7 @@ private:
const int MAJOR_VERSION = 11;
const int MINOR_VERSION = 0;
- QVector<server_type> server_list;
+ QVector<ServerInfo> server_list;
QHash<uint, QString> asset_lookup_cache;
QHash<uint, QString> dir_listing_cache;
QSet<uint> dir_listing_exist_cache;
diff --git a/src/aobutton.cpp b/src/aobutton.cpp
index 4fc50d65..07ea649a 100644
--- a/src/aobutton.cpp
+++ b/src/aobutton.cpp
@@ -1,12 +1,10 @@
#include "aobutton.h"
-#include "debug_functions.h"
-#include "file_functions.h"
#include "options.h"
-AOButton::AOButton(AOApplication *p_ao_app, QWidget *parent)
+AOButton::AOButton(AOApplication *ao_app, QWidget *parent)
: QPushButton(parent)
- , ao_app(p_ao_app)
+ , ao_app(ao_app)
{
m_movie = new QMovie(this);
@@ -17,32 +15,61 @@ AOButton::AOButton(AOApplication *p_ao_app, QWidget *parent)
}
AOButton::~AOButton()
-{}
+{
+ deleteMovie();
+}
-void AOButton::set_image(QString p_path, QString p_misc)
+void AOButton::setImage(QString image_name)
{
- m_movie->stop();
- QString p_image;
- p_image = ao_app->get_image(p_path, Options::getInstance().theme(), Options::getInstance().subTheme(), ao_app->default_theme, p_misc, "", "", !Options::getInstance().animatedThemeEnabled());
- if (p_image.isEmpty())
+ deleteMovie();
+
+ QString file_path = ao_app->get_image(image_name, Options::getInstance().theme(), Options::getInstance().subTheme(), ao_app->default_theme, QString(), QString(), QString(), !Options::getInstance().animatedThemeEnabled());
+ if (file_path.isEmpty())
{
- this->setIcon(QIcon());
- this->setIconSize(this->size());
- this->setStyleSheet("");
- return;
+ setStyleSheet(QString());
+ setIcon(QIcon());
}
- this->setText("");
- this->setStyleSheet("QPushButton { background-color: transparent; border: 0px }");
- m_movie->setFileName(p_image);
- // We double-check if the user wants animated themes, so even if an animated image slipped through,
- // we still set it static
- if (Options::getInstance().animatedThemeEnabled() && m_movie->frameCount() > 1)
+ else
{
- m_movie->start();
+ setText(QString());
+ setStyleSheet("QPushButton { background-color: transparent; border: 0px }");
+
+ if (Options::getInstance().animatedThemeEnabled())
+ {
+ m_movie = new QMovie;
+ m_movie->setFileName(file_path);
+
+ connect(m_movie, &QMovie::frameChanged, this, &AOButton::handleNextFrame);
+
+ m_movie->start();
+ }
+ else
+ {
+ updateIcon(QPixmap(file_path));
+ }
}
- else
+}
+
+void AOButton::deleteMovie()
+{
+ if (m_movie)
{
- this->setIcon(QPixmap(p_image).scaled(this->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
- this->setIconSize(this->size());
+ disconnect(m_movie, &QMovie::frameChanged, this, &AOButton::handleNextFrame);
+
+ m_movie->stop();
+ m_movie->deleteLater();
+ m_movie = nullptr;
}
}
+
+void AOButton::handleNextFrame()
+{
+ updateIcon(m_movie->currentPixmap());
+}
+
+void AOButton::updateIcon(QPixmap icon)
+{
+ const QSize current_size = size();
+ setIcon(icon.scaled(current_size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
+ setIconSize(current_size);
+}
diff --git a/src/aobutton.h b/src/aobutton.h
index 058d9e5c..8104bdbd 100644
--- a/src/aobutton.h
+++ b/src/aobutton.h
@@ -2,7 +2,6 @@
#include "aoapplication.h"
-#include <QDebug>
#include <QMovie>
#include <QPushButton>
@@ -11,12 +10,20 @@ class AOButton : public QPushButton
Q_OBJECT
public:
- AOButton(AOApplication *p_ao_app, QWidget *parent = nullptr);
- ~AOButton();
+ explicit AOButton(AOApplication *ao_app, QWidget *parent = nullptr);
+ virtual ~AOButton();
- void set_image(QString p_image, QString p_misc = QString());
+ void setImage(QString image_name);
private:
AOApplication *ao_app;
- QMovie *m_movie;
+
+ QMovie *m_movie = nullptr;
+
+ void deleteMovie();
+
+private Q_SLOTS:
+ void handleNextFrame();
+
+ void updateIcon(QPixmap icon);
};
diff --git a/src/aocharbutton.cpp b/src/aocharbutton.cpp
index cab7fddd..d446cca3 100644
--- a/src/aocharbutton.cpp
+++ b/src/aocharbutton.cpp
@@ -2,46 +2,31 @@
#include "file_functions.h"
-AOCharButton::AOCharButton(AOApplication *p_ao_app, int x_pos, int y_pos, bool is_taken, QWidget *parent)
+AOCharButton::AOCharButton(AOApplication *ao_app, QWidget *parent)
: QPushButton(parent)
- , ao_app(p_ao_app)
- , m_taken(is_taken)
+ , ao_app(ao_app)
{
int size = 60 * Options::getInstance().themeScalingFactor();
int selector_size = 62 * Options::getInstance().themeScalingFactor();
- this->resize(size, size);
- this->move(x_pos, y_pos);
+ resize(size, size);
ui_taken = new AOImage(ao_app, this);
- ui_taken->resize(size, size);
- ui_taken->set_image("char_taken");
ui_taken->setAttribute(Qt::WA_TransparentForMouseEvents);
+ ui_taken->resize(size, size);
+ ui_taken->setImage("char_taken");
ui_taken->hide();
ui_selector = new AOImage(ao_app, parent);
- ui_selector->resize(selector_size, selector_size);
- int offset = Options::getInstance().themeScalingFactor();
- ui_selector->move(x_pos - offset, y_pos - offset);
- ui_selector->set_image("char_selector");
ui_selector->setAttribute(Qt::WA_TransparentForMouseEvents);
+ ui_selector->resize(selector_size, selector_size);
+ ui_selector->setImage("char_selector");
ui_selector->hide();
}
-void AOCharButton::reset()
-{
- ui_taken->hide();
- ui_selector->hide();
-}
-
-void AOCharButton::set_taken(bool is_taken)
+void AOCharButton::setTaken(bool enabled)
{
- m_taken = is_taken;
-}
-
-void AOCharButton::apply_taken_image()
-{
- if (m_taken)
+ if (enabled)
{
ui_taken->move(0, 0);
ui_taken->show();
@@ -52,45 +37,47 @@ void AOCharButton::apply_taken_image()
}
}
-void AOCharButton::set_image(QString p_character)
+void AOCharButton::setCharacter(QString character)
{
- QString image_path = ao_app->get_image_suffix(ao_app->get_character_path(p_character, "char_icon"), true);
+ QString image_path = ao_app->get_image_suffix(ao_app->get_character_path(character, "char_icon"), true);
- this->setText("");
+ setText(QString());
if (file_exists(image_path))
{
- this->setStyleSheet("QPushButton { border-image: url(\"" + image_path +
- "\") 0 0 0 0 stretch stretch; }"
- "QToolTip { background-image: url(); color: #000000; "
- "background-color: #ffffff; border: 0px; }");
+ setStyleSheet("QPushButton { border-image: url(\"" + image_path +
+ "\") 0 0 0 0 stretch stretch; }"
+ "QToolTip { background-image: url(); color: #000000; "
+ "background-color: #ffffff; border: 0px; }");
}
else
{
- this->setStyleSheet("QPushButton { border-image: url(); }"
- "QToolTip { background-image: url(); color: #000000; "
- "background-color: #ffffff; border: 0px; }");
- this->setText(p_character);
+ setStyleSheet("QPushButton { border-image: url(); }"
+ "QToolTip { background-image: url(); color: #000000; "
+ "background-color: #ffffff; border: 0px; }");
+ setText(character);
}
}
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
-void AOCharButton::enterEvent(QEvent *e)
+void AOCharButton::enterEvent(QEvent *event)
#else
-void AOCharButton::enterEvent(QEnterEvent *e)
+void AOCharButton::enterEvent(QEnterEvent *event)
#endif
{
int offset = Options::getInstance().themeScalingFactor();
- ui_selector->move(this->x() - offset, this->y() - offset);
+ ui_selector->move(x() - offset, y() - offset);
ui_selector->raise();
ui_selector->show();
setFlat(false);
- QPushButton::enterEvent(e);
+
+ QPushButton::enterEvent(event);
}
-void AOCharButton::leaveEvent(QEvent *e)
+void AOCharButton::leaveEvent(QEvent *event)
{
ui_selector->hide();
- QPushButton::leaveEvent(e);
+
+ QPushButton::leaveEvent(event);
}
diff --git a/src/aocharbutton.h b/src/aocharbutton.h
index 54117f48..ba618976 100644
--- a/src/aocharbutton.h
+++ b/src/aocharbutton.h
@@ -14,23 +14,19 @@ class AOCharButton : public QPushButton
Q_OBJECT
public:
- AOCharButton(AOApplication *p_ao_app, int x_pos, int y_pos, bool is_taken, QWidget *parent);
+ AOCharButton(AOApplication *ao_app, QWidget *parent);
- void refresh();
- void reset();
- void set_taken(bool is_taken);
+ void setCharacter(QString character);
- void apply_taken_image();
-
- void set_image(QString p_character);
+ void setTaken(bool enabled);
protected:
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
- void enterEvent(QEvent *e) override;
+ void enterEvent(QEvent *event) override;
#else
- void enterEvent(QEnterEvent *e) override;
+ void enterEvent(QEnterEvent *event) override;
#endif
- void leaveEvent(QEvent *e) override;
+ void leaveEvent(QEvent *event) override;
private:
AOApplication *ao_app;
diff --git a/src/aoemotebutton.cpp b/src/aoemotebutton.cpp
index 32e50ff8..028c265d 100644
--- a/src/aoemotebutton.cpp
+++ b/src/aoemotebutton.cpp
@@ -1,22 +1,25 @@
#include "aoemotebutton.h"
+
#include "file_functions.h"
-AOEmoteButton::AOEmoteButton(AOApplication *p_ao_app, int p_x, int p_y, int p_w, int p_h, QWidget *p_parent)
- : QPushButton(p_parent)
- , ao_app(p_ao_app)
+#include <QDebug>
+
+AOEmoteButton::AOEmoteButton(int id, int width, int height, AOApplication *ao_app, QWidget *parent)
+ : QPushButton(parent)
+ , ao_app(ao_app)
+ , m_id(id)
{
- this->move(p_x, p_y);
- this->resize(p_w, p_h);
+ resize(width, height);
ui_selected = new QLabel(this);
- ui_selected->resize(size());
ui_selected->setAttribute(Qt::WA_TransparentForMouseEvents);
+ ui_selected->resize(width, height);
ui_selected->hide();
- connect(this, &AOEmoteButton::clicked, this, &AOEmoteButton::on_clicked);
+ connect(this, &AOEmoteButton::clicked, this, [this] { Q_EMIT emoteClicked(m_id); });
}
-void AOEmoteButton::set_selected_image(QString p_image)
+void AOEmoteButton::setSelectedImage(QString p_image)
{
if (file_exists(p_image))
{
@@ -28,50 +31,24 @@ void AOEmoteButton::set_selected_image(QString p_image)
}
}
-void AOEmoteButton::set_id(int p_id)
-{
- m_id = p_id;
-}
-
-int AOEmoteButton::get_id()
+int AOEmoteButton::id()
{
return m_id;
}
-void AOEmoteButton::set_image(QString p_image, QString p_emote_comment)
+void AOEmoteButton::setImage(QString character, int emoteId, bool enabled)
{
- if (file_exists(p_image))
- {
- this->setText("");
- this->setStyleSheet("QPushButton { border: none; }"
- "QToolTip { color: #000000; background-color: #ffffff; border: 0px; }");
- this->setIcon(QPixmap(p_image).scaled(this->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
- this->setIconSize(this->size());
- }
- else
- {
- this->setText(p_emote_comment);
- this->setStyleSheet("QPushButton { border-image: url(); }"
- "QToolTip { background-image: url(); color: #000000; "
- "background-color: #ffffff; border: 0px; }");
- this->setIcon(QIcon());
- this->setIconSize(this->size());
- }
-}
+ QString emotion_number = QString::number(emoteId + 1);
-void AOEmoteButton::set_char_image(QString p_char, int p_emote, bool on)
-{
- QString emotion_number = QString::number(p_emote + 1);
- QStringList suffixes{"_off", "_on"};
QStringList suffixedPaths;
- for (const QString &suffix : suffixes)
+ static const QStringList SUFFIX_LIST{"_off", "_on"};
+ for (const QString &suffix : SUFFIX_LIST)
{
- suffixedPaths.append(ao_app->get_image_suffix(ao_app->get_character_path(p_char, "emotions/button" + emotion_number + suffix)));
+ suffixedPaths.append(ao_app->get_image_suffix(ao_app->get_character_path(character, "emotions/button" + emotion_number + suffix)));
}
- QString image = suffixedPaths[static_cast<int>(on)];
- QString emoteComment = ao_app->get_emote_comment(p_char, p_emote);
- if (on && !file_exists(suffixedPaths[1]))
+ QString image = suffixedPaths[static_cast<int>(enabled)];
+ if (enabled && !file_exists(suffixedPaths[1]))
{
ui_selected->show();
image = suffixedPaths[0];
@@ -81,10 +58,22 @@ void AOEmoteButton::set_char_image(QString p_char, int p_emote, bool on)
ui_selected->hide();
}
- set_image(image, emoteComment);
-}
-
-void AOEmoteButton::on_clicked()
-{
- Q_EMIT emote_clicked(m_id);
+ if (file_exists(image))
+ {
+ setText(QString());
+ setStyleSheet("QPushButton { border: none; }"
+ "QToolTip { color: #000000; background-color: #ffffff; border: 0px; }");
+ setIcon(QPixmap(image).scaled(size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
+ setIconSize(size());
+ }
+ else
+ {
+ QString emote_comment = ao_app->get_emote_comment(character, emoteId);
+ setText(emote_comment);
+ setStyleSheet("QPushButton { border-image: url(); }"
+ "QToolTip { background-image: url(); color: #000000; "
+ "background-color: #ffffff; border: 0px; }");
+ setIcon(QIcon());
+ setIconSize(size());
+ }
}
diff --git a/src/aoemotebutton.h b/src/aoemotebutton.h
index 93149492..3c316314 100644
--- a/src/aoemotebutton.h
+++ b/src/aoemotebutton.h
@@ -1,9 +1,8 @@
#pragma once
#include "aoapplication.h"
-#include <QDebug>
+
#include <QLabel>
-#include <QPainter>
#include <QPushButton>
class AOEmoteButton : public QPushButton
@@ -11,18 +10,16 @@ class AOEmoteButton : public QPushButton
Q_OBJECT
public:
- AOEmoteButton(AOApplication *p_ao_app, int p_x, int p_y, int p_w, int p_h, QWidget *p_parent);
+ AOEmoteButton(int id, int width, int height, AOApplication *ao_app, QWidget *parent = nullptr);
- void set_image(QString p_image, QString p_emote_comment);
- void set_char_image(QString p_char, int p_emote, bool on);
+ int id();
- void set_selected_image(QString p_image);
+ void setImage(QString character, int emoteId, bool enabled);
- void set_id(int p_id);
- int get_id();
+ void setSelectedImage(QString p_image);
Q_SIGNALS:
- void emote_clicked(int p_id);
+ void emoteClicked(int p_id);
private:
AOApplication *ao_app;
@@ -30,7 +27,4 @@ private:
int m_id = 0;
QLabel *ui_selected = nullptr;
-
-private Q_SLOTS:
- void on_clicked();
};
diff --git a/src/aoevidencebutton.cpp b/src/aoevidencebutton.cpp
index b026c13e..31163ca8 100644
--- a/src/aoevidencebutton.cpp
+++ b/src/aoevidencebutton.cpp
@@ -2,61 +2,58 @@
#include "file_functions.h"
-AOEvidenceButton::AOEvidenceButton(AOApplication *p_ao_app, int p_x, int p_y, int p_w, int p_h, QWidget *p_parent)
- : QPushButton(p_parent)
- , ao_app(p_ao_app)
+AOEvidenceButton::AOEvidenceButton(int id, int width, int height, AOApplication *ao_app, QWidget *parent)
+ : QPushButton(parent)
+ , ao_app(ao_app)
+ , m_id(id)
{
+ resize(width, height);
+
ui_selected = new AOImage(ao_app, this);
- ui_selected->resize(p_w, p_h);
- // ui_selected->move(p_x, p_y);
- ui_selected->set_image("evidence_selected");
+ ui_selected->resize(width, height);
+ ui_selected->setImage("evidence_selected");
ui_selected->setAttribute(Qt::WA_TransparentForMouseEvents);
ui_selected->hide();
ui_selector = new AOImage(ao_app, this);
- ui_selector->resize(p_w, p_h);
- // ui_selector->move(p_x - 1, p_y - 1);
- ui_selector->set_image("evidence_selector");
+ ui_selector->resize(width, height);
+ ui_selector->setImage("evidence_selector");
ui_selector->setAttribute(Qt::WA_TransparentForMouseEvents);
ui_selector->hide();
- this->move(p_x, p_y);
- this->resize(p_w, p_h);
- // this->setAcceptDrops(true);
-
connect(this, &AOEvidenceButton::clicked, this, &AOEvidenceButton::on_clicked);
}
-void AOEvidenceButton::set_image(QString p_image)
+void AOEvidenceButton::setImage(QString fileName)
{
- QString image_path = ao_app->get_real_path(ao_app->get_evidence_path(p_image));
- if (file_exists(p_image))
+ QString image_path = ao_app->get_real_path(ao_app->get_evidence_path(fileName));
+ if (file_exists(fileName))
{
- this->setText("");
- this->setStyleSheet("QPushButton { border-image: url(\"" + p_image +
- "\") 0 0 0 0 stretch stretch; }"
- "QToolTip { color: #000000; background-color: #ffffff; border: 0px; }");
+ setText("");
+ setStyleSheet("QPushButton { border-image: url(\"" + fileName +
+ "\") 0 0 0 0 stretch stretch; }"
+ "QToolTip { color: #000000; background-color: #ffffff; border: 0px; }");
}
else if (file_exists(image_path))
{
- this->setText("");
- this->setStyleSheet("QPushButton { border-image: url(\"" + image_path +
- "\") 0 0 0 0 stretch stretch; }"
- "QToolTip { color: #000000; background-color: #ffffff; border: 0px; }");
+ setText("");
+ setStyleSheet("QPushButton { border-image: url(\"" + image_path +
+ "\") 0 0 0 0 stretch stretch; }"
+ "QToolTip { color: #000000; background-color: #ffffff; border: 0px; }");
}
else
{
- this->setText(p_image);
- this->setStyleSheet("QPushButton { border-image: url(); }"
- "QToolTip { background-image: url(); color: #000000; "
- "background-color: #ffffff; border: 0px; }");
+ setText(fileName);
+ setStyleSheet("QPushButton { border-image: url(); }"
+ "QToolTip { background-image: url(); color: #000000; "
+ "background-color: #ffffff; border: 0px; }");
}
}
-void AOEvidenceButton::set_theme_image(QString p_image)
+void AOEvidenceButton::setThemeImage(QString fileName)
{
- QString theme_image_path = ao_app->get_real_path(ao_app->get_theme_path(p_image));
- QString default_image_path = ao_app->get_real_path(ao_app->get_theme_path(p_image, ao_app->default_theme));
+ QString theme_image_path = ao_app->get_real_path(ao_app->get_theme_path(fileName));
+ QString default_image_path = ao_app->get_real_path(ao_app->get_theme_path(fileName, ao_app->default_theme));
QString final_image_path;
@@ -69,10 +66,10 @@ void AOEvidenceButton::set_theme_image(QString p_image)
final_image_path = default_image_path;
}
- this->set_image(final_image_path);
+ setImage(final_image_path);
}
-void AOEvidenceButton::set_selected(bool p_selected)
+void AOEvidenceButton::setSelected(bool p_selected)
{
if (p_selected)
{
@@ -86,30 +83,14 @@ void AOEvidenceButton::set_selected(bool p_selected)
void AOEvidenceButton::on_clicked()
{
- Q_EMIT evidence_clicked(m_id);
+ Q_EMIT evidenceClicked(m_id);
}
void AOEvidenceButton::mouseDoubleClickEvent(QMouseEvent *e)
{
QPushButton::mouseDoubleClickEvent(e);
- Q_EMIT evidence_double_clicked(m_id);
-}
-
-/*
-void AOEvidenceButton::dragLeaveEvent(QMouseEvent *e)
-{
- //QWidget::dragLeaveEvent(e);
-
- qDebug() << "drag leave event";
-}
-
-void AOEvidenceButton::dragEnterEvent(QMouseEvent *e)
-{
- //QWidget::dragEnterEvent(e);
-
- qDebug() << "drag enter event";
+ Q_EMIT evidenceDoubleClicked(m_id);
}
-*/
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
void AOEvidenceButton::enterEvent(QEvent *e)
@@ -119,7 +100,7 @@ void AOEvidenceButton::enterEvent(QEnterEvent *e)
{
ui_selector->show();
- Q_EMIT on_hover(m_id, true);
+ Q_EMIT mouseoverUpdated(m_id, true);
setFlat(false);
QPushButton::enterEvent(e);
@@ -129,6 +110,6 @@ void AOEvidenceButton::leaveEvent(QEvent *e)
{
ui_selector->hide();
- Q_EMIT on_hover(m_id, false);
+ Q_EMIT mouseoverUpdated(m_id, false);
QPushButton::leaveEvent(e);
}
diff --git a/src/aoevidencebutton.h b/src/aoevidencebutton.h
index adaaa17a..9830384f 100644
--- a/src/aoevidencebutton.h
+++ b/src/aoevidencebutton.h
@@ -13,18 +13,19 @@ class AOEvidenceButton : public QPushButton
Q_OBJECT
public:
- AOEvidenceButton(AOApplication *p_ao_app, int p_x, int p_y, int p_w, int p_h, QWidget *p_parent = nullptr);
+ AOEvidenceButton(int id, int width, int height, AOApplication *ao_app, QWidget *parent = nullptr);
- void set_image(QString p_image);
- void set_theme_image(QString p_image);
- void set_id(int p_id) { m_id = p_id; }
+ void setImage(QString fileName);
- void set_selected(bool p_selected);
+ void setThemeImage(QString fileName);
+
+ void setSelected(bool enabled);
Q_SIGNALS:
- void evidence_clicked(int p_id);
- void evidence_double_clicked(int p_id);
- void on_hover(int p_id, bool p_state);
+ void evidenceClicked(int id);
+ void evidenceDoubleClicked(int id);
+
+ void mouseoverUpdated(int id, bool state);
protected:
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
@@ -33,6 +34,7 @@ protected:
void enterEvent(QEnterEvent *e) override;
#endif
void leaveEvent(QEvent *e) override;
+
void mouseDoubleClickEvent(QMouseEvent *e) override;
private:
diff --git a/src/aoimage.cpp b/src/aoimage.cpp
index 85f127ef..062efbae 100644
--- a/src/aoimage.cpp
+++ b/src/aoimage.cpp
@@ -5,26 +5,23 @@
#include <QBitmap>
-AOImage::AOImage(AOApplication *p_ao_app, QWidget *parent)
+AOImage::AOImage(AOApplication *ao_app, QWidget *parent)
: QLabel(parent)
- , ao_app(p_ao_app)
+ , ao_app(ao_app)
{}
-AOImage::~AOImage()
-{}
-
-QString AOImage::file_name()
+QString AOImage::image()
{
return m_file_name;
}
-bool AOImage::set_image(QString p_image, QString p_misc)
+bool AOImage::setImage(QString fileName, QString miscellaneous)
{
- QString p_image_resolved = ao_app->get_image(p_image, Options::getInstance().theme(), Options::getInstance().subTheme(), ao_app->default_theme, p_misc, "", "", false);
+ QString p_image_resolved = ao_app->get_image(fileName, Options::getInstance().theme(), Options::getInstance().subTheme(), ao_app->default_theme, miscellaneous, "", "", false);
if (!file_exists(p_image_resolved))
{
- qWarning() << "could not find image" << p_image;
+ qWarning() << "could not find image" << fileName;
return false;
}
@@ -35,3 +32,8 @@ bool AOImage::set_image(QString p_image, QString p_misc)
return true;
}
+
+bool AOImage::setImage(QString fileName)
+{
+ return setImage(fileName, QString());
+}
diff --git a/src/aoimage.h b/src/aoimage.h
index 5ab92e7b..5b1fd68b 100644
--- a/src/aoimage.h
+++ b/src/aoimage.h
@@ -13,12 +13,12 @@ class AOImage : public QLabel
Q_OBJECT
public:
- AOImage(AOApplication *p_ao_app, QWidget *parent = nullptr);
- AOImage(AOApplication *p_ao_app, bool make_static, QWidget *parent = nullptr);
- ~AOImage();
+ AOImage(AOApplication *ao_app, QWidget *parent = nullptr);
- QString file_name();
- bool set_image(QString p_image, QString p_misc = QString());
+ QString image();
+
+ bool setImage(QString fileName, QString miscellaneous);
+ bool setImage(QString fileName);
private:
AOApplication *ao_app;
diff --git a/src/aopacket.cpp b/src/aopacket.cpp
index 663edc52..705bc6a1 100644
--- a/src/aopacket.cpp
+++ b/src/aopacket.cpp
@@ -19,17 +19,17 @@ AOPacket::AOPacket(QString header, QStringList content)
, m_content(content)
{}
-QString AOPacket::get_header()
+QString AOPacket::header()
{
return m_header;
}
-QStringList &AOPacket::get_content()
+QStringList &AOPacket::content()
{
return m_content;
}
-QString AOPacket::to_string(bool ensureEncoded)
+QString AOPacket::toString(bool ensureEncoded)
{
QString message = m_header;
if (!m_content.isEmpty())
diff --git a/src/aopacket.h b/src/aopacket.h
index df7f09c2..11b1dfd0 100644
--- a/src/aopacket.h
+++ b/src/aopacket.h
@@ -12,9 +12,10 @@ public:
AOPacket(QString header);
AOPacket(QString header, QStringList content);
- QString get_header();
- QStringList &get_content();
- QString to_string(bool ensureEncoded = false);
+ QString header();
+ QStringList &content();
+
+ QString toString(bool ensureEncoded = false);
private:
QString m_header;
diff --git a/src/charselect.cpp b/src/charselect.cpp
index 57b4e76b..4b62cb10 100644
--- a/src/charselect.cpp
+++ b/src/charselect.cpp
@@ -83,7 +83,7 @@ void Courtroom::set_char_select()
this->setFixedSize(f_charselect.width, f_charselect.height);
}
ui_char_select_background->resize(f_charselect.width, f_charselect.height);
- ui_char_select_background->set_image("charselect_background");
+ ui_char_select_background->setImage("charselect_background");
ui_char_search->setFocus();
set_size_and_pos(ui_char_search, "char_search");
@@ -118,7 +118,6 @@ void Courtroom::set_char_select_page()
for (AOCharButton *i_button : qAsConst(ui_char_button_list))
{
- i_button->reset();
i_button->hide();
i_button->move(0, 0);
}
@@ -265,7 +264,6 @@ void Courtroom::put_button_in_place(int starting, int chars_on_this_page)
ui_char_button_list_filtered.at(n)->move(x_pos, y_pos);
ui_char_button_list_filtered.at(n)->show();
- ui_char_button_list_filtered.at(n)->apply_taken_image();
++x_mod_count;
@@ -294,22 +292,24 @@ void Courtroom::character_loading_finished()
// First, we'll make all the character buttons in the very beginning.
// We also hide them all, so they can't be accidentally clicked.
// Later on, we'll be revealing buttons as we need them.
- for (int n = 0; n < char_list.size(); n++)
+ for (int i = 0; i < char_list.size(); i++)
{
- AOCharButton *char_button = new AOCharButton(ao_app, 0, 0, char_list.at(n).taken, ui_char_buttons);
+ const CharacterSlot &character = char_list.at(i);
+
+ AOCharButton *char_button = new AOCharButton(ao_app, ui_char_buttons);
char_button->setContextMenuPolicy(Qt::CustomContextMenu);
- char_button->reset();
char_button->hide();
- char_button->set_image(char_list.at(n).name);
- char_button->setToolTip(char_list.at(n).name);
+ char_button->setCharacter(character.name);
+ char_button->setTaken(character.taken);
+ char_button->setToolTip(character.name);
ui_char_button_list.append(char_button);
- QString char_category = ao_app->get_category(char_list.at(n).name);
+ QString char_category = ao_app->get_category(character.name);
QList<QTreeWidgetItem *> matching_list = ui_char_list->findItems(char_category, Qt::MatchFixedString, 0);
// create the character tree item
QTreeWidgetItem *treeItem = new QTreeWidgetItem();
- treeItem->setText(0, char_list.at(n).name);
- treeItem->setIcon(0, QIcon(ao_app->get_image_suffix(ao_app->get_character_path(char_list.at(n).name, "char_icon"), true)));
- treeItem->setText(1, QString::number(n));
+ treeItem->setText(0, character.name);
+ treeItem->setIcon(0, QIcon(ao_app->get_image_suffix(ao_app->get_character_path(character.name, "char_icon"), true)));
+ treeItem->setText(1, QString::number(i));
// category logic
QTreeWidgetItem *category;
if (char_category == "") // no category
@@ -333,7 +333,7 @@ void Courtroom::character_loading_finished()
ui_char_list->sortItems(0, Qt::AscendingOrder);
- connect(char_button, &AOCharButton::clicked, this, [this, n]() { this->char_clicked(n); });
+ connect(char_button, &AOCharButton::clicked, this, [this, i]() { this->char_clicked(i); });
connect(char_button, &AOCharButton::customContextMenuRequested, this, &Courtroom::on_char_button_context_menu_requested);
// This part here serves as a way of showing to the player that the game is
@@ -374,9 +374,8 @@ void Courtroom::filter_character_list()
// We only really need to update the fact that a character is taken
// for the buttons that actually appear.
// You'd also update the passwordedness and etc. here later.
- current_char->reset();
current_char_list_item->setHidden(false);
- current_char->set_taken(char_list.at(i).taken);
+ current_char->setTaken(char_list.at(i).taken);
current_char_list_item->setText(0, char_list.at(i).name);
// reset disabled
current_char_list_item->setDisabled(false);
diff --git a/src/chatlogpiece.cpp b/src/chatlogpiece.cpp
index 662dc0d2..d8ef2949 100644
--- a/src/chatlogpiece.cpp
+++ b/src/chatlogpiece.cpp
@@ -1,60 +1,33 @@
#include "chatlogpiece.h"
-ChatLogPiece::ChatLogPiece()
-{
- name = tr("UNKNOWN");
- showname = tr("UNKNOWN");
- message = tr("UNKNOWN");
- color = 0;
- datetime = QDateTime::currentDateTimeUtc();
-}
-
-ChatLogPiece::ChatLogPiece(QString p_name, QString p_showname, QString p_message, QString p_action, int p_color, bool p_selfname)
-{
- name = p_name;
- showname = p_showname;
- message = p_message;
- action = p_action;
- color = p_color;
- selfname = p_selfname;
- datetime = QDateTime::currentDateTimeUtc();
-}
-
-ChatLogPiece::ChatLogPiece(QString p_name, QString p_showname, QString p_message, QString p_action, int p_color, bool p_selfname, QDateTime p_datetime)
-{
- name = p_name;
- showname = p_showname;
- message = p_message;
- action = p_action;
- color = p_color;
- selfname = p_selfname;
- datetime = p_datetime.toUTC();
-}
+#include <QStringBuilder>
-QString ChatLogPiece::get_datetime_as_string()
+QString ChatLogPiece::toString()
{
- return datetime.toString();
-}
+ auto maybe_unknown = [](QString str) -> QString {
+ if (str.isEmpty())
+ {
+ return tr("UNKNOWN");
+ }
+ else
+ {
+ return str;
+ }
+ };
-QString ChatLogPiece::get_full()
-{
- QString full = "[";
+ QString details = QString("[%1] %2").arg(timestamp.toString(), maybe_unknown(character_name));
- full.append(get_datetime_as_string());
- full.append("] ");
- full.append(showname);
- if (showname != name)
+ if (character_name != character)
{
- full.append(" (");
- full.append(name);
- full.append(")");
+ details += " (" % maybe_unknown(character) % ")";
}
+
if (!action.isEmpty())
{
- full.append(" " + action);
+ details += " " % action;
}
- full.append(": ");
- full.append(message);
- return full;
+ details += ": " % maybe_unknown(message);
+
+ return details;
}
diff --git a/src/chatlogpiece.h b/src/chatlogpiece.h
index 3750ff91..d6a00339 100644
--- a/src/chatlogpiece.h
+++ b/src/chatlogpiece.h
@@ -1,26 +1,21 @@
#pragma once
+#include <QCoreApplication>
#include <QDateTime>
#include <QString>
-#include <QtWidgets/QApplication>
class ChatLogPiece
{
- Q_DECLARE_TR_FUNCTIONS(chatlogpiece)
+ Q_DECLARE_TR_FUNCTIONS(ChatLogPiece)
public:
- ChatLogPiece();
- ChatLogPiece(QString p_name, QString p_showname, QString p_message, QString p_action, int color, bool selfname);
- ChatLogPiece(QString p_name, QString p_showname, QString p_message, QString p_action, int color, bool selfname, QDateTime p_datetime);
-
- QString name;
- QString showname;
+ QString character;
+ QString character_name;
QString message;
QString action;
- bool selfname = false;
- QDateTime datetime;
+ QDateTime timestamp;
+ bool local_player = false;
int color = 0;
- QString get_datetime_as_string();
- QString get_full();
+ QString toString();
};
diff --git a/src/courtroom.cpp b/src/courtroom.cpp
index 7df942bb..215bbb8f 100644
--- a/src/courtroom.cpp
+++ b/src/courtroom.cpp
@@ -563,7 +563,7 @@ void Courtroom::update_audio_volume()
blip_player->set_volume(ui_blip_slider->value() * remaining_percent);
}
-void Courtroom::append_char(char_type p_char)
+void Courtroom::append_char(CharacterSlot p_char)
{
char_list.append(p_char);
}
@@ -671,7 +671,7 @@ void Courtroom::set_courtroom_size()
}
ui_background->move(0, 0);
ui_background->resize(m_courtroom_width, m_courtroom_height);
- ui_background->set_image("courtroombackground");
+ ui_background->setImage("courtroombackground");
}
void Courtroom::set_mute_list()
@@ -686,7 +686,7 @@ void Courtroom::set_mute_list()
QStringList sorted_mute_list;
- for (const char_type &i_char : qAsConst(char_list))
+ for (const CharacterSlot &i_char : qAsConst(char_list))
{
sorted_mute_list.append(i_char.name);
}
@@ -704,7 +704,7 @@ void Courtroom::set_pair_list()
{
QStringList sorted_pair_list;
- for (const char_type &i_char : qAsConst(char_list))
+ for (const CharacterSlot &i_char : qAsConst(char_list))
{
sorted_pair_list.append(i_char.name);
}
@@ -836,7 +836,7 @@ void Courtroom::set_widgets()
ui_pair_order_dropdown->setToolTip(tr("Change the order of appearance for your character."));
set_size_and_pos(ui_pair_button, "pair_button");
- ui_pair_button->set_image("pair_button");
+ ui_pair_button->setImage("pair_button");
ui_pair_button->setToolTip(tr("Display the list of characters to pair with."));
set_size_and_pos(ui_area_list, "music_list");
@@ -887,7 +887,7 @@ void Courtroom::set_widgets()
ui_vp_sticker->combo_resize(ui_viewport->width(), ui_viewport->height());
ui_muted->resize(ui_ic_chat_message->width(), ui_ic_chat_message->height());
- ui_muted->set_image("muted");
+ ui_muted->setImage("muted");
ui_muted->setToolTip(tr("Oops, you're muted!"));
set_size_and_pos(ui_ooc_chat_message, "ooc_chat_message");
@@ -907,7 +907,7 @@ void Courtroom::set_widgets()
set_size_and_pos(ui_pos_remove, "pos_remove");
ui_pos_remove->setText("X");
- ui_pos_remove->set_image("evidencex");
+ ui_pos_remove->setImage("evidencex");
ui_pos_remove->setToolTip(tr("Reset your character's supplementary background to its default."));
if (current_side == "")
{
@@ -928,7 +928,7 @@ void Courtroom::set_widgets()
set_size_and_pos(ui_iniswap_remove, "iniswap_remove");
ui_iniswap_remove->setText("X");
- ui_iniswap_remove->set_image("evidencex");
+ ui_iniswap_remove->setImage("evidencex");
ui_iniswap_remove->setToolTip(tr("Remove the currently selected iniswap from the list and return to "
"the original character folder."));
ui_iniswap_remove->hide();
@@ -943,7 +943,7 @@ void Courtroom::set_widgets()
set_size_and_pos(ui_sfx_remove, "sfx_remove");
ui_sfx_remove->setText("X");
- ui_sfx_remove->set_image("evidencex");
+ ui_sfx_remove->setImage("evidencex");
ui_sfx_remove->setToolTip(tr("Remove the currently selected sound effect."));
ui_sfx_remove->hide();
@@ -964,10 +964,10 @@ void Courtroom::set_widgets()
ui_effects_dropdown->setIconSize(QSize(p_point.x(), p_point.y()));
set_size_and_pos(ui_defense_bar, "defense_bar");
- ui_defense_bar->set_image("defensebar" + QString::number(defense_bar_state));
+ ui_defense_bar->setImage("defensebar" + QString::number(defense_bar_state));
set_size_and_pos(ui_prosecution_bar, "prosecution_bar");
- ui_prosecution_bar->set_image("prosecutionbar" + QString::number(prosecution_bar_state));
+ ui_prosecution_bar->setImage("prosecutionbar" + QString::number(prosecution_bar_state));
set_size_and_pos(ui_music_label, "music_label");
ui_music_label->setText(tr("Music"));
@@ -980,70 +980,70 @@ void Courtroom::set_widgets()
ui_hold_it->setText(tr("Hold It!"));
ui_hold_it->setToolTip(tr("When this is turned on, your next in-character "
"message will be a shout!"));
- ui_hold_it->set_image("holdit");
+ ui_hold_it->setImage("holdit");
set_size_and_pos(ui_objection, "objection");
ui_objection->setText(tr("Objection!"));
ui_objection->setToolTip(tr("When this is turned on, your next in-character "
"message will be a shout!"));
- ui_objection->set_image("objection");
+ ui_objection->setImage("objection");
set_size_and_pos(ui_take_that, "take_that");
ui_take_that->setText(tr("Take That!"));
ui_take_that->setToolTip(tr("When this is turned on, your next in-character "
"message will be a shout!"));
- ui_take_that->set_image("takethat");
+ ui_take_that->setImage("takethat");
set_size_and_pos(ui_ooc_toggle, "ooc_toggle");
ui_ooc_toggle->setText(tr("Server"));
ui_ooc_toggle->setToolTip(tr("Toggle between server chat and global AO2 chat."));
set_size_and_pos(ui_witness_testimony, "witness_testimony");
- ui_witness_testimony->set_image("witnesstestimony");
+ ui_witness_testimony->setImage("witnesstestimony");
ui_witness_testimony->setToolTip(tr("This will display the animation in the "
"viewport as soon as it is pressed."));
set_size_and_pos(ui_cross_examination, "cross_examination");
- ui_cross_examination->set_image("crossexamination");
+ ui_cross_examination->setImage("crossexamination");
ui_cross_examination->setToolTip(tr("This will display the animation in the "
"viewport as soon as it is pressed."));
set_size_and_pos(ui_guilty, "guilty");
ui_guilty->setText(tr("Guilty!"));
- ui_guilty->set_image("guilty");
+ ui_guilty->setImage("guilty");
ui_guilty->setToolTip(tr("This will display the animation in the viewport as "
"soon as it is pressed."));
set_size_and_pos(ui_not_guilty, "not_guilty");
- ui_not_guilty->set_image("notguilty");
+ ui_not_guilty->setImage("notguilty");
ui_not_guilty->setToolTip(tr("This will display the animation in the "
"viewport as soon as it is pressed."));
set_size_and_pos(ui_change_character, "change_character");
ui_change_character->setText(tr("Change character"));
- ui_change_character->set_image("change_character");
+ ui_change_character->setImage("change_character");
ui_change_character->setToolTip(tr("Bring up the Character Select Screen and change your character."));
set_size_and_pos(ui_reload_theme, "reload_theme");
ui_reload_theme->setText(tr("Reload theme"));
- ui_reload_theme->set_image("reload_theme");
+ ui_reload_theme->setImage("reload_theme");
ui_reload_theme->setToolTip(tr("Refresh the theme and update all of the ui elements to match."));
set_size_and_pos(ui_call_mod, "call_mod");
ui_call_mod->setText(tr("Call mod"));
- ui_call_mod->set_image("call_mod");
+ ui_call_mod->setImage("call_mod");
ui_call_mod->setToolTip(tr("Request the attention of the current server's moderator."));
set_size_and_pos(ui_settings, "settings");
ui_settings->setText(tr("Settings"));
- ui_settings->set_image("courtroom_settings");
+ ui_settings->setImage("courtroom_settings");
if (ui_settings->icon().isNull())
{
- ui_settings->set_image("settings"); // pre-2.10 filename
+ ui_settings->setImage("settings"); // pre-2.10 filename
}
ui_settings->setToolTip(tr("Allows you to change various aspects of the client."));
set_size_and_pos(ui_switch_area_music, "switch_area_music");
ui_switch_area_music->setText(tr("A/M"));
- ui_switch_area_music->set_image("switch_area_music");
+ ui_switch_area_music->setImage("switch_area_music");
ui_switch_area_music->setToolTip(tr("Switch between Areas and Music lists"));
set_size_and_pos(ui_pre, "pre");
@@ -1082,40 +1082,40 @@ void Courtroom::set_widgets()
set_size_and_pos(ui_custom_objection, "custom_objection");
ui_custom_objection->setText(tr("Custom Shout!"));
- ui_custom_objection->set_image("custom");
+ ui_custom_objection->setImage("custom");
ui_custom_objection->setToolTip(tr("This will display the custom character-defined animation in the "
"viewport as soon as it is pressed.\n"
"To make one, your character's folder must contain "
"custom.[webp/apng/gif/png] and custom.[wav/ogg/opus] sound effect"));
set_size_and_pos(ui_realization, "realization");
- ui_realization->set_image("realization");
+ ui_realization->setImage("realization");
ui_realization->setToolTip(tr("Play realization sound and animation in the viewport on the next "
"spoken message when checked."));
set_size_and_pos(ui_screenshake, "screenshake");
- ui_screenshake->set_image("screenshake");
+ ui_screenshake->setImage("screenshake");
ui_screenshake->setToolTip(tr("Shake the screen on next spoken message when checked."));
set_size_and_pos(ui_mute, "mute_button");
ui_mute->setText("Mute");
- ui_mute->set_image("mute");
+ ui_mute->setImage("mute");
ui_mute->setToolTip(tr("Display the list of character folders you wish to mute."));
set_size_and_pos(ui_defense_plus, "defense_plus");
- ui_defense_plus->set_image("defplus");
+ ui_defense_plus->setImage("defplus");
ui_defense_plus->setToolTip(tr("Increase the health bar."));
set_size_and_pos(ui_defense_minus, "defense_minus");
- ui_defense_minus->set_image("defminus");
+ ui_defense_minus->setImage("defminus");
ui_defense_minus->setToolTip(tr("Decrease the health bar."));
set_size_and_pos(ui_prosecution_plus, "prosecution_plus");
- ui_prosecution_plus->set_image("proplus");
+ ui_prosecution_plus->setImage("proplus");
ui_prosecution_plus->setToolTip(tr("Increase the health bar."));
set_size_and_pos(ui_prosecution_minus, "prosecution_minus");
- ui_prosecution_minus->set_image("prominus");
+ ui_prosecution_minus->setImage("prominus");
ui_prosecution_minus->setToolTip(tr("Decrease the health bar."));
set_size_and_pos(ui_text_color, "text_color");
@@ -1137,10 +1137,10 @@ void Courtroom::set_widgets()
set_size_and_pos(ui_char_buttons, "char_buttons");
set_size_and_pos(ui_char_select_left, "char_select_left");
- ui_char_select_left->set_image("arrow_left");
+ ui_char_select_left->setImage("arrow_left");
set_size_and_pos(ui_char_select_right, "char_select_right");
- ui_char_select_right->set_image("arrow_right");
+ ui_char_select_right->setImage("arrow_right");
set_size_and_pos(ui_spectator, "spectator");
ui_spectator->setToolTip(tr("Become a spectator. You won't be able to "
@@ -1334,7 +1334,7 @@ void Courtroom::set_taken(int n_char, bool p_taken)
return;
}
- char_type f_char;
+ CharacterSlot f_char;
f_char.name = char_list.at(n_char).name;
f_char.description = char_list.at(n_char).description;
f_char.taken = p_taken;
@@ -1672,16 +1672,16 @@ void Courtroom::enter_courtroom()
switch (objection_state) // no need to reset these as it was done in set_widgets()
{
case 1:
- ui_hold_it->set_image("holdit_selected");
+ ui_hold_it->setImage("holdit_selected");
break;
case 2:
- ui_objection->set_image("objection_selected");
+ ui_objection->setImage("objection_selected");
break;
case 3:
- ui_take_that->set_image("takethat_selected");
+ ui_take_that->setImage("takethat_selected");
break;
case 4:
- ui_custom_objection->set_image("custom_selected");
+ ui_custom_objection->setImage("custom_selected");
break;
default:
break;
@@ -2292,13 +2292,13 @@ void Courtroom::reset_ui()
realization_state = 0;
screenshake_state = 0;
is_presenting_evidence = false;
- ui_hold_it->set_image("holdit");
- ui_objection->set_image("objection");
- ui_take_that->set_image("takethat");
- ui_custom_objection->set_image("custom");
- ui_realization->set_image("realization");
- ui_screenshake->set_image("screenshake");
- ui_evidence_present->set_image("present");
+ ui_hold_it->setImage("holdit");
+ ui_objection->setImage("objection");
+ ui_take_that->setImage("takethat");
+ ui_custom_objection->setImage("custom");
+ ui_realization->setImage("realization");
+ ui_screenshake->setImage("screenshake");
+ ui_evidence_present->setImage("present");
// If sticky sounds is disabled and we either have SFX on Idle enabled, or our Preanim checkbox is checked
if (!Options::getInstance().clearSoundsDropdownOnPlayEnabled() && (Options::getInstance().playSelectedSFXOnIdle() || ui_pre->isChecked()))
@@ -3111,14 +3111,14 @@ void Courtroom::initialize_chatbox()
if (ui_vp_showname->text().trimmed().isEmpty()) // Whitespace showname
{
- ui_vp_chatbox->set_image("chatblank", p_misc);
+ ui_vp_chatbox->setImage("chatblank", p_misc);
}
else // Aw yeah dude do some showname magic
{
ui_vp_showname->setVisible(true);
- if (!ui_vp_chatbox->set_image("chat", p_misc))
+ if (!ui_vp_chatbox->setImage("chat", p_misc))
{
- ui_vp_chatbox->set_image("chatbox", p_misc);
+ ui_vp_chatbox->setImage("chatbox", p_misc);
}
// Remember to set the showname font before the font metrics check.
@@ -3153,11 +3153,11 @@ void Courtroom::initialize_chatbox()
#endif
if (extra_width > 0)
{
- QString current_path = ui_vp_chatbox->file_name().left(ui_vp_chatbox->file_name().lastIndexOf('.'));
- if (fm_width > default_width.width && ui_vp_chatbox->set_image(current_path + "med")) // This text be big. Let's do some shenanigans.
+ QString current_path = ui_vp_chatbox->image().left(ui_vp_chatbox->image().lastIndexOf('.'));
+ if (fm_width > default_width.width && ui_vp_chatbox->setImage(current_path + "med")) // This text be big. Let's do some shenanigans.
{
ui_vp_showname->resize(default_width.width + extra_width, ui_vp_showname->height());
- if (fm_width > ui_vp_showname->width() && ui_vp_chatbox->set_image(current_path + "big")) // Biggest possible size for us.
+ if (fm_width > ui_vp_showname->width() && ui_vp_chatbox->setImage(current_path + "big")) // Biggest possible size for us.
{
ui_vp_showname->resize(static_cast<int>(default_width.width + (extra_width * 2)), ui_vp_showname->height());
}
@@ -3578,11 +3578,19 @@ QString Courtroom::filter_ic_text(QString p_text, bool html, int target_pos, int
void Courtroom::log_ic_text(QString p_name, QString p_showname, QString p_message, QString p_action, int p_color, bool p_selfname)
{
- ChatLogPiece log_entry(p_name, p_showname, p_message, p_action, p_color, p_selfname);
+ ChatLogPiece log_entry;
+ log_entry.character = p_name;
+ log_entry.character_name = p_showname;
+ log_entry.local_player = p_selfname;
+ log_entry.message = p_message;
+ log_entry.action = p_action;
+ log_entry.color = p_color;
+ log_entry.timestamp = QDateTime::currentDateTimeUtc();
ic_chatlog_history.append(log_entry);
+
if (Options::getInstance().logToTextFileEnabled() && !ao_app->log_filename.isEmpty())
{
- ao_app->append_to_file(log_entry.get_full(), ao_app->log_filename, true);
+ ao_app->append_to_file(log_entry.toString(), ao_app->log_filename, true);
}
while (ic_chatlog_history.size() > log_maximum_blocks && log_maximum_blocks > 0)
@@ -3997,8 +4005,9 @@ void Courtroom::start_chat_ticking()
QString f_blips = ao_app->get_blipname(m_chatmessage[CHAR_NAME]);
f_blips = ao_app->get_blips(f_blips);
- if (ao_app->custom_blips_supported && !m_chatmessage[BLIPNAME].isEmpty()) {
- f_blips = ao_app->get_blips(m_chatmessage[BLIPNAME]);
+ if (ao_app->custom_blips_supported && !m_chatmessage[BLIPNAME].isEmpty())
+ {
+ f_blips = ao_app->get_blips(m_chatmessage[BLIPNAME]);
}
blip_player->set_blips(f_blips);
@@ -4389,7 +4398,7 @@ void Courtroom::set_mute(bool p_muted, int p_cid)
}
ui_muted->resize(ui_ic_chat_message->width(), ui_ic_chat_message->height());
- ui_muted->set_image("muted");
+ ui_muted->setImage("muted");
is_muted = p_muted;
ui_ic_chat_message->setEnabled(!p_muted);
@@ -4596,13 +4605,13 @@ void Courtroom::set_hp_bar(int p_bar, int p_state)
int prev_state = p_state;
if (p_bar == 1)
{
- ui_defense_bar->set_image("defensebar" + QString::number(p_state));
+ ui_defense_bar->setImage("defensebar" + QString::number(p_state));
prev_state = defense_bar_state;
defense_bar_state = p_state;
}
else if (p_bar == 2)
{
- ui_prosecution_bar->set_image("prosecutionbar" + QString::number(p_state));
+ ui_prosecution_bar->setImage("prosecutionbar" + QString::number(p_state));
prev_state = prosecution_bar_state;
prosecution_bar_state = p_state;
}
@@ -5483,7 +5492,7 @@ void Courtroom::on_pair_list_clicked(QModelIndex p_index)
// Redo the character list.
QStringList sorted_pair_list;
- for (const char_type &i_char : qAsConst(char_list))
+ for (const CharacterSlot &i_char : qAsConst(char_list))
{
sorted_pair_list.append(i_char.name);
}
@@ -5700,16 +5709,16 @@ void Courtroom::on_hold_it_clicked()
{
if (objection_state == 1)
{
- ui_hold_it->set_image("holdit");
+ ui_hold_it->setImage("holdit");
objection_state = 0;
}
else
{
- ui_objection->set_image("objection");
- ui_take_that->set_image("takethat");
- ui_custom_objection->set_image("custom");
+ ui_objection->setImage("objection");
+ ui_take_that->setImage("takethat");
+ ui_custom_objection->setImage("custom");
- ui_hold_it->set_image("holdit_selected");
+ ui_hold_it->setImage("holdit_selected");
objection_state = 1;
}
@@ -5720,16 +5729,16 @@ void Courtroom::on_objection_clicked()
{
if (objection_state == 2)
{
- ui_objection->set_image("objection");
+ ui_objection->setImage("objection");
objection_state = 0;
}
else
{
- ui_hold_it->set_image("holdit");
- ui_take_that->set_image("takethat");
- ui_custom_objection->set_image("custom");
+ ui_hold_it->setImage("holdit");
+ ui_take_that->setImage("takethat");
+ ui_custom_objection->setImage("custom");
- ui_objection->set_image("objection_selected");
+ ui_objection->setImage("objection_selected");
objection_state = 2;
}
@@ -5740,16 +5749,16 @@ void Courtroom::on_take_that_clicked()
{
if (objection_state == 3)
{
- ui_take_that->set_image("takethat");
+ ui_take_that->setImage("takethat");
objection_state = 0;
}
else
{
- ui_objection->set_image("objection");
- ui_hold_it->set_image("holdit");
- ui_custom_objection->set_image("custom");
+ ui_objection->setImage("objection");
+ ui_hold_it->setImage("holdit");
+ ui_custom_objection->setImage("custom");
- ui_take_that->set_image("takethat_selected");
+ ui_take_that->setImage("takethat_selected");
objection_state = 3;
}
@@ -5760,16 +5769,16 @@ void Courtroom::on_custom_objection_clicked()
{
if (objection_state == 4)
{
- ui_custom_objection->set_image("custom");
+ ui_custom_objection->setImage("custom");
objection_state = 0;
}
else
{
- ui_objection->set_image("objection");
- ui_take_that->set_image("takethat");
- ui_hold_it->set_image("holdit");
+ ui_objection->setImage("objection");
+ ui_take_that->setImage("takethat");
+ ui_hold_it->setImage("holdit");
- ui_custom_objection->set_image("custom_selected");
+ ui_custom_objection->setImage("custom_selected");
objection_state = 4;
}
@@ -5782,10 +5791,10 @@ void Courtroom::show_custom_objection_menu(const QPoint &pos)
QAction *selecteditem = custom_obj_menu->exec(globalPos);
if (selecteditem)
{
- ui_objection->set_image("objection");
- ui_take_that->set_image("takethat");
- ui_hold_it->set_image("holdit");
- ui_custom_objection->set_image("custom_selected");
+ ui_objection->setImage("objection");
+ ui_take_that->setImage("takethat");
+ ui_hold_it->setImage("holdit");
+ ui_custom_objection->setImage("custom_selected");
if (selecteditem->text() == ao_app->read_char_ini(current_char, "custom_name", "Shouts") || selecteditem->text() == "Default")
{
objection_custom = "";
@@ -5816,14 +5825,14 @@ void Courtroom::on_realization_clicked()
on_effects_dropdown_changed(ui_effects_dropdown->currentIndex());
}
- ui_realization->set_image("realization_pressed");
+ ui_realization->setImage("realization_pressed");
}
else
{
realization_state = 0;
ui_effects_dropdown->setCurrentIndex(0);
on_effects_dropdown_changed(ui_effects_dropdown->currentIndex());
- ui_realization->set_image("realization");
+ ui_realization->setImage("realization");
}
ui_ic_chat_message->setFocus();
@@ -5834,12 +5843,12 @@ void Courtroom::on_screenshake_clicked()
if (screenshake_state == 0)
{
screenshake_state = 1;
- ui_screenshake->set_image("screenshake_pressed");
+ ui_screenshake->setImage("screenshake_pressed");
}
else
{
screenshake_state = 0;
- ui_screenshake->set_image("screenshake");
+ ui_screenshake->setImage("screenshake");
}
ui_ic_chat_message->setFocus();
@@ -5854,13 +5863,13 @@ void Courtroom::on_mute_clicked()
ui_pair_offset_spinbox->hide();
ui_pair_vert_offset_spinbox->hide();
ui_pair_order_dropdown->hide();
- ui_pair_button->set_image("pair_button");
- ui_mute->set_image("mute_pressed");
+ ui_pair_button->setImage("pair_button");
+ ui_mute->setImage("mute_pressed");
}
else
{
ui_mute_list->hide();
- ui_mute->set_image("mute");
+ ui_mute->setImage("mute");
}
}
@@ -5876,8 +5885,8 @@ void Courtroom::on_pair_clicked()
}
ui_pair_order_dropdown->show();
ui_mute_list->hide();
- ui_mute->set_image("mute");
- ui_pair_button->set_image("pair_button_pressed");
+ ui_mute->setImage("mute");
+ ui_pair_button->setImage("pair_button_pressed");
}
else
{
@@ -5885,7 +5894,7 @@ void Courtroom::on_pair_clicked()
ui_pair_offset_spinbox->hide();
ui_pair_vert_offset_spinbox->hide();
ui_pair_order_dropdown->hide();
- ui_pair_button->set_image("pair_button");
+ ui_pair_button->setImage("pair_button");
}
}
@@ -6271,8 +6280,8 @@ void Courtroom::regenerate_ic_chatlog()
foreach (ChatLogPiece item, ic_chatlog_history)
{
QString message = item.message;
- QString name = ui_showname_enable->isChecked() ? item.showname : item.name;
- append_ic_text(message, name, item.action, item.color, item.selfname, item.datetime.toLocalTime());
+ QString name = ui_showname_enable->isChecked() ? item.character_name : item.character;
+ append_ic_text(message, name, item.action, item.color, item.local_player, item.timestamp.toLocalTime());
}
}
diff --git a/src/courtroom.h b/src/courtroom.h
index e79fb40b..a42adca7 100644
--- a/src/courtroom.h
+++ b/src/courtroom.h
@@ -78,7 +78,7 @@ public:
void update_audio_volume();
- void append_char(char_type p_char);
+ void append_char(CharacterSlot p_char);
void append_music(QString f_music);
void append_area(QString f_area);
void clear_chars();
@@ -138,7 +138,7 @@ public:
void set_pos_dropdown(QStringList pos_dropdowns);
// sets the evidence list member variable to argument
- void set_evidence_list(QVector<evi_type> &p_evi_list);
+ void set_evidence_list(QVector<EvidenceItem> &p_evi_list);
// called when a DONE#% from the server was received
void done_received();
@@ -331,8 +331,8 @@ private:
// 0 = in front, 1 = behind
int pair_order = 0;
- QVector<char_type> char_list;
- QVector<evi_type> evidence_list;
+ QVector<CharacterSlot> char_list;
+ QVector<EvidenceItem> evidence_list;
QVector<QString> music_list;
QVector<QString> area_list;
@@ -553,9 +553,9 @@ private:
int emote_rows = 2;
int max_emotes_on_page = 10;
- QVector<evi_type> local_evidence_list;
- QVector<evi_type> private_evidence_list;
- QVector<evi_type> global_evidence_list;
+ QVector<EvidenceItem> local_evidence_list;
+ QVector<EvidenceItem> private_evidence_list;
+ QVector<EvidenceItem> global_evidence_list;
// false = use private_evidence_list
bool current_evidence_global = true;
@@ -938,7 +938,7 @@ private Q_SLOTS:
void on_evidence_load_clicked();
void evidence_save(QString filename);
void evidence_load(QString filename);
- bool compare_evidence_changed(evi_type evi_a, evi_type evi_b);
+ bool compare_evidence_changed(EvidenceItem evi_a, EvidenceItem evi_b);
void on_back_to_lobby_clicked();
diff --git a/src/datatypes.h b/src/datatypes.h
index 19263f84..1258136b 100644
--- a/src/datatypes.h
+++ b/src/datatypes.h
@@ -3,35 +3,24 @@
#include <QMap>
#include <QString>
-enum connection_type
+enum ServerConnectionType
{
- TCP,
- WEBSOCKETS,
+ TcpServerConnection,
+ WebSocketServerConnection,
};
-static QMap<QString, connection_type> to_connection_type = {{"tcp", connection_type::TCP}, {"ws", connection_type::WEBSOCKETS}};
+static const QMap<QString, ServerConnectionType> SERVER_CONNECTION_TYPE_STRING_MAP = {{"tcp", ServerConnectionType::TcpServerConnection}, {"ws", ServerConnectionType::WebSocketServerConnection}};
-struct server_type
+struct ServerInfo
{
QString name;
- QString desc;
+ QString description;
QString ip;
int port;
- connection_type socket_type;
-};
-
-struct emote_type
-{
- QString comment;
- QString preanim;
- QString anim;
- int mod;
- QString sfx_name;
- int sfx_delay;
- int sfx_duration;
+ ServerConnectionType socket_type;
};
-struct char_type
+struct CharacterSlot
{
QString name;
QString description;
@@ -39,44 +28,13 @@ struct char_type
bool taken;
};
-struct evi_type
+struct EvidenceItem
{
QString name;
QString description;
QString image;
};
-struct chatmessage_type
-{
- QString message;
- QString character;
- QString side;
- QString sfx_name;
- QString pre_emote;
- QString emote;
- int emote_modifier;
- int objection_modifier;
- int realization;
- int text_color;
- int evidence;
- int cid;
- int sfx_delay;
- int flip;
-};
-
-struct area_type
-{
- QString name;
- QString background;
- bool passworded;
-};
-
-struct pos_type
-{
- int x;
- int y;
-};
-
struct pos_size_type
{
int x = 0;
diff --git a/src/demoserver.cpp b/src/demoserver.cpp
index c22160da..0573b84e 100644
--- a/src/demoserver.cpp
+++ b/src/demoserver.cpp
@@ -66,7 +66,7 @@ void DemoServer::accept_connection()
{
sc_packet = demo_data.dequeue();
AOPacket sc(sc_packet);
- num_chars = sc.get_content().length();
+ num_chars = sc.content().length();
}
else
{
@@ -94,7 +94,7 @@ void DemoServer::recv_data()
QString in_data = QString::fromUtf8(client_sock->readAll());
#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
- const QStringList packet_list = in_data.split("%", QString::SplitBehavior(QString::SkipEmptyParts));
+ const QStringList packet_list = in_data.split("%", QString::SkipEmptyParts);
#else
const QStringList packet_list = in_data.split("%", Qt::SkipEmptyParts);
#endif
@@ -143,8 +143,8 @@ void DemoServer::handle_packet(AOPacket p_packet)
// Also, at some point, I will make akashit
// into a shared library.
- QString header = p_packet.get_header();
- QStringList contents = p_packet.get_content();
+ QString header = p_packet.header();
+ QStringList contents = p_packet.content();
if (header == "HI")
{
diff --git a/src/emotes.cpp b/src/emotes.cpp
index b16b9893..c12ceb69 100644
--- a/src/emotes.cpp
+++ b/src/emotes.cpp
@@ -44,10 +44,10 @@ void Courtroom::refresh_emotes()
set_size_and_pos(ui_emotes, "emotes");
set_size_and_pos(ui_emote_left, "emote_left");
- ui_emote_left->set_image("arrow_left");
+ ui_emote_left->setImage("arrow_left");
set_size_and_pos(ui_emote_right, "emote_right");
- ui_emote_right->set_image("arrow_right");
+ ui_emote_right->setImage("arrow_right");
QPoint f_spacing = ao_app->get_button_spacing("emote_button_spacing", "courtroom_design.ini");
QPoint p_point = ao_app->get_button_spacing("emote_button_size", "courtroom_design.ini");
@@ -73,20 +73,18 @@ void Courtroom::refresh_emotes()
QString selected_image = ao_app->get_image_suffix(ao_app->get_theme_path("emote_selected", ""), true);
- for (int n = 0; n < max_emotes_on_page; ++n)
+ for (int i = 0; i < max_emotes_on_page; ++i)
{
int x_pos = (button_width + x_spacing) * x_mod_count;
int y_pos = (button_height + y_spacing) * y_mod_count;
- AOEmoteButton *f_emote = new AOEmoteButton(ao_app, x_pos, y_pos, button_width, button_height, ui_emotes);
- f_emote->set_selected_image(selected_image);
+ AOEmoteButton *f_emote = new AOEmoteButton(i, button_width, button_height, ao_app, ui_emotes);
+ f_emote->setSelectedImage(selected_image);
+ f_emote->move(x_pos, y_pos);
ui_emote_list.append(f_emote);
- f_emote->set_id(n);
-
f_emote->setContextMenuPolicy(Qt::CustomContextMenu);
- connect(f_emote, &AOEmoteButton::emote_clicked, this, &Courtroom::on_emote_clicked);
-
+ connect(f_emote, &AOEmoteButton::emoteClicked, this, &Courtroom::on_emote_clicked);
connect(f_emote, &AOEmoteButton::customContextMenuRequested, this, &Courtroom::show_emote_menu);
++x_mod_count;
@@ -154,11 +152,11 @@ void Courtroom::set_emote_page()
if (n_real_emote == current_emote)
{
- f_emote->set_char_image(current_char, n_real_emote, true);
+ f_emote->setImage(current_char, n_real_emote, true);
}
else
{
- f_emote->set_char_image(current_char, n_real_emote, false);
+ f_emote->setImage(current_char, n_real_emote, false);
}
f_emote->show();
@@ -191,7 +189,7 @@ void Courtroom::select_emote(int p_id)
if (current_emote >= min && current_emote <= max)
{
- ui_emote_list.at(current_emote % max_emotes_on_page)->set_char_image(current_char, current_emote, false);
+ ui_emote_list.at(current_emote % max_emotes_on_page)->setImage(current_char, current_emote, false);
}
int old_emote = current_emote;
@@ -200,7 +198,7 @@ void Courtroom::select_emote(int p_id)
if (current_emote >= min && current_emote <= max)
{
- ui_emote_list.at(current_emote % max_emotes_on_page)->set_char_image(current_char, current_emote, true);
+ ui_emote_list.at(current_emote % max_emotes_on_page)->setImage(current_char, current_emote, true);
}
int emote_mod = ao_app->get_emote_mod(current_char, current_emote);
@@ -257,11 +255,11 @@ void Courtroom::show_emote_menu(const QPoint &pos)
if (qobject_cast<AOEmoteButton *>(button))
{
AOEmoteButton *emote_button = qobject_cast<AOEmoteButton *>(sender());
- id = emote_button->get_id();
+ id = emote_button->id();
}
int emote_num = id + max_emotes_on_page * current_emote_page;
emote_menu->clear();
- emote_menu->setDefaultAction(emote_menu->addAction("Preview Selected", this, [=] {
+ emote_menu->setDefaultAction(emote_menu->addAction("Preview Selected", this, [this] {
emote_preview->show();
emote_preview->raise();
emote_preview->set_widgets();
@@ -271,19 +269,19 @@ void Courtroom::show_emote_menu(const QPoint &pos)
QString f_pre = ao_app->get_pre_emote(current_char, emote_num);
if (!f_pre.isEmpty() && f_pre != "-")
{
- emote_menu->addAction("Preview pre: " + f_pre, this, [=] { preview_emote(f_pre); });
+ emote_menu->addAction("Preview pre: " + f_pre, this, [this, f_pre] { preview_emote(f_pre); });
}
QString f_emote = ao_app->get_emote(current_char, emote_num);
if (!f_emote.isEmpty())
{
- emote_menu->addAction("Preview idle: " + f_emote, this, [=] { preview_emote("(a)" + f_emote); });
- emote_menu->addAction("Preview talk: " + f_emote, this, [=] { preview_emote("(b)" + f_emote); });
+ emote_menu->addAction("Preview idle: " + f_emote, this, [this, f_emote] { preview_emote("(a)" + f_emote); });
+ emote_menu->addAction("Preview talk: " + f_emote, this, [this, f_emote] { preview_emote("(b)" + f_emote); });
QStringList c_paths = {ao_app->get_image_suffix(ao_app->get_character_path(current_char, "(c)" + f_emote)), ao_app->get_image_suffix(ao_app->get_character_path(current_char, "(c)/" + f_emote))};
// if there is a (c) animation
if (file_exists(ui_vp_player_char->find_image(c_paths)))
{
- emote_menu->addAction("Preview segway: " + f_emote, this, [=] { preview_emote("(c)" + f_emote); });
+ emote_menu->addAction("Preview segway: " + f_emote, this, [this, f_emote] { preview_emote("(c)" + f_emote); });
}
}
emote_menu->popup(button->mapToGlobal(pos));
diff --git a/src/evidence.cpp b/src/evidence.cpp
index 4377b257..322970fa 100644
--- a/src/evidence.cpp
+++ b/src/evidence.cpp
@@ -100,17 +100,17 @@ void Courtroom::refresh_evidence()
ui_evidence_list.clear();
set_size_and_pos(ui_evidence_button, "evidence_button");
- ui_evidence_button->set_image("evidence_button");
+ ui_evidence_button->setImage("evidence_button");
ui_evidence_button->setToolTip(tr("Bring up the Evidence screen."));
set_size_and_pos(ui_evidence, "evidence_background");
if (current_evidence_global)
{
- ui_evidence->set_image("evidence_background");
+ ui_evidence->setImage("evidence_background");
}
else
{
- ui_evidence->set_image("evidence_background_private");
+ ui_evidence->setImage("evidence_background_private");
}
set_size_and_pos(ui_evidence_name, "evidence_name");
@@ -118,63 +118,63 @@ void Courtroom::refresh_evidence()
set_size_and_pos(ui_evidence_buttons, "evidence_buttons");
set_size_and_pos(ui_evidence_left, "evidence_left");
- ui_evidence_left->set_image("arrow_left");
+ ui_evidence_left->setImage("arrow_left");
set_size_and_pos(ui_evidence_right, "evidence_right");
- ui_evidence_right->set_image("arrow_right");
+ ui_evidence_right->setImage("arrow_right");
set_size_and_pos(ui_evidence_present, "evidence_present");
- ui_evidence_present->set_image("present");
+ ui_evidence_present->setImage("present");
set_size_and_pos(ui_evidence_overlay, "evidence_overlay");
if (current_evidence_global)
{
- ui_evidence_overlay->set_image("evidence_overlay");
+ ui_evidence_overlay->setImage("evidence_overlay");
}
else
{
- ui_evidence_overlay->set_image("evidence_overlay_private");
+ ui_evidence_overlay->setImage("evidence_overlay_private");
}
set_size_and_pos(ui_evidence_delete, "evidence_delete");
- ui_evidence_delete->set_image("evidence_delete");
+ ui_evidence_delete->setImage("evidence_delete");
set_size_and_pos(ui_evidence_image_name, "evidence_image_name");
set_size_and_pos(ui_evidence_image_button, "evidence_image_button");
set_size_and_pos(ui_evidence_x, "evidence_x");
- ui_evidence_x->set_image("evidence_x");
+ ui_evidence_x->setImage("evidence_x");
set_size_and_pos(ui_evidence_ok, "evidence_ok");
- ui_evidence_ok->set_image("evidence_ok");
+ ui_evidence_ok->setImage("evidence_ok");
set_size_and_pos(ui_evidence_switch, "evidence_switch");
if (current_evidence_global)
{
- ui_evidence_switch->set_image("evidence_global");
+ ui_evidence_switch->setImage("evidence_global");
ui_evidence_switch->setToolTip(tr("Switch evidence to private inventory."));
}
else
{
- ui_evidence_switch->set_image("evidence_private");
+ ui_evidence_switch->setImage("evidence_private");
ui_evidence_switch->setToolTip(tr("Switch evidence to global inventory."));
}
set_size_and_pos(ui_evidence_transfer, "evidence_transfer");
if (current_evidence_global)
{
- ui_evidence_transfer->set_image("evidence_transfer");
+ ui_evidence_transfer->setImage("evidence_transfer");
ui_evidence_transfer->setToolTip(tr("Transfer evidence to private inventory."));
}
else
{
- ui_evidence_transfer->set_image("evidence_transfer_private");
+ ui_evidence_transfer->setImage("evidence_transfer_private");
ui_evidence_transfer->setToolTip(tr("Transfer evidence to global inventory."));
}
set_size_and_pos(ui_evidence_save, "evidence_save");
- ui_evidence_save->set_image("evidence_save");
+ ui_evidence_save->setImage("evidence_save");
if (current_evidence_global)
{
ui_evidence_save->hide();
@@ -185,7 +185,7 @@ void Courtroom::refresh_evidence()
}
set_size_and_pos(ui_evidence_load, "evidence_load");
- ui_evidence_load->set_image("evidence_load");
+ ui_evidence_load->setImage("evidence_load");
if (current_evidence_global)
{
ui_evidence_load->hide();
@@ -213,20 +213,18 @@ void Courtroom::refresh_evidence()
max_evidence_on_page = evidence_columns * evidence_rows;
- for (int n = 0; n < max_evidence_on_page; ++n)
+ for (int i = 0; i < max_evidence_on_page; ++i)
{
int x_pos = (button_width + x_spacing) * x_mod_count;
int y_pos = (button_height + y_spacing) * y_mod_count;
- AOEvidenceButton *f_evidence = new AOEvidenceButton(ao_app, x_pos, y_pos, button_width, button_height, ui_evidence_buttons);
-
+ AOEvidenceButton *f_evidence = new AOEvidenceButton(i, button_width, button_height, ao_app, ui_evidence_buttons);
ui_evidence_list.append(f_evidence);
+ f_evidence->move(x_pos, y_pos);
- f_evidence->set_id(n);
-
- connect(f_evidence, &AOEvidenceButton::evidence_clicked, this, &Courtroom::on_evidence_clicked);
- connect(f_evidence, &AOEvidenceButton::evidence_double_clicked, this, &Courtroom::on_evidence_double_clicked);
- connect(f_evidence, &AOEvidenceButton::on_hover, this, &Courtroom::on_evidence_hover);
+ connect(f_evidence, &AOEvidenceButton::evidenceClicked, this, &Courtroom::on_evidence_clicked);
+ connect(f_evidence, &AOEvidenceButton::evidenceDoubleClicked, this, &Courtroom::on_evidence_double_clicked);
+ connect(f_evidence, &AOEvidenceButton::mouseoverUpdated, this, &Courtroom::on_evidence_hover);
++x_mod_count;
@@ -238,7 +236,7 @@ void Courtroom::refresh_evidence()
}
}
-void Courtroom::set_evidence_list(QVector<evi_type> &p_evi_list)
+void Courtroom::set_evidence_list(QVector<EvidenceItem> &p_evi_list)
{
global_evidence_list = p_evi_list;
if (!current_evidence_global)
@@ -247,7 +245,7 @@ void Courtroom::set_evidence_list(QVector<evi_type> &p_evi_list)
// thing
}
- QVector<evi_type> old_list = local_evidence_list;
+ QVector<EvidenceItem> old_list = local_evidence_list;
local_evidence_list.clear();
local_evidence_list = p_evi_list;
@@ -351,26 +349,26 @@ void Courtroom::set_evidence_page()
int n_real_evidence = n_evidence_button + current_evidence_page * max_evidence_on_page;
AOEvidenceButton *f_evidence_button = ui_evidence_list.at(n_evidence_button);
- f_evidence_button->set_selected(false);
+ f_evidence_button->setSelected(false);
f_evidence_button->setToolTip("");
if (n_real_evidence == (total_evidence - 1))
{
- f_evidence_button->set_theme_image("addevidence.png");
+ f_evidence_button->setThemeImage("addevidence.png");
}
else if (n_real_evidence < (total_evidence - 1))
{
- f_evidence_button->set_image(local_evidence_list.at(n_real_evidence).image);
+ f_evidence_button->setImage(local_evidence_list.at(n_real_evidence).image);
if (n_real_evidence == current_evidence)
{
- f_evidence_button->set_selected(true);
+ f_evidence_button->setSelected(true);
}
f_evidence_button->setToolTip(QString::number(n_real_evidence + 1) + ": " + local_evidence_list.at(n_real_evidence).name);
}
else
{
- f_evidence_button->set_image("");
+ f_evidence_button->setImage("");
}
f_evidence_button->show();
@@ -455,7 +453,7 @@ void Courtroom::on_evidence_clicked(int p_id)
}
else
{
- evi_type f_evi;
+ EvidenceItem f_evi;
f_evi.name = "<name>";
f_evi.description = "<description>";
f_evi.image = "empty.png";
@@ -485,10 +483,10 @@ void Courtroom::on_evidence_clicked(int p_id)
ui_evidence_name->setText(local_evidence_list.at(f_real_id).name);
for (AOEvidenceButton *i_button : qAsConst(ui_evidence_list))
{
- i_button->set_selected(false);
+ i_button->setSelected(false);
}
- ui_evidence_list.at(p_id)->set_selected(true);
+ ui_evidence_list.at(p_id)->setSelected(true);
current_evidence = f_real_id;
}
@@ -512,18 +510,18 @@ void Courtroom::on_evidence_double_clicked(int p_id)
for (AOEvidenceButton *i_button : qAsConst(ui_evidence_list))
{
- i_button->set_selected(false);
+ i_button->setSelected(false);
}
// We have to check if the ID is on the currently displayed page.
// This is because SOMEONE allowed the switching of pages while evidence is still being edited.
if (p_id < ui_evidence_list.count())
{
- ui_evidence_list.at(p_id)->set_selected(true);
+ ui_evidence_list.at(p_id)->setSelected(true);
}
current_evidence = f_real_id;
- evi_type f_evi = local_evidence_list.at(f_real_id);
+ EvidenceItem f_evi = local_evidence_list.at(f_real_id);
ui_evidence_description->clear();
ui_evidence_description->appendPlainText(f_evi.description);
@@ -599,11 +597,11 @@ void Courtroom::on_evidence_present_clicked()
}
if (is_presenting_evidence)
{
- ui_evidence_present->set_image("present");
+ ui_evidence_present->setImage("present");
}
else
{
- ui_evidence_present->set_image("present_disabled");
+ ui_evidence_present->setImage("present_disabled");
}
is_presenting_evidence = !is_presenting_evidence;
@@ -672,7 +670,7 @@ void Courtroom::on_evidence_ok_clicked()
ui_evidence_ok->hide();
if (current_evidence < local_evidence_list.size())
{
- evi_type f_evi = local_evidence_list.at(current_evidence);
+ EvidenceItem f_evi = local_evidence_list.at(current_evidence);
if (current_evidence_global)
{
QStringList f_contents;
@@ -717,7 +715,7 @@ void Courtroom::on_evidence_transfer_clicked()
QString name;
if (!current_evidence_global) // Transfer private evidence to global
{
- evi_type f_evi = local_evidence_list.at(current_evidence);
+ EvidenceItem f_evi = local_evidence_list.at(current_evidence);
QStringList f_contents;
f_contents.append(f_evi.name);
@@ -729,7 +727,7 @@ void Courtroom::on_evidence_transfer_clicked()
}
else // Transfer global evidence to private
{
- evi_type f_evi = local_evidence_list.at(current_evidence);
+ EvidenceItem f_evi = local_evidence_list.at(current_evidence);
name = f_evi.name;
private_evidence_list.append(f_evi);
@@ -751,7 +749,7 @@ void Courtroom::on_evidence_edited()
{
return;
}
- evi_type fake_evidence;
+ EvidenceItem fake_evidence;
fake_evidence.name = ui_evidence_name->text();
fake_evidence.description = ui_evidence_description->toPlainText();
fake_evidence.image = ui_evidence_image_name->text();
@@ -778,7 +776,7 @@ void Courtroom::evidence_switch(bool global)
evidence_close();
current_evidence_global = global;
is_presenting_evidence = false;
- ui_evidence_present->set_image("present");
+ ui_evidence_present->setImage("present");
local_evidence_list.clear();
if (current_evidence_global)
{
@@ -786,10 +784,10 @@ void Courtroom::evidence_switch(bool global)
ui_evidence_present->show();
ui_evidence_save->hide();
ui_evidence_load->hide();
- ui_evidence_switch->set_image("evidence_global");
- ui_evidence->set_image("evidence_background");
- ui_evidence_overlay->set_image("evidence_overlay");
- ui_evidence_transfer->set_image("evidence_transfer");
+ ui_evidence_switch->setImage("evidence_global");
+ ui_evidence->setImage("evidence_background");
+ ui_evidence_overlay->setImage("evidence_overlay");
+ ui_evidence_transfer->setImage("evidence_transfer");
ui_evidence_transfer->setToolTip(tr("Transfer evidence to private inventory."));
ui_evidence_switch->setToolTip(tr("Current evidence is global. Click to switch to private."));
}
@@ -799,10 +797,10 @@ void Courtroom::evidence_switch(bool global)
ui_evidence_present->hide();
ui_evidence_save->show();
ui_evidence_load->show();
- ui_evidence_switch->set_image("evidence_private");
- ui_evidence->set_image("evidence_background_private");
- ui_evidence_overlay->set_image("evidence_overlay_private");
- ui_evidence_transfer->set_image("evidence_transfer_private");
+ ui_evidence_switch->setImage("evidence_private");
+ ui_evidence->setImage("evidence_background_private");
+ ui_evidence_overlay->setImage("evidence_overlay_private");
+ ui_evidence_transfer->setImage("evidence_transfer_private");
ui_evidence_transfer->setToolTip(tr("Transfer evidence to global inventory."));
ui_evidence_switch->setToolTip(tr("Current evidence is private. Click to switch to global."));
}
@@ -873,7 +871,7 @@ void Courtroom::evidence_load(QString filename)
continue;
}
- evi_type f_evi;
+ EvidenceItem f_evi;
f_evi.name = inventory.value(evi + "/name", "<name>").value<QString>();
f_evi.description = inventory.value(evi + "/description", "<description>").value<QString>();
f_evi.image = inventory.value(evi + "/image", "empty.png").value<QString>();
@@ -906,7 +904,7 @@ void Courtroom::evidence_save(QString filename)
inventory.sync();
}
-bool Courtroom::compare_evidence_changed(evi_type evi_a, evi_type evi_b)
+bool Courtroom::compare_evidence_changed(EvidenceItem evi_a, EvidenceItem evi_b)
{
return evi_a.name != evi_b.name || evi_a.image != evi_b.image || evi_a.description != evi_b.description;
}
diff --git a/src/interfaces/server_dialog.h b/src/interfaces/server_dialog.h
deleted file mode 100644
index 98c57fee..00000000
--- a/src/interfaces/server_dialog.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#pragma once
-
-#include <QDialog>
-
-namespace AttorneyOnline
-{
-namespace UI
-{
-class FavoriteServerDialog : public QDialog
-{
-public:
- const QString DEFAULT_UI = "favorite_server_dialog.ui";
- const int TCP_INDEX = 0;
-
-private Q_SLOTS:
- virtual void onSavePressed() = 0;
- virtual void onCancelPressed() = 0;
-};
-} // namespace UI
-} // namespace AttorneyOnline
diff --git a/src/lobby.cpp b/src/lobby.cpp
index 6c64804d..6d42485d 100644
--- a/src/lobby.cpp
+++ b/src/lobby.cpp
@@ -4,9 +4,8 @@
#include "demoserver.h"
#include "gui_utils.h"
#include "networkmanager.h"
-#include "widgets/add_server_dialog.h"
#include "widgets/direct_connect_dialog.h"
-#include "widgets/edit_server_dialog.h"
+#include "widgets/server_editor_dialog.h"
#include <QImageReader>
#include <QUiLoader>
@@ -234,18 +233,26 @@ void Lobby::on_add_to_fav_released()
void Lobby::on_add_server_to_fave_released()
{
- AddServerDialog l_dialog;
- l_dialog.exec();
- list_favorites();
- reset_selection();
+ ServerEditorDialog dialog;
+ if (dialog.exec())
+ {
+ Options::getInstance().addFavorite(dialog.currentServerInfo());
+ list_favorites();
+ reset_selection();
+ }
}
void Lobby::on_edit_favorite_released()
{
- EditServerDialog l_dialog(get_selected_server());
- l_dialog.exec();
- list_favorites();
- reset_selection();
+ const int index = get_selected_server();
+ ServerEditorDialog dialog;
+ dialog.loadServerInfo(Options::getInstance().favorites().at(index));
+ if (dialog.exec())
+ {
+ Options::getInstance().updateFavorite(dialog.currentServerInfo(), index);
+ list_favorites();
+ reset_selection();
+ }
}
void Lobby::on_remove_from_fav_released()
@@ -308,7 +315,7 @@ void Lobby::on_about_clicked()
void Lobby::on_server_list_clicked(QTreeWidgetItem *p_item, int column)
{
column = 0;
- server_type f_server;
+ ServerInfo f_server;
int n_server = p_item->text(column).toInt();
if (n_server == last_index)
@@ -322,7 +329,7 @@ void Lobby::on_server_list_clicked(QTreeWidgetItem *p_item, int column)
return;
}
- QVector<server_type> f_server_list = ao_app->get_server_list();
+ QVector<ServerInfo> f_server_list = ao_app->get_server_list();
if (n_server >= f_server_list.size())
{
@@ -331,7 +338,7 @@ void Lobby::on_server_list_clicked(QTreeWidgetItem *p_item, int column)
f_server = f_server_list.at(n_server);
- set_server_description(f_server.desc);
+ set_server_description(f_server.description);
ui_server_description_text->moveCursor(QTextCursor::Start);
ui_server_description_text->ensureCursorVisible();
@@ -354,7 +361,7 @@ void Lobby::on_list_doubleclicked(QTreeWidgetItem *p_item, int column)
void Lobby::on_favorite_tree_clicked(QTreeWidgetItem *p_item, int column)
{
column = 0;
- server_type f_server;
+ ServerInfo f_server;
int n_server = p_item->text(column).toInt();
if (n_server == last_index)
@@ -372,7 +379,7 @@ void Lobby::on_favorite_tree_clicked(QTreeWidgetItem *p_item, int column)
ui_edit_favorite_button->setEnabled(true);
ui_remove_from_favorites_button->setEnabled(true);
- QVector<server_type> f_server_list = Options::getInstance().favorites();
+ QVector<ServerInfo> f_server_list = Options::getInstance().favorites();
if (n_server >= f_server_list.size())
{
@@ -381,7 +388,7 @@ void Lobby::on_favorite_tree_clicked(QTreeWidgetItem *p_item, int column)
f_server = f_server_list.at(n_server);
- set_server_description(f_server.desc);
+ set_server_description(f_server.description);
ui_server_description_text->moveCursor(QTextCursor::Start);
ui_server_description_text->ensureCursorVisible();
ui_server_player_count_lbl->setText(tr("Connecting..."));
@@ -427,7 +434,7 @@ void Lobby::on_demo_clicked(QTreeWidgetItem *item, int column)
QString l_filepath = (QApplication::applicationDirPath() + "/logs/%1/%2").arg(item->data(0, Qt::DisplayRole).toString(), item->data(1, Qt::DisplayRole).toString());
ao_app->demo_server->start_server();
- server_type demo_server;
+ ServerInfo demo_server;
demo_server.ip = "127.0.0.1";
demo_server.port = ao_app->demo_server->port();
ao_app->demo_server->set_demo_file(l_filepath);
@@ -458,7 +465,7 @@ void Lobby::list_servers()
ui_serverlist_search->setText("");
int i = 0;
- for (const server_type &i_server : qAsConst(ao_app->get_server_list()))
+ for (const ServerInfo &i_server : qAsConst(ao_app->get_server_list()))
{
QTreeWidgetItem *treeItem = new QTreeWidgetItem(ui_serverlist_tree);
treeItem->setData(0, Qt::DisplayRole, i);
@@ -476,7 +483,7 @@ void Lobby::list_favorites()
ui_favorites_tree->clear();
int i = 0;
- for (const server_type &i_server : Options::getInstance().favorites())
+ for (const ServerInfo &i_server : Options::getInstance().favorites())
{
QTreeWidgetItem *treeItem = new QTreeWidgetItem(ui_favorites_tree);
treeItem->setData(0, Qt::DisplayRole, i);
diff --git a/src/networkmanager.cpp b/src/networkmanager.cpp
index a0b95d8c..e53b2917 100644
--- a/src/networkmanager.cpp
+++ b/src/networkmanager.cpp
@@ -51,23 +51,23 @@ void NetworkManager::ms_request_finished(QNetworkReply *reply)
qDebug().noquote() << "Got valid response from" << reply->url();
- QVector<server_type> server_list;
+ QVector<ServerInfo> server_list;
const auto jsonEntries = json.array();
for (const auto &entryRef : jsonEntries)
{
const auto entry = entryRef.toObject();
- server_type server;
+ ServerInfo server;
server.ip = entry["ip"].toString();
server.name = entry["name"].toString();
- server.desc = entry["description"].toString(tr("No description provided."));
+ server.description = entry["description"].toString(tr("No description provided."));
if (entry["ws_port"].isDouble())
{
- server.socket_type = WEBSOCKETS;
+ server.socket_type = WebSocketServerConnection;
server.port = entry["ws_port"].toInt();
}
else
{
- server.socket_type = TCP;
+ server.socket_type = TcpServerConnection;
server.port = entry["port"].toInt();
}
if (server.port != 0)
@@ -137,7 +137,7 @@ void NetworkManager::request_document(MSDocumentType document_type, const std::f
});
}
-void NetworkManager::connect_to_server(server_type p_server)
+void NetworkManager::connect_to_server(ServerInfo p_server)
{
disconnect_from_server();
@@ -146,9 +146,10 @@ void NetworkManager::connect_to_server(server_type p_server)
switch (p_server.socket_type)
{
default:
- p_server.socket_type = TCP;
+ p_server.socket_type = TcpServerConnection;
[[fallthrough]];
- case TCP:
+
+ case TcpServerConnection:
qInfo() << "using TCP backend";
server_socket.tcp = new QTcpSocket(this);
@@ -165,7 +166,8 @@ void NetworkManager::connect_to_server(server_type p_server)
server_socket.tcp->connectToHost(p_server.ip, p_server.port);
break;
- case WEBSOCKETS:
+
+ case WebSocketServerConnection:
qInfo() << "using WebSockets backend";
server_socket.ws = new QWebSocket(QString(), QWebSocketProtocol::VersionLatest, this);
@@ -190,7 +192,7 @@ void NetworkManager::connect_to_server(server_type p_server)
void NetworkManager::join_to_server()
{
- ship_server_packet(AOPacket("askchaa").to_string());
+ ship_server_packet(AOPacket("askchaa").toString());
}
void NetworkManager::disconnect_from_server()
@@ -202,11 +204,11 @@ void NetworkManager::disconnect_from_server()
switch (active_connection_type)
{
- case TCP:
+ case TcpServerConnection:
server_socket.tcp->close();
server_socket.tcp->deleteLater();
break;
- case WEBSOCKETS:
+ case WebSocketServerConnection:
server_socket.ws->close(QWebSocketProtocol::CloseCodeGoingAway);
server_socket.ws->deleteLater();
break;
@@ -217,14 +219,14 @@ void NetworkManager::disconnect_from_server()
void NetworkManager::ship_server_packet(AOPacket p_packet)
{
- QString message = p_packet.to_string(true);
+ QString message = p_packet.toString(true);
switch (active_connection_type)
{
- case TCP:
+ case TcpServerConnection:
server_socket.tcp->write(message.toUtf8());
break;
- case WEBSOCKETS:
+ case WebSocketServerConnection:
server_socket.ws->sendTextMessage(message);
break;
}
diff --git a/src/networkmanager.h b/src/networkmanager.h
index 984f30f8..5cd87617 100644
--- a/src/networkmanager.h
+++ b/src/networkmanager.h
@@ -24,9 +24,8 @@ class NetworkManager : public QObject
public:
explicit NetworkManager(AOApplication *parent);
- ~NetworkManager() = default;
- void connect_to_server(server_type p_server);
+ void connect_to_server(ServerInfo p_server);
void disconnect_from_server();
public Q_SLOTS:
@@ -53,7 +52,7 @@ private:
QWebSocket *ws;
QTcpSocket *tcp;
} server_socket;
- connection_type active_connection_type;
+ ServerConnectionType active_connection_type;
bool connected = false;
QTimer *heartbeat_timer;
diff --git a/src/options.cpp b/src/options.cpp
index 8aec7fd4..80060764 100644
--- a/src/options.cpp
+++ b/src/options.cpp
@@ -633,9 +633,9 @@ void Options::clearConfig()
config.clear();
}
-QVector<server_type> Options::favorites()
+QVector<ServerInfo> Options::favorites()
{
- QVector<server_type> serverlist;
+ QVector<ServerInfo> serverlist;
auto grouplist = favorite.childGroups();
{ // remove all negative and non-numbers
@@ -656,13 +656,13 @@ QVector<server_type> Options::favorites()
for (const QString &group : qAsConst(grouplist))
{
- server_type f_server;
+ ServerInfo f_server;
favorite.beginGroup(group);
f_server.ip = favorite.value("address", "127.0.0.1").toString();
f_server.port = favorite.value("port", 27016).toInt();
f_server.name = favorite.value("name", "Missing Name").toString();
- f_server.desc = favorite.value("desc", "No description").toString();
- f_server.socket_type = to_connection_type.value(favorite.value("protocol", "tcp").toString());
+ f_server.description = favorite.value("desc", "No description").toString();
+ f_server.socket_type = SERVER_CONNECTION_TYPE_STRING_MAP.value(favorite.value("protocol", "tcp").toString());
serverlist.append(std::move(f_server));
favorite.endGroup();
}
@@ -670,7 +670,7 @@ QVector<server_type> Options::favorites()
return serverlist;
}
-void Options::setFavorites(QVector<server_type> value)
+void Options::setFavorites(QVector<ServerInfo> value)
{
favorite.clear();
for (int i = 0; i < value.size(); ++i)
@@ -680,9 +680,9 @@ void Options::setFavorites(QVector<server_type> value)
favorite.setValue("name", fav_server.name);
favorite.setValue("address", fav_server.ip);
favorite.setValue("port", fav_server.port);
- favorite.setValue("desc", fav_server.desc);
+ favorite.setValue("desc", fav_server.description);
- if (fav_server.socket_type == TCP)
+ if (fav_server.socket_type == TcpServerConnection)
{
favorite.setValue("protocol", "tcp");
}
@@ -697,20 +697,20 @@ void Options::setFavorites(QVector<server_type> value)
void Options::removeFavorite(int index)
{
- QVector<server_type> l_favorites = favorites();
+ QVector<ServerInfo> l_favorites = favorites();
l_favorites.remove(index);
setFavorites(l_favorites);
}
-void Options::addFavorite(server_type server)
+void Options::addFavorite(ServerInfo server)
{
int index = favorites().size();
favorite.beginGroup(QString::number(index));
favorite.setValue("name", server.name);
favorite.setValue("address", server.ip);
favorite.setValue("port", server.port);
- favorite.setValue("desc", server.desc);
- if (server.socket_type == TCP)
+ favorite.setValue("desc", server.description);
+ if (server.socket_type == TcpServerConnection)
{
favorite.setValue("protocol", "tcp");
}
@@ -722,14 +722,14 @@ void Options::addFavorite(server_type server)
favorite.sync();
}
-void Options::updateFavorite(server_type server, int index)
+void Options::updateFavorite(ServerInfo server, int index)
{
favorite.beginGroup(QString::number(index));
favorite.setValue("name", server.name);
favorite.setValue("address", server.ip);
favorite.setValue("port", server.port);
- favorite.setValue("desc", server.desc);
- if (server.socket_type == TCP)
+ favorite.setValue("desc", server.description);
+ if (server.socket_type == TcpServerConnection)
{
favorite.setValue("protocol", "tcp");
}
diff --git a/src/options.h b/src/options.h
index 07075557..088e34ba 100644
--- a/src/options.h
+++ b/src/options.h
@@ -252,13 +252,13 @@ public:
void clearConfig();
// Loads the favorite servers
- QVector<server_type> favorites();
- void setFavorites(QVector<server_type> value);
+ QVector<ServerInfo> favorites();
+ void setFavorites(QVector<ServerInfo> value);
// Interactions with favorite servers
void removeFavorite(int index);
- void addFavorite(server_type server);
- void updateFavorite(server_type server, int index);
+ void addFavorite(ServerInfo server);
+ void updateFavorite(ServerInfo server, int index);
// Theming Nonesense!
QString getUIAsset(QString f_asset_name);
diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp
index b4576f95..cdedd5ac 100644
--- a/src/packet_distribution.cpp
+++ b/src/packet_distribution.cpp
@@ -26,12 +26,12 @@ void AOApplication::append_to_demofile(QString packet_string)
void AOApplication::server_packet_received(AOPacket p_packet)
{
- QStringList f_contents_encoded = p_packet.get_content();
- QString f_packet_encoded = p_packet.to_string();
+ QStringList f_contents_encoded = p_packet.content();
+ QString f_packet_encoded = p_packet.toString();
- QString header = p_packet.get_header();
- QStringList f_contents = p_packet.get_content();
- QString f_packet = p_packet.to_string();
+ QString header = p_packet.header();
+ QStringList f_contents = p_packet.content();
+ QString f_packet = p_packet.toString();
bool log_to_demo = true;
@@ -255,7 +255,7 @@ void AOApplication::server_packet_received(AOPacket p_packet)
break;
case 1:
{
- QVector<server_type> favorite_list = Options::getInstance().favorites();
+ QVector<ServerInfo> favorite_list = Options::getInstance().favorites();
if (selected_server >= 0 && selected_server < favorite_list.size())
{
auto info = favorite_list.at(selected_server);
@@ -335,7 +335,7 @@ void AOApplication::server_packet_received(AOPacket p_packet)
sub_element = AOPacket::decode(sub_element);
}
- char_type f_char;
+ CharacterSlot f_char;
f_char.name = sub_elements.at(0);
if (sub_elements.size() >= 2)
{
@@ -503,14 +503,14 @@ void AOApplication::server_packet_received(AOPacket p_packet)
{
if (courtroom_constructed && courtroom_loaded)
{
- w_courtroom->chatmessage_enqueue(p_packet.get_content());
+ w_courtroom->chatmessage_enqueue(p_packet.content());
}
}
else if (header == "MC")
{
if (courtroom_constructed && courtroom_loaded)
{
- w_courtroom->handle_song(&p_packet.get_content());
+ w_courtroom->handle_song(&p_packet.content());
}
}
else if (header == "RT")
@@ -542,7 +542,7 @@ void AOApplication::server_packet_received(AOPacket p_packet)
{
if (courtroom_constructed)
{
- QVector<evi_type> f_evi_list;
+ QVector<EvidenceItem> f_evi_list;
for (QString f_string : f_contents_encoded)
{
@@ -559,7 +559,7 @@ void AOApplication::server_packet_received(AOPacket p_packet)
data = AOPacket::decode(data);
}
- evi_type f_evi;
+ EvidenceItem f_evi;
f_evi.name = sub_contents.at(0);
f_evi.description = sub_contents.at(1);
f_evi.image = sub_contents.at(2);
@@ -805,7 +805,7 @@ void AOApplication::server_packet_received(AOPacket p_packet)
void AOApplication::send_server_packet(AOPacket p_packet)
{
- QString f_packet = p_packet.to_string();
+ QString f_packet = p_packet.toString();
#ifdef DEBUG_NETWORK
qDebug() << "S:" << p_packet.to_string();
#endif
diff --git a/src/scrolltext.cpp b/src/scrolltext.cpp
index 25090a7a..a45d6abd 100644
--- a/src/scrolltext.cpp
+++ b/src/scrolltext.cpp
@@ -17,12 +17,12 @@ ScrollText::ScrollText(QWidget *parent)
QString ScrollText::text() const
{
- return _text;
+ return m_text;
}
void ScrollText::setText(QString text)
{
- _text = text;
+ m_text = text;
updateText();
update();
}
@@ -43,7 +43,7 @@ void ScrollText::updateText()
{
timer.stop();
#if QT_VERSION > QT_VERSION_CHECK(5, 11, 0)
- singleTextWidth = fontMetrics().horizontalAdvance(_text);
+ singleTextWidth = fontMetrics().horizontalAdvance(m_text);
#else
singleTextWidth = fontMetrics().boundingRect(_text).width();
#endif
@@ -53,12 +53,12 @@ void ScrollText::updateText()
if (scrollEnabled)
{
scrollPos = -64;
- staticText.setText(_text + _separator);
+ staticText.setText(m_text + _separator);
timer.start();
}
else
{
- staticText.setText(_text);
+ staticText.setText(m_text);
}
staticText.prepare(QTransform(), font());
diff --git a/src/scrolltext.h b/src/scrolltext.h
index b7dd59f8..4571e25e 100644
--- a/src/scrolltext.h
+++ b/src/scrolltext.h
@@ -28,8 +28,7 @@ protected:
virtual void resizeEvent(QResizeEvent *);
private:
- void updateText();
- QString _text;
+ QString m_text;
QString _separator;
QStaticText staticText;
int singleTextWidth;
@@ -41,6 +40,8 @@ private:
QImage buffer;
QTimer timer;
+ void updateText();
+
private Q_SLOTS:
virtual void timer_timeout();
};
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();
+};