1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-05 13:47:26 +02:00

* Support manual resizing in AnimatedSplitter.

This commit is contained in:
Christian Muehlhaeuser
2012-05-28 17:46:11 +02:00
parent fac2e2fc5b
commit 84c40dc590
2 changed files with 63 additions and 26 deletions

View File

@@ -63,6 +63,7 @@ AnimatedSplitter::addWidget( AnimatedWidget* widget )
connect( widget, SIGNAL( hideWidget() ), SLOT( onHideRequest() ) ); connect( widget, SIGNAL( hideWidget() ), SLOT( onHideRequest() ) );
connect( widget, SIGNAL( sizeHintChanged( QSize ) ), SLOT( onShowRequest() ) ); connect( widget, SIGNAL( sizeHintChanged( QSize ) ), SLOT( onShowRequest() ) );
connect( widget, SIGNAL( sizeChanged( QSize ) ), SLOT( onSizeChanged( QSize ) ) ); connect( widget, SIGNAL( sizeChanged( QSize ) ), SLOT( onSizeChanged( QSize ) ) );
connect( widget, SIGNAL( resizeBy( QPoint ) ), SLOT( onResizeRequest( QPoint ) ) );
connect( this, SIGNAL( shown( QWidget*, bool ) ), widget, SLOT( onShown( QWidget*, bool ) ) ); connect( this, SIGNAL( shown( QWidget*, bool ) ), widget, SLOT( onShown( QWidget*, bool ) ) );
connect( this, SIGNAL( hidden( QWidget*, bool ) ), widget, SLOT( onHidden( QWidget*, bool ) ) ); connect( this, SIGNAL( hidden( QWidget*, bool ) ), widget, SLOT( onHidden( QWidget*, bool ) ) );
@@ -70,32 +71,9 @@ AnimatedSplitter::addWidget( AnimatedWidget* widget )
void void
AnimatedSplitter::onShowRequest() AnimatedSplitter::changeSize( QWidget* child, const QSize& size )
{ {
AnimatedWidget* w = (AnimatedWidget*)(sender()); int wi = indexOf( child );
if ( indexOf( w ) > 0 )
show( indexOf( w ) );
else
qDebug() << "Could not find widget:" << sender();
}
void
AnimatedSplitter::onHideRequest()
{
AnimatedWidget* w = (AnimatedWidget*)(sender());
if ( indexOf( w ) > 0 )
hide( indexOf( w ) );
else
qDebug() << "Could not find widget:" << sender();
}
void
AnimatedSplitter::onSizeChanged( const QSize& size )
{
AnimatedWidget* w = (AnimatedWidget*)(sender());
int wi = indexOf( w );
QList< int > sizes; QList< int > sizes;
for ( int i = 0; i < count(); i ++ ) for ( int i = 0; i < count(); i ++ )
@@ -127,6 +105,58 @@ AnimatedSplitter::onSizeChanged( const QSize& size )
} }
void
AnimatedSplitter::onResizeRequest( const QPoint& delta )
{
AnimatedWidget* w = (AnimatedWidget*)(sender());
if ( indexOf( w ) > 0 )
{
int newheight = w->height() + delta.y();
if ( newheight <= w->hiddenSize().height() )
{
w->hide();
}
else
changeSize( w, QSize( w->width(), newheight ) );
}
else
Q_ASSERT( false );
}
void
AnimatedSplitter::onShowRequest()
{
AnimatedWidget* w = (AnimatedWidget*)(sender());
if ( indexOf( w ) > 0 )
show( indexOf( w ) );
else
Q_ASSERT( false );
}
void
AnimatedSplitter::onHideRequest()
{
AnimatedWidget* w = (AnimatedWidget*)(sender());
if ( indexOf( w ) > 0 )
hide( indexOf( w ) );
else
Q_ASSERT( false );
}
void
AnimatedSplitter::onSizeChanged( const QSize& size )
{
AnimatedWidget* w = (AnimatedWidget*)(sender());
if ( indexOf( w ) > 0 )
changeSize( w, size );
else
Q_ASSERT( false );
}
void void
AnimatedSplitter::setGreedyWidget( int index ) AnimatedSplitter::setGreedyWidget( int index )
{ {

View File

@@ -49,11 +49,14 @@ protected:
virtual QSplitterHandle* createHandle(); virtual QSplitterHandle* createHandle();
private slots: private slots:
void changeSize( QWidget* child, const QSize& size );
void onShowRequest(); void onShowRequest();
void onHideRequest(); void onHideRequest();
void onSizeChanged( const QSize& size ); void onSizeChanged( const QSize& size );
void onResizeRequest( const QPoint& delta );
private: private:
int m_greedyIndex; int m_greedyIndex;
}; };
@@ -95,10 +98,14 @@ public slots:
virtual void onShown( QWidget*, bool animated ); virtual void onShown( QWidget*, bool animated );
virtual void onHidden( QWidget*, bool animated ); virtual void onHidden( QWidget*, bool animated );
virtual void hide() { emit hideWidget(); }
virtual void show() { emit showWidget(); }
signals: signals:
void showWidget(); void showWidget();
void hideWidget(); void hideWidget();
void resizeBy( const QPoint& delta );
void sizeChanged( const QSize& size ); void sizeChanged( const QSize& size );
void sizeHintChanged( const QSize& size ); void sizeHintChanged( const QSize& size );
void hiddenSizeChanged(); void hiddenSizeChanged();