aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/Ui/skinned/listwidget.cpp1
-rw-r--r--src/plugins/Ui/skinned/playlistheader.cpp21
-rw-r--r--src/plugins/Ui/skinned/playlistheader.h2
-rw-r--r--src/qmmpui/columneditor.cpp8
-rw-r--r--src/qmmpui/columneditor_p.h3
-rw-r--r--src/qmmpui/columnmanager.cpp33
-rw-r--r--src/qmmpui/columnmanager.h3
-rw-r--r--src/qmmpui/forms/columneditor.ui39
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>