diff options
-rw-r--r-- | CMakeLists.txt | 15 | ||||
-rw-r--r-- | src/ui/SnackBar.cpp | 23 | ||||
-rw-r--r-- | src/ui/SnackBar.h | 17 |
3 files changed, 26 insertions, 29 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 1a4c4b70..42a2b387 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,8 +39,6 @@ option(USE_BUNDLED_LMDB "Use the bundled version of lmdb." ${HUNTER_ENABLED}) option(USE_BUNDLED_LMDBXX "Use the bundled version of lmdb++." ${HUNTER_ENABLED}) -option(USE_BUNDLED_TWEENY "Use the bundled version of tweeny." - ${HUNTER_ENABLED}) option(USE_BUNDLED_QTKEYCHAIN "Use the bundled version of Qt5Keychain." ${HUNTER_ENABLED}) @@ -446,18 +444,6 @@ else() add_library(lmdbxx::lmdbxx ALIAS lmdbxx) endif() -if(USE_BUNDLED_TWEENY) - include(FetchContent) - FetchContent_Declare( - Tweeny - GIT_REPOSITORY https://github.com/mobius3/tweeny.git - GIT_TAG 6a5033372fe53c4c731c66c8a2d56261746cd85c #v3 <- v3 has unfixed warnings - ) - FetchContent_MakeAvailable(Tweeny) -else() - find_package(Tweeny REQUIRED) -endif() - include(FindPkgConfig) pkg_check_modules(GSTREAMER IMPORTED_TARGET gstreamer-sdp-1.0>=1.18 gstreamer-webrtc-1.0>=1.18) if (TARGET PkgConfig::GSTREAMER) @@ -643,7 +629,6 @@ target_link_libraries(nheko PRIVATE nlohmann_json::nlohmann_json lmdbxx::lmdbxx liblmdb::lmdb - tweeny SingleApplication::SingleApplication) if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.16.0") diff --git a/src/ui/SnackBar.cpp b/src/ui/SnackBar.cpp index 03609802..2453369d 100644 --- a/src/ui/SnackBar.cpp +++ b/src/ui/SnackBar.cpp @@ -4,8 +4,6 @@ #include <QPainter> -#include <tweeny.h> - #include "SnackBar.h" constexpr int STARTING_OFFSET = 1; @@ -16,6 +14,7 @@ constexpr double MIN_WIDTH_PERCENTAGE = 0.3; SnackBar::SnackBar(QWidget *parent) : OverlayWidget(parent) + , offset_anim(this, "offset", this) { QFont font; font.setPointSizeF(font.pointSizeF() * 1.2); @@ -28,17 +27,16 @@ SnackBar::SnackBar(QWidget *parent) hideTimer_.setSingleShot(true); - auto offset_anim = tweeny::from(1.0f).to(0.0f).during(100).via(tweeny::easing::cubicOut); - connect(&showTimer_, &QTimer::timeout, this, [this, offset_anim]() mutable { - if (offset_anim.progress() < 1.0f) { - offset_ = offset_anim.step(0.07f); + offset_anim.setStartValue(1.0); + offset_anim.setEndValue(0.0); + offset_anim.setDuration(100); + offset_anim.setEasingCurve(QEasingCurve::OutCubic); + + connect(this, &SnackBar::offsetChanged, this, [this]() mutable { repaint(); - } else { - showTimer_.stop(); - hideTimer_.start(ANIMATION_DURATION); - offset_anim.seek(0.0f); - } }); + connect( + &offset_anim, &QPropertyAnimation::finished, this, [this]() { hideTimer_.start(10000); }); connect(&hideTimer_, SIGNAL(timeout()), this, SLOT(hideMessage())); @@ -54,7 +52,7 @@ SnackBar::start() show(); raise(); - showTimer_.start(10); + offset_anim.start(); } void @@ -77,7 +75,6 @@ SnackBar::hideMessage() void SnackBar::stopTimers() { - showTimer_.stop(); hideTimer_.stop(); } diff --git a/src/ui/SnackBar.h b/src/ui/SnackBar.h index 5459159e..8d127933 100644 --- a/src/ui/SnackBar.h +++ b/src/ui/SnackBar.h @@ -6,6 +6,7 @@ #include <QCoreApplication> #include <QPaintEvent> +#include <QPropertyAnimation> #include <QTimer> #include <deque> @@ -23,6 +24,7 @@ class SnackBar : public OverlayWidget Q_PROPERTY(QColor bgColor READ backgroundColor WRITE setBackgroundColor) Q_PROPERTY(QColor textColor READ textColor WRITE setTextColor) + Q_PROPERTY(double offset READ offset WRITE setOffset NOTIFY offsetChanged) public: explicit SnackBar(QWidget *parent); @@ -46,9 +48,21 @@ public: update(); } + double offset() { return offset_; } + void setOffset(double offset) + { + if (offset != offset_) { + offset_ = offset; + emit offsetChanged(); + } + } + public slots: void showMessage(const QString &msg); +signals: + void offsetChanged(); + protected: void paintEvent(QPaintEvent *event) override; void mousePressEvent(QMouseEvent *event) override; @@ -68,10 +82,11 @@ private: std::deque<QString> messages_; - QTimer showTimer_; QTimer hideTimer_; double boxHeight_; + QPropertyAnimation offset_anim; + SnackBarPosition position_; }; |