aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/common
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2025-01-16 01:57:37 -0500
committerLibravatarUnit 193 <unit193@unit193.net>2025-01-16 01:57:37 -0500
commit81a21e6ce040e7740de86340c8ea4dba30e69bc3 (patch)
tree95fc1741b907d5ba6d029a42d80092cb7c056c5e /SQLiteStudio3/guiSQLiteStudio/common
parent3565aad630864ecdbe53fdaa501ea708555b3c7c (diff)
New upstream version 3.4.13+dfsg.upstream/3.4.13+dfsgupstream
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/common')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/dialogsizehandler.cpp59
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/dialogsizehandler.h34
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/widgetcover.cpp11
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/widgetcover.h1
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/widgetstateindicator.cpp5
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/widgetstateindicator.h1
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);