summaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/common
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/common')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/centerediconitemdelegate.cpp35
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/centerediconitemdelegate.h14
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/extlineedit.cpp9
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/extlineedit.h1
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/exttableview.cpp14
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/exttableview.h15
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/exttablewidget.cpp15
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/exttablewidget.h15
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/numericspinbox.cpp9
9 files changed, 126 insertions, 1 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/common/centerediconitemdelegate.cpp b/SQLiteStudio3/guiSQLiteStudio/common/centerediconitemdelegate.cpp
new file mode 100644
index 0000000..83d8cc3
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/common/centerediconitemdelegate.cpp
@@ -0,0 +1,35 @@
+#include "centerediconitemdelegate.h"
+#include <QApplication>
+#include <QPainter>
+
+CenteredIconItemDelegate::CenteredIconItemDelegate(QObject* parent) :
+ QStyledItemDelegate(parent)
+{
+}
+
+void CenteredIconItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
+{
+ if (!index.isValid())
+ return;
+
+ QStyleOptionViewItem opt = option;
+ initStyleOption(&opt, index);
+
+ // disable default icon
+ opt.icon = QIcon();
+ if (opt.features.testFlag(QStyleOptionViewItem::HasDecoration))
+ opt.features ^= QStyleOptionViewItem::HasDecoration;
+
+ // draw default item
+ QApplication::style()->drawControl(QStyle::CE_ItemViewItem, &opt, painter, 0);
+
+ const QRect r = option.rect;
+
+ // get pixmap
+ QIcon icon = qvariant_cast<QIcon>(index.data(Qt::DecorationRole));
+ QPixmap pix = icon.pixmap(r.size());
+
+ // draw pixmap at center of item
+ const QPoint p = QPoint((r.width() - pix.width()) / 2, (r.height() - pix.height()) / 2);
+ painter->drawPixmap(r.topLeft() + p, pix);
+}
diff --git a/SQLiteStudio3/guiSQLiteStudio/common/centerediconitemdelegate.h b/SQLiteStudio3/guiSQLiteStudio/common/centerediconitemdelegate.h
new file mode 100644
index 0000000..a1e0103
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/common/centerediconitemdelegate.h
@@ -0,0 +1,14 @@
+#ifndef CENTEREDICONITEMDELEGATE_H
+#define CENTEREDICONITEMDELEGATE_H
+
+#include <QStyledItemDelegate>
+
+class CenteredIconItemDelegate : public QStyledItemDelegate
+{
+ public:
+ explicit CenteredIconItemDelegate(QObject* parent = nullptr);
+
+ void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const;
+};
+
+#endif // CENTEREDICONITEMDELEGATE_H
diff --git a/SQLiteStudio3/guiSQLiteStudio/common/extlineedit.cpp b/SQLiteStudio3/guiSQLiteStudio/common/extlineedit.cpp
index bd0bffa..ccbc586 100644
--- a/SQLiteStudio3/guiSQLiteStudio/common/extlineedit.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/common/extlineedit.cpp
@@ -55,10 +55,17 @@ void ExtLineEdit::setClearButtonEnabled(bool enable)
qWarning() << "Could not find 'clear action' in QLineEdit, so 'valueErased()' signal won't be emitted from ExtLineEdit.";
return;
}
- connect(clearAction, SIGNAL(triggered()), this, SIGNAL(valueErased()));
+ connect(clearAction, SIGNAL(triggered()), this, SLOT(checkForValueErased()));
}
}
+void ExtLineEdit::checkForValueErased()
+{
+ if (text().isEmpty())
+ return;
+
+ emit valueErased();
+}
bool ExtLineEdit::getExpanding() const
{
diff --git a/SQLiteStudio3/guiSQLiteStudio/common/extlineedit.h b/SQLiteStudio3/guiSQLiteStudio/common/extlineedit.h
index b3bffbb..df2eaf6 100644
--- a/SQLiteStudio3/guiSQLiteStudio/common/extlineedit.h
+++ b/SQLiteStudio3/guiSQLiteStudio/common/extlineedit.h
@@ -37,6 +37,7 @@ class GUI_API_EXPORT ExtLineEdit : public QLineEdit
private slots:
void handleTextChanged();
+ void checkForValueErased();
signals:
void valueErased();
diff --git a/SQLiteStudio3/guiSQLiteStudio/common/exttableview.cpp b/SQLiteStudio3/guiSQLiteStudio/common/exttableview.cpp
new file mode 100644
index 0000000..f12e557
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/common/exttableview.cpp
@@ -0,0 +1,14 @@
+#include "exttableview.h"
+#include <QMouseEvent>
+
+ExtTableView::ExtTableView(QWidget* parent) :
+ QTableView(parent)
+{
+
+}
+
+void ExtTableView::mouseDoubleClickEvent(QMouseEvent* e)
+{
+ QModelIndex index = indexAt(e->pos());
+ emit doubleClicked(index);
+}
diff --git a/SQLiteStudio3/guiSQLiteStudio/common/exttableview.h b/SQLiteStudio3/guiSQLiteStudio/common/exttableview.h
new file mode 100644
index 0000000..06e597c
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/common/exttableview.h
@@ -0,0 +1,15 @@
+#ifndef EXTTABLEVIEW_H
+#define EXTTABLEVIEW_H
+
+#include <QTableView>
+
+class ExtTableView : public QTableView
+{
+ public:
+ explicit ExtTableView(QWidget* parent = nullptr);
+
+ protected:
+ void mouseDoubleClickEvent(QMouseEvent* e);
+};
+
+#endif // EXTTABLEVIEW_H
diff --git a/SQLiteStudio3/guiSQLiteStudio/common/exttablewidget.cpp b/SQLiteStudio3/guiSQLiteStudio/common/exttablewidget.cpp
new file mode 100644
index 0000000..8bba429
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/common/exttablewidget.cpp
@@ -0,0 +1,15 @@
+#include "exttablewidget.h"
+
+#include <QMouseEvent>
+
+ExtTableWidget::ExtTableWidget(QWidget* parent) :
+ QTableWidget(parent)
+{
+
+}
+
+void ExtTableWidget::mouseDoubleClickEvent(QMouseEvent* e)
+{
+ QModelIndex index = indexAt(e->pos());
+ emit doubleClicked(index);
+}
diff --git a/SQLiteStudio3/guiSQLiteStudio/common/exttablewidget.h b/SQLiteStudio3/guiSQLiteStudio/common/exttablewidget.h
new file mode 100644
index 0000000..719e064
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/common/exttablewidget.h
@@ -0,0 +1,15 @@
+#ifndef EXTTABLEWIDGET_H
+#define EXTTABLEWIDGET_H
+
+#include <QTableWidget>
+
+class ExtTableWidget : public QTableWidget
+{
+ public:
+ explicit ExtTableWidget(QWidget* parent = nullptr);
+
+ protected:
+ void mouseDoubleClickEvent(QMouseEvent* e);
+};
+
+#endif // EXTTABLEWIDGET_H
diff --git a/SQLiteStudio3/guiSQLiteStudio/common/numericspinbox.cpp b/SQLiteStudio3/guiSQLiteStudio/common/numericspinbox.cpp
index e1b6620..ff49cd2 100644
--- a/SQLiteStudio3/guiSQLiteStudio/common/numericspinbox.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/common/numericspinbox.cpp
@@ -112,6 +112,15 @@ QAbstractSpinBox::StepEnabled NumericSpinBox::stepEnabled() const
QVariant NumericSpinBox::getFixedVariant(const QVariant& value)
{
+ if (allowEmpty)
+ {
+ if (value.userType() == QVariant::String && value.toString().isEmpty() && !value.isNull())
+ return "";
+
+ if (value.isNull())
+ return QString();
+ }
+
bool ok;
qint64 longVal = value.toLongLong(&ok);
if (ok)