aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Ui/qsui/listwidget.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2016-10-11 21:08:07 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2016-10-11 21:08:07 +0000
commit9b9fe8717f96e85934de34f4648ca7d654e4e25d (patch)
tree61f41612a88dc25eeef4622ceea7ee2d621af909 /src/plugins/Ui/qsui/listwidget.cpp
parentc337773616fc65ea6c0cacd3f9fbcebfbbec3c71 (diff)
downloadqmmp-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.cpp30
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)
{