aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Ui
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/Ui')
-rw-r--r--src/plugins/Ui/skinned/listwidget.cpp3
-rw-r--r--src/plugins/Ui/skinned/listwidgetdrawer.cpp120
-rw-r--r--src/plugins/Ui/skinned/listwidgetdrawer.h2
-rw-r--r--src/plugins/Ui/skinned/playlistheader.cpp67
-rw-r--r--src/plugins/Ui/skinned/playlistheader.h3
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
};