aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-05-30 13:41:50 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-05-30 13:41:50 +0000
commit195d573dfd2a1b20b0e61aa5612aafeee852c352 (patch)
treea3e9e1cb7b576a5d602146560f5f41e77f4caf03
parent08545e3aedf6c46db79e7e513a9d1aaa35254884 (diff)
downloadqmmp-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.cpp6
-rw-r--r--src/plugins/Ui/skinned/listwidgetdrawer.cpp16
-rw-r--r--src/plugins/Ui/skinned/listwidgetdrawer.h2
-rw-r--r--src/plugins/Ui/skinned/playlistheader.cpp35
-rw-r--r--src/plugins/Ui/skinned/playlistheader.h3
-rw-r--r--src/qmmpui/metadatahelper.cpp75
-rw-r--r--src/qmmpui/metadatahelper_p.h55
-rw-r--r--src/qmmpui/playlistheadermodel.cpp122
-rw-r--r--src/qmmpui/playlistheadermodel.h19
-rw-r--r--src/qmmpui/playlistmanager.cpp6
-rw-r--r--src/qmmpui/playlistmanager.h3
-rw-r--r--src/qmmpui/playlistmodel.cpp8
-rw-r--r--src/qmmpui/playlistmodel.h2
-rw-r--r--src/qmmpui/playlisttask.cpp3
-rw-r--r--src/qmmpui/playlisttrack.cpp41
-rw-r--r--src/qmmpui/playlisttrack.h3
-rw-r--r--src/qmmpui/qmmpui.pro6
-rw-r--r--src/qmmpui/qmmpuisettings.cpp18
-rw-r--r--src/qmmpui/qmmpuisettings.h10
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