OSDN Git Service

QOpacityEffect review
authorIvailo Monev <xakepa10@gmail.com>
Tue, 22 Nov 2022 22:24:22 +0000 (00:24 +0200)
committerIvailo Monev <xakepa10@gmail.com>
Tue, 22 Nov 2022 22:24:22 +0000 (00:24 +0200)
by starting the elapsed timer just before the fade timer the opacity
transition will be smoother at the start of the effect

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
package/archlinux/PKGBUILD
src/gui/widgets/qeffects.cpp

index 831ba7a..917175a 100644 (file)
@@ -3,7 +3,7 @@
 # https://wiki.archlinux.org/index.php/Arch_package_guidelines
 
 pkgname=katie-git
-pkgver=4.12.0.r7833.a324f5a0a
+pkgver=4.12.0.r7846.69f22fa63
 pkgrel=1
 pkgdesc='C++ toolkit derived from the Qt 4.8 framework'
 arch=('i486' 'i686' 'pentium4' 'x86_64' 'arm')
index 327915d..0259532 100644 (file)
 **
 ****************************************************************************/
 
-#include "qapplication.h"
-#ifndef QT_NO_EFFECTS
-#include "qdesktopwidget.h"
 #include "qeffects_p.h"
-#include "qevent.h"
-#include "qimage.h"
-#include "qpainter.h"
-#include "qpixmap.h"
+
+#ifndef QT_NO_EFFECTS
+#include "qwidget.h"
 #include "qpointer.h"
 #include "qtimer.h"
 #include "qelapsedtimer.h"
@@ -53,31 +49,31 @@ private slots:
     void cancel();
 
 private:
-    QPointer<QWidget> widget;
-    QTimer anim;
-    QElapsedTimer checkTime;
+    QPointer<QWidget> m_widget;
+    QTimer m_fadetimer;
+    QElapsedTimer m_elapsedtimer;
 };
 
 static QOpacityEffect* q_opacity = nullptr;
 
 QOpacityEffect::QOpacityEffect(QWidget* w)
     : QObject(w),
-    widget(w)
+    m_widget(w)
 {
-    connect(widget, SIGNAL(destroyed()), this, SLOT(cancel()));
+    connect(m_widget, SIGNAL(destroyed()), this, SLOT(cancel()));
 
-    checkTime.start();
-    widget->setWindowOpacity(0.0);
-    widget->show();
-    connect(&anim, SIGNAL(timeout()), this, SLOT(fade()));
-    anim.start(1);
+    m_widget->setWindowOpacity(0.0);
+    m_widget->show();
+    connect(&m_fadetimer, SIGNAL(timeout()), this, SLOT(fade()));
+    m_elapsedtimer.start();
+    m_fadetimer.start(1);
 }
 
 QOpacityEffect::~QOpacityEffect()
 {
     // Restore the opacity value
-    if (widget) {
-        widget->setWindowOpacity(1);
+    if (m_widget) {
+        m_widget->setWindowOpacity(1);
     }
 }
 
@@ -86,46 +82,46 @@ QOpacityEffect::~QOpacityEffect()
 */
 void QOpacityEffect::fade()
 {
-    const double alpha = (double(checkTime.elapsed()) / s_duration);
+    const double alpha = (double(m_elapsedtimer.elapsed()) / s_duration);
 
-    if (alpha >= 1.0 || !widget) {
-        anim.stop();
-        if (widget) {
-            widget->setWindowOpacity(1.0);
+    if (alpha >= 1.0 || !m_widget) {
+        m_fadetimer.stop();
+        if (m_widget) {
+            m_widget->setWindowOpacity(1.0);
         }
         q_opacity = nullptr;
         deleteLater();
     } else {
-        widget->setWindowOpacity(alpha);
+        m_widget->setWindowOpacity(alpha);
     }
 }
 
 void QOpacityEffect::cancel()
 {
-    anim.stop();
+    m_fadetimer.stop();
     q_opacity = nullptr;
     deleteLater();
 }
 
 /*!
-    Fade in widget \a w.
+    Fade in widget \a widget, if \a widget is null the effect is canceled.
 */
-void qFadeEffect(QWidget* w)
+void qFadeEffect(QWidget* widget)
 {
     if (q_opacity) {
         q_opacity = nullptr;
         q_opacity->deleteLater();
     }
 
-    if (!w) {
+    if (!widget) {
         return;
     }
 
-    q_opacity = new QOpacityEffect(w);
+    q_opacity = new QOpacityEffect(widget);
 }
 
 QT_END_NAMESPACE
 
 #include "moc_qeffects.cpp"
 
-#endif //QT_NO_EFFECTS
+#endif // QT_NO_EFFECTS