diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-01-19 15:10:32 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-01-19 15:10:32 +0000 |
| commit | 1781ba9f4822d334efb8a8b9308f81266a2aea01 (patch) | |
| tree | 3900c9da9d413a0a31f164dee8c03a78ff667c92 /src | |
| parent | 7c3e4b7040cf21a11b259571c676e4fc244367ad (diff) | |
| download | qmmp-1781ba9f4822d334efb8a8b9308f81266a2aea01.tar.gz qmmp-1781ba9f4822d334efb8a8b9308f81266a2aea01.tar.bz2 qmmp-1781ba9f4822d334efb8a8b9308f81266a2aea01.zip | |
skinned playlist: added rtl direction support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3175 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
| -rw-r--r-- | src/plugins/Ui/skinned/listwidget.cpp | 81 |
1 files changed, 49 insertions, 32 deletions
diff --git a/src/plugins/Ui/skinned/listwidget.cpp b/src/plugins/Ui/skinned/listwidget.cpp index a327cc127..293cd5786 100644 --- a/src/plugins/Ui/skinned/listwidget.cpp +++ b/src/plugins/Ui/skinned/listwidget.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006-2012 by Ilya Kotov * + * Copyright (C) 2006-2013 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -122,73 +122,90 @@ void ListWidget::loadColors() void ListWidget::paintEvent(QPaintEvent *) { - QPainter m_painter(this); - m_painter.setFont(m_font); - m_painter.setBrush(QBrush(m_normal_bg)); - m_painter.drawRect(-1,-1,width()+1,height()+1); - int font_y = 0; + QPainter painter(this); + painter.setFont(m_font); + painter.setBrush(QBrush(m_normal_bg)); + painter.drawRect(-1,-1,width()+1,height()+1); + painter.setLayoutDirection(Qt::LayoutDirectionAuto); + bool rtl = (layoutDirection() == Qt::RightToLeft); + int sx = 0, sy = 0; for (int i = 0; i < m_titles.size(); ++i ) { if (m_show_anchor && i == m_anchor_row - m_first) { - m_painter.setBrush(m_model->isSelected(i + m_first) ? m_selected_bg : m_normal_bg); - m_painter.setPen(m_normal); - m_painter.drawRect (6, i * (m_metrics->lineSpacing() + 2), + painter.setBrush(m_model->isSelected(i + m_first) ? m_selected_bg : m_normal_bg); + painter.setPen(m_normal); + painter.drawRect (6, i * (m_metrics->lineSpacing() + 2), width() - 10, m_metrics->lineSpacing() + 1); } else { if (m_model->isSelected(i + m_first)) { - m_painter.setBrush(QBrush(m_selected_bg)); - m_painter.setPen(m_selected_bg); - m_painter.drawRect (6, i * (m_metrics->lineSpacing() + 2), + painter.setBrush(QBrush(m_selected_bg)); + painter.setPen(m_selected_bg); + painter.drawRect (6, i * (m_metrics->lineSpacing() + 2), width() - 10, m_metrics->lineSpacing() + 1); } } if (m_model->currentIndex() == i + m_first) - m_painter.setPen(m_current); + painter.setPen(m_current); else - m_painter.setPen(m_normal); //243,58 - - font_y = (i + 1) * (2 + m_metrics->lineSpacing()) - 2 - m_metrics->descent(); - + painter.setPen(m_normal); //243,58 + sy = (i + 1) * (2 + m_metrics->lineSpacing()) - 2 - m_metrics->descent(); if(m_number_width) { QString number = QString("%1").arg(m_first+i+1); - m_painter.drawText(10 + m_number_width - m_metrics->width(number), - font_y, number); - m_painter.drawText(10 + m_number_width + m_metrics->width("9"), font_y, m_titles.at(i)); + sx = 10 + m_number_width - m_metrics->width(number); + if(rtl) + sx = width() - sx - m_metrics->width(number); + painter.drawText(sx, sy, number); + + sx = 10 + m_number_width + m_metrics->width("9"); + if(rtl) + sx = width() - sx - m_metrics->width(m_titles.at(i)); + painter.drawText(sx, sy, m_titles.at(i)); } else - m_painter.drawText(10, font_y, m_titles.at(i)); - + { + sx = rtl ? width() - 10 - m_metrics->width(m_titles.at(i)) : 10; + painter.drawText(sx, sy, m_titles.at(i)); + } QString extra_string = getExtraString(m_first + i); + if(!extra_string.isEmpty()) { - m_painter.setFont(m_extra_font); + painter.setFont(m_extra_font); if(m_times.at(i).isEmpty()) - m_painter.drawText(width() - 7 - m_extra_metrics->width(extra_string), - font_y, extra_string); + { + sx = rtl ? 7 : width() - 7 - m_extra_metrics->width(extra_string); + painter.drawText(sx, sy, extra_string); + } else - m_painter.drawText(width() - 10 - m_extra_metrics->width(extra_string) - - m_metrics->width(m_times.at(i)), font_y, extra_string); - m_painter.setFont(m_font); + { + sx = width() - 10 - m_extra_metrics->width(extra_string) - m_metrics->width(m_times.at(i)); + if(rtl) + sx = width() - sx - m_extra_metrics->width(extra_string); + painter.drawText(sx, sy, extra_string); + } + painter.setFont(m_font); } - m_painter.drawText(width() - 7 - m_metrics->width(m_times.at(i)), font_y, m_times.at(i)); + sx = rtl ? 7 : width() - 7 - m_metrics->width(m_times.at(i)); + painter.drawText(sx, sy, m_times.at(i)); } //draw line if(m_number_width) { - m_painter.setPen(m_normal); - m_painter.drawLine(10 + m_number_width + m_metrics->width("9") / 2 - 1, 2, - 10 + m_number_width + m_metrics->width("9") / 2 - 1, font_y); + painter.setPen(m_normal); + sx = rtl ? width() - 10 - m_number_width - m_metrics->width("9")/2 - 1 : + 10 + m_number_width + m_metrics->width("9")/2 - 1; + painter.drawLine(sx, 2, sx, sy); } } |
