diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-04-06 19:05:40 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-04-06 19:05:40 +0000 |
| commit | 87ddc7354f4c9f50e2363f9620360479165373b1 (patch) | |
| tree | bfe2e5450f5ce3f4b85ee6c6af4fd34ac1754d96 /src | |
| parent | b4f09093f3557f4cea6acb73bddc3e2962b5045a (diff) | |
| download | qmmp-87ddc7354f4c9f50e2363f9620360479165373b1.tar.gz qmmp-87ddc7354f4c9f50e2363f9620360479165373b1.tar.bz2 qmmp-87ddc7354f4c9f50e2363f9620360479165373b1.zip | |
added auto resize feature
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4819 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
| -rw-r--r-- | src/plugins/Ui/skinned/listwidget.cpp | 1 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/playlistheader.cpp | 21 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/playlistheader.h | 2 | ||||
| -rw-r--r-- | src/qmmpui/columneditor.cpp | 8 | ||||
| -rw-r--r-- | src/qmmpui/columneditor_p.h | 3 | ||||
| -rw-r--r-- | src/qmmpui/columnmanager.cpp | 33 | ||||
| -rw-r--r-- | src/qmmpui/columnmanager.h | 3 | ||||
| -rw-r--r-- | src/qmmpui/forms/columneditor.ui | 39 |
8 files changed, 97 insertions, 13 deletions
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<PlayListItem *> 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<int> 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<int> ColumnManager::autoResizeColumns() const +{ + QList<int> 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<int> autoResizeColumns() const; signals: void inserted(int index); @@ -62,6 +64,7 @@ private: QString name; QString pattern; int size; + bool autoResize; MetaDataFormatter *titleFormatter; }; QList<Column> 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 @@ <rect> <x>0</x> <y>0</y> - <width>440</width> - <height>152</height> + <width>382</width> + <height>192</height> </rect> </property> <property name="windowTitle"> <string>Edit Column</string> </property> <layout class="QFormLayout" name="formLayout"> + <property name="fieldGrowthPolicy"> + <enum>QFormLayout::AllNonFixedFieldsGrow</enum> + </property> <property name="leftMargin"> <number>6</number> </property> @@ -23,6 +26,16 @@ <property name="bottomMargin"> <number>6</number> </property> + <item row="0" column="0"> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>Type:</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QComboBox" name="comboBox"/> + </item> <item row="1" column="0"> <widget class="QLabel" name="label"> <property name="text"> @@ -57,7 +70,7 @@ </item> </layout> </item> - <item row="4" column="0" colspan="2"> + <item row="7" column="0" colspan="2"> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> <enum>Qt::Horizontal</enum> @@ -67,15 +80,25 @@ </property> </widget> </item> - <item row="0" column="0"> - <widget class="QLabel" name="label_2"> + <item row="5" column="0" colspan="2"> + <widget class="QCheckBox" name="autoResizeCheckBox"> <property name="text"> - <string>Type:</string> + <string>Auto-scale column with window size</string> </property> </widget> </item> - <item row="0" column="1"> - <widget class="QComboBox" name="comboBox"/> + <item row="6" column="0"> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> </item> </layout> </widget> |
