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:
@@ -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 )
|
||||||
{
|
{
|
||||||
|
@@ -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();
|
||||||
|
Reference in New Issue
Block a user