aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/widgetresizer.cpp
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2014-12-06 17:33:25 -0500
committerLibravatarUnit 193 <unit193@ubuntu.com>2014-12-06 17:33:25 -0500
commit7167ce41b61d2ba2cdb526777a4233eb84a3b66a (patch)
treea35c14143716e1f2c98f808c81f89426045a946f /SQLiteStudio3/guiSQLiteStudio/widgetresizer.cpp
Imported Upstream version 2.99.6upstream/2.99.6
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/widgetresizer.cpp')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/widgetresizer.cpp137
1 files changed, 137 insertions, 0 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/widgetresizer.cpp b/SQLiteStudio3/guiSQLiteStudio/widgetresizer.cpp
new file mode 100644
index 0000000..4602050
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/widgetresizer.cpp
@@ -0,0 +1,137 @@
+#include "widgetresizer.h"
+#include "common/unused.h"
+#include <QMouseEvent>
+#include <QDebug>
+#include <QLayout>
+
+WidgetResizer::WidgetResizer(QWidget *parent) :
+ QWidget(parent)
+{
+ init();
+}
+
+WidgetResizer::~WidgetResizer()
+{
+}
+
+WidgetResizer::WidgetResizer(const Qt::Orientation& orientation, QWidget* parent) :
+ QWidget(parent), orientation(orientation)
+{
+ init();
+}
+
+void WidgetResizer::init()
+{
+ updateCursor();
+ updateWidth();
+ widgetMinimumSize = QSize(20, 20);
+}
+
+Qt::Orientation WidgetResizer::getOrientation() const
+{
+ return orientation;
+}
+
+void WidgetResizer::setOrientation(const Qt::Orientation& value)
+{
+ orientation = value;
+ updateCursor();
+}
+
+void WidgetResizer::updateCursor()
+{
+ switch (orientation)
+ {
+ case Qt::Horizontal:
+ setCursor(Qt::SplitHCursor);
+ break;
+ case Qt::Vertical:
+ setCursor(Qt::SplitVCursor);
+ break;
+ }
+}
+
+void WidgetResizer::updateWidth()
+{
+ setMinimumSize(width, width);
+}
+
+void WidgetResizer::mousePressEvent(QMouseEvent* event)
+{
+ UNUSED(event);
+ if (!widget)
+ return;
+
+ dragStartPosition = QCursor::pos();
+ dragStartSize = widget->size();
+}
+
+void WidgetResizer::mouseMoveEvent(QMouseEvent* event)
+{
+ UNUSED(event);
+ if (!widget)
+ return;
+
+ switch (orientation)
+ {
+ case Qt::Horizontal:
+ handleHorizontalMove(QCursor::pos().x());
+ break;
+ case Qt::Vertical:
+ handleVerticalMove(QCursor::pos().y());
+ break;
+ }
+}
+
+void WidgetResizer::handleHorizontalMove(int position)
+{
+ int newWidth = dragStartSize.width() + position - dragStartPosition.y();
+ if (newWidth < widgetMinimumSize.width())
+ return;
+
+ widget->setFixedWidth(newWidth);
+}
+
+void WidgetResizer::handleVerticalMove(int position)
+{
+ int newHeight = dragStartSize.height() + position - dragStartPosition.y();
+ if (newHeight < widgetMinimumSize.height())
+ return;
+
+ widget->setFixedHeight(newHeight);
+}
+
+int WidgetResizer::getWidth() const
+{
+ return width;
+}
+
+void WidgetResizer::setWidth(int value)
+{
+ width = value;
+}
+
+QWidget* WidgetResizer::getWidget() const
+{
+ return widget;
+}
+
+void WidgetResizer::setWidget(QWidget* value)
+{
+ widget = value;
+}
+
+QSize WidgetResizer::getWidgetMinimumSize() const
+{
+ return widgetMinimumSize;
+}
+
+void WidgetResizer::setWidgetMinimumSize(const QSize& value)
+{
+ widgetMinimumSize = value;
+}
+
+void WidgetResizer::setWidgetMinimumSize(int width, int height)
+{
+ widgetMinimumSize = QSize(width, height);
+}