1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-03-22 08:49:42 +01: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

@ -63,6 +63,7 @@ AnimatedSplitter::addWidget( AnimatedWidget* widget )
connect( widget, SIGNAL( hideWidget() ), SLOT( onHideRequest() ) );
connect( widget, SIGNAL( sizeHintChanged( QSize ) ), SLOT( onShowRequest() ) );
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( hidden( QWidget*, bool ) ), widget, SLOT( onHidden( QWidget*, bool ) ) );
@ -70,32 +71,9 @@ AnimatedSplitter::addWidget( AnimatedWidget* widget )
void
AnimatedSplitter::onShowRequest()
AnimatedSplitter::changeSize( QWidget* child, const QSize& size )
{
AnimatedWidget* w = (AnimatedWidget*)(sender());
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 );
int wi = indexOf( child );
QList< int > sizes;
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
AnimatedSplitter::setGreedyWidget( int index )
{

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