diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-03-01 15:08:49 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-03-01 15:08:49 +0000 |
| commit | e18b6477301b7c30c99741c344b677630ff6e452 (patch) | |
| tree | 5a0024a6772b84ca1f5b005d34e489936a4aa6ec | |
| parent | 9b20171e567bb04cb34b5f2f4af28f0fef42070c (diff) | |
| download | qmmp-e18b6477301b7c30c99741c344b677630ff6e452.tar.gz qmmp-e18b6477301b7c30c99741c344b677630ff6e452.tar.bz2 qmmp-e18b6477301b7c30c99741c344b677630ff6e452.zip | |
fixed regressions
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4752 90c681e8-e032-0410-971d-27865f9a5e38
| -rw-r--r-- | src/plugins/Ui/skinned/listwidget.cpp | 4 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/listwidgetdrawer.cpp | 57 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/listwidgetdrawer.h | 1 | ||||
| -rw-r--r-- | src/qmmpui/columnmanager.cpp | 14 | ||||
| -rw-r--r-- | src/qmmpui/columnmanager.h | 3 |
5 files changed, 71 insertions, 8 deletions
diff --git a/src/plugins/Ui/skinned/listwidget.cpp b/src/plugins/Ui/skinned/listwidget.cpp index 6dbdafc90..62051f16f 100644 --- a/src/plugins/Ui/skinned/listwidget.cpp +++ b/src/plugins/Ui/skinned/listwidget.cpp @@ -174,8 +174,8 @@ void ListWidget::mousePressEvent(QMouseEvent *e) { if(m_popupWidget) m_popupWidget->hide(); - int y = e->y(); - int index = indexAt(y); + + int index = indexAt(e->y()); if (INVALID_INDEX != index && m_model->count() > index) { diff --git a/src/plugins/Ui/skinned/listwidgetdrawer.cpp b/src/plugins/Ui/skinned/listwidgetdrawer.cpp index 07de62cfa..6f4ac55f2 100644 --- a/src/plugins/Ui/skinned/listwidgetdrawer.cpp +++ b/src/plugins/Ui/skinned/listwidgetdrawer.cpp @@ -22,6 +22,7 @@ #include <QPainter> #include <QApplication> #include <qmmp/qmmp.h> +#include <qmmpui/qmmpuisettings.h> #include "skin.h" #include "listwidgetdrawer.h" @@ -82,6 +83,30 @@ int ListWidgetDrawer::rowHeight() const return m_row_height; } +int ListWidgetDrawer::columnAt(int x, ListWidgetRow *row) const +{ + if(row->flags & ListWidgetRow::GROUP) + return -1; + + int offset = 0; + for(int i = 0; i < QmmpUiSettings::instance()->columnManager()->count() - 1; i++) + { + offset += QmmpUiSettings::instance()->columnManager()->size(i); + if(x > row->x[ListWidgetRow::TITLE] + offset - m_metrics->width("9")/2 && + x < row->x[ListWidgetRow::TITLE] + offset + m_metrics->width("9")/2) + { + return i; + } + + /*if(i = QmmpUiSettings::instance()->columnManager()->count() - 1) + { + painter->drawLine(row->x[ListWidgetRow::TITLE] + offset - m_metrics->width("9")/2, row->rect.top(), + row->x[ListWidgetRow::TITLE] + offset - m_metrics->width("9")/2, row->rect.bottom() + 1); + }*/ + } + return -1; +} + void ListWidgetDrawer::calculateNumberWidth(int count) { //song numbers width @@ -126,9 +151,23 @@ void ListWidgetDrawer::prepareRow(ListWidgetRow *row) } //elide title - int title_width = row->x[ListWidgetRow::EXTRA_STRING] - row->x[ListWidgetRow::TITLE] - + int visible_width = row->x[ListWidgetRow::EXTRA_STRING] - row->x[ListWidgetRow::TITLE] - m_metrics->width("9"); - row->titles[0] = m_metrics->elidedText (row->titles[0], Qt::ElideRight, title_width); + + int offset = 0; + for(int i = 0; i < row->titles.count(); ++i) + { + int width = qMin(QmmpUiSettings::instance()->columnManager()->size(i) - m_metrics->width(9), + visible_width - offset); + if(i == row->titles.count() - 1) + width = visible_width - offset; + + if(width <= 0) + break; + row->titles[i] = m_metrics->elidedText (row->titles[i], Qt::ElideRight, width); + offset += QmmpUiSettings::instance()->columnManager()->size(i); + } + //row->titles[0] = m_metrics->elidedText (row->titles[0], Qt::ElideRight, title_width); } void ListWidgetDrawer::fillBackground(QPainter *painter, int width, int height) @@ -200,7 +239,19 @@ void ListWidgetDrawer::drawTrack(QPainter *painter, ListWidgetRow *row) QString number = QString("%1").arg(row->number); painter->drawText(row->x[ListWidgetRow::NUMBER], sy, number); } - painter->drawText(row->x[ListWidgetRow::TITLE], sy, row->titles[0]); + + int offset = 0; + for(int i = 0; i < QmmpUiSettings::instance()->columnManager()->count(); i++) + { + painter->drawText(row->x[ListWidgetRow::TITLE] + offset, sy, row->titles[i]); + offset += QmmpUiSettings::instance()->columnManager()->size(i); + + if(i != QmmpUiSettings::instance()->columnManager()->count() - 1) + { + painter->drawLine(row->x[ListWidgetRow::TITLE] + offset - m_metrics->width("9")/2, row->rect.top(), + row->x[ListWidgetRow::TITLE] + offset - m_metrics->width("9")/2, row->rect.bottom() + 1); + } + } QString extra_string = row->extraString; diff --git a/src/plugins/Ui/skinned/listwidgetdrawer.h b/src/plugins/Ui/skinned/listwidgetdrawer.h index 537becc22..2f3028e37 100644 --- a/src/plugins/Ui/skinned/listwidgetdrawer.h +++ b/src/plugins/Ui/skinned/listwidgetdrawer.h @@ -74,6 +74,7 @@ public: void readSettings(); void loadColors(); int rowHeight() const; + int columnAt(int x, ListWidgetRow *row) const; void calculateNumberWidth(int count); void prepareRow(ListWidgetRow *row); void fillBackground(QPainter *painter, int width, int height); diff --git a/src/qmmpui/columnmanager.cpp b/src/qmmpui/columnmanager.cpp index fd4e028a0..a806fc749 100644 --- a/src/qmmpui/columnmanager.cpp +++ b/src/qmmpui/columnmanager.cpp @@ -92,6 +92,16 @@ void ColumnManager::execEditor(int index, QWidget *parent) } +int ColumnManager::width() +{ + int width = 0; + for(int i = 0; i < m_columns.count(); ++i) + { + width += m_columns[i].size; + } + return width; +} + int ColumnManager::count() { return m_columns.count(); @@ -114,7 +124,7 @@ int ColumnManager::size(int index) const qWarning("ColumnManager: index is out of range"); return 0; } - return m_columns.count(); + return m_columns[index].size; } const QString ColumnManager::name(int index) const @@ -148,7 +158,7 @@ void ColumnManager::sync() Column col = m_columns.at(i); s.setValue("name", col.name); s.setValue("pattern", col.pattern); - s.value("size", col.size).toInt(); + s.setValue("size", col.size); s.endGroup(); } s.setValue("column_count", m_columns.count()); diff --git a/src/qmmpui/columnmanager.h b/src/qmmpui/columnmanager.h index 587480bb4..da0dedb04 100644 --- a/src/qmmpui/columnmanager.h +++ b/src/qmmpui/columnmanager.h @@ -40,6 +40,7 @@ public: void remove(int index); void resize(int index, int size); void execEditor(int index, QWidget *parent = 0); + int width(); int count(); const MetaDataFormatter* titleFormatter(int index) const; @@ -60,7 +61,7 @@ private: { QString name; QString pattern; - QString size; + int size; MetaDataFormatter *titleFormatter; }; QList<Column> m_columns; |
