From 87ddc7354f4c9f50e2363f9620360479165373b1 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Mon, 6 Apr 2015 19:05:40 +0000 Subject: added auto resize feature git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4819 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/Ui/skinned/listwidget.cpp | 1 + src/plugins/Ui/skinned/playlistheader.cpp | 21 ++++++++++++++++- src/plugins/Ui/skinned/playlistheader.h | 2 +- src/qmmpui/columneditor.cpp | 8 ++++++- src/qmmpui/columneditor_p.h | 3 ++- src/qmmpui/columnmanager.cpp | 33 +++++++++++++++++++++++++- src/qmmpui/columnmanager.h | 3 +++ src/qmmpui/forms/columneditor.ui | 39 ++++++++++++++++++++++++------- 8 files changed, 97 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/plugins/Ui/skinned/listwidget.cpp b/src/plugins/Ui/skinned/listwidget.cpp index 4912258d3..d1cfb4e1a 100644 --- a/src/plugins/Ui/skinned/listwidget.cpp +++ b/src/plugins/Ui/skinned/listwidget.cpp @@ -397,6 +397,7 @@ void ListWidget::updateList(int flags) void ListWidget::updateColumns() { + qDebug("++"); m_header->updateColumns(); QList items = m_model->mid(m_first, m_row_count); for(int i = 0; i < items.count(); ++i) diff --git a/src/plugins/Ui/skinned/playlistheader.cpp b/src/plugins/Ui/skinned/playlistheader.cpp index eb53eef8c..250ad4ff5 100644 --- a/src/plugins/Ui/skinned/playlistheader.cpp +++ b/src/plugins/Ui/skinned/playlistheader.cpp @@ -239,10 +239,29 @@ void PlayListHeader::mouseMoveEvent(QMouseEvent *e) } } -void PlayListHeader::resizeEvent(QResizeEvent *) +void PlayListHeader::resizeEvent(QResizeEvent *e) { if(m_manager->count() == 1) + { updateColumns(); + return; + } + + if(e->oldSize().width() <= 10) + return; + + int delta = e->size().width() - e->oldSize().width(); + QList c = m_manager->autoResizeColumns(); + if(c.isEmpty()) + return; + + for(int i = 0; i < c.count(); ++i) + { + m_manager->resize(c[i], m_manager->size(c[i]) + delta/c.count()); + } + + //m_manager->resize(0, m_manager->size(0) + (e->size().width() - e->oldSize().width())/2); + //m_manager->resize(1, m_manager->size(1) + (e->size().width() - e->oldSize().width())/2); } void PlayListHeader::contextMenuEvent(QContextMenuEvent *e) diff --git a/src/plugins/Ui/skinned/playlistheader.h b/src/plugins/Ui/skinned/playlistheader.h index b405d2ebf..e563aefb3 100644 --- a/src/plugins/Ui/skinned/playlistheader.h +++ b/src/plugins/Ui/skinned/playlistheader.h @@ -55,7 +55,7 @@ private: void mousePressEvent(QMouseEvent *e); void mouseReleaseEvent(QMouseEvent *); void mouseMoveEvent(QMouseEvent *e); - void resizeEvent(QResizeEvent *); + void resizeEvent(QResizeEvent *e); void contextMenuEvent(QContextMenuEvent *e); void paintEvent(QPaintEvent *); void loadColors(); diff --git a/src/qmmpui/columneditor.cpp b/src/qmmpui/columneditor.cpp index 6afef43b9..f41258f09 100644 --- a/src/qmmpui/columneditor.cpp +++ b/src/qmmpui/columneditor.cpp @@ -22,7 +22,7 @@ #include "columneditor_p.h" #include "ui_columneditor.h" -ColumnEditor::ColumnEditor(const QString &name, const QString &patt, QWidget *parent) : +ColumnEditor::ColumnEditor(const QString &name, const QString &patt, bool autoResize, QWidget *parent) : QDialog(parent), m_ui(new Ui::ColumnEditor) { @@ -33,6 +33,7 @@ ColumnEditor::ColumnEditor(const QString &name, const QString &patt, QWidget *pa //load inital values m_ui->nameLineEdit->setText(name); m_ui->formatLineEdit->setText(patt); + m_ui->autoResizeCheckBox->setChecked(autoResize); } ColumnEditor::~ColumnEditor() @@ -50,6 +51,11 @@ QString ColumnEditor::pattern() const return m_ui->formatLineEdit->text(); } +bool ColumnEditor::autoResize() const +{ + return m_ui->autoResizeCheckBox->isChecked(); +} + void ColumnEditor::insertExpression(QAction *a) { if (m_ui->formatLineEdit->cursorPosition () < 1) diff --git a/src/qmmpui/columneditor_p.h b/src/qmmpui/columneditor_p.h index dc6a2815c..48e39158e 100644 --- a/src/qmmpui/columneditor_p.h +++ b/src/qmmpui/columneditor_p.h @@ -34,11 +34,12 @@ class ColumnEditor : public QDialog { Q_OBJECT public: - explicit ColumnEditor(const QString &name, const QString &patt, QWidget *parent = 0); + explicit ColumnEditor(const QString &name, const QString &patt, bool autoResize, QWidget *parent = 0); ~ColumnEditor(); QString name() const; QString pattern() const; + bool autoResize() const; private slots: void insertExpression(QAction *a); diff --git a/src/qmmpui/columnmanager.cpp b/src/qmmpui/columnmanager.cpp index 8da0e5c0a..95c0bb768 100644 --- a/src/qmmpui/columnmanager.cpp +++ b/src/qmmpui/columnmanager.cpp @@ -38,6 +38,7 @@ ColumnManager::ColumnManager(QObject *parent) : col.pattern = s.value("pattern", "%p%if(%p&%t, - ,)%t").toString(); col.size = s.value("size", 150).toInt(); col.titleFormatter = new MetaDataFormatter(col.pattern); + col.autoResize = s.value("autoresize", false).toBool(); m_columns.append(col); s.endGroup(); } @@ -68,6 +69,7 @@ void ColumnManager::insert(int index, const QString &name, const QString &patter col.pattern = pattern; col.titleFormatter = new MetaDataFormatter(pattern); col.size = 50; + col.autoResize = false; m_columns.insert(index, col); sync(); emit inserted(index); @@ -102,6 +104,21 @@ void ColumnManager::resize(int index, int size) emit resized(index); } +void ColumnManager::setAutoResize(int index, bool autoResize) +{ + if(index < 0 || index >= m_columns.size()) + { + qWarning("ColumnManager: index is out of range"); + return; + } + + if(m_columns[index].autoResize != autoResize) + { + m_columns[index].autoResize = autoResize; + emit changed(index); + } +} + void ColumnManager::move(int from, int to) { if(from < 0 || from >= m_columns.size()) @@ -131,12 +148,14 @@ void ColumnManager::execEditor(int index, QWidget *parent) if(!parent) parent = qApp->activeWindow(); - ColumnEditor editor(m_columns[index].name, m_columns[index].pattern, parent); + ColumnEditor editor(m_columns[index].name, m_columns[index].pattern, + m_columns[index].autoResize, parent); if(editor.exec() == QDialog::Accepted) { m_columns[index].name = editor.name(); m_columns[index].pattern = editor.pattern(); m_columns[index].titleFormatter->setPattern(editor.pattern()); + m_columns[index].autoResize = editor.autoResize(); emit changed(index); } } @@ -185,6 +204,17 @@ const QString ColumnManager::pattern(int index) const return m_columns[index].pattern; } +QList ColumnManager::autoResizeColumns() const +{ + QList columns; + for(int i = 0; i < m_columns.count(); ++i) + { + if(m_columns[i].autoResize) + columns.append(i); + } + return columns; +} + void ColumnManager::sync() { QSettings s (Qmmp::configFile(), QSettings::IniFormat); @@ -198,6 +228,7 @@ void ColumnManager::sync() 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()); diff --git a/src/qmmpui/columnmanager.h b/src/qmmpui/columnmanager.h index 0b709dde6..4a3fd8dda 100644 --- a/src/qmmpui/columnmanager.h +++ b/src/qmmpui/columnmanager.h @@ -39,6 +39,7 @@ 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, bool autoResize); void move(int from, int to); void execEditor(int index, QWidget *parent = 0); @@ -47,6 +48,7 @@ public: int size(int index) const; const QString name(int index) const; const QString pattern(int index) const; + QList autoResizeColumns() const; signals: void inserted(int index); @@ -62,6 +64,7 @@ private: QString name; QString pattern; int size; + bool autoResize; MetaDataFormatter *titleFormatter; }; QList m_columns; diff --git a/src/qmmpui/forms/columneditor.ui b/src/qmmpui/forms/columneditor.ui index 1346b2ec1..3506dff5c 100644 --- a/src/qmmpui/forms/columneditor.ui +++ b/src/qmmpui/forms/columneditor.ui @@ -6,14 +6,17 @@ 0 0 - 440 - 152 + 382 + 192 Edit Column + + QFormLayout::AllNonFixedFieldsGrow + 6 @@ -23,6 +26,16 @@ 6 + + + + Type: + + + + + + @@ -57,7 +70,7 @@ - + Qt::Horizontal @@ -67,15 +80,25 @@ - - + + - Type: + Auto-scale column with window size - - + + + + Qt::Vertical + + + + 20 + 40 + + + -- cgit v1.2.3-13-gbd6f