From fac2e2fc5b688bb5f4d8b470da01166317a0960b Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Mon, 28 May 2012 17:45:40 +0200 Subject: [PATCH] * Make HeaderLabel an alternative drag-for-resize method. --- src/libtomahawk/widgets/HeaderLabel.cpp | 37 +++++++++++++++++++++++-- src/libtomahawk/widgets/HeaderLabel.h | 6 ++++ 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/src/libtomahawk/widgets/HeaderLabel.cpp b/src/libtomahawk/widgets/HeaderLabel.cpp index cfd3542a9..edec62258 100644 --- a/src/libtomahawk/widgets/HeaderLabel.cpp +++ b/src/libtomahawk/widgets/HeaderLabel.cpp @@ -20,17 +20,20 @@ #include #include +#include #include "utils/Logger.h" #include "utils/StyleHelper.h" #include "utils/TomahawkUtilsGui.h" - static const int s_defaultFontSize = 12; + HeaderLabel::HeaderLabel( QWidget* parent ) : QLabel( parent ) , m_parent( parent ) + , m_pressed( false ) + , m_moved( false ) { QFont f( font() ); f.setBold( true ); @@ -38,6 +41,7 @@ HeaderLabel::HeaderLabel( QWidget* parent ) setFont( f ); setFixedHeight( TomahawkUtils::headerHeight() ); + setMouseTracking( true ); } @@ -52,6 +56,7 @@ HeaderLabel::sizeHint() const return QLabel::sizeHint(); } + int HeaderLabel::defaultFontSize() { @@ -63,7 +68,14 @@ void HeaderLabel::mousePressEvent( QMouseEvent* event ) { QFrame::mousePressEvent( event ); - m_time.start(); + + if ( !m_moved ) + { + m_time.start(); + + m_pressed = true; + m_dragPoint = event->pos(); + } } @@ -71,8 +83,27 @@ void HeaderLabel::mouseReleaseEvent( QMouseEvent* event ) { QFrame::mouseReleaseEvent( event ); - if ( m_time.elapsed() < qApp->doubleClickInterval() ) + + if ( !m_moved && m_time.elapsed() < qApp->doubleClickInterval() ) emit clicked(); + + m_pressed = false; + m_moved = false; +} + + +void +HeaderLabel::mouseMoveEvent( QMouseEvent* event ) +{ + if ( m_pressed ) + { + QPoint delta = m_dragPoint - event->pos(); + if ( abs( delta.y() ) > 3 ) + { + m_moved = true; + emit resized( delta ); + } + } } diff --git a/src/libtomahawk/widgets/HeaderLabel.h b/src/libtomahawk/widgets/HeaderLabel.h index 4d015d5c9..88f244c7e 100644 --- a/src/libtomahawk/widgets/HeaderLabel.h +++ b/src/libtomahawk/widgets/HeaderLabel.h @@ -43,6 +43,7 @@ public: signals: void clicked(); + void resized( const QPoint& delta ); protected: // void changeEvent( QEvent* e ); @@ -50,10 +51,15 @@ protected: void mousePressEvent( QMouseEvent* event ); void mouseReleaseEvent( QMouseEvent* event ); + void mouseMoveEvent( QMouseEvent* event ); private: QWidget* m_parent; QTime m_time; + + QPoint m_dragPoint; + bool m_pressed; + bool m_moved; }; #endif // HEADERLABEL_H