mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-06 22:26:32 +02:00
don't reload the playlist when additions/deletions are done in quick succession
This commit is contained in:
@@ -41,6 +41,7 @@ DynamicWidget::DynamicWidget( const Tomahawk::dynplaylist_ptr& playlist, QWidget
|
|||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
, m_layout( new QVBoxLayout )
|
, m_layout( new QVBoxLayout )
|
||||||
, m_resolveOnNextLoad( false )
|
, m_resolveOnNextLoad( false )
|
||||||
|
, m_seqRevLaunched( 0 )
|
||||||
, m_runningOnDemand( false )
|
, m_runningOnDemand( false )
|
||||||
, m_startOnResolved( false )
|
, m_startOnResolved( false )
|
||||||
, m_songsSinceLastResolved( 0 )
|
, m_songsSinceLastResolved( 0 )
|
||||||
@@ -110,6 +111,14 @@ DynamicWidget::~DynamicWidget()
|
|||||||
void
|
void
|
||||||
DynamicWidget::loadDynamicPlaylist( const Tomahawk::dynplaylist_ptr& playlist )
|
DynamicWidget::loadDynamicPlaylist( const Tomahawk::dynplaylist_ptr& playlist )
|
||||||
{
|
{
|
||||||
|
// special case: if we have launched multiple setRevision calls, and the number of controls is different, it means that we're getting an intermediate setRevision
|
||||||
|
// called after the user has already created more revisions. ignore in that case.
|
||||||
|
if( m_playlist.data() == playlist.data() && m_seqRevLaunched > 0
|
||||||
|
&& m_controls->controls().size() != playlist->generator()->controls().size() // different number of controls
|
||||||
|
&& qAbs( m_playlist->generator()->controls().size() - playlist->generator()->controls().size() ) < m_seqRevLaunched ) { // difference in controls has to be less than how many revisions we launched
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
m_seqRevLaunched = 0;
|
||||||
// if we're being told to load the same dynamic playlist over again, only do it if the controls have a different number
|
// if we're being told to load the same dynamic playlist over again, only do it if the controls have a different number
|
||||||
if( !m_playlist.isNull() && ( m_playlist.data() == playlist.data() ) // same playlist pointer
|
if( !m_playlist.isNull() && ( m_playlist.data() == playlist.data() ) // same playlist pointer
|
||||||
&& m_playlist->generator()->controls().size() == playlist->generator()->controls().size() ) {
|
&& m_playlist->generator()->controls().size() == playlist->generator()->controls().size() ) {
|
||||||
@@ -277,11 +286,13 @@ void
|
|||||||
DynamicWidget::controlsChanged()
|
DynamicWidget::controlsChanged()
|
||||||
{
|
{
|
||||||
m_playlist->createNewRevision();
|
m_playlist->createNewRevision();
|
||||||
|
m_seqRevLaunched++;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
DynamicWidget::controlChanged( const Tomahawk::dyncontrol_ptr& control )
|
DynamicWidget::controlChanged( const Tomahawk::dyncontrol_ptr& control )
|
||||||
{
|
{
|
||||||
m_playlist->createNewRevision();
|
m_playlist->createNewRevision();
|
||||||
|
m_seqRevLaunched++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -81,12 +81,14 @@ private:
|
|||||||
dynplaylist_ptr m_playlist;
|
dynplaylist_ptr m_playlist;
|
||||||
QVBoxLayout* m_layout;
|
QVBoxLayout* m_layout;
|
||||||
bool m_resolveOnNextLoad;
|
bool m_resolveOnNextLoad;
|
||||||
|
int m_seqRevLaunched; // if we shoot off multiple createRevision calls, we don'y want to set one of the middle ones
|
||||||
|
|
||||||
// used in OnDemand mode
|
// used in OnDemand mode
|
||||||
bool m_runningOnDemand;
|
bool m_runningOnDemand;
|
||||||
bool m_startOnResolved;
|
bool m_startOnResolved;
|
||||||
int m_songsSinceLastResolved;
|
int m_songsSinceLastResolved;
|
||||||
|
|
||||||
|
// layout and stuff
|
||||||
QLabel* m_headerText;
|
QLabel* m_headerText;
|
||||||
QHBoxLayout* m_headerLayout;
|
QHBoxLayout* m_headerLayout;
|
||||||
ReadOrWriteWidget* m_generatorCombo;
|
ReadOrWriteWidget* m_generatorCombo;
|
||||||
|
Reference in New Issue
Block a user