aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Ui
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-04-14 17:39:10 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-04-14 17:39:10 +0000
commite83c06bb9909388aae4c1c6fdafe3781d4ab289a (patch)
tree125112a38958a49d6beb532ede3fa48157618ab9 /src/plugins/Ui
parent4bfe51345d595d1ffc1b1ace32516f3c5fe1a896 (diff)
downloadqmmp-e83c06bb9909388aae4c1c6fdafe3781d4ab289a.tar.gz
qmmp-e83c06bb9909388aae4c1c6fdafe3781d4ab289a.tar.bz2
qmmp-e83c06bb9909388aae4c1c6fdafe3781d4ab289a.zip
fixed sort indicators behaviour
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4848 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Ui')
-rw-r--r--src/plugins/Ui/skinned/listwidget.cpp6
-rw-r--r--src/plugins/Ui/skinned/playlistheader.cpp42
-rw-r--r--src/plugins/Ui/skinned/playlistheader.h6
3 files changed, 49 insertions, 5 deletions
diff --git a/src/plugins/Ui/skinned/listwidget.cpp b/src/plugins/Ui/skinned/listwidget.cpp
index ea9cfa50e..835d97d40 100644
--- a/src/plugins/Ui/skinned/listwidget.cpp
+++ b/src/plugins/Ui/skinned/listwidget.cpp
@@ -332,7 +332,10 @@ void ListWidget::updateList(int flags)
//song numbers width
m_drawer.calculateNumberWidth(m_model->trackCount());
if(m_header)
+ {
m_header->setNumberWidth(m_drawer.numberWidth());
+ m_header->hideSortIndicator();
+ }
items = m_model->mid(m_first, m_row_count);
@@ -400,6 +403,7 @@ void ListWidget::updateColumns()
return;
m_header->updateColumns();
+ m_header->hideSortIndicator();
QList<PlayListItem *> items = m_model->mid(m_first, m_row_count);
for(int i = 0; i < items.count(); ++i)
{
@@ -447,6 +451,7 @@ void ListWidget::setModel(PlayListModel *selected, PlayListModel *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;
@@ -463,6 +468,7 @@ void ListWidget::setModel(PlayListModel *selected, PlayListModel *previous)
}
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::scroll(int sc)
diff --git a/src/plugins/Ui/skinned/playlistheader.cpp b/src/plugins/Ui/skinned/playlistheader.cpp
index 4d207ef1e..387691d59 100644
--- a/src/plugins/Ui/skinned/playlistheader.cpp
+++ b/src/plugins/Ui/skinned/playlistheader.cpp
@@ -68,6 +68,7 @@ PlayListHeader::PlayListHeader(QWidget *parent) :
m_show_number = false;
m_align_numbres = false;
m_number_width = 0;
+ m_sorting_column = -1;
m_task = NO_TASK;
m_model = QmmpUiSettings::instance()->headerModel();
m_skin = Skin::instance();
@@ -142,14 +143,41 @@ void PlayListHeader::updateColumns()
for(int i = 0; i < m_model->count(); ++i)
{
m_rects << QRect(sx, 0, m_model->size(i), height());
- m_names << m_metrics->elidedText(m_model->name(i), Qt::ElideRight,
- m_model->size(i) - 2 * m_padding);
+ if(i == m_sorting_column)
+ {
+ m_names << m_metrics->elidedText(m_model->name(i), Qt::ElideRight,
+ m_model->size(i) - 2 * m_padding - m_arrow_up.width() - 4);
+ }
+ else
+ {
+ m_names << m_metrics->elidedText(m_model->name(i), Qt::ElideRight,
+ m_model->size(i) - 2 * m_padding);
+ }
sx += m_model->size(i);
}
update();
}
+void PlayListHeader::showSortIndicator(int column, bool reverted)
+{
+ if(m_sorting_column == column && m_reverted == reverted)
+ return;
+
+ m_sorting_column = column;
+ m_reverted = reverted;
+ updateColumns();
+}
+
+void PlayListHeader::hideSortIndicator()
+{
+ if(m_sorting_column != -1)
+ {
+ m_sorting_column = -1;
+ updateColumns();
+ }
+}
+
void PlayListHeader::updateSkin()
{
loadColors();
@@ -240,6 +268,7 @@ void PlayListHeader::mouseMoveEvent(QMouseEvent *e)
{
m_task = MOVE;
}
+
if(m_task == RESIZE && m_model->count() > 1)
{
m_model->resize(m_pressed_column, m_old_size + e->pos().x() - m_pressed_pos.x());
@@ -366,8 +395,11 @@ void PlayListHeader::paintEvent(QPaintEvent *)
painter.drawLine(m_rects[i].right()+1, 0,
m_rects[i].right()+1, height()+1);
- painter.drawPixmap(m_rects[i].right() - m_arrow_up.width() - 4, (height() - m_arrow_up.height()) / 2, m_arrow_up);
-
+ if(i == m_sorting_column)
+ {
+ painter.drawPixmap(m_rects[i].right() - m_arrow_up.width() - 4,
+ (height() - m_arrow_up.height()) / 2, m_reverted ? m_arrow_up : m_arrow_down);
+ }
}
if(m_task == MOVE)
@@ -389,7 +421,7 @@ void PlayListHeader::loadColors()
m_current.setNamedColor(m_skin->getPLValue("current"));
QPixmap px1(skinned_arrow_up_xpm);
- QPixmap px2(skinned_arrow_up_xpm);
+ QPixmap px2(skinned_arrow_down_xpm);
m_arrow_up = px1;
m_arrow_down = px2;
m_arrow_up.fill(m_normal_bg);
diff --git a/src/plugins/Ui/skinned/playlistheader.h b/src/plugins/Ui/skinned/playlistheader.h
index 648e24fe1..c096b29af 100644
--- a/src/plugins/Ui/skinned/playlistheader.h
+++ b/src/plugins/Ui/skinned/playlistheader.h
@@ -47,6 +47,10 @@ public:
void setNumberWidth(int width);
void updateColumns();
+public slots:
+ void showSortIndicator(int column, bool reverted);
+ void hideSortIndicator();
+
private slots:
void updateSkin();
void addColumn();
@@ -78,11 +82,13 @@ private:
QPixmap m_arrow_up, m_arrow_down;
bool m_show_number;
bool m_align_numbres;
+ bool m_reverted;
int m_number_width;
int m_pressed_column;
int m_old_size;
int m_press_offset;
int m_padding;
+ int m_sorting_column;
enum
{