1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-03-23 01:09:42 +01:00

* Make HeaderLabel an alternative drag-for-resize method.

This commit is contained in:
Christian Muehlhaeuser 2012-05-28 17:45:40 +02:00
parent ab86a48ef7
commit fac2e2fc5b
2 changed files with 40 additions and 3 deletions

View File

@ -20,17 +20,20 @@
#include <QApplication>
#include <QPainter>
#include <QMouseEvent>
#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 );
}
}
}

View File

@ -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