aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-05-30 19:37:52 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-05-30 19:37:52 +0000
commita3ab27c22481b892faf0e0a64deab2199661cbe5 (patch)
tree60362a2e6e274fe66cefe3b0f4cc0effefc5a216 /src
parent9305a6b6e565c6fc54ab6f13b2d130075580a64f (diff)
downloadqmmp-a3ab27c22481b892faf0e0a64deab2199661cbe5.tar.gz
qmmp-a3ab27c22481b892faf0e0a64deab2199661cbe5.tar.bz2
qmmp-a3ab27c22481b892faf0e0a64deab2199661cbe5.zip
fixed regressions
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@5045 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
-rw-r--r--src/plugins/Ui/skinned/listwidget.cpp20
-rw-r--r--src/plugins/Ui/skinned/listwidget.h1
-rw-r--r--src/plugins/Ui/skinned/playlistheader.cpp50
-rw-r--r--src/plugins/Ui/skinned/playlistheader.h11
-rw-r--r--src/qmmpui/playlistheadermodel.cpp17
-rw-r--r--src/qmmpui/playlistheadermodel.h2
6 files changed, 64 insertions, 37 deletions
diff --git a/src/plugins/Ui/skinned/listwidget.cpp b/src/plugins/Ui/skinned/listwidget.cpp
index 3c92355b7..7f549bf3d 100644
--- a/src/plugins/Ui/skinned/listwidget.cpp
+++ b/src/plugins/Ui/skinned/listwidget.cpp
@@ -56,7 +56,6 @@ ListWidget::ListWidget(QWidget *parent)
m_header = new PlayListHeader(this);
m_update = false;
- m_resize = false;
m_drop_index = INVALID_INDEX;
m_scroll_direction = NONE;
m_prev_y = 0;
@@ -73,7 +72,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(m_header, SIGNAL(resizeColumnRequest()), SLOT(updateColumns()));
SET_ACTION(ActionManager::PL_SHOW_HEADER, this, SLOT(readSettings()));
}
@@ -248,9 +247,7 @@ void ListWidget::mousePressEvent(QMouseEvent *e)
void ListWidget::resizeEvent(QResizeEvent *e)
{
- m_resize = true;
m_header->setGeometry(0,0,width(), m_header->requiredHeight());
- m_resize = false;
m_row_count = (e->size().height() - (m_header->isVisibleTo(this) ? m_header->height() : 0)) / m_drawer.rowHeight();
m_row_count = qMax(m_row_count, 0);
updateList(PlayListModel::STRUCTURE);
@@ -321,9 +318,7 @@ void ListWidget::updateList(int flags)
//song numbers width
m_drawer.calculateNumberWidth(m_model->trackCount());
- m_resize = true;
m_header->setNumberWidth(m_drawer.numberWidth());
- m_resize = false;
items = m_model->mid(m_first, m_row_count);
@@ -391,18 +386,7 @@ void ListWidget::updateList(int flags)
void ListWidget::updateColumns()
{
- if(m_resize) //do no update while resize event
- return;
-
- m_header->updateColumns();
- m_header->hideSortIndicator();
- QList<PlayListItem *> items = m_model->mid(m_first, m_row_count);
- for(int i = 0; i < items.count(); ++i)
- {
- m_rows[i]->titles = items[i]->formattedTitles();
- m_drawer.prepareRow(m_rows[i]); //elide titles
- }
- update();
+ updateList(PlayListModel::METADATA);
}
void ListWidget::autoscroll()
diff --git a/src/plugins/Ui/skinned/listwidget.h b/src/plugins/Ui/skinned/listwidget.h
index 023d318b3..b5f9f6324 100644
--- a/src/plugins/Ui/skinned/listwidget.h
+++ b/src/plugins/Ui/skinned/listwidget.h
@@ -115,7 +115,6 @@ private:
PlayListModel *m_model;
int m_row_count, m_first;
Skin *m_skin;
- bool m_resize;
int m_anchor_index;
/*!
* Scroll direction that is preforming in current moment.
diff --git a/src/plugins/Ui/skinned/playlistheader.cpp b/src/plugins/Ui/skinned/playlistheader.cpp
index d02561299..36cfbbe85 100644
--- a/src/plugins/Ui/skinned/playlistheader.cpp
+++ b/src/plugins/Ui/skinned/playlistheader.cpp
@@ -83,6 +83,10 @@ PlayListHeader::PlayListHeader(QWidget *parent) :
m_menu->addAction(QIcon::fromTheme("list-remove"), tr("Remove Column"), this, SLOT(removeColumn()));
connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSkin()));
+ connect(m_model, SIGNAL(columnAdded(int)), SLOT(onColumnAdded(int)));
+ connect(m_model, SIGNAL(columnRemoved(int)), SLOT(onColumnRemoved(int)));
+ connect(m_model, SIGNAL(columnMoved(int,int)), SLOT(onColumnMoved(int,int)));
+ connect(m_model, SIGNAL(columnChanged(int)), SLOT(updateColumns()));
loadColors();
readSettings();
}
@@ -246,16 +250,16 @@ void PlayListHeader::updateSkin()
void PlayListHeader::addColumn()
{
- /*int column = findColumn(m_pressed_pos);
- if(column < 0 && m_pressed_pos.x() > m_rects.last().right())
+ int column = findColumn(m_pressed_pos);
+ if(column < 0 && m_pressed_pos.x() > m_columns.last()->rect.right())
column = m_model->count();
- else if(column < 0 && m_pressed_pos.x() < m_rects.first().x())
+ else if(column < 0 && m_pressed_pos.x() < m_columns.first()->rect.x())
column = 0;
if(column < 0)
return;
- m_model->execInsert(column);*/
+ m_model->execInsert(column);
}
void PlayListHeader::editColumn()
@@ -295,6 +299,25 @@ void PlayListHeader::restoreSize()
m_columns[m_pressed_column]->size = 150;
updateColumns();
+ resizeColumnRequest();
+}
+
+void PlayListHeader::onColumnAdded(int index)
+{
+ m_columns.insert(index, new Column());
+ updateColumns();
+}
+
+void PlayListHeader::onColumnRemoved(int index)
+{
+ delete m_columns.takeAt(index);
+ updateColumns();
+}
+
+void PlayListHeader::onColumnMoved(int from, int to)
+{
+ m_columns.move(from, to);
+ updateColumns();
}
void PlayListHeader::mousePressEvent(QMouseEvent *e)
@@ -368,6 +391,9 @@ void PlayListHeader::mouseMoveEvent(QMouseEvent *e)
m_columns[m_pressed_column]->size = m_old_size - e->pos().x() + m_pressed_pos.x();
else
m_columns[m_pressed_column]->size = m_old_size + e->pos().x() - m_pressed_pos.x();
+ m_columns[m_pressed_column]->size = qMax(m_columns[m_pressed_column]->size, m_columns[m_pressed_column]->minSize);
+ updateColumns();
+ emit resizeColumnRequest();
}
else if(m_task == MOVE)
{
@@ -437,12 +463,20 @@ void PlayListHeader::resizeEvent(QResizeEvent *e)
return;
}
- /*int delta = e->size().width() - e->oldSize().width();
- int index = m_model->autoResizeColumn();
+ int delta = e->size().width() - e->oldSize().width();
+ int index = -1;
+ for(int i = 0; i < m_columns.count(); ++i)
+ {
+ if(m_columns.at(i)->autoResize)
+ {
+ index = i;
+ break;
+ }
+ }
if(index >= 0 && e->oldSize().width() > 10)
{
- m_model->resize(index, m_model->size(index) + delta);
+ m_columns[index]->size = qMax(m_columns[index]->minSize, m_columns[index]->size + delta);
updateColumns();
return;
}
@@ -451,7 +485,7 @@ void PlayListHeader::resizeEvent(QResizeEvent *e)
{
updateColumns();
return;
- }*/
+ }
}
void PlayListHeader::contextMenuEvent(QContextMenuEvent *e)
diff --git a/src/plugins/Ui/skinned/playlistheader.h b/src/plugins/Ui/skinned/playlistheader.h
index 0468fab3f..b4f4827c4 100644
--- a/src/plugins/Ui/skinned/playlistheader.h
+++ b/src/plugins/Ui/skinned/playlistheader.h
@@ -46,11 +46,14 @@ public:
void readSettings();
void setNumberWidth(int width);
- void updateColumns();
int requiredHeight() const;
QList<int> sizes() const;
+signals:
+ void resizeColumnRequest();
+
public slots:
+ void updateColumns();
void showSortIndicator(int column, bool reverted);
void hideSortIndicator();
@@ -61,6 +64,9 @@ private slots:
void removeColumn();
void setAutoResize(bool yes);
void restoreSize();
+ void onColumnAdded(int index);
+ void onColumnRemoved(int index);
+ void onColumnMoved(int from, int to);
private:
void mousePressEvent(QMouseEvent *e);
@@ -93,14 +99,11 @@ private:
QMenu *m_menu;
QFont m_font;
QColor m_normal, m_normal_bg, m_current;
- //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<Column*> m_columns;
bool m_reverted;
int m_number_width;
diff --git a/src/qmmpui/playlistheadermodel.cpp b/src/qmmpui/playlistheadermodel.cpp
index 80943979a..279aa501e 100644
--- a/src/qmmpui/playlistheadermodel.cpp
+++ b/src/qmmpui/playlistheadermodel.cpp
@@ -19,7 +19,9 @@
***************************************************************************/
#include <QApplication>
+#include <QMetaObject>
#include <qmmp/qmmp.h>
+#include <qmmpui/playlistmanager.h>
#include "columneditor_p.h"
#include "metadatahelper_p.h"
#include "playlistheadermodel.h"
@@ -98,9 +100,9 @@ void PlayListHeaderModel::insert(int index, const QString &name, const QString &
col.name = name;
col.pattern = pattern;
m_columns.insert(index, col);
- rebuildFormatters();
emit columnAdded(index);
emit headerChanged();
+ updatePlayLists();
}
void PlayListHeaderModel::remove(int index)
@@ -114,9 +116,9 @@ void PlayListHeaderModel::remove(int index)
if(m_columns.count() == 1)
return;
- rebuildFormatters();
emit columnRemoved(index);
emit headerChanged();
+ updatePlayLists();
}
void PlayListHeaderModel::move(int from, int to)
@@ -134,9 +136,9 @@ void PlayListHeaderModel::move(int from, int to)
}
m_columns.move(from, to);
- rebuildFormatters();
emit columnMoved(from, to);
emit headerChanged();
+ updatePlayLists();
}
void PlayListHeaderModel::execEdit(int index, QWidget *parent)
@@ -155,9 +157,9 @@ 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();
+ updatePlayLists();
}
}
@@ -202,10 +204,15 @@ const QString PlayListHeaderModel::pattern(int index) const
return m_columns[index].pattern;
}
-void PlayListHeaderModel::rebuildFormatters()
+void PlayListHeaderModel::updatePlayLists()
{
QStringList patterns;
for(int i = 0; i < m_columns.count(); ++i)
patterns.append(m_columns[i].pattern);
m_helper->setTitleFormats(patterns);
+
+ foreach(PlayListModel *model, PlayListManager::instance()->playLists())
+ {
+ QMetaObject::invokeMethod(model, "listChanged", Q_ARG(int, PlayListModel::METADATA));
+ }
}
diff --git a/src/qmmpui/playlistheadermodel.h b/src/qmmpui/playlistheadermodel.h
index 6ce4e8c71..a055fcf9f 100644
--- a/src/qmmpui/playlistheadermodel.h
+++ b/src/qmmpui/playlistheadermodel.h
@@ -63,7 +63,7 @@ signals:
void headerChanged();
private:
- void rebuildFormatters();
+ void updatePlayLists();
struct ColumnHeader
{