diff options
| author | 2025-01-16 01:58:22 -0500 | |
|---|---|---|
| committer | 2025-01-16 01:58:22 -0500 | |
| commit | a5ae79be08125b31bb6b8d9703090a98c6fd2e30 (patch) | |
| tree | 569ee612c9de85b2bb423efa485688ef1d43852e /SQLiteStudio3/guiSQLiteStudio/common | |
| parent | 21966b4f924b0a1933d9662e75ff253bd154fdb7 (diff) | |
| parent | 81a21e6ce040e7740de86340c8ea4dba30e69bc3 (diff) | |
Update upstream source from tag 'upstream/3.4.13+dfsg'
Update to upstream version '3.4.13+dfsg'
with Debian dir bf81ee0219cb8e4562a4751df17d75814772d2d6
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/common')
6 files changed, 110 insertions, 1 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/common/dialogsizehandler.cpp b/SQLiteStudio3/guiSQLiteStudio/common/dialogsizehandler.cpp new file mode 100644 index 0000000..ad283ca --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/common/dialogsizehandler.cpp @@ -0,0 +1,59 @@ +#include "dialogsizehandler.h" +#include "services/config.h" +#include <QEvent> +#include <QTimer> +#include <QWidget> +#include <QScreen> +#include <QGuiApplication> + +DialogSizeHandler::DialogSizeHandler(QObject *parent) : + DialogSizeHandler(parent->objectName(), parent) +{ +} + +DialogSizeHandler::DialogSizeHandler(const QString &key, QObject *parent) : + QObject(parent), configKey(key) +{ + saveTimer = new QTimer(this); + saveTimer->setInterval(500); + saveTimer->setSingleShot(true); + connect(saveTimer, SIGNAL(timeout()), this, SLOT(doSave())); + + QRect geom = CFG->get(CONFIG_GROUP, configKey).toRect(); + if (geom.isValid() && qApp->primaryScreen()->geometry().contains(geom)) + { + QWidget* w = qobject_cast<QWidget*>(parent); + w->setGeometry(geom); + } +} + +DialogSizeHandler::~DialogSizeHandler() +{ +} + +void DialogSizeHandler::applyFor(QObject *parent) +{ + applyFor(parent->objectName(), parent); +} + +void DialogSizeHandler::applyFor(const QString &key, QObject *parent) +{ + DialogSizeHandler* handler = new DialogSizeHandler(key, parent); + parent->installEventFilter(handler); +} + +bool DialogSizeHandler::eventFilter(QObject *obj, QEvent *event) +{ + if (event->type() == QEvent::Resize || event->type() == QEvent::Move) + { + QWidget* w = qobject_cast<QWidget*>(obj); + recentGeometry = w->geometry(); + saveTimer->start(); + } + return false; +} + +void DialogSizeHandler::doSave() +{ + CFG->set(CONFIG_GROUP, configKey, recentGeometry); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/common/dialogsizehandler.h b/SQLiteStudio3/guiSQLiteStudio/common/dialogsizehandler.h new file mode 100644 index 0000000..916f65d --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/common/dialogsizehandler.h @@ -0,0 +1,34 @@ +#ifndef DIALOGSIZEHANDLER_H +#define DIALOGSIZEHANDLER_H + +#include <QObject> +#include <QRect> + +class QTimer; + +class DialogSizeHandler : public QObject +{ + Q_OBJECT +public: + explicit DialogSizeHandler(QObject *parent); + DialogSizeHandler(const QString& key, QObject *parent); + virtual ~DialogSizeHandler(); + + static void applyFor(QObject *parent); + static void applyFor(const QString& key, QObject *parent); + +protected: + bool eventFilter(QObject *obj, QEvent *event) override; + +private: + static const constexpr char* CONFIG_GROUP = "DialogDimensions"; + + QString configKey; + QTimer* saveTimer = nullptr; + QRect recentGeometry; + +public slots: + void doSave(); +}; + +#endif // DIALOGSIZEHANDLER_H diff --git a/SQLiteStudio3/guiSQLiteStudio/common/widgetcover.cpp b/SQLiteStudio3/guiSQLiteStudio/common/widgetcover.cpp index 168c7f9..7866888 100644 --- a/SQLiteStudio3/guiSQLiteStudio/common/widgetcover.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/common/widgetcover.cpp @@ -142,7 +142,13 @@ void WidgetCover::hide() void WidgetCover::setProgress(int value) { - busyBar->setValue(value); + if (undetermined) + { + busyBar->setRange(0, value); + busyBar->setValue(value); + } + else + busyBar->setValue(value); } QEasingCurve WidgetCover::getEasingCurve() const @@ -203,6 +209,7 @@ void WidgetCover::displayProgress(int maxValue, const QString& format) return; busyBar->setRange(0, maxValue); + undetermined = maxValue == 0; if (!format.isNull()) busyBar->setFormat(format); @@ -224,6 +231,7 @@ void WidgetCover::initWithProgressBarOnly(const QString& format) busyBar->setRange(0, 100); busyBar->setFormat(format); busyBar->setTextVisible(true); + undetermined = false; containerLayout->addWidget(busyBar, 0, 0); } @@ -236,6 +244,7 @@ void WidgetCover::initWithInterruptContainer(const QString& interruptButtonText) busyBar = new QProgressBar(); busyBar->setRange(0, 0); busyBar->setTextVisible(false); + undetermined = true; containerLayout->addWidget(busyBar, 0, 0); containerLayout->addWidget(cancelButton, 1, 0); diff --git a/SQLiteStudio3/guiSQLiteStudio/common/widgetcover.h b/SQLiteStudio3/guiSQLiteStudio/common/widgetcover.h index 0b7a2f5..3d64ef5 100644 --- a/SQLiteStudio3/guiSQLiteStudio/common/widgetcover.h +++ b/SQLiteStudio3/guiSQLiteStudio/common/widgetcover.h @@ -55,6 +55,7 @@ class GUI_API_EXPORT WidgetCover : public QWidget QGridLayout* containerLayout = nullptr; QPushButton* cancelButton = nullptr; QProgressBar* busyBar = nullptr; + bool undetermined = false; signals: void cancelClicked(); diff --git a/SQLiteStudio3/guiSQLiteStudio/common/widgetstateindicator.cpp b/SQLiteStudio3/guiSQLiteStudio/common/widgetstateindicator.cpp index b5b0264..a81508d 100644 --- a/SQLiteStudio3/guiSQLiteStudio/common/widgetstateindicator.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/common/widgetstateindicator.cpp @@ -157,6 +157,11 @@ void WidgetStateIndicator::setVisible(bool visible, const QString& msg) hide(); } +bool WidgetStateIndicator::isVisible() const +{ + return labelParent->isVisible(); +} + void WidgetStateIndicator::release() { setVisible(false); diff --git a/SQLiteStudio3/guiSQLiteStudio/common/widgetstateindicator.h b/SQLiteStudio3/guiSQLiteStudio/common/widgetstateindicator.h index 28c6e0b..065c87a 100644 --- a/SQLiteStudio3/guiSQLiteStudio/common/widgetstateindicator.h +++ b/SQLiteStudio3/guiSQLiteStudio/common/widgetstateindicator.h @@ -34,6 +34,7 @@ class GUI_API_EXPORT WidgetStateIndicator : public QObject void show(const QString& msg = QString()); void hide(); void setVisible(bool visible, const QString& msg = QString()); + bool isVisible() const; void release(); void info(const QString& msg); void warn(const QString& msg); |
