1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
#ifndef WIDGETCOVER_H
#define WIDGETCOVER_H
#include "guiSQLiteStudio_global.h"
#include <QWidget>
#include <QEasingCurve>
#include <QVariant>
class QVariantAnimation;
class QGridLayout;
class QPushButton;
class QProgressBar;
class GUI_API_EXPORT WidgetCover : public QWidget
{
Q_OBJECT
public:
explicit WidgetCover(QWidget *parent);
explicit WidgetCover(const QEasingCurve& easingCurve, QWidget *parent);
virtual ~WidgetCover();
QEasingCurve getEasingCurve() const;
void setEasingCurve(const QEasingCurve& value);
int getDuration() const;
void setDuration(int value);
int getTransparency() const;
void setTransparency(int value);
QGridLayout* getContainerLayout();
bool eventFilter(QObject* obj, QEvent* e);
void displayProgress(int maxValue, const QString& format = QString());
void noDisplayProgress();
void initWithProgressBarOnly(const QString& format);
void initWithInterruptContainer(const QString& interruptButtonText = QString());
private:
enum class Action
{
SHOWING,
HIDING,
NONE
};
void init();
void interruptAction();
void resetBackground();
void widgetResized();
Action actionInProgres = Action::NONE;
QVariantAnimation* animation = nullptr;
QEasingCurve easingCurve = QEasingCurve::OutCubic;
int duration = 150;
int transparency = 128;
QWidget* container = nullptr;
QGridLayout* containerLayout = nullptr;
QPushButton* cancelButton = nullptr;
QProgressBar* busyBar = nullptr;
bool undetermined = false;
signals:
void cancelClicked();
private slots:
void animationUpdate(const QVariant& value);
void animationFinished();
public slots:
void show();
void hide();
void setProgress(int value);
};
#endif // WIDGETCOVER_H
|