diff options
| author | 2014-12-06 17:33:25 -0500 | |
|---|---|---|
| committer | 2014-12-06 17:33:25 -0500 | |
| commit | 7167ce41b61d2ba2cdb526777a4233eb84a3b66a (patch) | |
| tree | a35c14143716e1f2c98f808c81f89426045a946f /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.cpp | 137 |
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); +} |
