diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-07-01 13:10:21 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-07-01 13:10:21 +0000 |
| commit | f461a94afb83f773f2e7d676b87c9f99a3f822eb (patch) | |
| tree | 68b07f795f69c656cd55f41cc4fe24901fcabd1c /src/plugins | |
| parent | 6a17e3c8a908e7befc3558a53b9f1b89d1004c74 (diff) | |
| download | qmmp-f461a94afb83f773f2e7d676b87c9f99a3f822eb.tar.gz qmmp-f461a94afb83f773f2e7d676b87c9f99a3f822eb.tar.bz2 qmmp-f461a94afb83f773f2e7d676b87c9f99a3f822eb.zip | |
skinned: added feature to show track state
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@5194 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins')
| -rw-r--r-- | src/plugins/Ui/skinned/listwidget.cpp | 2 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/listwidgetdrawer.cpp | 10 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/listwidgetdrawer.h | 2 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/playlistheader.cpp | 44 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/playlistheader.h | 8 |
5 files changed, 55 insertions, 11 deletions
diff --git a/src/plugins/Ui/skinned/listwidget.cpp b/src/plugins/Ui/skinned/listwidget.cpp index 1688e0cdb..0ee82576b 100644 --- a/src/plugins/Ui/skinned/listwidget.cpp +++ b/src/plugins/Ui/skinned/listwidget.cpp @@ -339,10 +339,12 @@ void ListWidget::updateList(int flags) } int prev_number = 0; + int trackStateColumn = m_header->trackStateColumn(); for(int i = 0; i < items.count(); ++i) { ListWidgetRow *row = m_rows[i]; + row->trackStateColumn = trackStateColumn; items[i]->isSelected() ? row->flags |= ListWidgetRow::SELECTED : row->flags &= ~ListWidgetRow::SELECTED; diff --git a/src/plugins/Ui/skinned/listwidgetdrawer.cpp b/src/plugins/Ui/skinned/listwidgetdrawer.cpp index 72799a066..b13c9d6a9 100644 --- a/src/plugins/Ui/skinned/listwidgetdrawer.cpp +++ b/src/plugins/Ui/skinned/listwidgetdrawer.cpp @@ -156,7 +156,7 @@ void ListWidgetDrawer::prepareRow(ListWidgetRow *row) for(int i = 0; i < row->titles.count(); ++i) { int size = row->sizes[i]; - if(i == 0 && !row->extraString.isEmpty()) + if(i == row->trackStateColumn && !row->extraString.isEmpty()) { int text_size = qMax(0, size - 3 * m_padding - m_extra_metrics->width(row->extraString)); row->titles[i] = m_metrics->elidedText (row->titles[i], Qt::ElideRight, text_size); @@ -336,15 +336,17 @@ void ListWidgetDrawer::drawTrack(QPainter *painter, ListWidgetRow *row, bool rtl painter->setPen(row->flags & ListWidgetRow::CURRENT ? m_current : m_normal); painter->drawText(sx + m_padding, sy, row->titles[i]); sx += row->sizes[i]; - painter->setPen(m_normal); - painter->drawLine(sx, row->rect.top(), sx, row->rect.bottom() + 1); - if(i == 0 && !row->extraString.isEmpty()) + + if(i == row->trackStateColumn && !row->extraString.isEmpty()) { painter->setFont(m_extra_font); painter->drawText(sx - m_padding - m_extra_metrics->width(row->extraString), sy, row->extraString); painter->setFont(m_font); } + + painter->setPen(m_normal); + painter->drawLine(sx, row->rect.top(), sx, row->rect.bottom() + 1); } } } diff --git a/src/plugins/Ui/skinned/listwidgetdrawer.h b/src/plugins/Ui/skinned/listwidgetdrawer.h index 56375765b..5a11c23ed 100644 --- a/src/plugins/Ui/skinned/listwidgetdrawer.h +++ b/src/plugins/Ui/skinned/listwidgetdrawer.h @@ -39,6 +39,7 @@ struct ListWidgetRow flags = NO_FLAGS; numberColumnWidth = 0; lengthColumnWidth = 0; + trackStateColumn = -1; } QStringList titles; QList<int> sizes; @@ -47,6 +48,7 @@ struct ListWidgetRow int number; int numberColumnWidth; int lengthColumnWidth; + int trackStateColumn; enum { NO_FLAGS = 0x00, diff --git a/src/plugins/Ui/skinned/playlistheader.cpp b/src/plugins/Ui/skinned/playlistheader.cpp index 20fbe108d..04a063710 100644 --- a/src/plugins/Ui/skinned/playlistheader.cpp +++ b/src/plugins/Ui/skinned/playlistheader.cpp @@ -80,8 +80,10 @@ PlayListHeader::PlayListHeader(QWidget *parent) : m_menu = new QMenu(this); m_menu->addAction(QIcon::fromTheme("list-add"), tr("Add Column"), this, SLOT(addColumn())); m_menu->addAction(QIcon::fromTheme("configure"), tr("Edit Column"), this, SLOT(editColumn())); - m_autoResize = m_menu->addAction(tr("Auto-resize"), this, SLOT(setAutoResize(bool))); - m_autoResize->setCheckable(true); + m_trackStateAction = m_menu->addAction(tr("Show Queue/Protocol"), this, SLOT(showTrackState(bool))); + m_trackStateAction->setCheckable(true); + m_autoResizeAction = m_menu->addAction(tr("Auto-resize"), this, SLOT(setAutoResize(bool))); + m_autoResizeAction->setCheckable(true); m_menu->addAction(tr("Restore Size"), this, SLOT(restoreSize())); m_menu->addSeparator(); m_menu->addAction(QIcon::fromTheme("list-remove"), tr("Remove Column"), this, SLOT(removeColumn())); @@ -127,6 +129,7 @@ void PlayListHeader::readSettings() m_model->restoreSettings(&settings); QList<QVariant> sizes = settings.value("pl_column_sizes").toList(); int autoResizeColumn = settings.value("pl_autoresize_column", -1).toInt(); + int trackStateColumn = settings.value("pl_track_state_column", -1).toInt(); for(int i = 0; i < m_model->count(); ++i) { m_model->setData(i, SIZE, INITAL_SIZE); @@ -135,6 +138,8 @@ void PlayListHeader::readSettings() m_model->setData(i, SIZE, sizes.at(i).toInt()); if(i == autoResizeColumn) m_model->setData(i, AUTO_RESIZE, true); + if(i == trackStateColumn) + m_model->setData(i,TRACK_STATE, true); } } @@ -217,6 +222,18 @@ QList<int> PlayListHeader::sizes() const return sizeList; } +int PlayListHeader::trackStateColumn() const +{ + for(int i = 0; i < m_model->count(); ++i) + { + if(m_model->data(i, TRACK_STATE).toBool()) + { + return i; + } + } + return -1; +} + void PlayListHeader::showSortIndicator(int column, bool reverted) { if(m_sorting_column == column && m_reverted == reverted) @@ -293,6 +310,20 @@ void PlayListHeader::setAutoResize(bool yes) m_model->setData(m_pressed_column, AUTO_RESIZE, yes); } +void PlayListHeader::showTrackState(bool yes) +{ + if(m_pressed_column < 0) + return; + + if(yes) + { + for(int i = 0; i < m_model->count(); ++i) + m_model->setData(i, TRACK_STATE, false); + } + + m_model->setData(m_pressed_column, TRACK_STATE, yes); +} + void PlayListHeader::restoreSize() { if(m_pressed_column < 0) @@ -385,7 +416,6 @@ void PlayListHeader::mouseMoveEvent(QMouseEvent *e) setSize(m_pressed_column, qMax(size(m_pressed_column), MIN_SIZE)); adjustColumns(); - updateColumns(); emit resizeColumnRequest(); } @@ -497,8 +527,8 @@ void PlayListHeader::contextMenuEvent(QContextMenuEvent *e) m_pressed_column = findColumn(e->pos()); if(m_pressed_column >= 0) { - m_autoResize->setChecked(m_model->data(m_pressed_column, AUTO_RESIZE).toBool()); - m_autoResize->setEnabled(true); + m_trackStateAction->setChecked(m_model->data(m_pressed_column, TRACK_STATE).toBool()); + m_autoResizeAction->setChecked(m_model->data(m_pressed_column, AUTO_RESIZE).toBool()); foreach (QAction *action, m_menu->actions()) action->setVisible(true); @@ -721,13 +751,17 @@ void PlayListHeader::writeSettings() m_model->saveSettings(&settings); QList<QVariant> sizes; int autoResizeColumn = -1; + int trackStateColumn = -1; for(int i = 0; i < m_model->count(); ++i) { sizes << m_model->data(i, SIZE).toInt(); if(m_model->data(i, AUTO_RESIZE).toBool()) autoResizeColumn = i; + if(m_model->data(i, TRACK_STATE).toBool()) + trackStateColumn = i; } settings.setValue("pl_column_sizes", sizes); settings.setValue("pl_autoresize_column", autoResizeColumn); + settings.setValue("pl_track_state_column", trackStateColumn); settings.endGroup(); } diff --git a/src/plugins/Ui/skinned/playlistheader.h b/src/plugins/Ui/skinned/playlistheader.h index 988e4dff2..0a73082f4 100644 --- a/src/plugins/Ui/skinned/playlistheader.h +++ b/src/plugins/Ui/skinned/playlistheader.h @@ -48,6 +48,7 @@ public: void setNumberWidth(int width); int requiredHeight() const; QList<int> sizes() const; + int trackStateColumn() const; signals: void resizeColumnRequest(); @@ -63,6 +64,7 @@ private slots: void editColumn(); void removeColumn(); void setAutoResize(bool yes); + void showTrackState(bool yes); void restoreSize(); void onColumnAdded(int index); @@ -87,7 +89,8 @@ private: NAME = 0, SIZE, RECT, //geometry - AUTO_RESIZE + AUTO_RESIZE, + TRACK_STATE }; Skin *m_skin; @@ -98,7 +101,8 @@ private: QPoint m_pressed_pos; QPoint m_mouse_pos; PlayListHeaderModel *m_model; - QAction *m_autoResize; + QAction *m_trackStateAction; + QAction *m_autoResizeAction; QPixmap m_arrow_up, m_arrow_down; bool m_reverted; int m_number_width; |
