diff options
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/common')
7 files changed, 153 insertions, 95 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/common/datawidgetmapper.cpp b/SQLiteStudio3/guiSQLiteStudio/common/datawidgetmapper.cpp index 35e99c8..7e115ed 100644 --- a/SQLiteStudio3/guiSQLiteStudio/common/datawidgetmapper.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/common/datawidgetmapper.cpp @@ -122,7 +122,7 @@ void DataWidgetMapper::submit() idx = model->index(currentIndex, entry->columnIndex); value = entry->widget->property(entry->propertyName.toLatin1().constData()); - qDebug() << "copying from form view for idx" << idx << "value:" << value; + //qDebug() << "copying from form view for idx" << idx << "value:" << value; model->setData(idx, value, Qt::EditRole); } } diff --git a/SQLiteStudio3/guiSQLiteStudio/common/dbcombobox.cpp b/SQLiteStudio3/guiSQLiteStudio/common/dbcombobox.cpp new file mode 100644 index 0000000..303a37a --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/common/dbcombobox.cpp @@ -0,0 +1,26 @@ +#include "dbcombobox.h" +#include "dblistmodel.h" +#include "db/db.h" + +DbComboBox::DbComboBox(QWidget* parent) : QComboBox(parent) +{ + dbComboModel = new DbListModel(this); + dbComboModel->setCombo(this); + setModel(dbComboModel); + setEditable(false); +} + +DbListModel* DbComboBox::getModel() const +{ + return dbComboModel; +} + +void DbComboBox::setCurrentDb(Db* db) +{ + setCurrentIndex(dbComboModel->getIndexForDb(db)); +} + +Db* DbComboBox::currentDb() const +{ + return dbComboModel->getDb(currentIndex()); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/common/dbcombobox.h b/SQLiteStudio3/guiSQLiteStudio/common/dbcombobox.h new file mode 100644 index 0000000..39814a6 --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/common/dbcombobox.h @@ -0,0 +1,23 @@ +#ifndef DBCOMBOBOX_H +#define DBCOMBOBOX_H + +#include <QComboBox> + +class QComboBox; +class DbListModel; +class Db; + +class DbComboBox : public QComboBox +{ + public: + explicit DbComboBox(QWidget* parent = nullptr); + + DbListModel* getModel() const; + void setCurrentDb(Db* db); + Db* currentDb() const; + + private: + DbListModel* dbComboModel = nullptr; +}; + +#endif // DBCOMBOBOX_H diff --git a/SQLiteStudio3/guiSQLiteStudio/common/extactioncontainer.cpp b/SQLiteStudio3/guiSQLiteStudio/common/extactioncontainer.cpp index c67cc73..1203582 100644 --- a/SQLiteStudio3/guiSQLiteStudio/common/extactioncontainer.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/common/extactioncontainer.cpp @@ -15,8 +15,13 @@ ExtActionContainer::ExtActionContainer() { actionIdMapper = new QSignalMapper(); - // We need to explicitly cast QSignalMapper::mapped to tell which overloaded version of function we want - QObject::connect(actionIdMapper, static_cast<void (QSignalMapper::*)(int)>(&QSignalMapper::mapped), + QObject::connect(actionIdMapper, +#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)) + &QSignalMapper::mappedInt, +#else + // We need to explicitly cast QSignalMapper::mapped to tell which overloaded version of function we want + static_cast<void (QSignalMapper::*)(int)>(&QSignalMapper::mapped), +#endif [=](int action) {refreshShortcut(action);}); instances << this; } diff --git a/SQLiteStudio3/guiSQLiteStudio/common/extlineedit.cpp b/SQLiteStudio3/guiSQLiteStudio/common/extlineedit.cpp index ccbc586..2ac6531 100644 --- a/SQLiteStudio3/guiSQLiteStudio/common/extlineedit.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/common/extlineedit.cpp @@ -99,7 +99,7 @@ void ExtLineEdit::handleTextChanged() return; // Text width - int newWidth = fontMetrics().width(txt); + int newWidth = fontMetrics().horizontalAdvance(txt); // Text margins QMargins margins = textMargins(); diff --git a/SQLiteStudio3/guiSQLiteStudio/common/widgetstateindicator.cpp b/SQLiteStudio3/guiSQLiteStudio/common/widgetstateindicator.cpp index c6823e4..b5b0264 100644 --- a/SQLiteStudio3/guiSQLiteStudio/common/widgetstateindicator.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/common/widgetstateindicator.cpp @@ -9,10 +9,10 @@ #include <QEvent> #include <QHBoxLayout> #include <QGraphicsDropShadowEffect> -#include <QSequentialAnimationGroup> -#include <QPropertyAnimation> #include <QDebug> #include <QScrollArea> +#include <QToolTip> +#include <QEnterEvent> QHash<QWidget*,WidgetStateIndicator*> WidgetStateIndicator::instances; @@ -54,7 +54,6 @@ void WidgetStateIndicator::initEffects() { initGlowEffects(); initHighlightingEffects(); - initAnimations(); } void WidgetStateIndicator::initGlowEffects() @@ -73,27 +72,6 @@ void WidgetStateIndicator::initHighlightingEffects() highlightingEffect->setEnabled(false); } -void WidgetStateIndicator::initAnimations() -{ - animation = new QSequentialAnimationGroup(this); - animation->setLoopCount(-1); - - // Animation of glow efect - QPropertyAnimation* varAnim = new QPropertyAnimation(glowEffect, "blurRadius"); - varAnim->setStartValue(3.0); - varAnim->setEndValue(14.0); - varAnim->setEasingCurve(QEasingCurve::InOutCubic); - varAnim->setDuration(300); - animation->addAnimation(varAnim); - - varAnim = new QPropertyAnimation(glowEffect, "blurRadius"); - varAnim->setStartValue(14.0); - varAnim->setEndValue(3.0); - varAnim->setEasingCurve(QEasingCurve::InOutCubic); - varAnim->setDuration(300); - animation->addAnimation(varAnim); -} - void WidgetStateIndicator::initPositionMode() { if (dynamic_cast<QGroupBox*>(widget)) @@ -106,8 +84,15 @@ void WidgetStateIndicator::initPositionMode() void WidgetStateIndicator::finalInit() { - label->setFixedSize(label->pixmap()->size()); - labelParent->setFixedSize(label->pixmap()->size()); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)) + QPixmap pixmap = label->pixmap(Qt::ReturnByValue); + label->setFixedSize(pixmap.size()); + labelParent->setFixedSize(pixmap.size()); +#else + const QPixmap* pixmap = label->pixmap(); + label->setFixedSize(pixmap->size()); + labelParent->setFixedSize(pixmap->size()); +#endif widgetVisible = widget->isVisible(); labelParent->setVisible(false); } @@ -120,7 +105,6 @@ void WidgetStateIndicator::setMessage(const QString& msg) else message = paraTpl.arg(msg); - label->setToolTip(message); if (!msg.isNull()) label->setCursor(Qt::WhatsThisCursor); else @@ -129,7 +113,7 @@ void WidgetStateIndicator::setMessage(const QString& msg) void WidgetStateIndicator::clearMessage() { - message = QString::null; + message = QString(); label->setToolTip(message); label->unsetCursor(); } @@ -151,13 +135,10 @@ void WidgetStateIndicator::setMode(WidgetStateIndicator::Mode mode) updateMode(); } -void WidgetStateIndicator::show(const QString& msg, bool animated) +void WidgetStateIndicator::show(const QString& msg) { visibilityRequested = true; setMessage(msg); - if (animated && animation->state() != QAbstractAnimation::Running) - animation->start(); - updateVisibility(); } @@ -165,9 +146,6 @@ void WidgetStateIndicator::hide() { visibilityRequested = false; clearMessage(); - if (animation->state() == QAbstractAnimation::Running) - animation->stop(); - updateVisibility(); } @@ -186,28 +164,28 @@ void WidgetStateIndicator::release() deleteLater(); } -void WidgetStateIndicator::info(const QString& msg, bool animated) +void WidgetStateIndicator::info(const QString& msg) { setMode(Mode::INFO); - show(msg, animated); + show(msg); } -void WidgetStateIndicator::warn(const QString& msg, bool animated) +void WidgetStateIndicator::warn(const QString& msg) { setMode(Mode::WARNING); - show(msg, animated); + show(msg); } -void WidgetStateIndicator::error(const QString& msg, bool animated) +void WidgetStateIndicator::error(const QString& msg) { setMode(Mode::ERROR); - show(msg, animated); + show(msg); } -void WidgetStateIndicator::hint(const QString& msg, bool animated) +void WidgetStateIndicator::hint(const QString& msg) { setMode(Mode::HINT); - show(msg, animated); + show(msg); } bool WidgetStateIndicator::exists(QWidget* widget) @@ -226,47 +204,11 @@ WidgetStateIndicator* WidgetStateIndicator::getInstance(QWidget* widget) bool WidgetStateIndicator::eventFilter(QObject* obj, QEvent* ev) { if (obj == widget) - { - switch (ev->type()) - { - case QEvent::Move: - case QEvent::Resize: - case QEvent::Scroll: - updatePosition(); - break; - case QEvent::Show: - widgetVisible = true; - updateVisibility(); - break; - case QEvent::Hide: - widgetVisible = false; - updateVisibility(); - break; - case QEvent::EnabledChange: - updateVisibility(); - break; - default: - break; - } - } + return eventFilterFromWidget(ev); else if (obj == windowParent) - { - switch (ev->type()) - { - case QEvent::ParentChange: - detectWindowParent(); - break; - default: - break; - } - } + return eventFilterFromParentWidget(ev); else if (obj == label) - { - if (ev->type() == QEvent::Enter) - highlightingEffect->setEnabled(true); - else if (ev->type() == QEvent::Leave) - highlightingEffect->setEnabled(false); - } + return eventFilterFromIndicatorLabel(ev); return false; } @@ -328,7 +270,7 @@ void WidgetStateIndicator::updatePositionGroupBox() QFont font = gb->font(); QFontMetrics fm(font); QString txt = gb->title(); - QPoint diff(fm.width(txt), 2); + QPoint diff(fm.horizontalAdvance(txt), 2); labelParent->move(xy + diff); } @@ -390,6 +332,67 @@ bool WidgetStateIndicator::shouldShow() return true; } + +bool WidgetStateIndicator::eventFilterFromWidget(QEvent* ev) +{ + switch (ev->type()) + { + case QEvent::Move: + case QEvent::Resize: + case QEvent::Scroll: + updatePosition(); + break; + case QEvent::Show: + widgetVisible = true; + updateVisibility(); + break; + case QEvent::Hide: + widgetVisible = false; + updateVisibility(); + break; + case QEvent::EnabledChange: + updateVisibility(); + break; + default: + break; + } + return false; +} + +bool WidgetStateIndicator::eventFilterFromParentWidget(QEvent* ev) +{ + switch (ev->type()) + { + case QEvent::ParentChange: + detectWindowParent(); + break; + default: + break; + } + return false; +} + +bool WidgetStateIndicator::eventFilterFromIndicatorLabel(QEvent* ev) +{ + switch (ev->type()) + { + case QEvent::Enter: + { + highlightingEffect->setEnabled(true); + QEnterEvent* e = dynamic_cast<QEnterEvent*>(ev); + QToolTip::showText(e->globalPos(), message); + break; + } + case QEvent::Leave: + highlightingEffect->setEnabled(false); + QToolTip::hideText(); + break; + default: + break; + } + return false; +} + WidgetStateIndicator::PositionMode WidgetStateIndicator::getPositionMode() const { return positionMode; diff --git a/SQLiteStudio3/guiSQLiteStudio/common/widgetstateindicator.h b/SQLiteStudio3/guiSQLiteStudio/common/widgetstateindicator.h index eee49d5..28c6e0b 100644 --- a/SQLiteStudio3/guiSQLiteStudio/common/widgetstateindicator.h +++ b/SQLiteStudio3/guiSQLiteStudio/common/widgetstateindicator.h @@ -7,7 +7,6 @@ class QLabel; class QGraphicsDropShadowEffect; class QGraphicsColorizeEffect; -class QSequentialAnimationGroup; class GUI_API_EXPORT WidgetStateIndicator : public QObject { @@ -32,14 +31,14 @@ class GUI_API_EXPORT WidgetStateIndicator : public QObject ~WidgetStateIndicator(); void setMode(Mode mode); - void show(const QString& msg = QString(), bool animated = true); + void show(const QString& msg = QString()); void hide(); void setVisible(bool visible, const QString& msg = QString()); void release(); - void info(const QString& msg, bool animated = true); - void warn(const QString& msg, bool animated = true); - void error(const QString& msg, bool animated = true); - void hint(const QString& msg, bool animated = true); + void info(const QString& msg); + void warn(const QString& msg); + void error(const QString& msg); + void hint(const QString& msg); static bool exists(QWidget* widget); static WidgetStateIndicator* getInstance(QWidget* widget); @@ -57,7 +56,6 @@ class GUI_API_EXPORT WidgetStateIndicator : public QObject void initEffects(); void initGlowEffects(); void initHighlightingEffects(); - void initAnimations(); void initPositionMode(); void finalInit(); void setMessage(const QString& msg); @@ -66,15 +64,18 @@ class GUI_API_EXPORT WidgetStateIndicator : public QObject QWidget* findParentWindow(QWidget* w); bool shouldHide(); bool shouldShow(); + bool eventFilterFromWidget(QEvent *ev); + bool eventFilterFromParentWidget(QEvent *ev); + bool eventFilterFromIndicatorLabel(QEvent *ev); QWidget* labelParent = nullptr; QLabel* label = nullptr; Mode mode = Mode::ERROR; QWidget* widget = nullptr; QString message; + QString processedMessage; QGraphicsColorizeEffect* highlightingEffect = nullptr; QGraphicsDropShadowEffect* glowEffect = nullptr; - QSequentialAnimationGroup* animation = nullptr; bool widgetVisible = false; bool visibilityRequested = false; QWidget* windowParent = nullptr; |
