aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Ui/skinned
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/Ui/skinned')
-rw-r--r--src/plugins/Ui/skinned/listwidget.cpp18
-rw-r--r--src/plugins/Ui/skinned/listwidget.h1
-rw-r--r--src/plugins/Ui/skinned/playlistheader.cpp34
-rw-r--r--src/plugins/Ui/skinned/playlistheader.h6
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;