From 7167ce41b61d2ba2cdb526777a4233eb84a3b66a Mon Sep 17 00:00:00 2001 From: Unit 193 Date: Sat, 6 Dec 2014 17:33:25 -0500 Subject: Imported Upstream version 2.99.6 --- SQLiteStudio3/guiSQLiteStudio/widgetresizer.cpp | 137 ++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 SQLiteStudio3/guiSQLiteStudio/widgetresizer.cpp (limited to 'SQLiteStudio3/guiSQLiteStudio/widgetresizer.cpp') 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 +#include +#include + +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); +} -- cgit v1.2.3