aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-02-03 18:53:58 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-02-03 18:53:58 +0000
commit2b8355b4d05128330234d96eb9ff15b9aa10e857 (patch)
tree6338123624ecdab20f348cf5c7c23e2a2beefa47
parent96cfa27dc27e4dc81385df243215fd516b043673 (diff)
downloadqmmp-2b8355b4d05128330234d96eb9ff15b9aa10e857.tar.gz
qmmp-2b8355b4d05128330234d96eb9ff15b9aa10e857.tar.bz2
qmmp-2b8355b4d05128330234d96eb9ff15b9aa10e857.zip
refactoring
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4718 90c681e8-e032-0410-971d-27865f9a5e38
-rw-r--r--src/plugins/Ui/skinned/listwidget.cpp209
-rw-r--r--src/plugins/Ui/skinned/listwidget.h4
2 files changed, 117 insertions, 96 deletions
diff --git a/src/plugins/Ui/skinned/listwidget.cpp b/src/plugins/Ui/skinned/listwidget.cpp
index 916af3aa5..e10e15553 100644
--- a/src/plugins/Ui/skinned/listwidget.cpp
+++ b/src/plugins/Ui/skinned/listwidget.cpp
@@ -164,107 +164,18 @@ void ListWidget::paintEvent(QPaintEvent *)
painter.setLayoutDirection(Qt::LayoutDirectionAuto);
#endif
bool rtl = (layoutDirection() == Qt::RightToLeft);
- int sx = 0, sy = 0;
for (int i = 0; i < m_rows.size(); ++i )
{
- sy = (i + 1) * (2 + m_metrics->lineSpacing()) - 2 - m_metrics->descent();
-
- if (m_show_anchor && i == m_anchor_index - m_first)
- {
- painter.setBrush(m_rows[i]->selected ? m_selected_bg : m_normal_bg);
- painter.setPen(m_normal);
- painter.drawRect (6, i * (m_metrics->lineSpacing() + 2),
- width() - 10, m_metrics->lineSpacing() + 1);
- }
- else
- {
- if (m_rows[i]->selected)
- {
- painter.setBrush(QBrush(m_selected_bg));
- painter.setPen(m_selected_bg);
- painter.drawRect (6, i * (m_metrics->lineSpacing() + 2),
- width() - 10, m_metrics->lineSpacing() + 1);
- }
- }
+ drawBackground(&painter, i);
if(m_rows[i]->separator)
{
- painter.setPen(m_normal);
- sx = 45;
-
- if(m_number_width)
- sx += m_number_width + m_metrics->width("9");
- if(rtl)
- sx = width() - sx - m_metrics->width(m_rows[i]->title) - 5;
-
- painter.drawText(sx, sy, m_rows[i]->title);
-
- sy -= (m_metrics->lineSpacing()/2 - 2);
-
- if(rtl)
- {
- painter.drawLine(10, sy, sx - 5, sy);
- painter.drawLine(sx + m_metrics->width(m_rows[i]->title) + 5, sy,
- sx + m_metrics->width(m_rows[i]->title) + 35, sy);
- }
- else
- {
- painter.drawLine(sx - 35, sy, sx - 5, sy);
- painter.drawLine(sx + m_metrics->width(m_rows[i]->title) + 5, sy,
- width() - 10, sy);
- }
+ drawSeparator(&painter, i, rtl);
continue;
}
- if (m_model->currentIndex() == m_first + i)
- painter.setPen(m_current);
- else
- painter.setPen(m_normal); //243,58
-
-
- if(m_number_width)
- {
- QString number = QString("%1").arg(m_rows[i]->number);
- sx = 10 + m_number_width - m_metrics->width(number);
- if(rtl)
- sx = width() - sx - m_metrics->width(number);
-
- painter.drawText(sx, sy, number);
-
- sx = 10 + m_number_width + m_metrics->width("9");
- if(rtl)
- sx = width() - sx - m_metrics->width(m_rows[i]->title);
- }
- else
- {
- sx = rtl ? width() - 10 - m_metrics->width(m_rows[i]->title) : 10;
- }
-
- painter.drawText(sx, sy, m_rows[i]->title);
-
- QString extra_string = m_rows[i]->extraString;
-
- if(!extra_string.isEmpty())
- {
- painter.setFont(m_extra_font);
-
- if(m_rows[i]->length.isEmpty())
- {
- sx = rtl ? 7 : width() - 7 - m_extra_metrics->width(extra_string);
- painter.drawText(sx, sy, extra_string);
- }
- else
- {
- sx = width() - 10 - m_extra_metrics->width(extra_string) - m_metrics->width(m_rows[i]->length);
- if(rtl)
- sx = width() - sx - m_extra_metrics->width(extra_string);
- painter.drawText(sx, sy, extra_string);
- }
- painter.setFont(m_font);
- }
- sx = rtl ? 9 : width() - 7 - m_metrics->width(m_rows[i]->length);
- painter.drawText(sx, sy, m_rows[i]->length);
+ drawTrack(&painter, i, rtl);
}
//draw drop line
if(m_drop_index != INVALID_INDEX)
@@ -277,9 +188,9 @@ void ListWidget::paintEvent(QPaintEvent *)
if(m_number_width)
{
painter.setPen(m_normal);
- sx = rtl ? width() - 10 - m_number_width - m_metrics->width("9")/2 - 1 :
- 10 + m_number_width + m_metrics->width("9")/2 - 1;
- painter.drawLine(sx, 2, sx, sy);
+ int sx = rtl ? width() - 10 - m_number_width - m_metrics->width("9")/2 - 1 :
+ 10 + m_number_width + m_metrics->width("9")/2 - 1;
+ painter.drawLine(sx, 2, sx, height() - 2);
}
}
@@ -463,7 +374,7 @@ void ListWidget::updateList(int flags)
else
{
row->separator = false;
- //optimization: reduce number of PlaListModel::numberOfTrack(int) calls
+ //optimization: reduces number of PlaListModel::numberOfTrack(int) calls
if(!prev_number)
{
row->number = m_model->numberOfTrack(m_first+i) + 1;
@@ -521,6 +432,112 @@ void ListWidget::scrollToCurrent()
updateList(PlayListModel::CURRENT | PlayListModel::STRUCTURE);
}
+//drawing functions
+void ListWidget::drawBackground(QPainter *painter, int i)
+{
+ if (m_show_anchor && i == m_anchor_index - m_first)
+ {
+ painter->setBrush(m_rows[i]->selected ? m_selected_bg : m_normal_bg);
+ painter->setPen(m_normal);
+ painter->drawRect (6, i * (m_metrics->lineSpacing() + 2),
+ width() - 10, m_metrics->lineSpacing() + 1);
+ }
+ else
+ {
+ if (m_rows[i]->selected)
+ {
+ painter->setBrush(QBrush(m_selected_bg));
+ painter->setPen(m_selected_bg);
+ painter->drawRect (6, i * (m_metrics->lineSpacing() + 2),
+ width() - 10, m_metrics->lineSpacing() + 1);
+ }
+ }
+}
+
+void ListWidget::drawSeparator(QPainter *painter, int i, bool rtl)
+{
+ int sx = 55;
+ int sy = (i + 1) * (2 + m_metrics->lineSpacing()) - 2 - m_metrics->descent();
+
+ painter->setPen(m_normal);
+
+ if(m_number_width)
+ sx += m_number_width + m_metrics->width("9");
+ if(rtl)
+ sx = width() - sx - m_metrics->width(m_rows[i]->title) - 5;
+
+ painter->drawText(sx, sy, m_rows[i]->title);
+
+ sy -= (m_metrics->lineSpacing()/2 - 2);
+
+ if(rtl)
+ {
+ painter->drawLine(10, sy, sx - 5, sy);
+ painter->drawLine(sx + m_metrics->width(m_rows[i]->title) + 5, sy,
+ sx + m_metrics->width(m_rows[i]->title) + 35, sy);
+ }
+ else
+ {
+ painter->drawLine(sx - 45, sy, sx - 5, sy);
+ painter->drawLine(sx + m_metrics->width(m_rows[i]->title) + 5, sy,
+ width() - 10, sy);
+ }
+}
+
+void ListWidget::drawTrack(QPainter *painter, int i, bool rtl)
+{
+ int sx = 0;
+ int sy = (i + 1) * (2 + m_metrics->lineSpacing()) - 2 - m_metrics->descent();
+
+ if (m_model->currentIndex() == m_first + i)
+ painter->setPen(m_current);
+ else
+ painter->setPen(m_normal); //243,58
+
+ if(m_number_width)
+ {
+ QString number = QString("%1").arg(m_rows[i]->number);
+ sx = 10 + m_number_width - m_metrics->width(number);
+ if(rtl)
+ sx = width() - sx - m_metrics->width(number);
+
+ painter->drawText(sx, sy, number);
+
+ sx = 10 + m_number_width + m_metrics->width("9");
+ if(rtl)
+ sx = width() - sx - m_metrics->width(m_rows[i]->title);
+ }
+ else
+ {
+ sx = rtl ? width() - 10 - m_metrics->width(m_rows[i]->title) : 10;
+ }
+
+ painter->drawText(sx, sy, m_rows[i]->title);
+
+ QString extra_string = m_rows[i]->extraString;
+
+ if(!extra_string.isEmpty())
+ {
+ painter->setFont(m_extra_font);
+
+ if(m_rows[i]->length.isEmpty())
+ {
+ sx = rtl ? 7 : width() - 7 - m_extra_metrics->width(extra_string);
+ painter->drawText(sx, sy, extra_string);
+ }
+ else
+ {
+ sx = width() - 10 - m_extra_metrics->width(extra_string) - m_metrics->width(m_rows[i]->length);
+ if(rtl)
+ sx = width() - sx - m_extra_metrics->width(extra_string);
+ painter->drawText(sx, sy, extra_string);
+ }
+ painter->setFont(m_font);
+ }
+ sx = rtl ? 9 : width() - 7 - m_metrics->width(m_rows[i]->length);
+ painter->drawText(sx, sy, m_rows[i]->length);
+}
+
void ListWidget::setModel(PlayListModel *selected, PlayListModel *previous)
{
if(previous)
diff --git a/src/plugins/Ui/skinned/listwidget.h b/src/plugins/Ui/skinned/listwidget.h
index 5b8343eee..378c610b0 100644
--- a/src/plugins/Ui/skinned/listwidget.h
+++ b/src/plugins/Ui/skinned/listwidget.h
@@ -110,6 +110,10 @@ private slots:
void scrollToCurrent();
private:
+ void drawBackground(QPainter *painter, int i);
+ void drawSeparator(QPainter *painter, int i, bool rtl);
+ void drawTrack(QPainter *painter, int i, bool rtl);
+
void loadColors();
bool m_update;
int m_pressed_index;