diff options
Diffstat (limited to 'src/plugins/Ui')
| -rw-r--r-- | src/plugins/Ui/skinned/listwidget.cpp | 18 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/listwidget.h | 1 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/playlistheader.cpp | 34 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/playlistheader.h | 6 |
4 files changed, 46 insertions, 13 deletions
diff --git a/src/plugins/Ui/skinned/listwidget.cpp b/src/plugins/Ui/skinned/listwidget.cpp index 4fe265e8f..b5ec88345 100644 --- a/src/plugins/Ui/skinned/listwidget.cpp +++ b/src/plugins/Ui/skinned/listwidget.cpp @@ -31,6 +31,7 @@ #include <qmmpui/playlistitem.h> #include <qmmpui/playlistmodel.h> #include <qmmpui/qmmpuisettings.h> +#include <qmmpui/columnmanager.h> #include "listwidget.h" #include "playlistheader.h" #include "skin.h" @@ -44,6 +45,7 @@ ListWidget::ListWidget(QWidget *parent) { m_skin = Skin::instance(); m_ui_settings = QmmpUiSettings::instance(); + ColumnManager *column_manager = m_ui_settings->columnManager(); m_menu = new QMenu(this); m_timer = new QTimer(this); m_timer->setInterval(50); @@ -67,6 +69,11 @@ ListWidget::ListWidget(QWidget *parent) connect(m_skin, SIGNAL(skinChanged()), SLOT(updateSkin())); connect(m_ui_settings, SIGNAL(repeatableTrackChanged(bool)), SLOT(updateRepeatIndicator())); connect(m_timer, SIGNAL(timeout()), SLOT(autoscroll())); + connect(column_manager, SIGNAL(changed(int)), SLOT(updateColumns())); + connect(column_manager, SIGNAL(resized(int)), SLOT(updateColumns())); + connect(column_manager, SIGNAL(inserted(int)), SLOT(updateColumns())); + connect(column_manager, SIGNAL(removed(int)), SLOT(updateColumns())); + connect(column_manager, SIGNAL(moved(int)), SLOT(updateColumns())); } ListWidget::~ListWidget() @@ -390,6 +397,17 @@ void ListWidget::updateList(int flags) update(); } +void ListWidget::updateColumns() +{ + QList<PlayListItem *> items = m_model->mid(m_first, m_row_count); + for(int i = 0; i < items.count(); ++i) + { + m_rows[i]->titles = items[i]->formattedTitles(); + m_drawer.prepareRow(m_rows[i]); //elide titles + } + update(); +} + void ListWidget::autoscroll() { SimpleSelection sel = m_model->getSelection(m_pressed_index); diff --git a/src/plugins/Ui/skinned/listwidget.h b/src/plugins/Ui/skinned/listwidget.h index 1c0481f7f..e236768f1 100644 --- a/src/plugins/Ui/skinned/listwidget.h +++ b/src/plugins/Ui/skinned/listwidget.h @@ -68,6 +68,7 @@ public: public slots: void updateList(int flags); + void updateColumns(); void scroll(int); //0-99 void recenterCurrent(); void setModel(PlayListModel *selected, PlayListModel *previous = 0); diff --git a/src/plugins/Ui/skinned/playlistheader.cpp b/src/plugins/Ui/skinned/playlistheader.cpp index 285031603..50196bbd2 100644 --- a/src/plugins/Ui/skinned/playlistheader.cpp +++ b/src/plugins/Ui/skinned/playlistheader.cpp @@ -71,12 +71,12 @@ void PlayListHeader::readSettings() delete m_metrics; m_metrics = 0; } + m_metrics = new QFontMetrics(m_font); - //resize(width(), m_metrics->height () +1); m_show_number = settings.value ("pl_show_numbers", true).toBool(); m_align_numbres = settings.value ("pl_align_numbers", false).toBool(); settings.endGroup(); - updateList(); + updateColumns(); } void PlayListHeader::setNumberWidth(int width) @@ -84,11 +84,11 @@ void PlayListHeader::setNumberWidth(int width) if(width != m_number_width) { m_number_width = width; - updateList(); + updateColumns(); } } -void PlayListHeader::updateList() +void PlayListHeader::updateColumns() { m_rects.clear(); m_names.clear(); @@ -153,10 +153,16 @@ void PlayListHeader::mouseMoveEvent(QMouseEvent *e) { //qDebug("delta = %d", e->pos().x() - m_pressed_pos.x()); m_manager->resize(m_pressed_index, m_size + e->pos().x() - m_pressed_pos.x()); - updateList(); + updateColumns(); } } +void PlayListHeader::resizeEvent(QResizeEvent *) +{ + if(m_manager->count() == 1) + updateColumns(); +} + void PlayListHeader::paintEvent(QPaintEvent *) { QPainter painter(this); @@ -173,18 +179,26 @@ void PlayListHeader::paintEvent(QPaintEvent *) m_rects.at(0).x() - m_metrics->width("9")/2 - 1, height()); } + if(m_names.count() == 1) + { + painter.drawText((m_rects[0].x() + m_rects[0].right())/2 - m_metrics->width(m_names[0])/2, + m_metrics->ascent(), m_names[0]); + return; + } + for(int i = 0; i < m_rects.count(); ++i) { - painter.drawLine(m_rects[i].right() - m_metrics->width("9")/2, - 0, m_rects[i].right() - m_metrics->width("9")/2, height()+1); - painter.drawText((m_rects[i].x() + m_rects[i].right())/2 - m_metrics->width(m_names[i])/2, m_metrics->ascent(), m_names[i]); + painter.drawText((m_rects[i].x() + m_rects[i].right())/2 - m_metrics->width(m_names[i])/2, + m_metrics->ascent(), m_names[i]); + + painter.drawLine(m_rects[i].right() - m_metrics->width("9")/2, 0, + m_rects[i].right() - m_metrics->width("9")/2, height()+1); + } } void PlayListHeader::loadColors() { m_normal.setNamedColor(m_skin->getPLValue("normal")); - m_current.setNamedColor(m_skin->getPLValue("current")); - m_normal_bg.setNamedColor(m_skin->getPLValue("normalbg")); m_selected_bg.setNamedColor(m_skin->getPLValue("selectedbg")); } diff --git a/src/plugins/Ui/skinned/playlistheader.h b/src/plugins/Ui/skinned/playlistheader.h index 238a02219..ccb75e282 100644 --- a/src/plugins/Ui/skinned/playlistheader.h +++ b/src/plugins/Ui/skinned/playlistheader.h @@ -43,17 +43,17 @@ public: ~PlayListHeader(); void readSettings(); - void setNumberWidth(int width); + void updateColumns(); private slots: - void updateList(); void updateSkin(); private: void mousePressEvent(QMouseEvent *e); void mouseReleaseEvent(QMouseEvent *e); void mouseMoveEvent(QMouseEvent *e); + void resizeEvent(QResizeEvent *); void paintEvent(QPaintEvent *); void loadColors(); @@ -62,7 +62,7 @@ private: QFontMetrics *m_metrics; QFont m_font; bool m_scrollable; - QColor m_normal, m_current, m_normal_bg, m_selected_bg; + QColor m_normal, m_selected_bg; bool m_show_number; bool m_align_numbres; int m_number_width; |
