mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-06 14:16:32 +02:00
* Make HeaderLabel an alternative drag-for-resize method.
This commit is contained in:
@@ -20,17 +20,20 @@
|
|||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
|
#include <QMouseEvent>
|
||||||
|
|
||||||
#include "utils/Logger.h"
|
#include "utils/Logger.h"
|
||||||
#include "utils/StyleHelper.h"
|
#include "utils/StyleHelper.h"
|
||||||
#include "utils/TomahawkUtilsGui.h"
|
#include "utils/TomahawkUtilsGui.h"
|
||||||
|
|
||||||
|
|
||||||
static const int s_defaultFontSize = 12;
|
static const int s_defaultFontSize = 12;
|
||||||
|
|
||||||
|
|
||||||
HeaderLabel::HeaderLabel( QWidget* parent )
|
HeaderLabel::HeaderLabel( QWidget* parent )
|
||||||
: QLabel( parent )
|
: QLabel( parent )
|
||||||
, m_parent( parent )
|
, m_parent( parent )
|
||||||
|
, m_pressed( false )
|
||||||
|
, m_moved( false )
|
||||||
{
|
{
|
||||||
QFont f( font() );
|
QFont f( font() );
|
||||||
f.setBold( true );
|
f.setBold( true );
|
||||||
@@ -38,6 +41,7 @@ HeaderLabel::HeaderLabel( QWidget* parent )
|
|||||||
|
|
||||||
setFont( f );
|
setFont( f );
|
||||||
setFixedHeight( TomahawkUtils::headerHeight() );
|
setFixedHeight( TomahawkUtils::headerHeight() );
|
||||||
|
setMouseTracking( true );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -52,6 +56,7 @@ HeaderLabel::sizeHint() const
|
|||||||
return QLabel::sizeHint();
|
return QLabel::sizeHint();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
HeaderLabel::defaultFontSize()
|
HeaderLabel::defaultFontSize()
|
||||||
{
|
{
|
||||||
@@ -63,7 +68,14 @@ void
|
|||||||
HeaderLabel::mousePressEvent( QMouseEvent* event )
|
HeaderLabel::mousePressEvent( QMouseEvent* event )
|
||||||
{
|
{
|
||||||
QFrame::mousePressEvent( 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 )
|
HeaderLabel::mouseReleaseEvent( QMouseEvent* event )
|
||||||
{
|
{
|
||||||
QFrame::mouseReleaseEvent( event );
|
QFrame::mouseReleaseEvent( event );
|
||||||
if ( m_time.elapsed() < qApp->doubleClickInterval() )
|
|
||||||
|
if ( !m_moved && m_time.elapsed() < qApp->doubleClickInterval() )
|
||||||
emit clicked();
|
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 );
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -43,6 +43,7 @@ public:
|
|||||||
|
|
||||||
signals:
|
signals:
|
||||||
void clicked();
|
void clicked();
|
||||||
|
void resized( const QPoint& delta );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// void changeEvent( QEvent* e );
|
// void changeEvent( QEvent* e );
|
||||||
@@ -50,10 +51,15 @@ protected:
|
|||||||
|
|
||||||
void mousePressEvent( QMouseEvent* event );
|
void mousePressEvent( QMouseEvent* event );
|
||||||
void mouseReleaseEvent( QMouseEvent* event );
|
void mouseReleaseEvent( QMouseEvent* event );
|
||||||
|
void mouseMoveEvent( QMouseEvent* event );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QWidget* m_parent;
|
QWidget* m_parent;
|
||||||
QTime m_time;
|
QTime m_time;
|
||||||
|
|
||||||
|
QPoint m_dragPoint;
|
||||||
|
bool m_pressed;
|
||||||
|
bool m_moved;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // HEADERLABEL_H
|
#endif // HEADERLABEL_H
|
||||||
|
Reference in New Issue
Block a user