aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Ui/skinned/playlistheader.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-03-04 19:16:15 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-03-04 19:16:15 +0000
commitb0600c50c6b98e5df02f8eb150ea2aa70375ef4e (patch)
treeb6f7eac5a7aa45052cd841dfcf88e1b97cb666c6 /src/plugins/Ui/skinned/playlistheader.cpp
parentc775db9028ab13a8f3cf983b481f06e2a649a8a1 (diff)
downloadqmmp-b0600c50c6b98e5df02f8eb150ea2aa70375ef4e.tar.gz
qmmp-b0600c50c6b98e5df02f8eb150ea2aa70375ef4e.tar.bz2
qmmp-b0600c50c6b98e5df02f8eb150ea2aa70375ef4e.zip
enabled playlist header
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4758 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Ui/skinned/playlistheader.cpp')
-rw-r--r--src/plugins/Ui/skinned/playlistheader.cpp69
1 files changed, 63 insertions, 6 deletions
diff --git a/src/plugins/Ui/skinned/playlistheader.cpp b/src/plugins/Ui/skinned/playlistheader.cpp
index 6ceec3d38..95a25fbfb 100644
--- a/src/plugins/Ui/skinned/playlistheader.cpp
+++ b/src/plugins/Ui/skinned/playlistheader.cpp
@@ -28,7 +28,9 @@
#include <QLineEdit>
#include <QInputDialog>
#include <qmmp/qmmp.h>
-#include <qmmpui/playlistmanager.h>
+#include <qmmpui/qmmpuisettings.h>
+#include <qmmpui/playlistmodel.h>
+#include <qmmpui/columnmanager.h>
#include "skin.h"
#include "playlistheader.h"
@@ -37,6 +39,11 @@ PlayListHeader::PlayListHeader(QWidget *parent) :
{
m_scrollable = false;
m_metrics = 0;
+ m_model = 0;
+ m_show_number = false;
+ m_align_numbres = false;
+ m_number_width = 0;
+ m_manager = QmmpUiSettings::instance()->columnManager();
m_skin = Skin::instance();
connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSkin()));
loadColors();
@@ -53,7 +60,9 @@ PlayListHeader::~PlayListHeader()
void PlayListHeader::readSettings()
{
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
- m_font.fromString(settings.value("Skinned/pl_font", QApplication::font().toString()).toString());
+ settings.beginGroup("Skinned");
+ m_font.fromString(settings.value("pl_font", QApplication::font().toString()).toString());
+
if (m_metrics)
{
delete m_metrics;
@@ -61,7 +70,41 @@ void PlayListHeader::readSettings()
}
m_metrics = new QFontMetrics(m_font);
resize(width(), m_metrics->height () +1);
- //drawButtons();
+ m_show_number = settings.value ("pl_show_numbers", true).toBool();
+ m_align_numbres = settings.value ("pl_align_numbers", false).toBool();
+ settings.endGroup();
+ updateList(PlayListModel::STRUCTURE);
+}
+
+void PlayListHeader::setModel(PlayListModel *selected, PlayListModel *previous)
+{
+ if(previous)
+ {
+ disconnect(previous, 0, this, 0); //disconnect previous model
+ }
+ connect (selected, SIGNAL(listChanged(int)), SLOT(updateList(int)));
+ m_model = selected;
+ updateList(PlayListModel::STRUCTURE);
+}
+
+void PlayListHeader::updateList(int flags)
+{
+ qDebug("1");
+ if(flags & PlayListModel::STRUCTURE)
+ {
+ qDebug("2");
+ //song numbers width
+ if(m_show_number && m_align_numbres && m_model && m_model->count() > 0)
+ {
+ qDebug("3");
+ m_number_width = m_metrics->width("9") * QString::number(m_model->count()).size();
+ }
+ else
+ m_number_width = 0;
+ qDebug("4");
+ }
+ qDebug("++%d++", m_number_width);
+ update();
}
void PlayListHeader::updateSkin()
@@ -72,12 +115,26 @@ void PlayListHeader::updateSkin()
void PlayListHeader::paintEvent(QPaintEvent *)
{
- /*QPainter painter(this);
+ QPainter painter(this);
painter.setFont(m_font);
- painter.setBrush(QBrush(m_normal_bg));
+ painter.setBrush(m_normal_bg);
painter.drawRect(-1,-1,width()+1,height()+1);
- if(m_moving)
+ painter.setPen(m_normal);
+
+ int sx = 5 + 3 + m_number_width + m_metrics->width("9");
+
+ painter.drawLine(0, height()-1, width(), height()-1);
+
+ for(int i = 0; i < m_manager->count(); ++i)
+ {
+ painter.drawText(sx + m_manager->size(i) / 2 - m_metrics->width(m_manager->name(i))/2, m_metrics->ascent(), m_manager->name(i));
+ sx += m_manager->size(i);
+ if(i < m_manager->count() - 1)
+ painter.drawLine(sx - m_metrics->width("9")/2, 0, sx - m_metrics->width("9")/2, height());
+ }
+
+ /*if(m_moving)
{
painter.setBrush(QBrush(m_normal_bg));
painter.setPen(m_current);