diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-03-08 09:59:32 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-03-08 09:59:32 +0000 |
| commit | 990f7197d1de23de4a161bd6cfad829b2d6c02db (patch) | |
| tree | 132962c90b65dc42f524e04581f019dba538193c | |
| parent | 4abf224e52d3e885cc9f96cdcf095f146778a9e6 (diff) | |
| download | qmmp-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
| -rw-r--r-- | src/ui/configdialog.cpp | 2 | ||||
| -rw-r--r-- | src/ui/forms/configdialog.ui | 84 | ||||
| -rw-r--r-- | src/ui/listwidget.cpp | 35 | ||||
| -rw-r--r-- | 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 @@ </property> </widget> </item> - <item row="5" column="0" colspan="2"> + <item row="6" column="0" colspan="2"> <widget class="QCheckBox" name="playlistsCheckBox"> <property name="text"> <string>Show playlists</string> </property> </widget> </item> - <item row="7" column="0" colspan="3"> + <item row="8" column="0" colspan="3"> <layout class="QHBoxLayout" name="horizontalLayout_3"> <item> <widget class="QCheckBox" name="popupCheckBox"> @@ -622,13 +622,23 @@ </item> </layout> </item> - <item row="6" column="0" colspan="2"> + <item row="7" column="0" colspan="2"> <widget class="QCheckBox" name="anchorCheckBox"> <property name="text"> <string>Show anchor</string> </property> </widget> </item> + <item row="5" column="0" colspan="3"> + <widget class="QCheckBox" name="alignCheckBox"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>Align song numbers</string> + </property> + </widget> + </item> </layout> </widget> </item> @@ -1345,12 +1355,12 @@ <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> - <x>272</x> - <y>40</y> + <x>286</x> + <y>39</y> </hint> <hint type="destinationlabel"> - <x>272</x> - <y>40</y> + <x>286</x> + <y>39</y> </hint> </hints> </connection> @@ -1361,8 +1371,8 @@ <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> - <x>272</x> - <y>40</y> + <x>286</x> + <y>39</y> </hint> <hint type="destinationlabel"> <x>272</x> @@ -1409,12 +1419,12 @@ <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> - <x>226</x> - <y>33</y> + <x>362</x> + <y>310</y> </hint> <hint type="destinationlabel"> - <x>256</x> - <y>33</y> + <x>455</x> + <y>315</y> </hint> </hints> </connection> @@ -1473,12 +1483,12 @@ <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> - <x>263</x> - <y>54</y> + <x>286</x> + <y>39</y> </hint> <hint type="destinationlabel"> - <x>263</x> - <y>50</y> + <x>286</x> + <y>39</y> </hint> </hints> </connection> @@ -1489,12 +1499,12 @@ <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> - <x>263</x> - <y>54</y> + <x>286</x> + <y>39</y> </hint> <hint type="destinationlabel"> - <x>263</x> - <y>45</y> + <x>286</x> + <y>39</y> </hint> </hints> </connection> @@ -1505,12 +1515,12 @@ <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> - <x>263</x> - <y>54</y> + <x>286</x> + <y>39</y> </hint> <hint type="destinationlabel"> - <x>256</x> - <y>41</y> + <x>286</x> + <y>39</y> </hint> </hints> </connection> @@ -1521,8 +1531,8 @@ <slot>reject()</slot> <hints> <hint type="sourcelabel"> - <x>587</x> - <y>415</y> + <x>651</x> + <y>458</y> </hint> <hint type="destinationlabel"> <x>225</x> @@ -1537,8 +1547,8 @@ <slot>accept()</slot> <hints> <hint type="sourcelabel"> - <x>603</x> - <y>422</y> + <x>651</x> + <y>458</y> </hint> <hint type="destinationlabel"> <x>141</x> @@ -1546,5 +1556,21 @@ </hint> </hints> </connection> + <connection> + <sender>numbersCheckBox</sender> + <signal>toggled(bool)</signal> + <receiver>alignCheckBox</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel"> + <x>278</x> + <y>208</y> + </hint> + <hint type="destinationlabel"> + <x>271</x> + <y>236</y> + </hint> + </hints> + </connection> </connections> </ui> 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(); } 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; |
