diff options
Diffstat (limited to 'src/plugins')
| -rw-r--r-- | src/plugins/Ui/skinned/listwidget.cpp | 3 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/listwidgetdrawer.cpp | 120 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/listwidgetdrawer.h | 2 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/playlistheader.cpp | 67 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/playlistheader.h | 3 |
5 files changed, 82 insertions, 113 deletions
diff --git a/src/plugins/Ui/skinned/listwidget.cpp b/src/plugins/Ui/skinned/listwidget.cpp index 23aeb3d36..0d979e3d2 100644 --- a/src/plugins/Ui/skinned/listwidget.cpp +++ b/src/plugins/Ui/skinned/listwidget.cpp @@ -31,7 +31,7 @@ #include <qmmpui/playlistitem.h> #include <qmmpui/playlistmodel.h> #include <qmmpui/qmmpuisettings.h> -#include <qmmpui/playlistheadermodel.h> +//#include <qmmpui/playlistheadermodel.h> #include <qmmpui/playlistmanager.h> #include "listwidget.h" #include "playlistheader.h" @@ -335,6 +335,7 @@ void ListWidget::updateList(int flags) { //song numbers width m_drawer.calculateNumberWidth(m_model->trackCount()); + m_drawer.setSingleColumnMode(m_model->columnCount() == 1); m_header->setNumberWidth(m_drawer.numberWidth()); } diff --git a/src/plugins/Ui/skinned/listwidgetdrawer.cpp b/src/plugins/Ui/skinned/listwidgetdrawer.cpp index bf9b92b1f..5856bd4b1 100644 --- a/src/plugins/Ui/skinned/listwidgetdrawer.cpp +++ b/src/plugins/Ui/skinned/listwidgetdrawer.cpp @@ -35,6 +35,7 @@ ListWidgetDrawer::ListWidgetDrawer() m_show_number = false; m_align_numbers = false; m_show_lengths = false; + m_single_column = true; m_row_height = 0; m_number_width = 0; m_padding = 0; @@ -102,9 +103,14 @@ void ListWidgetDrawer::calculateNumberWidth(int count) m_number_width = 0; } +void ListWidgetDrawer::setSingleColumnMode(int enabled) +{ + m_single_column = enabled; +} + void ListWidgetDrawer::prepareRow(ListWidgetRow *row) { - if(m_number_width) + if(m_number_width && m_single_column) row->numberColumnWidth = m_number_width + 2 * m_padding; else row->numberColumnWidth = 0; @@ -112,23 +118,26 @@ void ListWidgetDrawer::prepareRow(ListWidgetRow *row) if(row->flags & ListWidgetRow::GROUP) { row->titles[0] = m_metrics->elidedText (row->titles[0], Qt::ElideRight, - row->rect.width() - m_number_width - 12 - 70); + row->rect.width() - row->numberColumnWidth - 12 - 70); return; } - if(m_show_number && !m_align_numbers) - row->titles[0].prepend(QString("%1").arg(row->number)+". "); + if(row->titles.count() == 1) + { + if(m_show_number && !m_align_numbers) + row->titles[0].prepend(QString("%1").arg(row->number)+". "); - if((m_show_lengths && !row->length.isEmpty()) || !row->extraString.isEmpty()) - row->lengthColumnWidth = m_padding; - else - row->lengthColumnWidth = 0; + if((m_show_lengths && !row->length.isEmpty()) || !row->extraString.isEmpty()) + row->lengthColumnWidth = m_padding; + else + row->lengthColumnWidth = 0; - if(m_show_lengths && !row->length.isEmpty()) - row->lengthColumnWidth += m_metrics->width(row->length) + m_padding; + if(m_show_lengths && !row->length.isEmpty()) + row->lengthColumnWidth += m_metrics->width(row->length) + m_padding; - if(!row->extraString.isEmpty()) - row->lengthColumnWidth += m_extra_metrics->width(row->extraString) + m_padding; + if(!row->extraString.isEmpty()) + row->lengthColumnWidth += m_extra_metrics->width(row->extraString) + m_padding; + } //elide title int visible_width = row->rect.width() - row->lengthColumnWidth - row->numberColumnWidth; @@ -144,17 +153,10 @@ void ListWidgetDrawer::prepareRow(ListWidgetRow *row) return; } - for(int i = 0; i < row->titles.count() && visible_width > 0; ++i) + for(int i = 0; i < row->titles.count(); ++i) { int size = row->sizes[i]; - - if(i == 0 && row->numberColumnWidth) - size -= row->numberColumnWidth; - - int width = qMin(size - 2 * m_padding, - visible_width - 2 * m_padding); - - row->titles[i] = m_metrics->elidedText (row->titles[i], Qt::ElideRight, width); + row->titles[i] = m_metrics->elidedText (row->titles[i], Qt::ElideRight, size - 2 * m_padding); visible_width -= size; } } @@ -204,14 +206,14 @@ void ListWidgetDrawer::drawSeparator(QPainter *painter, ListWidgetRow *row, bool if(rtl) { - painter->drawLine(10, sy, sx - 5, sy); + /*painter->drawLine(10, sy, sx - 5, sy); painter->drawLine(sx + m_metrics->width(row->titles[0]) + 5, sy, row->rect.right() - row->numberColumnWidth - m_padding, sy); if(row->numberColumnWidth) { painter->drawLine(row->rect.right() - row->numberColumnWidth, row->rect.top(), row->rect.right() - row->numberColumnWidth, row->rect.bottom() + 1); - } + }*/ } else { @@ -233,7 +235,7 @@ void ListWidgetDrawer::drawTrack(QPainter *painter, ListWidgetRow *row, bool rtl painter->setFont(m_font); - if(rtl) + /*if(rtl) { //|=duration=extra=|= col2=|= col1=|=number =| if(row->numberColumnWidth) @@ -281,54 +283,52 @@ void ListWidgetDrawer::drawTrack(QPainter *painter, ListWidgetRow *row, bool rtl painter->drawText(sx, sy, row->extraString); } } - else + else*/ { - //|= number=|=col1 =|=col2 =|=extra=duration=| - if(row->numberColumnWidth) + //|= number=|=col1 =|=extra=duration=| + if(row->titles.count() == 1) { - sx += row->numberColumnWidth; - painter->setPen(row->flags & ListWidgetRow::CURRENT ? m_current : m_normal); - QString number = QString("%1").arg(row->number); - painter->drawText(sx - m_padding - m_metrics->width(number), sy, number); - painter->setPen(m_normal); - painter->drawLine(sx, row->rect.top(), sx, row->rect.bottom() + 1); - } + if(row->numberColumnWidth) + { + sx += row->numberColumnWidth; + painter->setPen(row->flags & ListWidgetRow::CURRENT ? m_current : m_normal); + QString number = QString("%1").arg(row->number); + painter->drawText(sx - m_padding - m_metrics->width(number), sy, number); + painter->setPen(m_normal); + painter->drawLine(sx, row->rect.top(), sx, row->rect.bottom() + 1); + } - for(int i = 0; i < row->sizes.count(); i++) - { - if(sx + m_padding >= row->rect.right() - row->lengthColumnWidth) - break; - int size = row->sizes[i]; - if(i == 0 && row->numberColumnWidth) - size -= row->numberColumnWidth; + painter->setPen(row->flags & ListWidgetRow::CURRENT ? m_current : m_normal); + painter->drawText(sx + m_padding, sy, row->titles[0]); + sx = row->rect.right() - m_padding; painter->setPen(row->flags & ListWidgetRow::CURRENT ? m_current : m_normal); - painter->drawText(sx + m_padding, sy, row->titles[i]); - sx += size; - if(row->titles.count() > 1 && sx < row->rect.right() - row->lengthColumnWidth) + if(m_show_lengths && !row->length.isEmpty()) { - painter->setPen(m_normal); - painter->drawLine(sx, row->rect.top(), sx, row->rect.bottom() + 1); + sx -= m_metrics->width(row->length); + painter->drawText(sx, sy, row->length); + sx -= m_padding; } - } - sx = row->rect.right() - m_padding; - painter->setPen(row->flags & ListWidgetRow::CURRENT ? m_current : m_normal); - - if(m_show_lengths && !row->length.isEmpty()) - { - sx -= m_metrics->width(row->length); - painter->drawText(sx, sy, row->length); - sx -= m_padding; + if(!row->extraString.isEmpty()) + { + sx -= m_extra_metrics->width(row->extraString); + painter->setFont(m_extra_font); + painter->drawText(sx, sy, row->extraString); + } } - - if(!row->extraString.isEmpty()) + else { - sx -= m_extra_metrics->width(row->extraString); - painter->setFont(m_extra_font); - painter->drawText(sx, sy, row->extraString); + for(int i = 0; i < row->sizes.count(); i++) + { + painter->setPen(row->flags & ListWidgetRow::CURRENT ? m_current : m_normal); + painter->drawText(sx + m_padding, sy, row->titles[i]); + sx += row->sizes[i]; + painter->setPen(m_normal); + painter->drawLine(sx, row->rect.top(), sx, row->rect.bottom() + 1); + } } } } diff --git a/src/plugins/Ui/skinned/listwidgetdrawer.h b/src/plugins/Ui/skinned/listwidgetdrawer.h index 3cf93b979..56375765b 100644 --- a/src/plugins/Ui/skinned/listwidgetdrawer.h +++ b/src/plugins/Ui/skinned/listwidgetdrawer.h @@ -74,6 +74,7 @@ public: int rowHeight() const; int numberWidth() const; void calculateNumberWidth(int count); + void setSingleColumnMode(int enabled); void prepareRow(ListWidgetRow *row); void fillBackground(QPainter *painter, int width, int height); void drawBackground(QPainter *painter, ListWidgetRow *row); @@ -92,6 +93,7 @@ private: bool m_show_anchor; bool m_align_numbers; bool m_show_lengths; + bool m_single_column; int m_padding; int m_number_width; int m_row_height; diff --git a/src/plugins/Ui/skinned/playlistheader.cpp b/src/plugins/Ui/skinned/playlistheader.cpp index a1449e0a7..aed217e26 100644 --- a/src/plugins/Ui/skinned/playlistheader.cpp +++ b/src/plugins/Ui/skinned/playlistheader.cpp @@ -39,7 +39,7 @@ #include "playlistheader.h" #define INITAL_SIZE 150 -#define INITAL_MIN_SIZE 30 +#define MIN_SIZE 30 static const char * const skinned_arrow_down_xpm[] = { "11 6 2 1", @@ -88,7 +88,7 @@ PlayListHeader::PlayListHeader(QWidget *parent) : connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSkin())); connect(m_model, SIGNAL(columnAdded(int)), SLOT(onColumnAdded(int))); connect(m_model, SIGNAL(columnRemoved(int)), SLOT(updateColumns())); - connect(m_model, SIGNAL(columnMoved(int,int)), SLOT(onColumnMoved(int,int))); + connect(m_model, SIGNAL(columnMoved(int,int)), SLOT(updateColumns())); connect(m_model, SIGNAL(columnChanged(int)), SLOT(updateColumns())); loadColors(); readSettings(); @@ -129,7 +129,6 @@ void PlayListHeader::readSettings() for(int i = 0; i < m_model->count(); ++i) { m_model->setData(i, SIZE, INITAL_SIZE); - m_model->setData(i, MIN_SIZE, INITAL_MIN_SIZE); if(i < sizes.count()) m_model->setData(i, SIZE, sizes.at(i).toInt()); @@ -145,17 +144,11 @@ void PlayListHeader::readSettings() void PlayListHeader::setNumberWidth(int width) { - m_model->setData(0, MIN_SIZE, INITAL_MIN_SIZE + (width ? (width + 2 * m_pl_padding) : 0)); - int s = qMax(size(0), minSize(0)); - - for(int i = 1; i < m_model->count(); ++i) //restore mimimal size for other columns - m_model->setData(i, MIN_SIZE, 30); - - if(width != m_number_width || s != size(0)) + if(width != m_number_width) { m_number_width = width; - m_model->setData(0, SIZE, s); - updateColumns(); + if(m_model->count() == 1) + updateColumns(); } } @@ -164,11 +157,13 @@ void PlayListHeader::updateColumns() bool rtl = (layoutDirection() == Qt::RightToLeft); int sx = 5; - if(m_number_width) - sx += m_number_width + 2 * m_pl_padding; + if(m_model->count() == 1) { + if(m_number_width) + sx += m_number_width + 2 * m_pl_padding; + m_model->setData(0, RECT, rtl ? QRect(5, 0, width() - sx - 5, height()) : QRect(sx, 0, width() - sx - 5, height())); QRect rect = m_model->data(0, RECT).toRect(); if(m_sorting_column == 0) @@ -188,10 +183,6 @@ void PlayListHeader::updateColumns() { int size = m_model->data(i, SIZE).toInt(); - //add number width to the first column - if(i == 0 && m_number_width) - size -= m_number_width + 2 * m_pl_padding; - if(rtl) m_model->setData(i, RECT, QRect(width() - sx - size, 0, size, height())); else @@ -314,23 +305,6 @@ void PlayListHeader::restoreSize() void PlayListHeader::onColumnAdded(int index) { m_model->setData(index, SIZE, INITAL_SIZE); - m_model->setData(index, MIN_SIZE, INITAL_MIN_SIZE); - updateColumns(); -} - -void PlayListHeader::onColumnMoved(int from, int to) -{ - //correct geometry - if(from == 0 && m_number_width) - { - setSize(from, size(from) + (m_number_width + 2 * m_pl_padding)); - setSize(to, size(to) - (m_number_width + 2 * m_pl_padding)); - } - else if(to == 0 && m_number_width) - { - setSize(from, size(from) - (m_number_width + 2 * m_pl_padding)); - setSize(to, size(to) + (m_number_width + 2 * m_pl_padding)); - } updateColumns(); } @@ -405,7 +379,7 @@ void PlayListHeader::mouseMoveEvent(QMouseEvent *e) setSize(m_pressed_column, m_old_size - e->pos().x() + m_pressed_pos.x()); else setSize(m_pressed_column, m_old_size + e->pos().x() - m_pressed_pos.x()); - setSize(m_pressed_column, qMax(size(m_pressed_column), minSize(m_pressed_column))); + setSize(m_pressed_column, qMax(size(m_pressed_column), MIN_SIZE)); updateColumns(); emit resizeColumnRequest(); } @@ -492,7 +466,7 @@ void PlayListHeader::resizeEvent(QResizeEvent *e) if(index >= 0 && e->oldSize().width() > 10) { - setSize(index, qMax(minSize(index), size(index) + delta)); + setSize(index, qMax(MIN_SIZE, size(index) + delta)); updateColumns(); return; } @@ -542,7 +516,7 @@ void PlayListHeader::paintEvent(QPaintEvent *) if(rtl) { - QRect rect = m_model->data(0, RECT).toRect(); + /*QRect rect = m_model->data(0, RECT).toRect(); if(m_number_width) { @@ -600,19 +574,19 @@ void PlayListHeader::paintEvent(QPaintEvent *) m_model->data(m_pressed_column, RECT).toRect().width() - m_padding - m_metrics->width(m_model->data(m_pressed_column, NAME).toString()), m_metrics->ascent(), m_model->data(m_pressed_column, NAME).toString()); - } + }*/ } else { QRect rect = m_model->data(0, RECT).toRect(); - if(m_number_width) - { - painter.drawLine(rect.x(), 0, rect.x(), height()); - } - if(m_model->count() == 1) { + if(m_number_width) + { + painter.drawLine(rect.x(), 0, rect.x(), height()); + } + painter.drawText(rect.x() + m_padding, m_metrics->ascent(), name(0)); if(m_sorting_column == 0) { @@ -698,11 +672,6 @@ void PlayListHeader::setSize(int index, int size) m_model->setData(index, SIZE, size); } -int PlayListHeader::minSize(int index) const -{ - return m_model->data(index, MIN_SIZE).toInt(); -} - const QString PlayListHeader::name(int index) const { return m_model->data(index, NAME).toString(); diff --git a/src/plugins/Ui/skinned/playlistheader.h b/src/plugins/Ui/skinned/playlistheader.h index 683d24488..6ef3e4825 100644 --- a/src/plugins/Ui/skinned/playlistheader.h +++ b/src/plugins/Ui/skinned/playlistheader.h @@ -65,7 +65,6 @@ private slots: void setAutoResize(bool yes); void restoreSize(); void onColumnAdded(int index); - void onColumnMoved(int from, int to); private: void mousePressEvent(QMouseEvent *e); @@ -78,7 +77,6 @@ private: int findColumn(QPoint pos); int size(int index) const; void setSize(int index, int size); - int minSize(int index) const; const QString name(int index) const; void writeSettings(); @@ -86,7 +84,6 @@ private: { NAME = 0, SIZE, - MIN_SIZE, RECT, //geometry AUTO_RESIZE }; |
