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:
parent
fac2e2fc5b
commit
84c40dc590
src/libtomahawk/widgets
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user