blob: 1fc6897773f96db77080c4b2f6d11de4aabcca8d [file] [log] [blame]
Andreas Traczyk43c08232018-10-31 13:42:09 -04001/***************************************************************************
Sébastien Blin68abac92019-01-02 17:41:31 -05002 * Copyright (C) 2019-2019 by Savoir-faire Linux *
Andreas Traczyk43c08232018-10-31 13:42:09 -04003 * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com> *
4 * *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 3 of the License, or *
8 * (at your option) any later version. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program. If not, see <http://www.gnu.org/licenses/>. *
17 **************************************************************************/
18
19#pragma once
20
21#include <QWidget>
22#include <QPropertyAnimation>
23#include <QGraphicsOpacityEffect>
24#include <QMovie>
25
26class OpacityAnimation : public QObject
27{
28 Q_OBJECT
29public:
30 explicit OpacityAnimation(QWidget* target, QObject* parent = nullptr);
31 ~OpacityAnimation();
32
33 void setFPS(const int& fps);
34 void setFrameTime(const int& milliseconds);
35 void setDuration(const int& milliseconds);
36 void setStartValue(const double& value);
37 void setEndValue(const double& value);
38
39 void start();
40 void stop();
41
42private slots:
43 void updateAnimation();
44
45private:
46 QGraphicsOpacityEffect* effect_;
47 double value_;
48
49 QWidget* target_;
50 QTimer* timer_;
51 int frameTime_;
52 double t_;
53 int duration_;
54
55 double startValue_;
56 double endValue_;
57};
58
59namespace Ui {
60class AnimatedOverlay;
61}
62
63class AnimatedOverlay : public QWidget
64{
65 Q_OBJECT
66public:
67 explicit AnimatedOverlay(QColor color, QWidget* parent = 0);
68 ~AnimatedOverlay();
69
70private:
71 Ui::AnimatedOverlay* ui;
72
73 OpacityAnimation* oa_;
74};