diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-07-01 11:28:20 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-07-01 11:28:20 +0000 |
| commit | 98df400e14cca21ac151c749ed91fb1f415b147a (patch) | |
| tree | e79e019bb785f494e66d0f82a8e5a2aee5e6ab0a /src/plugins/Ui/skinned/playlistheader.cpp | |
| parent | f19c54c167659d8476f445b5c22a5e5237b50c93 (diff) | |
| download | qmmp-98df400e14cca21ac151c749ed91fb1f415b147a.tar.gz qmmp-98df400e14cca21ac151c749ed91fb1f415b147a.tar.bz2 qmmp-98df400e14cca21ac151c749ed91fb1f415b147a.zip | |
skinned: added feature to adjust columns
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@5191 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Ui/skinned/playlistheader.cpp')
| -rw-r--r-- | src/plugins/Ui/skinned/playlistheader.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/plugins/Ui/skinned/playlistheader.cpp b/src/plugins/Ui/skinned/playlistheader.cpp index aed217e26..20fbe108d 100644 --- a/src/plugins/Ui/skinned/playlistheader.cpp +++ b/src/plugins/Ui/skinned/playlistheader.cpp @@ -39,6 +39,7 @@ #include "playlistheader.h" #define INITAL_SIZE 150 +#define MAX_COLUMNS 7 #define MIN_SIZE 30 static const char * const skinned_arrow_down_xpm[] = { @@ -298,6 +299,7 @@ void PlayListHeader::restoreSize() return; m_model->setData(m_pressed_column, SIZE, INITAL_SIZE); + adjustColumns(); updateColumns(); emit resizeColumnRequest(); } @@ -305,6 +307,7 @@ void PlayListHeader::restoreSize() void PlayListHeader::onColumnAdded(int index) { m_model->setData(index, SIZE, INITAL_SIZE); + adjustColumns(); updateColumns(); } @@ -380,6 +383,9 @@ void PlayListHeader::mouseMoveEvent(QMouseEvent *e) else setSize(m_pressed_column, m_old_size + e->pos().x() - m_pressed_pos.x()); setSize(m_pressed_column, qMax(size(m_pressed_column), MIN_SIZE)); + + adjustColumns(); + updateColumns(); emit resizeColumnRequest(); } @@ -467,6 +473,13 @@ void PlayListHeader::resizeEvent(QResizeEvent *e) if(index >= 0 && e->oldSize().width() > 10) { setSize(index, qMax(MIN_SIZE, size(index) + delta)); + adjustColumns(); + updateColumns(); + return; + } + + if(adjustColumns()) + { updateColumns(); return; } @@ -677,6 +690,30 @@ const QString PlayListHeader::name(int index) const return m_model->data(index, NAME).toString(); } +bool PlayListHeader::adjustColumns() +{ + int total_size = 0; + foreach (int s, sizes()) + { + total_size += s; + } + + if(total_size > width() - 10) + { + int delta = total_size - width() + 10; + for(int i = m_model->count() - 1; i >= 0 && delta > 0; i--) + { + int dx = size(i) - qMax(MIN_SIZE, size(i) - delta); + setSize(i, qMax(MIN_SIZE, size(i) - delta)); + delta -= dx; + } + updateColumns(); + return true; + } + + return false; +} + void PlayListHeader::writeSettings() { QSettings settings(Qmmp::configFile(), QSettings::IniFormat); |
