aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-05-30 18:13:19 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-05-30 18:13:19 +0000
commit9305a6b6e565c6fc54ab6f13b2d130075580a64f (patch)
tree4b94a9f0f725be1920619ba41db656115554bb5f
parent195d573dfd2a1b20b0e61aa5612aafeee852c352 (diff)
downloadqmmp-9305a6b6e565c6fc54ab6f13b2d130075580a64f.tar.gz
qmmp-9305a6b6e565c6fc54ab6f13b2d130075580a64f.tar.bz2
qmmp-9305a6b6e565c6fc54ab6f13b2d130075580a64f.zip
fixed build
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@5044 90c681e8-e032-0410-971d-27865f9a5e38
-rw-r--r--src/plugins/Ui/skinned/listwidget.cpp2
-rw-r--r--src/plugins/Ui/skinned/playlistheader.cpp193
-rw-r--r--src/plugins/Ui/skinned/playlistheader.h24
-rw-r--r--src/qmmpui/playlistheadermodel.cpp75
-rw-r--r--src/qmmpui/playlistheadermodel.h9
5 files changed, 197 insertions, 106 deletions
diff --git a/src/plugins/Ui/skinned/listwidget.cpp b/src/plugins/Ui/skinned/listwidget.cpp
index 040f70404..3c92355b7 100644
--- a/src/plugins/Ui/skinned/listwidget.cpp
+++ b/src/plugins/Ui/skinned/listwidget.cpp
@@ -49,7 +49,7 @@ ListWidget::ListWidget(QWidget *parent)
m_skin = Skin::instance();
m_ui_settings = QmmpUiSettings::instance();
- PlayListHeaderModel *headerModel = PlayListManager::instance()->headerModel();
+ //PlayListHeaderModel *headerModel = PlayListManager::instance()->headerModel();
m_menu = new QMenu(this);
m_timer = new QTimer(this);
m_timer->setInterval(50);
diff --git a/src/plugins/Ui/skinned/playlistheader.cpp b/src/plugins/Ui/skinned/playlistheader.cpp
index b566ffe55..d02561299 100644
--- a/src/plugins/Ui/skinned/playlistheader.cpp
+++ b/src/plugins/Ui/skinned/playlistheader.cpp
@@ -30,6 +30,7 @@
#include <QLineEdit>
#include <QInputDialog>
#include <QIcon>
+#include <QHash>
#include <qmmp/qmmp.h>
#include <qmmpui/playlistmanager.h>
#include <qmmpui/playlistheadermodel.h>
@@ -68,6 +69,7 @@ PlayListHeader::PlayListHeader(QWidget *parent) :
m_pl_padding = 0;
m_number_width = 0;
m_sorting_column = -1;
+ m_update = false;
m_task = NO_TASK;
m_model = PlayListManager::instance()->headerModel();
m_skin = Skin::instance();
@@ -80,8 +82,6 @@ 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();
@@ -92,6 +92,8 @@ PlayListHeader::~PlayListHeader()
if (m_metrics)
delete m_metrics;
m_metrics = 0;
+ qDeleteAll(m_columns);
+ m_columns.clear();
}
void PlayListHeader::readSettings()
@@ -113,7 +115,25 @@ void PlayListHeader::readSettings()
pl_font.fromString(settings.value("pl_font", qApp->font().toString()).toString());
m_pl_padding = QFontMetrics(pl_font).width("9")/2;
+ if(!m_update)
+ {
+ m_model->restoreSettings(&settings);
+ QList<QVariant> sizes = settings.value("pl_column_sizes").toList();
+ int autoResizeColumn = settings.value("pl_autoresize_colum", -1).toInt();
+ for(int i = 0; i < m_model->count(); ++i)
+ {
+ Column *col = new Column();
+ if(i < sizes.count())
+ col->size = sizes.at(i).toInt();
+ if(i == autoResizeColumn)
+ col->autoResize = true;
+ m_columns.append(col);
+ }
+ m_update = true;
+ }
+
settings.endGroup();
+
updateColumns();
}
@@ -122,58 +142,63 @@ void PlayListHeader::setNumberWidth(int width)
if(width != m_number_width)
{
m_number_width = width;
- m_minimal_sizes[0] = 30 + (m_number_width ? (m_number_width + 2 * m_pl_padding) : 0);
+ m_columns[0]->minSize = 30 + (m_number_width ? (m_number_width + 2 * m_pl_padding) : 0);
+ m_columns[0]->size = qMax(m_columns[0]->size, m_columns[0]->minSize);
updateColumns();
}
}
void PlayListHeader::updateColumns()
{
- m_rects.clear();
- m_names.clear();
bool rtl = (layoutDirection() == Qt::RightToLeft);
+ while (m_columns.count() > m_model->count())
+ delete m_columns.takeFirst();
+
+ while(m_columns.count() < m_model->count())
+ m_columns << new Column();
+
int sx = 5;
if(m_number_width)
sx += m_number_width + 2 * m_pl_padding;
if(m_model->count() == 1)
{
- m_rects << (rtl ? QRect(5, 0, width() - sx - 5, height()) : QRect(sx, 0, width() - sx - 5, height()));
+ m_columns[0]->rect = (rtl ? QRect(5, 0, width() - sx - 5, height()) : QRect(sx, 0, width() - sx - 5, height()));
if(m_sorting_column == 0)
{
- m_names << m_metrics->elidedText(m_model->name(0), Qt::ElideRight,
- m_rects.last().width() - 2 * m_padding - m_arrow_up.width() - 4);
+ m_columns[0]->name = m_metrics->elidedText(m_model->name(0), Qt::ElideRight,
+ m_columns[0]->rect.width() - 2 * m_padding - m_arrow_up.width() - 4);
}
else
{
- m_names << m_metrics->elidedText(m_model->name(0), Qt::ElideRight,
- m_rects.last().width() - 2 * m_padding);
+ m_columns[0]->name = m_metrics->elidedText(m_model->name(0), Qt::ElideRight,
+ m_columns[0]->rect.width() - 2 * m_padding);
}
return;
}
for(int i = 0; i < m_model->count(); ++i)
{
- int size = m_sizes[i];
+ int size = m_columns[i]->size;
//add number width to the first column
if(i == 0 && m_number_width)
size -= m_number_width + 2 * m_pl_padding;
if(rtl)
- m_rects << QRect(width() - sx - size, 0, size, height());
+ m_columns[i]->rect = QRect(width() - sx - size, 0, size, height());
else
- m_rects << QRect(sx, 0, size, height());
+ m_columns[i]->rect = QRect(sx, 0, size, height());
if(i == m_sorting_column)
{
- m_names << m_metrics->elidedText(m_model->name(i), Qt::ElideRight,
- size - 2 * m_padding - m_arrow_up.width() - 4);
+ m_columns[i]->name = m_metrics->elidedText(m_model->name(i), Qt::ElideRight,
+ size - 2 * m_padding - m_arrow_up.width() - 4);
}
else
{
- m_names << m_metrics->elidedText(m_model->name(i), Qt::ElideRight,
- size - 2 * m_padding);
+ m_columns[i]->name = m_metrics->elidedText(m_model->name(i), Qt::ElideRight,
+ size - 2 * m_padding);
}
sx += size;
@@ -188,7 +213,10 @@ int PlayListHeader::requiredHeight() const
QList<int> PlayListHeader::sizes() const
{
- return m_sizes;
+ QList<int> sizeList;
+ for(int i = 0; i < m_columns.size(); ++i)
+ sizeList.append(m_columns[i]->size);
+ return sizeList;
}
void PlayListHeader::showSortIndicator(int column, bool reverted)
@@ -218,7 +246,7 @@ void PlayListHeader::updateSkin()
void PlayListHeader::addColumn()
{
- int column = findColumn(m_pressed_pos);
+ /*int column = findColumn(m_pressed_pos);
if(column < 0 && m_pressed_pos.x() > m_rects.last().right())
column = m_model->count();
else if(column < 0 && m_pressed_pos.x() < m_rects.first().x())
@@ -227,7 +255,7 @@ void PlayListHeader::addColumn()
if(column < 0)
return;
- m_model->execInsert(column);
+ m_model->execInsert(column);*/
}
void PlayListHeader::editColumn()
@@ -251,15 +279,22 @@ void PlayListHeader::setAutoResize(bool yes)
if(m_pressed_column < 0)
return;
- //m_model->setAutoResize(yes ? m_pressed_column : -1);
+ if(yes)
+ {
+ for(int i = 0; i < m_columns.count(); ++i)
+ m_columns[i]->autoResize = false;
+ }
+
+ m_columns[m_pressed_column]->autoResize = yes;
}
void PlayListHeader::restoreSize()
{
if(m_pressed_column < 0)
- return;
+ return;
- m_sizes[m_pressed_column] = 100;
+ m_columns[m_pressed_column]->size = 150;
+ updateColumns();
}
void PlayListHeader::mousePressEvent(QMouseEvent *e)
@@ -276,27 +311,27 @@ void PlayListHeader::mousePressEvent(QMouseEvent *e)
if(rtl)
{
- if(e->pos().x() < m_rects[m_pressed_column].x() + m_metrics->width("9"))
+ if(e->pos().x() < m_columns[m_pressed_column]->rect.x() + m_metrics->width("9"))
{
- m_old_size = m_sizes[m_pressed_column];
+ m_old_size = m_columns[m_pressed_column]->size;
m_task = RESIZE;
}
else
{
- m_press_offset = e->pos().x() - m_rects.at(m_pressed_column).x();
+ m_press_offset = e->pos().x() - m_columns[m_pressed_column]->rect.x();
m_task = SORT;
}
}
else
{
- if(e->pos().x() > m_rects[m_pressed_column].right() - m_metrics->width("9"))
+ if(e->pos().x() > m_columns[m_pressed_column]->rect.right() - m_metrics->width("9"))
{
- m_old_size = m_sizes[m_pressed_column];
+ m_old_size = m_columns[m_pressed_column]->size;
m_task = RESIZE;
}
else
{
- m_press_offset = e->pos().x() - m_rects.at(m_pressed_column).x();
+ m_press_offset = e->pos().x() - m_columns[m_pressed_column]->rect.x();
m_task = SORT;
}
}
@@ -330,25 +365,25 @@ void PlayListHeader::mouseMoveEvent(QMouseEvent *e)
if(m_task == RESIZE && m_model->count() > 1)
{
if(rtl)
- m_sizes[m_pressed_column] = m_old_size - e->pos().x() + m_pressed_pos.x();
+ m_columns[m_pressed_column]->size = m_old_size - e->pos().x() + m_pressed_pos.x();
else
- m_sizes[m_pressed_column] = m_old_size + e->pos().x() - m_pressed_pos.x();
+ m_columns[m_pressed_column]->size = m_old_size + e->pos().x() - m_pressed_pos.x();
}
else if(m_task == MOVE)
{
m_mouse_pos = e->pos();
int dest = -1;
- for(int i = 0; i < m_rects.count(); ++i)
+ for(int i = 0; i < m_columns.count(); ++i)
{
- int x_delta = m_mouse_pos.x() - m_rects.at(i).x();
- if(x_delta < 0 || x_delta > m_rects.at(i).width())
+ int x_delta = m_mouse_pos.x() - m_columns[i]->rect.x();
+ if(x_delta < 0 || x_delta > m_columns[i]->rect.width())
continue;
if(rtl)
{
- if((x_delta > m_rects.at(i).width()/2 && m_pressed_column > i) ||
- (x_delta < m_rects.at(i).width()/2 && m_pressed_column < i))
+ if((x_delta > m_columns[i]->rect.width()/2 && m_pressed_column > i) ||
+ (x_delta < m_columns[i]->rect.width()/2 && m_pressed_column < i))
{
dest = i;
break;
@@ -356,8 +391,8 @@ void PlayListHeader::mouseMoveEvent(QMouseEvent *e)
}
else
{
- if((x_delta > m_rects.at(i).width()/2 && m_pressed_column < i) ||
- (x_delta < m_rects.at(i).width()/2 && m_pressed_column > i))
+ if((x_delta > m_columns[i]->rect.width()/2 && m_pressed_column < i) ||
+ (x_delta < m_columns[i]->rect.width()/2 && m_pressed_column > i))
{
dest = i;
break;
@@ -379,14 +414,14 @@ void PlayListHeader::mouseMoveEvent(QMouseEvent *e)
int column = findColumn(e->pos());
if(rtl)
{
- if(column >= 0 && e->pos().x() < m_rects[column].x() + m_metrics->width("9"))
+ if(column >= 0 && e->pos().x() < m_columns[column]->rect.x() + m_metrics->width("9"))
setCursor(Qt::SplitHCursor);
else
setCursor(Qt::ArrowCursor);
}
else
{
- if(column >= 0 && e->pos().x() > m_rects[column].right() - m_metrics->width("9"))
+ if(column >= 0 && e->pos().x() > m_columns[column]->rect.right() - m_metrics->width("9"))
setCursor(Qt::SplitHCursor);
else
setCursor(Qt::ArrowCursor);
@@ -396,13 +431,13 @@ void PlayListHeader::mouseMoveEvent(QMouseEvent *e)
void PlayListHeader::resizeEvent(QResizeEvent *e)
{
- /*if(m_model->count() == 1)
+ if(m_model->count() == 1)
{
updateColumns();
return;
}
- int delta = e->size().width() - e->oldSize().width();
+ /*int delta = e->size().width() - e->oldSize().width();
int index = m_model->autoResizeColumn();
if(index >= 0 && e->oldSize().width() > 10)
@@ -422,10 +457,10 @@ void PlayListHeader::resizeEvent(QResizeEvent *e)
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);
+ m_autoResize->setChecked(m_columns[m_pressed_column]->autoResize);
m_autoResize->setEnabled(true);
foreach (QAction *action, m_menu->actions())
action->setVisible(true);
@@ -439,7 +474,7 @@ void PlayListHeader::contextMenuEvent(QContextMenuEvent *e)
action->setVisible(false);
}
}
- m_menu->exec(e->globalPos());*/
+ m_menu->exec(e->globalPos());
}
void PlayListHeader::paintEvent(QPaintEvent *)
@@ -459,45 +494,45 @@ void PlayListHeader::paintEvent(QPaintEvent *)
{
if(m_number_width)
{
- painter.drawLine(m_rects.at(0).right(), 0,
- m_rects.at(0).right(), height());
+ painter.drawLine(m_columns[0]->rect.right(), 0,
+ m_columns[0]->rect.right(), height());
}
- if(m_names.count() == 1)
+ if(m_columns.count() == 1)
{
- painter.drawText(m_rects[0].right() - m_padding - m_metrics->width(m_names[0]),
- m_metrics->ascent(), m_names[0]);
+ painter.drawText(m_columns[0]->rect.right() - m_padding - m_metrics->width(m_columns[0]->name),
+ m_metrics->ascent(), m_columns[0]->name);
if(m_sorting_column == 0)
{
- painter.drawPixmap(m_rects[0].x() + 4,
+ painter.drawPixmap(m_columns[0]->rect.x() + 4,
(height() - m_arrow_up.height()) / 2,
m_reverted ? m_arrow_up : m_arrow_down);
}
return;
}
- for(int i = 0; i < m_rects.count(); ++i)
+ for(int i = 0; i < m_columns.count(); ++i)
{
if(m_task == MOVE && i == m_pressed_column)
{
painter.setBrush(m_normal_bg);
painter.setPen(m_current);
- painter.drawRect(m_rects[i].x(), 0,
- m_rects[i].width(), height()-1);
+ painter.drawRect(m_columns[i]->rect.x(), 0,
+ m_columns[i]->rect.width(), height()-1);
painter.setBrush(m_normal);
painter.setPen(m_normal_bg);
continue;
}
- painter.drawText(m_rects[i].right() - m_padding - m_metrics->width(m_names[i]),
- m_metrics->ascent(), m_names[i]);
+ painter.drawText(m_columns[i]->rect.right() - m_padding - m_metrics->width(m_columns[i]->name),
+ m_metrics->ascent(), m_columns[i]->name);
- painter.drawLine(m_rects[i].x()-1, 0,
- m_rects[i].x()-1, height()+1);
+ painter.drawLine(m_columns[i]->rect.x()-1, 0,
+ m_columns[i]->rect.x()-1, height()+1);
if(i == m_sorting_column)
{
- painter.drawPixmap(m_rects[i].x() + 4,
+ painter.drawPixmap(m_columns[i]->rect.x() + 4,
(height() - m_arrow_up.height()) / 2,
m_reverted ? m_arrow_up : m_arrow_down);
}
@@ -507,56 +542,56 @@ void PlayListHeader::paintEvent(QPaintEvent *)
{
painter.setPen(m_normal);
painter.drawRect(m_mouse_pos.x() - m_press_offset, 0,
- m_rects.at(m_pressed_column).width(), height());
+ m_columns[m_pressed_column]->rect.width(), height());
painter.setPen(m_normal_bg);
painter.drawText(m_mouse_pos.x() - m_press_offset +
- m_rects.at(m_pressed_column).width() - m_padding -
- m_metrics->width(m_names.at(m_pressed_column)),
- m_metrics->ascent(), m_names.at(m_pressed_column));
+ m_columns[m_pressed_column]->rect.width() - m_padding -
+ m_metrics->width(m_columns[m_pressed_column]->name),
+ m_metrics->ascent(), m_columns[m_pressed_column]->name);
}
}
else
{
if(m_number_width)
{
- painter.drawLine(m_rects.at(0).x(), 0,
- m_rects.at(0).x(), height());
+ painter.drawLine(m_columns[0]->rect.x(), 0,
+ m_columns[0]->rect.x(), height());
}
- if(m_names.count() == 1)
+ if(m_columns.count() == 1)
{
- painter.drawText(m_rects[0].x() + m_padding, m_metrics->ascent(), m_names[0]);
+ painter.drawText(m_columns[0]->rect.x() + m_padding, m_metrics->ascent(), m_columns[0]->name);
if(m_sorting_column == 0)
{
- painter.drawPixmap(m_rects[0].right() - m_arrow_up.width() - 4,
+ painter.drawPixmap(m_columns[0]->rect.right() - m_arrow_up.width() - 4,
(height() - m_arrow_up.height()) / 2,
m_reverted ? m_arrow_up : m_arrow_down);
}
return;
}
- for(int i = 0; i < m_rects.count(); ++i)
+ for(int i = 0; i < m_columns.count(); ++i)
{
if(m_task == MOVE && i == m_pressed_column)
{
painter.setBrush(m_normal_bg);
painter.setPen(m_current);
- painter.drawRect(m_rects[i].x(), 0,
- m_rects[i].width(), height()-1);
+ painter.drawRect(m_columns[i]->rect.x(), 0,
+ m_columns[i]->rect.width(), height()-1);
painter.setBrush(m_normal);
painter.setPen(m_normal_bg);
continue;
}
- painter.drawText(m_rects[i].x() + m_padding, m_metrics->ascent(), m_names[i]);
+ painter.drawText(m_columns[i]->rect.x() + m_padding, m_metrics->ascent(), m_columns[i]->name);
- painter.drawLine(m_rects[i].right()+1, 0,
- m_rects[i].right()+1, height()+1);
+ painter.drawLine(m_columns[i]->rect.right()+1, 0,
+ m_columns[i]->rect.right()+1, height()+1);
if(i == m_sorting_column)
{
- painter.drawPixmap(m_rects[i].right() - m_arrow_up.width() - 4,
+ painter.drawPixmap(m_columns[i]->rect.right() - m_arrow_up.width() - 4,
(height() - m_arrow_up.height()) / 2,
m_reverted ? m_arrow_up : m_arrow_down);
}
@@ -566,11 +601,11 @@ void PlayListHeader::paintEvent(QPaintEvent *)
{
painter.setPen(m_normal);
painter.drawRect(m_mouse_pos.x() - m_press_offset, 0,
- m_rects.at(m_pressed_column).width(), height());
+ m_columns[m_pressed_column]->rect.width(), height());
painter.setPen(m_normal_bg);
painter.drawText(m_mouse_pos.x() - m_press_offset + m_padding,
- m_metrics->ascent(), m_names.at(m_pressed_column));
+ m_metrics->ascent(), m_columns[m_pressed_column]->name);
}
}
}
@@ -593,9 +628,9 @@ void PlayListHeader::loadColors()
int PlayListHeader::findColumn(QPoint pos)
{
- for(int i = 0; i < m_rects.count(); ++i)
+ for(int i = 0; i < m_columns.count(); ++i)
{
- if(m_rects.at(i).contains(pos))
+ if(m_columns[i]->rect.contains(pos))
return i;
}
return -1;
diff --git a/src/plugins/Ui/skinned/playlistheader.h b/src/plugins/Ui/skinned/playlistheader.h
index b773de749..0468fab3f 100644
--- a/src/plugins/Ui/skinned/playlistheader.h
+++ b/src/plugins/Ui/skinned/playlistheader.h
@@ -72,19 +72,36 @@ private:
void loadColors();
int findColumn(QPoint pos);
+ struct Column
+ {
+ Column()
+ {
+ size = 150;
+ minSize = 30;
+ autoResize = false;
+ }
+
+ QString name;
+ int size;
+ int minSize;
+ QRect rect; //geometry
+ bool autoResize;
+ };
+
Skin *m_skin;
QFontMetrics *m_metrics;
QMenu *m_menu;
QFont m_font;
QColor m_normal, m_normal_bg, m_current;
- QList <QRect> m_rects;
- QStringList m_names;
+ //QList <QRect> m_rects;
+ //QStringList m_names;
QPoint m_pressed_pos;
QPoint m_mouse_pos;
PlayListHeaderModel *m_model;
QAction *m_autoResize;
QPixmap m_arrow_up, m_arrow_down;
- QList<int> m_sizes, m_minimal_sizes;
+ //QList<int> m_sizes, m_minimal_sizes;
+ QList<Column*> m_columns;
bool m_reverted;
int m_number_width;
int m_pressed_column;
@@ -93,6 +110,7 @@ private:
int m_padding;
int m_pl_padding;
int m_sorting_column;
+ bool m_update;
enum
{
diff --git a/src/qmmpui/playlistheadermodel.cpp b/src/qmmpui/playlistheadermodel.cpp
index 4c228945d..80943979a 100644
--- a/src/qmmpui/playlistheadermodel.cpp
+++ b/src/qmmpui/playlistheadermodel.cpp
@@ -18,7 +18,6 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
-#include <QSettings>
#include <QApplication>
#include <qmmp/qmmp.h>
#include "columneditor_p.h"
@@ -39,10 +38,54 @@ PlayListHeaderModel::PlayListHeaderModel(QObject *parent) :
PlayListHeaderModel::~PlayListHeaderModel()
{
- sync();
m_columns.clear();
}
+void PlayListHeaderModel::restoreSettings(const QString &groupName)
+{
+ QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
+ settings.beginGroup(groupName);
+ restoreSettings(&settings);
+ settings.endGroup();
+}
+
+void PlayListHeaderModel::restoreSettings(QSettings *settings)
+{
+ QStringList names = settings->value("pl_column_names").toStringList();
+ QStringList patterns = settings->value("pl_column_names").toStringList();
+
+ if(!names.isEmpty() && (names.count() == patterns.count()))
+ {
+ m_columns.clear();
+ for(int i = 0; i < m_columns.count(); ++i)
+ {
+ ColumnHeader h = {names.at(i), patterns.at(i)};
+ m_columns.append(h);
+ }
+ }
+}
+
+void PlayListHeaderModel::saveSettings(const QString &groupName)
+{
+ QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
+ settings.beginGroup(groupName);
+ saveSettings(&settings);
+ settings.endGroup();
+}
+
+void PlayListHeaderModel::saveSettings(QSettings *settings)
+{
+ QStringList names, patterns;
+ for(int i = 0; i < m_columns.count(); ++i)
+ {
+ names << m_columns[i].name;
+ patterns << m_columns[i].pattern;
+ }
+
+ settings->setValue("pl_column_names", names);
+ settings->setValue("pl_column_patterns", patterns);
+}
+
void PlayListHeaderModel::insert(int index, const QString &name, const QString &pattern)
{
if(index < 0 || index > m_columns.size())
@@ -55,7 +98,7 @@ void PlayListHeaderModel::insert(int index, const QString &name, const QString &
col.name = name;
col.pattern = pattern;
m_columns.insert(index, col);
- sync();
+ rebuildFormatters();
emit columnAdded(index);
emit headerChanged();
}
@@ -71,7 +114,7 @@ void PlayListHeaderModel::remove(int index)
if(m_columns.count() == 1)
return;
- sync();
+ rebuildFormatters();
emit columnRemoved(index);
emit headerChanged();
}
@@ -91,6 +134,7 @@ void PlayListHeaderModel::move(int from, int to)
}
m_columns.move(from, to);
+ rebuildFormatters();
emit columnMoved(from, to);
emit headerChanged();
}
@@ -111,6 +155,7 @@ void PlayListHeaderModel::execEdit(int index, QWidget *parent)
{
m_columns[index].name = editor.name();
m_columns[index].pattern = editor.pattern();
+ rebuildFormatters();
emit columnChanged(index);
emit headerChanged();
}
@@ -157,24 +202,10 @@ const QString PlayListHeaderModel::pattern(int index) const
return m_columns[index].pattern;
}
-void PlayListHeaderModel::sync()
+void PlayListHeaderModel::rebuildFormatters()
{
- /*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());
+ QStringList patterns;
for(int i = 0; i < m_columns.count(); ++i)
- {
- s.beginGroup(QString("column%1").arg(i));
- ColumnHeader col = m_columns.at(i);
- s.setValue("name", col.name);
- s.setValue("pattern", col.pattern);
- s.endGroup();
- }
- s.setValue("column_count", m_columns.count());
- for(int i = m_columns.count(); i < old_count; ++i)
- {
- s.remove(QString("column%1").arg(i));
- }
- s.endGroup();*/
+ patterns.append(m_columns[i].pattern);
+ m_helper->setTitleFormats(patterns);
}
diff --git a/src/qmmpui/playlistheadermodel.h b/src/qmmpui/playlistheadermodel.h
index 561151c66..6ce4e8c71 100644
--- a/src/qmmpui/playlistheadermodel.h
+++ b/src/qmmpui/playlistheadermodel.h
@@ -23,6 +23,7 @@
#include <QObject>
#include <QWidget>
+#include <QSettings>
#include "metadataformatter.h"
class MetaDataHelper;
@@ -38,6 +39,11 @@ public:
~PlayListHeaderModel();
+ void restoreSettings(const QString &groupName);
+ void restoreSettings(QSettings *settings);
+ void saveSettings(const QString &groupName);
+ void saveSettings(QSettings *settings);
+
void insert(int index, const QString &name, const QString &pattern);
void remove(int index);
void move(int from, int to);
@@ -57,7 +63,8 @@ signals:
void headerChanged();
private:
- void sync();
+ void rebuildFormatters();
+
struct ColumnHeader
{
QString name;