Reimplemented favorite server widget, ...
* Reworked favorite server widget * Renamed `server_type` to `ServerInfo` * Renamed `connection_type` to `ServerConnectionType` * Refactored `AOCharButton` * Reimplemented `AOButton` * Partially reimplemented `AOEmoteButton` * Refactored `AOEvidenceButton`
This commit is contained in:
parent
a0cee58c04
commit
39e4354b1d
@ -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")
|
||||
|
@ -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>
|
||||
|
@ -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;
|
||||
|
@ -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()
|
||||
{}
|
||||
|
||||
void AOButton::set_image(QString p_path, QString p_misc)
|
||||
{
|
||||
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();
|
||||
}
|
||||
|
||||
void AOButton::setImage(QString image_name)
|
||||
{
|
||||
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;
|
||||
}
|
||||
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)
|
||||
{
|
||||
m_movie->start();
|
||||
setStyleSheet(QString());
|
||||
setIcon(QIcon());
|
||||
}
|
||||
else
|
||||
{
|
||||
this->setIcon(QPixmap(p_image).scaled(this->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
|
||||
this->setIconSize(this->size());
|
||||
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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void AOButton::deleteMovie()
|
||||
{
|
||||
if (m_movie)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
@ -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);
|
||||
};
|
||||
|
@ -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()
|
||||
void AOCharButton::setTaken(bool enabled)
|
||||
{
|
||||
ui_taken->hide();
|
||||
ui_selector->hide();
|
||||
}
|
||||
|
||||
void AOCharButton::set_taken(bool is_taken)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
};
|
||||
|
@ -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,31 +83,15 @@ 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);
|
||||
Q_EMIT evidenceDoubleClicked(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";
|
||||
}
|
||||
*/
|
||||
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
void AOEvidenceButton::enterEvent(QEvent *e)
|
||||
#else
|
||||
@ -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);
|
||||
}
|
||||
|
@ -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:
|
||||
|
@ -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());
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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())
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -1,60 +1,33 @@
|
||||
#include "chatlogpiece.h"
|
||||
|
||||
ChatLogPiece::ChatLogPiece()
|
||||
{
|
||||
name = tr("UNKNOWN");
|
||||
showname = tr("UNKNOWN");
|
||||
message = tr("UNKNOWN");
|
||||
color = 0;
|
||||
datetime = QDateTime::currentDateTimeUtc();
|
||||
}
|
||||
#include <QStringBuilder>
|
||||
|
||||
ChatLogPiece::ChatLogPiece(QString p_name, QString p_showname, QString p_message, QString p_action, int p_color, bool p_selfname)
|
||||
QString ChatLogPiece::toString()
|
||||
{
|
||||
name = p_name;
|
||||
showname = p_showname;
|
||||
message = p_message;
|
||||
action = p_action;
|
||||
color = p_color;
|
||||
selfname = p_selfname;
|
||||
datetime = QDateTime::currentDateTimeUtc();
|
||||
}
|
||||
auto maybe_unknown = [](QString str) -> QString {
|
||||
if (str.isEmpty())
|
||||
{
|
||||
return tr("UNKNOWN");
|
||||
}
|
||||
else
|
||||
{
|
||||
return str;
|
||||
}
|
||||
};
|
||||
|
||||
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();
|
||||
}
|
||||
QString details = QString("[%1] %2").arg(timestamp.toString(), maybe_unknown(character_name));
|
||||
|
||||
QString ChatLogPiece::get_datetime_as_string()
|
||||
{
|
||||
return datetime.toString();
|
||||
}
|
||||
|
||||
QString ChatLogPiece::get_full()
|
||||
{
|
||||
QString full = "[";
|
||||
|
||||
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;
|
||||
}
|
||||
|
@ -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();
|
||||
};
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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;
|
||||
ServerConnectionType socket_type;
|
||||
};
|
||||
|
||||
struct emote_type
|
||||
{
|
||||
QString comment;
|
||||
QString preanim;
|
||||
QString anim;
|
||||
int mod;
|
||||
QString sfx_name;
|
||||
int sfx_delay;
|
||||
int sfx_duration;
|
||||
};
|
||||
|
||||
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;
|
||||
|
@ -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")
|
||||
{
|
||||
|
@ -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));
|
||||
|
108
src/evidence.cpp
108
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;
|
||||
}
|
||||
|
@ -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
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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");
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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());
|
||||
|
@ -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();
|
||||
};
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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();
|
||||
};
|
@ -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()
|
||||
|
@ -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();
|
||||
};
|
||||
|
@ -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();
|
||||
}
|
@ -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;
|
||||
};
|
93
src/widgets/server_editor_dialog.cpp
Normal file
93
src/widgets/server_editor_dialog.cpp
Normal file
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
43
src/widgets/server_editor_dialog.h
Normal file
43
src/widgets/server_editor_dialog.h
Normal file
@ -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();
|
||||
};
|
Loading…
Reference in New Issue
Block a user