diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-05-30 13:41:50 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-05-30 13:41:50 +0000 |
| commit | 195d573dfd2a1b20b0e61aa5612aafeee852c352 (patch) | |
| tree | a3e9e1cb7b576a5d602146560f5f41e77f4caf03 | |
| parent | 08545e3aedf6c46db79e7e513a9d1aaa35254884 (diff) | |
| download | qmmp-195d573dfd2a1b20b0e61aa5612aafeee852c352.tar.gz qmmp-195d573dfd2a1b20b0e61aa5612aafeee852c352.tar.bz2 qmmp-195d573dfd2a1b20b0e61aa5612aafeee852c352.zip | |
prepare for api changes
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@5043 90c681e8-e032-0410-971d-27865f9a5e38
| -rw-r--r-- | src/plugins/Ui/skinned/listwidget.cpp | 6 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/listwidgetdrawer.cpp | 16 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/listwidgetdrawer.h | 2 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/playlistheader.cpp | 35 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/playlistheader.h | 3 | ||||
| -rw-r--r-- | src/qmmpui/metadatahelper.cpp | 75 | ||||
| -rw-r--r-- | src/qmmpui/metadatahelper_p.h | 55 | ||||
| -rw-r--r-- | src/qmmpui/playlistheadermodel.cpp | 122 | ||||
| -rw-r--r-- | src/qmmpui/playlistheadermodel.h | 19 | ||||
| -rw-r--r-- | src/qmmpui/playlistmanager.cpp | 6 | ||||
| -rw-r--r-- | src/qmmpui/playlistmanager.h | 3 | ||||
| -rw-r--r-- | src/qmmpui/playlistmodel.cpp | 8 | ||||
| -rw-r--r-- | src/qmmpui/playlistmodel.h | 2 | ||||
| -rw-r--r-- | src/qmmpui/playlisttask.cpp | 3 | ||||
| -rw-r--r-- | src/qmmpui/playlisttrack.cpp | 41 | ||||
| -rw-r--r-- | src/qmmpui/playlisttrack.h | 3 | ||||
| -rw-r--r-- | src/qmmpui/qmmpui.pro | 6 | ||||
| -rw-r--r-- | src/qmmpui/qmmpuisettings.cpp | 18 | ||||
| -rw-r--r-- | src/qmmpui/qmmpuisettings.h | 10 |
19 files changed, 238 insertions, 195 deletions
diff --git a/src/plugins/Ui/skinned/listwidget.cpp b/src/plugins/Ui/skinned/listwidget.cpp index 64b796456..040f70404 100644 --- a/src/plugins/Ui/skinned/listwidget.cpp +++ b/src/plugins/Ui/skinned/listwidget.cpp @@ -32,6 +32,7 @@ #include <qmmpui/playlistmodel.h> #include <qmmpui/qmmpuisettings.h> #include <qmmpui/playlistheadermodel.h> +#include <qmmpui/playlistmanager.h> #include "listwidget.h" #include "playlistheader.h" #include "actionmanager.h" @@ -48,7 +49,7 @@ ListWidget::ListWidget(QWidget *parent) m_skin = Skin::instance(); m_ui_settings = QmmpUiSettings::instance(); - PlayListHeaderModel *headerModel = m_ui_settings->headerModel(); + PlayListHeaderModel *headerModel = PlayListManager::instance()->headerModel(); m_menu = new QMenu(this); m_timer = new QTimer(this); m_timer->setInterval(50); @@ -72,7 +73,7 @@ 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(headerModel, SIGNAL(headerChanged()), SLOT(updateColumns())); + //connect(headerModel, SIGNAL(headerChanged()), SLOT(updateColumns())); SET_ACTION(ActionManager::PL_SHOW_HEADER, this, SLOT(readSettings())); } @@ -356,6 +357,7 @@ void ListWidget::updateList(int flags) row->rect = QRect(5, (m_header->isVisibleTo(this) ? m_header->height() : 0) + i * m_drawer.rowHeight(), width() - 10, m_drawer.rowHeight() - 1); row->titles = items[i]->formattedTitles(); + row->sizes = m_header->sizes(); (m_first + i) == m_model->currentIndex() ? row->flags |= ListWidgetRow::CURRENT : row->flags &= ~ListWidgetRow::CURRENT; diff --git a/src/plugins/Ui/skinned/listwidgetdrawer.cpp b/src/plugins/Ui/skinned/listwidgetdrawer.cpp index db0ff3f1d..4320cff03 100644 --- a/src/plugins/Ui/skinned/listwidgetdrawer.cpp +++ b/src/plugins/Ui/skinned/listwidgetdrawer.cpp @@ -22,7 +22,6 @@ #include <QPainter> #include <QApplication> #include <qmmp/qmmp.h> -#include <qmmpui/qmmpuisettings.h> #include "skin.h" #include "listwidgetdrawer.h" @@ -31,7 +30,6 @@ ListWidgetDrawer::ListWidgetDrawer() { m_skin = Skin::instance(); - m_header_model = QmmpUiSettings::instance()->headerModel(); m_update = false; m_show_anchor = false; m_show_number = false; @@ -148,7 +146,7 @@ void ListWidgetDrawer::prepareRow(ListWidgetRow *row) for(int i = 0; i < row->titles.count() && visible_width > 0; ++i) { - int size = m_header_model->size(i); + int size = row->sizes[i]; if(i == 0 && row->numberColumnWidth) size -= row->numberColumnWidth; @@ -248,12 +246,12 @@ void ListWidgetDrawer::drawTrack(QPainter *painter, ListWidgetRow *row, bool rtl painter->drawLine(sx, row->rect.top(), sx, row->rect.bottom() + 1); } - for(int i = 0; i < m_header_model->count(); i++) + for(int i = 0; i < row->titles.count(); i++) { if(sx - m_padding <= row->rect.x() + row->lengthColumnWidth) break; - int size = m_header_model->size(i); + int size = row->sizes[i]; if(i == 0 && row->numberColumnWidth) size -= row->numberColumnWidth; @@ -261,7 +259,7 @@ void ListWidgetDrawer::drawTrack(QPainter *painter, ListWidgetRow *row, bool rtl painter->drawText(sx - m_padding - m_metrics->width(row->titles[i]), sy, row->titles[i]); sx -= size; - if(m_header_model->count() > 1 && sx > row->rect.x() + row->lengthColumnWidth) + if(row->titles.count() > 1 && sx > row->rect.x() + row->lengthColumnWidth) { painter->setPen(m_normal); painter->drawLine(sx, row->rect.top(), sx, row->rect.bottom() + 1); @@ -296,12 +294,12 @@ void ListWidgetDrawer::drawTrack(QPainter *painter, ListWidgetRow *row, bool rtl painter->drawLine(sx, row->rect.top(), sx, row->rect.bottom() + 1); } - for(int i = 0; i < m_header_model->count(); i++) + for(int i = 0; i < row->sizes.count(); i++) { if(sx + m_padding >= row->rect.right() - row->lengthColumnWidth) break; - int size = m_header_model->size(i); + int size = row->sizes[i]; if(i == 0 && row->numberColumnWidth) size -= row->numberColumnWidth; @@ -309,7 +307,7 @@ void ListWidgetDrawer::drawTrack(QPainter *painter, ListWidgetRow *row, bool rtl painter->drawText(sx + m_padding, sy, row->titles[i]); sx += size; - if(m_header_model->count() > 1 && sx < row->rect.right() - row->lengthColumnWidth) + if(row->titles.count() > 1 && sx < row->rect.right() - row->lengthColumnWidth) { painter->setPen(m_normal); painter->drawLine(sx, row->rect.top(), sx, row->rect.bottom() + 1); diff --git a/src/plugins/Ui/skinned/listwidgetdrawer.h b/src/plugins/Ui/skinned/listwidgetdrawer.h index 118d9e37b..4429fa12b 100644 --- a/src/plugins/Ui/skinned/listwidgetdrawer.h +++ b/src/plugins/Ui/skinned/listwidgetdrawer.h @@ -41,6 +41,7 @@ struct ListWidgetRow lengthColumnWidth = 0; } QStringList titles; + QList<int> sizes; QString length; QString extraString; int number; @@ -85,7 +86,6 @@ private: Skin *m_skin; QFontMetrics *m_metrics; QFontMetrics *m_extra_metrics; - PlayListHeaderModel *m_header_model; QFont m_font, m_extra_font; bool m_update; bool m_show_number; diff --git a/src/plugins/Ui/skinned/playlistheader.cpp b/src/plugins/Ui/skinned/playlistheader.cpp index 4134b6607..b566ffe55 100644 --- a/src/plugins/Ui/skinned/playlistheader.cpp +++ b/src/plugins/Ui/skinned/playlistheader.cpp @@ -31,7 +31,7 @@ #include <QInputDialog> #include <QIcon> #include <qmmp/qmmp.h> -#include <qmmpui/qmmpuisettings.h> +#include <qmmpui/playlistmanager.h> #include <qmmpui/playlistheadermodel.h> #include <qmmpui/playlistmanager.h> #include "skin.h" @@ -69,7 +69,7 @@ PlayListHeader::PlayListHeader(QWidget *parent) : m_number_width = 0; m_sorting_column = -1; m_task = NO_TASK; - m_model = QmmpUiSettings::instance()->headerModel(); + m_model = PlayListManager::instance()->headerModel(); m_skin = Skin::instance(); m_menu = new QMenu(this); m_menu->addAction(QIcon::fromTheme("list-add"), tr("Add Column"), this, SLOT(addColumn())); @@ -80,6 +80,8 @@ PlayListHeader::PlayListHeader(QWidget *parent) : m_menu->addSeparator(); m_menu->addAction(QIcon::fromTheme("list-remove"), tr("Remove Column"), this, SLOT(removeColumn())); + m_sizes << 50; + m_minimal_sizes << 50; connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSkin())); loadColors(); readSettings(); @@ -120,7 +122,7 @@ void PlayListHeader::setNumberWidth(int width) if(width != m_number_width) { m_number_width = width; - m_model->setMinimalSize(0, 30 + (m_number_width ? (m_number_width + 2 * m_pl_padding) : 0)); + m_minimal_sizes[0] = 30 + (m_number_width ? (m_number_width + 2 * m_pl_padding) : 0); updateColumns(); } } @@ -153,7 +155,7 @@ void PlayListHeader::updateColumns() for(int i = 0; i < m_model->count(); ++i) { - int size = m_model->size(i); + int size = m_sizes[i]; //add number width to the first column if(i == 0 && m_number_width) @@ -184,6 +186,11 @@ int PlayListHeader::requiredHeight() const return m_metrics->lineSpacing() + 1; } +QList<int> PlayListHeader::sizes() const +{ + return m_sizes; +} + void PlayListHeader::showSortIndicator(int column, bool reverted) { if(m_sorting_column == column && m_reverted == reverted) @@ -244,7 +251,7 @@ void PlayListHeader::setAutoResize(bool yes) if(m_pressed_column < 0) return; - m_model->setAutoResize(yes ? m_pressed_column : -1); + //m_model->setAutoResize(yes ? m_pressed_column : -1); } void PlayListHeader::restoreSize() @@ -252,7 +259,7 @@ void PlayListHeader::restoreSize() if(m_pressed_column < 0) return; - m_model->resize(m_pressed_column, 100); + m_sizes[m_pressed_column] = 100; } void PlayListHeader::mousePressEvent(QMouseEvent *e) @@ -271,7 +278,7 @@ void PlayListHeader::mousePressEvent(QMouseEvent *e) { if(e->pos().x() < m_rects[m_pressed_column].x() + m_metrics->width("9")) { - m_old_size = m_model->size(m_pressed_column); + m_old_size = m_sizes[m_pressed_column]; m_task = RESIZE; } else @@ -284,7 +291,7 @@ void PlayListHeader::mousePressEvent(QMouseEvent *e) { if(e->pos().x() > m_rects[m_pressed_column].right() - m_metrics->width("9")) { - m_old_size = m_model->size(m_pressed_column); + m_old_size = m_sizes[m_pressed_column]; m_task = RESIZE; } else @@ -323,9 +330,9 @@ void PlayListHeader::mouseMoveEvent(QMouseEvent *e) if(m_task == RESIZE && m_model->count() > 1) { if(rtl) - m_model->resize(m_pressed_column, m_old_size - e->pos().x() + m_pressed_pos.x()); + m_sizes[m_pressed_column] = m_old_size - e->pos().x() + m_pressed_pos.x(); else - m_model->resize(m_pressed_column, m_old_size + e->pos().x() - m_pressed_pos.x()); + m_sizes[m_pressed_column] = m_old_size + e->pos().x() - m_pressed_pos.x(); } else if(m_task == MOVE) { @@ -389,7 +396,7 @@ void PlayListHeader::mouseMoveEvent(QMouseEvent *e) void PlayListHeader::resizeEvent(QResizeEvent *e) { - if(m_model->count() == 1) + /*if(m_model->count() == 1) { updateColumns(); return; @@ -409,13 +416,13 @@ void PlayListHeader::resizeEvent(QResizeEvent *e) { updateColumns(); return; - } + }*/ } void PlayListHeader::contextMenuEvent(QContextMenuEvent *e) { m_pressed_pos = e->pos(); - m_pressed_column = findColumn(e->pos()); + /*m_pressed_column = findColumn(e->pos()); if(m_pressed_column >= 0) { m_autoResize->setChecked(m_model->autoResizeColumn() == m_pressed_column); @@ -432,7 +439,7 @@ void PlayListHeader::contextMenuEvent(QContextMenuEvent *e) action->setVisible(false); } } - m_menu->exec(e->globalPos()); + m_menu->exec(e->globalPos());*/ } void PlayListHeader::paintEvent(QPaintEvent *) diff --git a/src/plugins/Ui/skinned/playlistheader.h b/src/plugins/Ui/skinned/playlistheader.h index 05607831b..b773de749 100644 --- a/src/plugins/Ui/skinned/playlistheader.h +++ b/src/plugins/Ui/skinned/playlistheader.h @@ -23,6 +23,7 @@ #include <QWidget> #include <QPixmap> +#include <QList> class QFontMetrics; class QFont; @@ -47,6 +48,7 @@ public: void setNumberWidth(int width); void updateColumns(); int requiredHeight() const; + QList<int> sizes() const; public slots: void showSortIndicator(int column, bool reverted); @@ -82,6 +84,7 @@ private: PlayListHeaderModel *m_model; QAction *m_autoResize; QPixmap m_arrow_up, m_arrow_down; + QList<int> m_sizes, m_minimal_sizes; bool m_reverted; int m_number_width; int m_pressed_column; diff --git a/src/qmmpui/metadatahelper.cpp b/src/qmmpui/metadatahelper.cpp new file mode 100644 index 000000000..38a18b361 --- /dev/null +++ b/src/qmmpui/metadatahelper.cpp @@ -0,0 +1,75 @@ +/*************************************************************************** + * Copyright (C) 2015 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include "metadatahelper_p.h" + +MetaDataHelper *MetaDataHelper::m_instance = 0; + +MetaDataHelper::MetaDataHelper() +{ + m_instance = this; + m_group_formatter = new MetaDataFormatter(); + m_title_formatters << new MetaDataFormatter(); +} + +MetaDataHelper::~MetaDataHelper() +{ + m_instance = 0; + delete m_group_formatter; + qDeleteAll(m_title_formatters); + m_title_formatters.clear(); +} + +void MetaDataHelper::setTitleFormats(const QStringList &titleFormats) +{ + while(m_title_formatters.count() > titleFormats.count()) + delete m_title_formatters.takeLast(); + + while(m_title_formatters.count() < titleFormats.count()) + m_title_formatters << new MetaDataFormatter(); + + for(int i = 0; i < m_title_formatters.count(); ++i) + m_title_formatters.at(i)->setPattern(titleFormats.at(i)); +} + +void MetaDataHelper::setGroupFormat(const QString &groupFormat) +{ + m_group_formatter->setPattern(groupFormat); +} + +int MetaDataHelper::columnCount() const +{ + return m_title_formatters.count(); +} + +const MetaDataFormatter *MetaDataHelper::titleFormatter(int index) const +{ + return m_title_formatters.at(index); +} + +const MetaDataFormatter *MetaDataHelper::groupFormatter() const +{ + return m_group_formatter; +} + +MetaDataHelper *MetaDataHelper::instance() +{ + return m_instance; +} diff --git a/src/qmmpui/metadatahelper_p.h b/src/qmmpui/metadatahelper_p.h new file mode 100644 index 000000000..98a36c7ca --- /dev/null +++ b/src/qmmpui/metadatahelper_p.h @@ -0,0 +1,55 @@ +/*************************************************************************** + * Copyright (C) 2015 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef METADATAHELPER_P_H +#define METADATAHELPER_P_H + +#include <QList> +#include <QStringList> +#include "metadataformatter.h" + +/*! @internal + * @author Ilya Kotov <forkotov02@hotmail.ru> + */ +class MetaDataHelper +{ +public: + MetaDataHelper(); + ~MetaDataHelper(); + + void setTitleFormats(const QStringList &titleFormats); + void setGroupFormat(const QString &groupFormat); + + int columnCount() const; + const MetaDataFormatter *titleFormatter(int index) const; + const MetaDataFormatter *groupFormatter() const; + + static MetaDataHelper *instance(); + +private: + static MetaDataHelper *m_instance; + + MetaDataFormatter *m_group_formatter; + QList <MetaDataFormatter*> m_title_formatters; + + +}; + +#endif // METADATAHELPER_P_H diff --git a/src/qmmpui/playlistheadermodel.cpp b/src/qmmpui/playlistheadermodel.cpp index eb00fd883..4c228945d 100644 --- a/src/qmmpui/playlistheadermodel.cpp +++ b/src/qmmpui/playlistheadermodel.cpp @@ -22,38 +22,24 @@ #include <QApplication> #include <qmmp/qmmp.h> #include "columneditor_p.h" +#include "metadatahelper_p.h" #include "playlistheadermodel.h" PlayListHeaderModel::PlayListHeaderModel(QObject *parent) : QObject(parent) { - QSettings s (Qmmp::configFile(), QSettings::IniFormat); - s.beginGroup("PlayList"); - int c = qMax(1, s.value("column_count", 1).toInt()); - for(int i = 0; i < c; ++i) - { - s.beginGroup(QString("column%1").arg(i)); - Column col; - col.name = s.value("name", tr("Artist - Title")).toString(); - col.pattern = s.value("pattern", "%if(%p,%p - %t,%t)").toString(); - col.size = s.value("size", 150).toInt(); - col.titleFormatter = new MetaDataFormatter(col.pattern); - col.autoResize = s.value("autoresize", false).toBool(); - col.minSize = 30; - m_columns.append(col); - s.endGroup(); - } - s.endGroup(); + m_helper = MetaDataHelper::instance(); + + ColumnHeader col; + col.name = tr("Artist - Title"); + col.pattern = "%if(%p,%p - %t,%t)"; + m_columns.append(col); + m_helper->setTitleFormats(QStringList() << col.pattern); } PlayListHeaderModel::~PlayListHeaderModel() { sync(); - foreach (Column col, m_columns) - { - delete col.titleFormatter; - col.titleFormatter = 0; - } m_columns.clear(); } @@ -65,13 +51,9 @@ void PlayListHeaderModel::insert(int index, const QString &name, const QString & return; } - Column col; + ColumnHeader col; col.name = name; col.pattern = pattern; - col.titleFormatter = new MetaDataFormatter(pattern); - col.size = 50; - col.autoResize = false; - col.minSize = 30; m_columns.insert(index, col); sync(); emit columnAdded(index); @@ -89,58 +71,11 @@ void PlayListHeaderModel::remove(int index) if(m_columns.count() == 1) return; - delete m_columns.takeAt(index).titleFormatter; sync(); emit columnRemoved(index); emit headerChanged(); } -void PlayListHeaderModel::resize(int index, int size) -{ - if(index < 0 || index >= m_columns.size()) - { - qWarning("ColumnManager: index is out of range"); - return; - } - - m_columns[index].size = qMax(size, m_columns[index].minSize); - emit columnResized(index); - emit headerChanged(); -} - -void PlayListHeaderModel::setAutoResize(int index) -{ - if(index >= m_columns.size()) - { - qWarning("ColumnManager: index is out of range"); - return; - } - - for(int i = 0; i < m_columns.size(); ++i) - { - m_columns[i].autoResize = (i == index); - } -} - -void PlayListHeaderModel::setMinimalSize(int index, int size) -{ - if(index >= m_columns.size()) - { - qWarning("ColumnManager: index is out of range"); - return; - } - - if(size < 10) - { - qWarning("ColumnManager: invalid size"); - return; - } - - m_columns[index].minSize = size; - if(m_columns[index].size < size) - resize(index, size); -} - void PlayListHeaderModel::move(int from, int to) { if(from < 0 || from >= m_columns.size()) @@ -176,7 +111,6 @@ void PlayListHeaderModel::execEdit(int index, QWidget *parent) { m_columns[index].name = editor.name(); m_columns[index].pattern = editor.pattern(); - m_columns[index].titleFormatter->setPattern(editor.pattern()); emit columnChanged(index); emit headerChanged(); } @@ -204,26 +138,6 @@ int PlayListHeaderModel::count() return m_columns.count(); } -const MetaDataFormatter *PlayListHeaderModel::titleFormatter(int index) const -{ - if(index < 0 || index >= m_columns.size()) - { - qWarning("ColumnManager: index is out of range"); - return 0; - } - return m_columns[index].titleFormatter; -} - -int PlayListHeaderModel::size(int index) const -{ - if(index < 0 || index >= m_columns.size()) - { - qWarning("ColumnManager: index is out of range"); - return 0; - } - return m_columns[index].size; -} - const QString PlayListHeaderModel::name(int index) const { if(index < 0 || index >= m_columns.size()) @@ -243,30 +157,18 @@ const QString PlayListHeaderModel::pattern(int index) const return m_columns[index].pattern; } -int PlayListHeaderModel::autoResizeColumn() const -{ - for(int i = 0; i < m_columns.count(); ++i) - { - if(m_columns[i].autoResize) - return i; - } - return -1; -} - void PlayListHeaderModel::sync() { - QSettings s (Qmmp::configFile(), QSettings::IniFormat); + /*QSettings s (Qmmp::configFile(), QSettings::IniFormat); s.beginGroup("PlayList"); int old_count = s.value("column_count", 1).toInt(); s.setValue("column_count", m_columns.count()); for(int i = 0; i < m_columns.count(); ++i) { s.beginGroup(QString("column%1").arg(i)); - Column col = m_columns.at(i); + ColumnHeader col = m_columns.at(i); s.setValue("name", col.name); s.setValue("pattern", col.pattern); - s.setValue("size", col.size); - s.setValue("autoresize", col.autoResize); s.endGroup(); } s.setValue("column_count", m_columns.count()); @@ -274,5 +176,5 @@ void PlayListHeaderModel::sync() { s.remove(QString("column%1").arg(i)); } - s.endGroup(); + s.endGroup();*/ } diff --git a/src/qmmpui/playlistheadermodel.h b/src/qmmpui/playlistheadermodel.h index 1cc4cf2eb..561151c66 100644 --- a/src/qmmpui/playlistheadermodel.h +++ b/src/qmmpui/playlistheadermodel.h @@ -25,6 +25,8 @@ #include <QWidget> #include "metadataformatter.h" +class MetaDataHelper; + /** * @author Ilya Kotov <forkotov02@hotmail.ru> */ @@ -38,40 +40,31 @@ public: void insert(int index, const QString &name, const QString &pattern); void remove(int index); - void resize(int index, int size); - void setAutoResize(int index); - void setMinimalSize(int index, int size); void move(int from, int to); void execEdit(int index, QWidget *parent = 0); void execInsert(int index, QWidget *parent = 0); int count(); - const MetaDataFormatter* titleFormatter(int index) const; - int size(int index) const; + const QString name(int index) const; const QString pattern(int index) const; - int autoResizeColumn() const; signals: void columnAdded(int index); void columnRemoved(int index); void columnChanged(int index); - void columnResized(int index); void columnMoved(int from, int to); void headerChanged(); private: void sync(); - struct Column + struct ColumnHeader { QString name; QString pattern; - int size; - int minSize; - bool autoResize; - MetaDataFormatter *titleFormatter; }; - QList<Column> m_columns; + QList<ColumnHeader> m_columns; + MetaDataHelper *m_helper; }; #endif // COLUMNMANAGER_H diff --git a/src/qmmpui/playlistmanager.cpp b/src/qmmpui/playlistmanager.cpp index 17dbd67e8..8a2395470 100644 --- a/src/qmmpui/playlistmanager.cpp +++ b/src/qmmpui/playlistmanager.cpp @@ -36,6 +36,7 @@ PlayListManager::PlayListManager(QObject *parent) : QObject(parent) qFatal("PlayListManager: only one instance is allowed"); m_instance = this; m_ui_settings = QmmpUiSettings::instance(); + m_header = new PlayListHeaderModel(this); m_current = 0; m_selected = 0; m_timer = new QTimer(this); @@ -229,6 +230,11 @@ PlayListModel *PlayListManager::playListAt(int i) const return 0; } +PlayListHeaderModel *PlayListManager::headerModel() +{ + return m_header; +} + void PlayListManager::readPlayLists() { QString line, param, value; diff --git a/src/qmmpui/playlistmanager.h b/src/qmmpui/playlistmanager.h index 68922d4d1..19006f167 100644 --- a/src/qmmpui/playlistmanager.h +++ b/src/qmmpui/playlistmanager.h @@ -85,6 +85,8 @@ public: */ PlayListModel *playListAt(int i) const; + PlayListHeaderModel *headerModel(); + signals: /*! * Emitted when current playlist changes. @@ -249,6 +251,7 @@ private: PlayListModel *m_current; PlayListModel *m_selected; QTimer *m_timer; + PlayListHeaderModel *m_header; QmmpUiSettings *m_ui_settings; }; diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp index 5fd7ec1db..7659eefba 100644 --- a/src/qmmpui/playlistmodel.cpp +++ b/src/qmmpui/playlistmodel.cpp @@ -22,6 +22,7 @@ #include <QTextStream> #include <time.h> #include <qmmp/metadatamanager.h> +#include "metadatahelper_p.h" #include "playlistparser.h" #include "playlistformat.h" #include "playlistcontainer_p.h" @@ -275,6 +276,11 @@ int PlayListModel::trackCount() const return m_container->trackCount(); } +int PlayListModel::columnCount() const +{ + return MetaDataHelper::instance()->columnCount(); +} + PlayListTrack* PlayListModel::currentTrack() const { return m_container->isEmpty() ? 0 : m_current_track; @@ -822,7 +828,7 @@ void PlayListModel::sortByColumn(int column) if(m_container->isEmpty()) return; - if(column < 0 || column >= m_ui_settings->headerModel()->count()) + if(column < 0 || column >= columnCount()) return; m_task->sortByColumn(m_container->tracks(), column); diff --git a/src/qmmpui/playlistmodel.h b/src/qmmpui/playlistmodel.h index 6ac505a14..37cd0ef76 100644 --- a/src/qmmpui/playlistmodel.h +++ b/src/qmmpui/playlistmodel.h @@ -112,6 +112,8 @@ public: * Returns number of tracks. */ int trackCount() const; + + int columnCount() const; /*! * Returns the current track. */ diff --git a/src/qmmpui/playlisttask.cpp b/src/qmmpui/playlisttask.cpp index 95ffe24bd..a7b4448bd 100644 --- a/src/qmmpui/playlisttask.cpp +++ b/src/qmmpui/playlisttask.cpp @@ -23,6 +23,7 @@ #include <QTime> #include <qmmp/metadatamanager.h> #include "qmmpuisettings.h" +#include "metadatahelper_p.h" #include "playlisttrack.h" #include "playlisttask_p.h" @@ -188,7 +189,7 @@ void PlayListTask::sortByColumn(QList<PlayListTrack *> tracks, int column) m_task = SORT_BY_COLUMN; m_input_tracks = tracks; m_column = column; - if(QmmpUiSettings::instance()->headerModel()->pattern(column) == "%n") + if(MetaDataHelper::instance()->titleFormatter(column)->pattern() == "%n") m_sort_mode = PlayListModel::TRACK; else m_sort_mode = PlayListModel::TITLE; diff --git a/src/qmmpui/playlisttrack.cpp b/src/qmmpui/playlisttrack.cpp index aaac75d28..b21aef3cf 100644 --- a/src/qmmpui/playlisttrack.cpp +++ b/src/qmmpui/playlisttrack.cpp @@ -21,12 +21,13 @@ #include <QApplication> #include <qmmp/metadatamanager.h> #include "qmmpuisettings.h" +#include "metadatahelper_p.h" #include "playlisttrack.h" PlayListTrack::PlayListTrack() : QMap<Qmmp::MetaData, QString>(), PlayListItem() { m_settings = QmmpUiSettings::instance(); - m_columnManager = m_settings->headerModel(); + m_helper = MetaDataHelper::instance(); m_length = 0; m_refCount = 0; m_sheduledForDeletion = false; @@ -36,7 +37,7 @@ PlayListTrack::PlayListTrack(const PlayListTrack &other) : QMap<Qmmp::MetaData, PlayListItem() { m_settings = QmmpUiSettings::instance(); - m_columnManager = m_settings->headerModel(); + m_helper = MetaDataHelper::instance(); m_refCount = 0; m_sheduledForDeletion = false; @@ -54,7 +55,7 @@ PlayListTrack::PlayListTrack(FileInfo *info) : QMap<Qmmp::MetaData, QString>(in PlayListItem() { m_settings = QmmpUiSettings::instance(); - m_columnManager = m_settings->headerModel(); + m_helper = MetaDataHelper::instance(); setLength(m_length = info->length()); insert(Qmmp::URL, info->path()); m_refCount = 0; @@ -131,18 +132,18 @@ bool PlayListTrack::isUsed() const const QString PlayListTrack::formattedTitle(int column) { - if(m_formattedTitles.count() != m_settings->headerModel()->count()) + if(m_formattedTitles.count() != m_helper->columnCount()) { - while(m_formattedTitles.count() > m_columnManager->count()) + while(m_formattedTitles.count() > m_helper->columnCount()) m_formattedTitles.takeLast(); - while(m_formattedTitles.count() < m_columnManager->count()) + while(m_formattedTitles.count() < m_helper->columnCount()) m_formattedTitles.append(QString()); - while(m_titleFormats.count() > m_columnManager->count()) + while(m_titleFormats.count() > m_helper->columnCount()) m_titleFormats.takeLast(); - while(m_titleFormats.count() < m_columnManager->count()) + while(m_titleFormats.count() < m_helper->columnCount()) m_titleFormats.append(QString()); } @@ -152,9 +153,9 @@ const QString PlayListTrack::formattedTitle(int column) return QString(); } - if(m_formattedTitles[column].isEmpty() || m_titleFormats[column] != m_columnManager->pattern(column)) + if(m_formattedTitles[column].isEmpty() || m_titleFormats[column] != m_helper->titleFormatter(column)->pattern()) { - m_titleFormats[column] = m_settings->headerModel()->pattern(column); + m_titleFormats[column] = m_helper->titleFormatter(column)->pattern(); formatTitle(column); } return m_formattedTitles[column]; @@ -162,26 +163,26 @@ const QString PlayListTrack::formattedTitle(int column) const QStringList PlayListTrack::formattedTitles() { - if(m_formattedTitles.count() != m_settings->headerModel()->count()) + if(m_formattedTitles.count() != m_helper->columnCount()) { - while(m_formattedTitles.count() > m_columnManager->count()) + while(m_formattedTitles.count() > m_helper->columnCount()) m_formattedTitles.takeLast(); - while(m_formattedTitles.count() < m_columnManager->count()) + while(m_formattedTitles.count() < m_helper->columnCount()) m_formattedTitles.append(QString()); - while(m_titleFormats.count() > m_columnManager->count()) + while(m_titleFormats.count() > m_helper->columnCount()) m_titleFormats.takeLast(); - while(m_titleFormats.count() < m_columnManager->count()) + while(m_titleFormats.count() < m_helper->columnCount()) m_titleFormats.append(QString()); } - for(int column = 0; column < m_columnManager->count(); column++) + for(int column = 0; column < m_helper->columnCount(); column++) { - if(m_formattedTitles[column].isEmpty() || m_titleFormats[column] != m_columnManager->pattern(column)) + if(m_formattedTitles[column].isEmpty() || m_titleFormats[column] != m_helper->titleFormatter(column)->pattern()) { - m_titleFormats[column] = m_settings->headerModel()->pattern(column); + m_titleFormats[column] = m_helper->titleFormatter(column)->pattern(); formatTitle(column); } } @@ -219,7 +220,7 @@ const QString PlayListTrack::url() const void PlayListTrack::formatTitle(int column) { - m_formattedTitles[column] = m_columnManager->titleFormatter(column)->format(this); + m_formattedTitles[column] = m_helper->titleFormatter(column)->format(this); if(m_formattedTitles.count() == 1) { if (m_formattedTitles[column].isEmpty()) @@ -240,7 +241,7 @@ void PlayListTrack::formatGroup() m_group = qApp->translate("PlayListTrack", "Streams"); return; } - m_group = m_settings->groupFormatter()->format(this); + m_group = m_helper->groupFormatter()->format(this); if (m_group.isEmpty()) m_group = qApp->translate("PlayListTrack", "Empty group"); if (m_settings->convertUnderscore()) diff --git a/src/qmmpui/playlisttrack.h b/src/qmmpui/playlisttrack.h index 73ac63cde..4c0fe9d2d 100644 --- a/src/qmmpui/playlisttrack.h +++ b/src/qmmpui/playlisttrack.h @@ -28,6 +28,7 @@ class QmmpUiSettings; class PlayListHeaderModel; +class MetaDataHelper; /** @brief The PlayListTrack class provides a track for use with the PlayListModel class. * @author Ilya Kotov <forkotov02@hotmail.ru> @@ -117,7 +118,7 @@ private: qint64 m_length; int m_refCount; bool m_sheduledForDeletion; - PlayListHeaderModel *m_columnManager; + MetaDataHelper *m_helper; }; #endif diff --git a/src/qmmpui/qmmpui.pro b/src/qmmpui/qmmpui.pro index c2c7ff6de..0025f3a0e 100644 --- a/src/qmmpui/qmmpui.pro +++ b/src/qmmpui/qmmpui.pro @@ -71,7 +71,8 @@ HEADERS += general.h \ playlisttask_p.h \ metadataformatter.h \ columneditor_p.h \ - playlistheadermodel.h + playlistheadermodel.h \ + metadatahelper_p.h SOURCES += general.cpp \ playlistparser.cpp \ @@ -107,7 +108,8 @@ SOURCES += general.cpp \ playlisttask.cpp \ metadataformatter.cpp \ columneditor.cpp \ - playlistheadermodel.cpp + playlistheadermodel.cpp \ + metadatahelper.cpp FORMS += forms/detailsdialog.ui \ forms/tageditor.ui \ diff --git a/src/qmmpui/qmmpuisettings.cpp b/src/qmmpui/qmmpuisettings.cpp index 1c0439730..8564e4755 100644 --- a/src/qmmpui/qmmpuisettings.cpp +++ b/src/qmmpui/qmmpuisettings.cpp @@ -22,6 +22,7 @@ #include <QApplication> #include <QTimer> #include <qmmp/qmmp.h> +#include "metadatahelper_p.h" #include "playlistmanager.h" #include "qmmpuisettings.h" @@ -32,7 +33,7 @@ QmmpUiSettings::QmmpUiSettings(QObject *parent) : QObject(parent) if(m_instance) qFatal("QmmpUiSettings: only one instance is allowed"); m_instance = this; - m_header = new PlayListHeaderModel(this); + m_helper = new MetaDataHelper; QSettings s (Qmmp::configFile(), QSettings::IniFormat); s.beginGroup("PlayList"); m_group_format = s.value("group_format", "%p%if(%p&%a, - %if(%y,[%y] ,),)%a").toString(); @@ -60,13 +61,14 @@ QmmpUiSettings::QmmpUiSettings(QObject *parent) : QObject(parent) m_timer->setSingleShot(true); connect(m_timer, SIGNAL(timeout()), SLOT(sync())); - m_group_formatter.setPattern(m_group_format); + m_helper->setGroupFormat(m_group_format); } QmmpUiSettings::~QmmpUiSettings() { m_instance = 0; sync(); + delete m_helper; } const QString QmmpUiSettings::groupFormat() const @@ -129,7 +131,7 @@ void QmmpUiSettings::setGroupFormat(const QString &groupFormat) if(groupFormat != m_group_format) { m_group_format = groupFormat; - m_group_formatter.setPattern(groupFormat); + m_helper->setGroupFormat(m_group_format); foreach(PlayListModel *model, PlayListManager::instance()->playLists()) { model->rebuildGroups(); @@ -297,13 +299,3 @@ bool QmmpUiSettings::clearPreviousPlayList() const { return m_clear_prev_playlist; } - -PlayListHeaderModel *QmmpUiSettings::headerModel() -{ - return m_header; -} - -const MetaDataFormatter *QmmpUiSettings::groupFormatter() const -{ - return &m_group_formatter; -} diff --git a/src/qmmpui/qmmpuisettings.h b/src/qmmpui/qmmpuisettings.h index fbfc7eb21..35d4276de 100644 --- a/src/qmmpui/qmmpuisettings.h +++ b/src/qmmpui/qmmpuisettings.h @@ -27,6 +27,7 @@ #include "metadataformatter.h" class QTimer; +class MetaDataHelper; /*! @brief The QmmpUiSettings class provides access to global libqmmpui library settings. * @author Ilya Kotov <forkotov02@hotmail.ru> @@ -178,11 +179,6 @@ public: * otherwise. */ bool clearPreviousPlayList() const; - - PlayListHeaderModel *headerModel(); - - const MetaDataFormatter* groupFormatter() const; - /*! * Returns a pointer to the QmmpUiSettings instance. */ @@ -275,9 +271,7 @@ private: //timer QTimer *m_timer; //formatters - MetaDataFormatter m_group_formatter; - //column settings - PlayListHeaderModel *m_header; + MetaDataHelper *m_helper; }; #endif // QMMPUISETTINGS_H |
