aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-07-01 13:10:21 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-07-01 13:10:21 +0000
commitf461a94afb83f773f2e7d676b87c9f99a3f822eb (patch)
tree68b07f795f69c656cd55f41cc4fe24901fcabd1c
parent6a17e3c8a908e7befc3558a53b9f1b89d1004c74 (diff)
downloadqmmp-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
-rw-r--r--src/plugins/Ui/skinned/listwidget.cpp2
-rw-r--r--src/plugins/Ui/skinned/listwidgetdrawer.cpp10
-rw-r--r--src/plugins/Ui/skinned/listwidgetdrawer.h2
-rw-r--r--src/plugins/Ui/skinned/playlistheader.cpp44
-rw-r--r--src/plugins/Ui/skinned/playlistheader.h8
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;