diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2016-10-11 21:08:07 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2016-10-11 21:08:07 +0000 |
| commit | 9b9fe8717f96e85934de34f4648ca7d654e4e25d (patch) | |
| tree | 61f41612a88dc25eeef4622ceea7ee2d621af909 /src/plugins/Ui/qsui/listwidget.cpp | |
| parent | c337773616fc65ea6c0cacd3f9fbcebfbbec3c71 (diff) | |
| download | qmmp-9b9fe8717f96e85934de34f4648ca7d654e4e25d.tar.gz qmmp-9b9fe8717f96e85934de34f4648ca7d654e4e25d.tar.bz2 qmmp-9b9fe8717f96e85934de34f4648ca7d654e4e25d.zip | |
qsui: using single ListWidget inctance
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@6779 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Ui/qsui/listwidget.cpp')
| -rw-r--r-- | src/plugins/Ui/qsui/listwidget.cpp | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/src/plugins/Ui/qsui/listwidget.cpp b/src/plugins/Ui/qsui/listwidget.cpp index 35043fb8e..b86bbf731 100644 --- a/src/plugins/Ui/qsui/listwidget.cpp +++ b/src/plugins/Ui/qsui/listwidget.cpp @@ -153,6 +153,32 @@ PlayListModel *ListWidget::model() return m_model; } +void ListWidget::setModel(PlayListModel *selected, PlayListModel *previous) +{ + if(previous) + { + previous->setProperty("first_visible", m_first); + disconnect(previous, 0, this, 0); //disconnect previous model + disconnect(previous,0,m_header,0); + } + qApp->processEvents(); + m_model = selected; + + if(m_model->property("first_visible").isValid()) + { + m_first = m_model->property("first_visible").toInt(); + updateList(PlayListModel::STRUCTURE); + } + else + { + m_first = 0; + updateList(PlayListModel::STRUCTURE | PlayListModel::CURRENT); + } + connect (m_model, SIGNAL(currentVisibleRequest()), SLOT(scrollToCurrent())); + connect (m_model, SIGNAL(listChanged(int)), SLOT(updateList(int))); + connect (m_model, SIGNAL(sortingByColumnFinished(int,bool)), m_header, SLOT(showSortIndicator(int,bool))); +} + void ListWidget::paintEvent(QPaintEvent *) { QPainter painter(this); @@ -327,7 +353,6 @@ bool ListWidget::event (QEvent *e) void ListWidget::updateList(int flags) { - m_hslider->setVisible(m_header->maxScrollValue() > 0); m_hslider->setRange(0, m_header->maxScrollValue()); m_hslider->setValue(m_header->offset()); @@ -341,6 +366,7 @@ void ListWidget::updateList(int flags) if(flags & PlayListModel::STRUCTURE || flags & PlayListModel::CURRENT) { + m_scrollBar->blockSignals(true); if(m_row_count >= m_model->count()) { m_first = 0; @@ -361,6 +387,7 @@ void ListWidget::updateList(int flags) m_scrollBar->setValue(m_first); emit positionChanged(m_first, m_model->count() - m_row_count); } + m_scrollBar->blockSignals(false); items = m_model->mid(m_first, m_row_count); @@ -394,6 +421,7 @@ void ListWidget::updateList(int flags) int rowWidth = width() + m_header->maxScrollValue() - 10 - scroll_bar_width; bool rtl = layoutDirection() == Qt::RightToLeft; m_header->setScrollBarWidth(scroll_bar_width); + m_hslider->setVisible(m_header->maxScrollValue() > 0); for(int i = 0; i < items.count(); ++i) { |
