aboutsummaryrefslogtreecommitdiff
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
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
-rw-r--r--src/plugins/Ui/skinned/listwidgetdrawer.cpp6
-rw-r--r--src/plugins/Ui/skinned/listwidgetdrawer.h2
-rw-r--r--src/plugins/Ui/skinned/playlist.cpp9
-rw-r--r--src/plugins/Ui/skinned/playlistheader.cpp69
-rw-r--r--src/plugins/Ui/skinned/playlistheader.h12
5 files changed, 85 insertions, 13 deletions
diff --git a/src/plugins/Ui/skinned/listwidgetdrawer.cpp b/src/plugins/Ui/skinned/listwidgetdrawer.cpp
index ddd2d885c..9b2157ef8 100644
--- a/src/plugins/Ui/skinned/listwidgetdrawer.cpp
+++ b/src/plugins/Ui/skinned/listwidgetdrawer.cpp
@@ -83,7 +83,7 @@ int ListWidgetDrawer::rowHeight() const
return m_row_height;
}
-int ListWidgetDrawer::columnAt(int x, ListWidgetRow *row) const
+/*int ListWidgetDrawer::columnAt(int x, ListWidgetRow *row) const
{
if(row->flags & ListWidgetRow::GROUP)
return -1;
@@ -102,10 +102,10 @@ int ListWidgetDrawer::columnAt(int x, ListWidgetRow *row) const
{
painter->drawLine(row->x[ListWidgetRow::TITLE] + offset - m_metrics->width("9")/2, row->rect.top(),
row->x[ListWidgetRow::TITLE] + offset - m_metrics->width("9")/2, row->rect.bottom() + 1);
- }*/
+ }
}
return -1;
-}
+}*/
void ListWidgetDrawer::calculateNumberWidth(int count)
{
diff --git a/src/plugins/Ui/skinned/listwidgetdrawer.h b/src/plugins/Ui/skinned/listwidgetdrawer.h
index 2f3028e37..ff2d775af 100644
--- a/src/plugins/Ui/skinned/listwidgetdrawer.h
+++ b/src/plugins/Ui/skinned/listwidgetdrawer.h
@@ -74,7 +74,7 @@ public:
void readSettings();
void loadColors();
int rowHeight() const;
- int columnAt(int x, ListWidgetRow *row) const;
+ //int columnAt(int x, ListWidgetRow *row) const;
void calculateNumberWidth(int count);
void prepareRow(ListWidgetRow *row);
void fillBackground(QPainter *painter, int width, int height);
diff --git a/src/plugins/Ui/skinned/playlist.cpp b/src/plugins/Ui/skinned/playlist.cpp
index cb1956d4f..bfb8e5e7a 100644
--- a/src/plugins/Ui/skinned/playlist.cpp
+++ b/src/plugins/Ui/skinned/playlist.cpp
@@ -160,13 +160,13 @@ void PlayList::updatePositions()
pl_h -= m_pl_selector->height();
}
- /*if(m_pl_header)
+ if(m_pl_header)
{
m_pl_header->resize(243*m_ratio+25*sx, m_pl_header->height());
m_pl_header->move(pl_x, pl_y);
pl_y += m_pl_selector->height();
pl_h -= m_pl_selector->height();
- }*/
+ }
m_listWidget->resize (pl_w, pl_h);
m_listWidget->move (pl_x, pl_y);
@@ -470,7 +470,12 @@ void PlayList::readSettings()
}
if(!m_pl_header)
+ {
m_pl_header = new PlayListHeader(this);
+ m_pl_header->setModel(m_pl_manager->currentPlayList());
+ connect(m_pl_manager, SIGNAL(selectedPlayListChanged(PlayListModel*,PlayListModel*)),
+ m_pl_header, SLOT(setModel(PlayListModel*,PlayListModel*)));
+ }
if (m_update)
{
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);
diff --git a/src/plugins/Ui/skinned/playlistheader.h b/src/plugins/Ui/skinned/playlistheader.h
index acd03b104..758d4c5b9 100644
--- a/src/plugins/Ui/skinned/playlistheader.h
+++ b/src/plugins/Ui/skinned/playlistheader.h
@@ -27,9 +27,10 @@ class QFontMetrics;
class QFont;
class QMouseEvent;
class QMenu;
-class PlayListManager;
+class PlayListModel;
class PlayList;
class Skin;
+class ColumnManager;
/**
@author Ilya Kotov <forkotov02@hotmail.ru>
@@ -43,18 +44,27 @@ public:
void readSettings();
+public slots:
+ void setModel(PlayListModel *selected, PlayListModel *previous = 0);
+
private slots:
+ void updateList(int flags);
void updateSkin();
private:
void paintEvent(QPaintEvent *);
void loadColors();
+ PlayListModel *m_model;
Skin *m_skin;
QFontMetrics *m_metrics;
QFont m_font;
bool m_scrollable;
QColor m_normal, m_current, m_normal_bg, m_selected_bg;
+ bool m_show_number;
+ bool m_align_numbres;
+ int m_number_width;
+ ColumnManager *m_manager;
};