mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-20 04:41:36 +02:00
* Try to fix AnimatedSplitter.
This commit is contained in:
@@ -61,6 +61,8 @@ AnimatedSplitter::addWidget( AnimatedWidget* widget )
|
|||||||
|
|
||||||
connect( widget, SIGNAL( showWidget() ), SLOT( onShowRequest() ) );
|
connect( widget, SIGNAL( showWidget() ), SLOT( onShowRequest() ) );
|
||||||
connect( widget, SIGNAL( hideWidget() ), SLOT( onHideRequest() ) );
|
connect( widget, SIGNAL( hideWidget() ), SLOT( onHideRequest() ) );
|
||||||
|
connect( widget, SIGNAL( sizeChanged( QSize) ), SLOT( onSizeChanged( QSize ) ) );
|
||||||
|
|
||||||
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 ) ) );
|
||||||
}
|
}
|
||||||
@@ -88,17 +90,51 @@ AnimatedSplitter::onHideRequest()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
AnimatedSplitter::onSizeChanged( const QSize& size )
|
||||||
|
{
|
||||||
|
AnimatedWidget* w = (AnimatedWidget*)(sender());
|
||||||
|
int wi = indexOf( w );
|
||||||
|
|
||||||
|
QList< int > sizes;
|
||||||
|
for ( int i = 0; i < count(); i ++ )
|
||||||
|
{
|
||||||
|
int j = 0;
|
||||||
|
|
||||||
|
if ( i == m_greedyIndex )
|
||||||
|
{
|
||||||
|
j = height() - size.height();
|
||||||
|
}
|
||||||
|
else if ( i == wi )
|
||||||
|
{
|
||||||
|
j = size.height();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
j = widget( i )->height();
|
||||||
|
}
|
||||||
|
|
||||||
|
sizes << j;
|
||||||
|
}
|
||||||
|
|
||||||
|
setSizes( sizes );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
AnimatedSplitter::setGreedyWidget( int index )
|
AnimatedSplitter::setGreedyWidget( int index )
|
||||||
{
|
{
|
||||||
m_greedyIndex = index;
|
|
||||||
if( !widget( index ) )
|
if( !widget( index ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
m_greedyIndex = index;
|
||||||
|
|
||||||
QSizePolicy policy = widget( m_greedyIndex )->sizePolicy();
|
QSizePolicy policy = widget( m_greedyIndex )->sizePolicy();
|
||||||
if( orientation() == Qt::Horizontal )
|
if( orientation() == Qt::Horizontal )
|
||||||
policy.setHorizontalStretch( 1 );
|
policy.setHorizontalStretch( 1 );
|
||||||
else
|
else
|
||||||
policy.setVerticalStretch( 1 );
|
policy.setVerticalStretch( 1 );
|
||||||
|
|
||||||
widget( m_greedyIndex )->setSizePolicy( policy );
|
widget( m_greedyIndex )->setSizePolicy( policy );
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -180,6 +216,9 @@ void
|
|||||||
AnimatedWidget::onAnimationStep( int frame )
|
AnimatedWidget::onAnimationStep( int frame )
|
||||||
{
|
{
|
||||||
setFixedHeight( frame );
|
setFixedHeight( frame );
|
||||||
|
|
||||||
|
QSize s( 0, frame ); //FIXME
|
||||||
|
emit sizeChanged( s );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -49,6 +49,8 @@ private slots:
|
|||||||
void onShowRequest();
|
void onShowRequest();
|
||||||
void onHideRequest();
|
void onHideRequest();
|
||||||
|
|
||||||
|
void onSizeChanged( const QSize& size );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int m_greedyIndex;
|
int m_greedyIndex;
|
||||||
};
|
};
|
||||||
@@ -73,6 +75,7 @@ signals:
|
|||||||
void showWidget();
|
void showWidget();
|
||||||
void hideWidget();
|
void hideWidget();
|
||||||
|
|
||||||
|
void sizeChanged( const QSize& size );
|
||||||
void hiddenSizeChanged();
|
void hiddenSizeChanged();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
Reference in New Issue
Block a user