diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-03-04 19:16:15 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-03-04 19:16:15 +0000 |
| commit | b0600c50c6b98e5df02f8eb150ea2aa70375ef4e (patch) | |
| tree | b6f7eac5a7aa45052cd841dfcf88e1b97cb666c6 | |
| parent | c775db9028ab13a8f3cf983b481f06e2a649a8a1 (diff) | |
| download | qmmp-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.cpp | 6 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/listwidgetdrawer.h | 2 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/playlist.cpp | 9 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/playlistheader.cpp | 69 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/playlistheader.h | 12 |
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; }; |
