aboutsummaryrefslogtreecommitdiff
path: root/src/ui/listwidget.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-03-08 09:59:32 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-03-08 09:59:32 +0000
commit990f7197d1de23de4a161bd6cfad829b2d6c02db (patch)
tree132962c90b65dc42f524e04581f019dba538193c /src/ui/listwidget.cpp
parent4abf224e52d3e885cc9f96cdcf095f146778a9e6 (diff)
downloadqmmp-990f7197d1de23de4a161bd6cfad829b2d6c02db.tar.gz
qmmp-990f7197d1de23de4a161bd6cfad829b2d6c02db.tar.bz2
qmmp-990f7197d1de23de4a161bd6cfad829b2d6c02db.zip
added song numbers aligment (Closes issue 295)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2107 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/ui/listwidget.cpp')
-rw-r--r--src/ui/listwidget.cpp35
1 files changed, 33 insertions, 2 deletions
diff --git a/src/ui/listwidget.cpp b/src/ui/listwidget.cpp
index 0c8df7c60..3f1ffae84 100644
--- a/src/ui/listwidget.cpp
+++ b/src/ui/listwidget.cpp
@@ -83,6 +83,7 @@ void ListWidget::readSettings()
m_extra_font.setPointSize(m_font.pointSize() - 1);
m_show_protocol = settings.value ("PlayList/show_protocol", false).toBool();
m_show_number = settings.value ("PlayList/show_numbers", true).toBool();
+ m_align_numbres = settings.value ("PlayList/align_numbers", false).toBool();
m_show_anchor = settings.value("PlayList/show_anchor", false).toBool();
bool show_popup = settings.value("PlayList/show_popup", false).toBool();
@@ -152,7 +153,19 @@ void ListWidget::paintEvent(QPaintEvent *)
m_painter.setPen(m_normal); //243,58
font_y = (i + 1) * (2 + m_metrics->lineSpacing()) - 2 - m_metrics->descent();
- m_painter.drawText(10, font_y, m_titles.at(i));
+
+
+
+ if(m_number_width)
+ {
+ QString number = QString("%1").arg(m_first+i+1);
+ m_painter.drawText(10 + m_number_width - m_extra_metrics->width(number),
+ font_y, number);
+ m_painter.drawText(10 + m_number_width + m_metrics->width("9"), font_y, m_titles.at(i));
+ }
+ else
+ m_painter.drawText(10, font_y, m_titles.at(i));
+
QString extra_string = getExtraString(m_first + i);
if(!extra_string.isEmpty())
@@ -169,6 +182,13 @@ void ListWidget::paintEvent(QPaintEvent *)
}
m_painter.drawText(width() - 7 - m_metrics->width(m_times.at(i)), font_y, m_times.at(i));
}
+ //draw line
+ if(m_number_width)
+ {
+ m_painter.setPen(m_normal);
+ m_painter.drawLine(10 + m_number_width + m_metrics->width("9") / 2, 2,
+ 10 + m_number_width + m_metrics->width("9") / 2, font_y);
+ }
}
void ListWidget::mouseDoubleClickEvent (QMouseEvent *e)
@@ -320,21 +340,32 @@ void ListWidget::updateList()
m_times = m_model->getTimes(m_first, m_rows);
m_scroll = false;
//add numbers
- for (int i = 0; i < m_titles.size() && m_show_number; ++i)
+ for (int i = 0; i < m_titles.size() && m_show_number && !m_align_numbres; ++i)
{
QString title = m_titles.at(i);
m_titles.replace(i, title.prepend(QString("%1").arg(m_first+i+1)+". "));
}
+ //song numbers width
+ if(m_show_number && m_align_numbres && m_model->count())
+ {
+ m_number_width = m_metrics->width("9") * QString::number(m_model->count() + 1).size();
+ }
+ else
+ m_number_width = 0;
+
//elide title
QString extra_string;
for (int i=0; i<m_titles.size(); ++i)
{
extra_string = getExtraString(m_first + i);
int extra_string_space = extra_string.isEmpty() ? 0 : m_metrics->width(extra_string);
+ if(m_number_width)
+ extra_string_space += m_number_width + m_metrics->width("9");
m_titles.replace(i, m_metrics->elidedText (m_titles.at(i), Qt::ElideRight,
width() - m_metrics->width(m_times.at(i)) - 22 - extra_string_space));
}
+
update();
}