aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Ui/skinned/listwidgetdrawer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/Ui/skinned/listwidgetdrawer.cpp')
-rw-r--r--src/plugins/Ui/skinned/listwidgetdrawer.cpp120
1 files changed, 60 insertions, 60 deletions
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);
+ }
}
}
}