From b0f3cdad5de10aed2b2e617950187a5880f2fb1e Mon Sep 17 00:00:00 2001 From: Christophe Dumez Date: Tue, 31 Jul 2007 10:39:03 +0000 Subject: [PATCH] - Improved a lot the download list delegate - Replaced Qt::TextColorRole by Qt::ForegroundRole because it is deprecated --- src/DLListDelegate.h | 53 ++++++++++++-------------------------- src/FinishedListDelegate.h | 2 +- src/FinishedTorrents.cpp | 6 ++--- src/GUI.cpp | 6 ++--- src/PreviewListDelegate.h | 2 +- src/PropListDelegate.h | 4 +-- src/SearchListDelegate.h | 2 +- src/properties_imp.cpp | 2 +- src/searchEngine.cpp | 6 ++--- src/torrentAddition.h | 2 +- 10 files changed, 32 insertions(+), 53 deletions(-) diff --git a/src/DLListDelegate.h b/src/DLListDelegate.h index 7df355989..d21a32b6e 100644 --- a/src/DLListDelegate.h +++ b/src/DLListDelegate.h @@ -50,61 +50,35 @@ class DLListDelegate: public QItemDelegate { ~DLListDelegate(){} void paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const{ - QStyleOptionViewItem opt = option; char tmp[MAX_CHAR_TMP]; - // set text color - QVariant value = index.data(Qt::TextColorRole); - if (value.isValid() && qvariant_cast(value).isValid()){ - opt.palette.setColor(QPalette::Text, qvariant_cast(value)); - } - QPalette::ColorGroup cg = option.state & QStyle::State_Enabled - ? QPalette::Normal : QPalette::Disabled; - if (option.state & QStyle::State_Selected){ - painter->setPen(opt.palette.color(cg, QPalette::HighlightedText)); - }else{ - painter->setPen(opt.palette.color(cg, QPalette::Text)); - } - // draw the background color - if(index.column() != PROGRESS){ - if (option.showDecorationSelected && (option.state & QStyle::State_Selected)){ - if (cg == QPalette::Normal && !(option.state & QStyle::State_Active)){ - cg = QPalette::Inactive; - } - painter->fillRect(option.rect, option.palette.brush(cg, QPalette::Highlight)); - }else{ -// painter->fillRect(option.rect, option.palette.brush(cg, QPalette::Base)); - // The following should work but is broken (retry with future versions of Qt) - QVariant value = index.data(Qt::BackgroundRole); - if (qVariantCanConvert(value)) { - QPointF oldBO = painter->brushOrigin(); - painter->setBrushOrigin(option.rect.topLeft()); - painter->fillRect(option.rect, qvariant_cast(value)); - painter->setBrushOrigin(oldBO); - } - } - } + QStyleOptionViewItemV3 opt = QItemDelegate::setOptions(index, option); switch(index.column()){ case SIZE: - painter->drawText(option.rect, Qt::AlignCenter, misc::friendlyUnit(index.data().toLongLong())); + QItemDelegate::drawBackground(painter, opt, index); + QItemDelegate::drawDisplay(painter, opt, option.rect, misc::friendlyUnit(index.data().toLongLong())); break; case ETA: - painter->drawText(option.rect, Qt::AlignCenter, misc::userFriendlyDuration(index.data().toLongLong())); + QItemDelegate::drawBackground(painter, opt, index); + QItemDelegate::drawDisplay(painter, opt, option.rect, misc::userFriendlyDuration(index.data().toLongLong())); break; case UPSPEED: case DLSPEED:{ + QItemDelegate::drawBackground(painter, opt, index); float speed = index.data().toDouble(); snprintf(tmp, MAX_CHAR_TMP, "%.1f", speed/1024.); - painter->drawText(option.rect, Qt::AlignCenter, QString(tmp)+" "+tr("KiB/s")); + QItemDelegate::drawDisplay(painter, opt, opt.rect, QString(tmp)+" "+tr("KiB/s")); break; } case RATIO:{ + QItemDelegate::drawBackground(painter, opt, index); float ratio = index.data().toDouble(); snprintf(tmp, MAX_CHAR_TMP, "%.1f", ratio); - painter->drawText(option.rect, Qt::AlignCenter, QString(tmp)); + QItemDelegate::drawDisplay(painter, opt, opt.rect, QString(tmp)); break; } case PROGRESS:{ QStyleOptionProgressBarV2 newopt; + QPalette::ColorGroup cg = option.state & QStyle::State_Enabled ? QPalette::Normal : QPalette::Disabled; float progress; progress = index.data().toDouble()*100.; snprintf(tmp, MAX_CHAR_TMP, "%.1f", progress); @@ -122,7 +96,7 @@ class DLListDelegate: public QItemDelegate { opt.palette.setColor(QPalette::Text, QColor("grey")); painter->setPen(opt.palette.color(cg, QPalette::Text)); } - painter->drawText(option.rect, Qt::AlignCenter, newopt.text); + painter->drawText(opt.rect, Qt::AlignCenter, newopt.text); break; } default: @@ -139,6 +113,11 @@ class DLListDelegate: public QItemDelegate { return textRect.size(); } + QWidget* createEditor(QWidget*, const QStyleOptionViewItem &, const QModelIndex &) const { + // No editor here + return 0; + } + }; #endif diff --git a/src/FinishedListDelegate.h b/src/FinishedListDelegate.h index 57cd1cee3..13ed7d50b 100644 --- a/src/FinishedListDelegate.h +++ b/src/FinishedListDelegate.h @@ -51,7 +51,7 @@ class FinishedListDelegate: public QItemDelegate { QStyleOptionViewItem opt = option; char tmp[MAX_CHAR_TMP]; // set text color - QVariant value = index.data(Qt::TextColorRole); + QVariant value = index.data(Qt::ForegroundRole); if (value.isValid() && qvariant_cast(value).isValid()){ opt.palette.setColor(QPalette::Text, qvariant_cast(value)); } diff --git a/src/FinishedTorrents.cpp b/src/FinishedTorrents.cpp index bbbf0cccb..272226778 100644 --- a/src/FinishedTorrents.cpp +++ b/src/FinishedTorrents.cpp @@ -113,7 +113,7 @@ void FinishedTorrents::addFinishedSHA(QString hash){ // Set the color of a row in data model void FinishedTorrents::setRowColor(int row, QString color){ for(int i=0; icolumnCount(); ++i){ - finishedListModel->setData(finishedListModel->index(row, i), QVariant(QColor(color)), Qt::TextColorRole); + finishedListModel->setData(finishedListModel->index(row, i), QVariant(QColor(color)), Qt::ForegroundRole); } } @@ -326,7 +326,7 @@ void FinishedTorrents::sortFinishedListFloat(int index, Qt::SortOrder sortOrder) for(unsigned int col=0; colsetData(finishedListModel->index(nbRows_old+row, col), finishedListModel->data(finishedListModel->index(sourceRow, col))); finishedListModel->setData(finishedListModel->index(nbRows_old+row, col), finishedListModel->data(finishedListModel->index(sourceRow, col), Qt::DecorationRole), Qt::DecorationRole); - finishedListModel->setData(finishedListModel->index(nbRows_old+row, col), finishedListModel->data(finishedListModel->index(sourceRow, col), Qt::TextColorRole), Qt::TextColorRole); + finishedListModel->setData(finishedListModel->index(nbRows_old+row, col), finishedListModel->data(finishedListModel->index(sourceRow, col), Qt::ForegroundRole), Qt::ForegroundRole); } } // Remove old rows @@ -349,7 +349,7 @@ void FinishedTorrents::sortFinishedListString(int index, Qt::SortOrder sortOrder for(unsigned int col=0; colsetData(finishedListModel->index(nbRows_old+row, col), finishedListModel->data(finishedListModel->index(sourceRow, col))); finishedListModel->setData(finishedListModel->index(nbRows_old+row, col), finishedListModel->data(finishedListModel->index(sourceRow, col), Qt::DecorationRole), Qt::DecorationRole); - finishedListModel->setData(finishedListModel->index(nbRows_old+row, col), finishedListModel->data(finishedListModel->index(sourceRow, col), Qt::TextColorRole), Qt::TextColorRole); + finishedListModel->setData(finishedListModel->index(nbRows_old+row, col), finishedListModel->data(finishedListModel->index(sourceRow, col), Qt::ForegroundRole), Qt::ForegroundRole); } } // Remove old rows diff --git a/src/GUI.cpp b/src/GUI.cpp index a0c258f1c..ef4914212 100644 --- a/src/GUI.cpp +++ b/src/GUI.cpp @@ -708,7 +708,7 @@ void GUI::sortDownloadListFloat(int index, Qt::SortOrder sortOrder){ for(unsigned int col=0; colsetData(DLListModel->index(nbRows_old+row, col), DLListModel->data(DLListModel->index(sourceRow, col))); DLListModel->setData(DLListModel->index(nbRows_old+row, col), DLListModel->data(DLListModel->index(sourceRow, col), Qt::DecorationRole), Qt::DecorationRole); - DLListModel->setData(DLListModel->index(nbRows_old+row, col), DLListModel->data(DLListModel->index(sourceRow, col), Qt::TextColorRole), Qt::TextColorRole); + DLListModel->setData(DLListModel->index(nbRows_old+row, col), DLListModel->data(DLListModel->index(sourceRow, col), Qt::ForegroundRole), Qt::ForegroundRole); } } // Remove old rows @@ -731,7 +731,7 @@ void GUI::sortDownloadListString(int index, Qt::SortOrder sortOrder){ for(unsigned int col=0; colsetData(DLListModel->index(nbRows_old+row, col), DLListModel->data(DLListModel->index(sourceRow, col))); DLListModel->setData(DLListModel->index(nbRows_old+row, col), DLListModel->data(DLListModel->index(sourceRow, col), Qt::DecorationRole), Qt::DecorationRole); - DLListModel->setData(DLListModel->index(nbRows_old+row, col), DLListModel->data(DLListModel->index(sourceRow, col), Qt::TextColorRole), Qt::TextColorRole); + DLListModel->setData(DLListModel->index(nbRows_old+row, col), DLListModel->data(DLListModel->index(sourceRow, col), Qt::ForegroundRole), Qt::ForegroundRole); } } // Remove old rows @@ -1604,7 +1604,7 @@ void GUI::checkConnectionStatus(){ void GUI::setRowColor(int row, QString color){ unsigned int nbColumns = DLListModel->columnCount(); for(unsigned int i=0; isetData(DLListModel->index(row, i), QVariant(QColor(color)), Qt::TextColorRole); + DLListModel->setData(DLListModel->index(row, i), QVariant(QColor(color)), Qt::ForegroundRole); } } diff --git a/src/PreviewListDelegate.h b/src/PreviewListDelegate.h index 7d880baa8..9031eaa24 100644 --- a/src/PreviewListDelegate.h +++ b/src/PreviewListDelegate.h @@ -50,7 +50,7 @@ class PreviewListDelegate: public QAbstractItemDelegate { char tmp[MAX_CHAR_TMP]; float progress; // set text color - QVariant value = index.data(Qt::TextColorRole); + QVariant value = index.data(Qt::ForegroundRole); if (value.isValid() && qvariant_cast(value).isValid()){ opt.palette.setColor(QPalette::Text, qvariant_cast(value)); } diff --git a/src/PropListDelegate.h b/src/PropListDelegate.h index 2d87e958c..6dbaa96fe 100644 --- a/src/PropListDelegate.h +++ b/src/PropListDelegate.h @@ -60,7 +60,7 @@ class PropListDelegate: public QItemDelegate { QStyleOptionViewItem opt = option; char tmp[MAX_CHAR_TMP]; // set text color - QVariant value = index.data(Qt::TextColorRole); + QVariant value = index.data(Qt::ForegroundRole); if (value.isValid() && qvariant_cast(value).isValid()){ opt.palette.setColor(QPalette::Text, qvariant_cast(value)); } @@ -249,7 +249,7 @@ class PropListDelegate: public QItemDelegate { } } for(int i=0; icolumnCount(); ++i){ - model->setData(model->index(index.row(), i), QVariant(QColor(color)), Qt::TextColorRole); + model->setData(model->index(index.row(), i), QVariant(QColor(color)), Qt::ForegroundRole); } } diff --git a/src/SearchListDelegate.h b/src/SearchListDelegate.h index 69532758f..9518f0a1d 100644 --- a/src/SearchListDelegate.h +++ b/src/SearchListDelegate.h @@ -47,7 +47,7 @@ class SearchListDelegate: public QAbstractItemDelegate { void paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const{ QStyleOptionViewItem opt = option; // set text color - QVariant value = index.data(Qt::TextColorRole); + QVariant value = index.data(Qt::ForegroundRole); if (value.isValid() && qvariant_cast(value).isValid()){ opt.palette.setColor(QPalette::Text, qvariant_cast(value)); } diff --git a/src/properties_imp.cpp b/src/properties_imp.cpp index abe9876b8..988d7964c 100644 --- a/src/properties_imp.cpp +++ b/src/properties_imp.cpp @@ -479,7 +479,7 @@ void properties::updateInfos(){ // Set the color of a row in data model void properties::setRowColor(int row, QString color){ for(int i=0; icolumnCount(); ++i){ - PropListModel->setData(PropListModel->index(row, i), QVariant(QColor(color)), Qt::TextColorRole); + PropListModel->setData(PropListModel->index(row, i), QVariant(QColor(color)), Qt::ForegroundRole); } } diff --git a/src/searchEngine.cpp b/src/searchEngine.cpp index 006a2426f..6050aafd0 100644 --- a/src/searchEngine.cpp +++ b/src/searchEngine.cpp @@ -119,7 +119,7 @@ SearchEngine::~SearchEngine(){ // Set the color of a row in data model void SearchEngine::setRowColor(int row, QString color){ for(int i=0; icolumnCount(); ++i){ - SearchListModel->setData(SearchListModel->index(row, i), QVariant(QColor(color)), Qt::TextColorRole); + SearchListModel->setData(SearchListModel->index(row, i), QVariant(QColor(color)), Qt::ForegroundRole); } } @@ -158,7 +158,7 @@ void SearchEngine::sortSearchListInt(int index, Qt::SortOrder sortOrder){ int sourceRow = lines[row].first; for(int col=0; col<5; ++col){ SearchListModel->setData(SearchListModel->index(nbRows_old+row, col), SearchListModel->data(SearchListModel->index(sourceRow, col))); - SearchListModel->setData(SearchListModel->index(nbRows_old+row, col), SearchListModel->data(SearchListModel->index(sourceRow, col), Qt::TextColorRole), Qt::TextColorRole); + SearchListModel->setData(SearchListModel->index(nbRows_old+row, col), SearchListModel->data(SearchListModel->index(sourceRow, col), Qt::ForegroundRole), Qt::ForegroundRole); } } // Remove old rows @@ -178,7 +178,7 @@ void SearchEngine::sortSearchListString(int index, Qt::SortOrder sortOrder){ int sourceRow = lines[row].first; for(int col=0; col<5; ++col){ SearchListModel->setData(SearchListModel->index(nbRows_old+row, col), SearchListModel->data(SearchListModel->index(sourceRow, col))); - SearchListModel->setData(SearchListModel->index(nbRows_old+row, col), SearchListModel->data(SearchListModel->index(sourceRow, col), Qt::TextColorRole), Qt::TextColorRole); + SearchListModel->setData(SearchListModel->index(nbRows_old+row, col), SearchListModel->data(SearchListModel->index(sourceRow, col), Qt::ForegroundRole), Qt::ForegroundRole); } } // Remove old rows diff --git a/src/torrentAddition.h b/src/torrentAddition.h index 2e7637f4e..679f52fb0 100644 --- a/src/torrentAddition.h +++ b/src/torrentAddition.h @@ -174,7 +174,7 @@ class torrentAdditionDialog : public QDialog, private Ui_addTorrentDialog{ // Set the color of a row in data model void setRowColor(int row, QString color){ for(int i=0; icolumnCount(); ++i){ - PropListModel->setData(PropListModel->index(row, i), QVariant(QColor(color)), Qt::TextColorRole); + PropListModel->setData(PropListModel->index(row, i), QVariant(QColor(color)), Qt::ForegroundRole); } }