From 990f7197d1de23de4a161bd6cfad829b2d6c02db Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Tue, 8 Mar 2011 09:59:32 +0000 Subject: 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 --- src/ui/configdialog.cpp | 2 ++ src/ui/forms/configdialog.ui | 84 +++++++++++++++++++++++++++++--------------- src/ui/listwidget.cpp | 35 ++++++++++++++++-- src/ui/listwidget.h | 2 ++ 4 files changed, 92 insertions(+), 31 deletions(-) diff --git a/src/ui/configdialog.cpp b/src/ui/configdialog.cpp index cda4ed330..26a71e38d 100644 --- a/src/ui/configdialog.cpp +++ b/src/ui/configdialog.cpp @@ -107,6 +107,7 @@ void ConfigDialog::readSettings() } ui.protocolCheckBox->setChecked(settings.value ("PlayList/show_protocol", false).toBool()); ui.numbersCheckBox->setChecked(settings.value ("PlayList/show_numbers", true).toBool()); + ui.alignCheckBox->setChecked(settings.value ("PlayList/align_numbers", false).toBool()); ui.anchorCheckBox->setChecked(settings.value("PlayList/show_anchor", false).toBool()); ui.playlistsCheckBox->setChecked(settings.value("PlayList/show_plalists", false).toBool()); ui.popupCheckBox->setChecked(settings.value("PlayList/show_popup", false).toBool()); @@ -464,6 +465,7 @@ void ConfigDialog::saveSettings() } settings.setValue ("PlayList/show_protocol", ui.protocolCheckBox->isChecked()); settings.setValue ("PlayList/show_numbers", ui.numbersCheckBox->isChecked()); + settings.setValue ("PlayList/align_numbers", ui.alignCheckBox->isChecked()); settings.setValue ("PlayList/show_anchor", ui.anchorCheckBox->isChecked()); settings.setValue ("PlayList/show_plalists", ui.playlistsCheckBox->isChecked()); settings.setValue ("PlayList/show_popup", ui.popupCheckBox->isChecked()); diff --git a/src/ui/forms/configdialog.ui b/src/ui/forms/configdialog.ui index 305383b71..d6a6f7a47 100644 --- a/src/ui/forms/configdialog.ui +++ b/src/ui/forms/configdialog.ui @@ -581,14 +581,14 @@ - + Show playlists - + @@ -622,13 +622,23 @@ - + Show anchor + + + + false + + + Align song numbers + + + @@ -1345,12 +1355,12 @@ setEnabled(bool) - 272 - 40 + 286 + 39 - 272 - 40 + 286 + 39 @@ -1361,8 +1371,8 @@ setEnabled(bool) - 272 - 40 + 286 + 39 272 @@ -1409,12 +1419,12 @@ setEnabled(bool) - 226 - 33 + 362 + 310 - 256 - 33 + 455 + 315 @@ -1473,12 +1483,12 @@ setEnabled(bool) - 263 - 54 + 286 + 39 - 263 - 50 + 286 + 39 @@ -1489,12 +1499,12 @@ setEnabled(bool) - 263 - 54 + 286 + 39 - 263 - 45 + 286 + 39 @@ -1505,12 +1515,12 @@ setEnabled(bool) - 263 - 54 + 286 + 39 - 256 - 41 + 286 + 39 @@ -1521,8 +1531,8 @@ reject() - 587 - 415 + 651 + 458 225 @@ -1537,8 +1547,8 @@ accept() - 603 - 422 + 651 + 458 141 @@ -1546,5 +1556,21 @@ + + numbersCheckBox + toggled(bool) + alignCheckBox + setEnabled(bool) + + + 278 + 208 + + + 271 + 236 + + + 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; iwidth(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(); } diff --git a/src/ui/listwidget.h b/src/ui/listwidget.h index b509e4a1c..7e901d34f 100644 --- a/src/ui/listwidget.h +++ b/src/ui/listwidget.h @@ -155,6 +155,8 @@ private: bool m_show_protocol; bool m_show_number; bool m_show_anchor; + bool m_align_numbres; + int m_number_width; MediaPlayer *m_player; PlayListPopup::PopupWidget *m_popupWidget; QTimer *m_timer; -- cgit v1.2.3-13-gbd6f