From 4d1b0517e3d5704b26df7d8a9a492d182d36ea4b Mon Sep 17 00:00:00 2001
From: Salanto <62221668+Salanto@users.noreply.github.com>
Date: Wed, 31 Jul 2024 11:55:25 +0200
Subject: [PATCH] V2.11.0 rc1 fixes (#1029)
* Use unix timestamp to transmit ban duration
* Cleanup compiler warning due to narrowing conversion
* Fix preanim not being visible
This is apparently not a feature we want from WebAO :^)
* Bump to RC2
* Use std::chrono instead
* Remove random include and debug call
---
CMakeLists.txt | 6 ++--
data/ui/moderator_action_dialog.ui | 57 +++++++++++++++++++-----------
src/animationlayer.cpp | 1 +
src/aoapplication.cpp | 2 +-
src/aoapplication.h | 8 ++---
src/widgets/moderator_dialog.cpp | 14 ++++++--
src/widgets/moderator_dialog.h | 4 ++-
7 files changed, 60 insertions(+), 32 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 346f887..ebaaae2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -14,10 +14,10 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON)
option(AO_BUILD_TESTS "Build test programs" ON)
option(AO_ENABLE_DISCORD_RPC "Enable Discord Rich Presence" ON)
-find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core)
-find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui Network Widgets Concurrent WebSockets UiTools)
+find_package(QT NAMES Qt6)
+find_package(Qt6 REQUIRED COMPONENTS Core Gui Network Widgets Concurrent WebSockets UiTools)
-add_executable(Attorney_Online
+qt_add_executable(Attorney_Online
src/aoapplication.cpp
src/aoapplication.h
src/aoblipplayer.cpp
diff --git a/data/ui/moderator_action_dialog.ui b/data/ui/moderator_action_dialog.ui
index 723db97..a4290c4 100644
--- a/data/ui/moderator_action_dialog.ui
+++ b/data/ui/moderator_action_dialog.ui
@@ -19,20 +19,10 @@
6
- -
-
-
- true
-
+
-
+
- Permanent
-
-
-
- -
-
-
- Duration
+ Action
@@ -43,15 +33,22 @@
- -
-
+
-
+
- Action
+ Duration
- -
-
+
-
+
+
+ Minute(s)
+
+
+
+ -
+
true
@@ -59,11 +56,31 @@
Hour(s)
- 1
+ 0
876000
+
+ 0
+
+
+
+ -
+
+
+ Day(s)
+
+
+
+ -
+
+
+ true
+
+
+ Permanent
+
@@ -116,7 +133,7 @@ li.checked::marker { content: "\2612"; }
permanent
clicked(bool)
- duration
+ duration_hh
setDisabled(bool)
diff --git a/src/animationlayer.cpp b/src/animationlayer.cpp
index a1084ed..7ffe1d7 100644
--- a/src/animationlayer.cpp
+++ b/src/animationlayer.cpp
@@ -65,6 +65,7 @@ void AnimationLayer::startPlayback()
}
resetData();
m_processing = true;
+ setVisible(true);
Q_EMIT startedPlayback();
frameTicker();
}
diff --git a/src/aoapplication.cpp b/src/aoapplication.cpp
index dd5821d..da7c1e2 100644
--- a/src/aoapplication.cpp
+++ b/src/aoapplication.cpp
@@ -119,7 +119,7 @@ void AOApplication::destruct_courtroom()
QString AOApplication::get_version_string()
{
- return QString::number(RELEASE) + "." + QString::number(MAJOR_VERSION) + "." + QString::number(MINOR_VERSION) + " RC1";
+ return QString::number(RELEASE) + "." + QString::number(MAJOR_VERSION) + "." + QString::number(MINOR_VERSION) + " RC2";
}
QString AOApplication::find_image(QStringList p_list)
diff --git a/src/aoapplication.h b/src/aoapplication.h
index f0d3d81..e9477e0 100644
--- a/src/aoapplication.h
+++ b/src/aoapplication.h
@@ -43,7 +43,7 @@ public:
inline VPath operator+(const VPath &str) const { return VPath(this->toQString() + str.toQString()); }
};
-inline uint qHash(const VPath &key, uint seed = qGlobalQHashSeed())
+inline size_t qHash(const VPath &key, uint seed = qGlobalQHashSeed())
{
return qHash(key.toQString(), seed);
}
@@ -338,9 +338,9 @@ public:
private:
QVector server_list;
- QHash asset_lookup_cache;
- QHash dir_listing_cache;
- QSet dir_listing_exist_cache;
+ QHash asset_lookup_cache;
+ QHash dir_listing_cache;
+ QSet dir_listing_exist_cache;
public Q_SLOTS:
void server_connected();
diff --git a/src/widgets/moderator_dialog.cpp b/src/widgets/moderator_dialog.cpp
index 11b99cc..a39840f 100644
--- a/src/widgets/moderator_dialog.cpp
+++ b/src/widgets/moderator_dialog.cpp
@@ -9,6 +9,7 @@
#include
#include
#include
+#include
const QString ModeratorDialog::UI_FILE_PATH = "moderator_action_dialog.ui";
@@ -31,7 +32,9 @@ ModeratorDialog::ModeratorDialog(int clientId, bool ban, AOApplication *ao_app,
layout->addWidget(ui_widget);
FROM_UI(QComboBox, action);
- FROM_UI(QSpinBox, duration);
+ FROM_UI(QSpinBox, duration_mm);
+ FROM_UI(QSpinBox, duration_hh);
+ FROM_UI(QSpinBox, duration_dd);
FROM_UI(QLabel, duration_label);
FROM_UI(QCheckBox, permanent);
FROM_UI(QTextEdit, details);
@@ -46,7 +49,9 @@ ModeratorDialog::ModeratorDialog(int clientId, bool ban, AOApplication *ao_app,
ui_action->addItem(tr("Kick"));
}
- ui_duration->setVisible(m_ban);
+ ui_duration_mm->setVisible(m_ban);
+ ui_duration_hh->setVisible(m_ban);
+ ui_duration_dd->setVisible(m_ban);
ui_duration_label->setVisible(m_ban);
ui_permanent->setVisible(m_ban);
@@ -87,7 +92,10 @@ void ModeratorDialog::onAcceptedClicked()
}
else
{
- arglist.append(QString::number(ui_duration->value()));
+ qint64 duration = std::chrono::duration_cast(std::chrono::days(ui_duration_dd->value())).count();
+ duration = duration + std::chrono::duration_cast(std::chrono::hours(ui_duration_hh->value())).count();
+ duration = duration + std::chrono::duration_cast(std::chrono::minutes(ui_duration_mm->value())).count();
+ arglist.append(QString::number(duration));
}
}
else
diff --git a/src/widgets/moderator_dialog.h b/src/widgets/moderator_dialog.h
index 648f979..558080f 100644
--- a/src/widgets/moderator_dialog.h
+++ b/src/widgets/moderator_dialog.h
@@ -27,7 +27,9 @@ private:
QWidget *ui_widget;
QComboBox *ui_action;
- QSpinBox *ui_duration;
+ QSpinBox *ui_duration_mm;
+ QSpinBox *ui_duration_hh;
+ QSpinBox *ui_duration_dd;
QLabel *ui_duration_label;
QCheckBox *ui_permanent;
QTextEdit *ui_details;