mirror of
https://github.com/nextcloud/desktop.git
synced 2024-11-27 09:30:13 +03:00
Make FolderStatusDelegate::paint less horrible to read
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
This commit is contained in:
parent
19732d09b9
commit
9f5f33c0b2
1 changed files with 33 additions and 38 deletions
|
@ -199,9 +199,8 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
|
|||
|
||||
auto optionsButtonVisualRect = optionsButtonRect(option.rect, option.direction);
|
||||
|
||||
QPixmap pm = statusIcon.pixmap(iconSize, iconSize, syncEnabled ? QIcon::Normal : QIcon::Disabled);
|
||||
painter->drawPixmap(QStyle::visualRect(option.direction, option.rect, iconRect).left(),
|
||||
iconRect.top(), pm);
|
||||
const auto statusPixmap = statusIcon.pixmap(iconSize, iconSize, syncEnabled ? QIcon::Normal : QIcon::Disabled);
|
||||
painter->drawPixmap(QStyle::visualRect(option.direction, option.rect, iconRect).left(), iconRect.top(), statusPixmap);
|
||||
|
||||
// only show the warning icon if the sync is running. Otherwise its
|
||||
// encoded in the status icon.
|
||||
|
@ -213,22 +212,22 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
|
|||
warnRect.setHeight(16);
|
||||
|
||||
QIcon warnIcon(":/client/theme/warning");
|
||||
const auto pm = warnIcon.pixmap(16, 16, syncEnabled ? QIcon::Normal : QIcon::Disabled);
|
||||
const auto warnPixmap = warnIcon.pixmap(16, 16, syncEnabled ? QIcon::Normal : QIcon::Disabled);
|
||||
warnRect = QStyle::visualRect(option.direction, option.rect, warnRect);
|
||||
painter->drawPixmap(QPoint(warnRect.left(), warnRect.top()), pm);
|
||||
painter->drawPixmap(QPoint(warnRect.left(), warnRect.top()), warnPixmap);
|
||||
}
|
||||
|
||||
auto palette = option.palette;
|
||||
|
||||
auto cg = option.state & QStyle::State_Enabled ? QPalette::Normal : QPalette::Disabled;
|
||||
if (cg == QPalette::Normal && !(option.state & QStyle::State_Active)) {
|
||||
cg = QPalette::Inactive;
|
||||
auto colourGroup = option.state & QStyle::State_Enabled ? QPalette::Normal : QPalette::Disabled;
|
||||
if (colourGroup == QPalette::Normal && !(option.state & QStyle::State_Active)) {
|
||||
colourGroup = QPalette::Inactive;
|
||||
}
|
||||
|
||||
if (option.state & QStyle::State_Selected) {
|
||||
painter->setPen(palette.color(cg, QPalette::HighlightedText));
|
||||
painter->setPen(palette.color(colourGroup, QPalette::HighlightedText));
|
||||
} else {
|
||||
painter->setPen(palette.color(cg, QPalette::Text));
|
||||
painter->setPen(palette.color(colourGroup, QPalette::Text));
|
||||
}
|
||||
|
||||
const auto elidedAlias = aliasFm.elidedText(aliasText, Qt::ElideRight, aliasRect.width());
|
||||
|
@ -245,13 +244,13 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
|
|||
painter->drawText(QStyle::visualRect(option.direction, option.rect, localPathRect), textAlign, elidedPathText);
|
||||
}
|
||||
|
||||
auto h = iconRect.bottom() + margin;
|
||||
auto textBoxTop = iconRect.bottom() + margin;
|
||||
|
||||
// paint an error overlay if there is an error string or conflict string
|
||||
auto drawTextBox = [&](const QStringList &texts, QColor color) {
|
||||
auto rect = localPathRect;
|
||||
rect.setLeft(iconRect.left());
|
||||
rect.setTop(h);
|
||||
rect.setTop(textBoxTop);
|
||||
rect.setHeight(texts.count() * subFm.height() + 2 * margin);
|
||||
rect.setRight(option.rect.right() - margin);
|
||||
|
||||
|
@ -268,15 +267,14 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
|
|||
rect.width() - 2 * margin,
|
||||
subFm.height());
|
||||
|
||||
foreach (QString eText, texts) {
|
||||
painter->drawText(QStyle::visualRect(option.direction, option.rect, textRect), textAlign,
|
||||
subFm.elidedText(eText, Qt::ElideLeft, textRect.width()));
|
||||
for (const auto &eText : texts) {
|
||||
painter->drawText(QStyle::visualRect(option.direction, option.rect, textRect), textAlign, subFm.elidedText(eText, Qt::ElideLeft, textRect.width()));
|
||||
textRect.translate(0, textRect.height());
|
||||
}
|
||||
// restore previous state
|
||||
painter->restore();
|
||||
|
||||
h = rect.bottom() + margin;
|
||||
textBoxTop = rect.bottom() + margin;
|
||||
};
|
||||
|
||||
if (!conflictTexts.isEmpty()) {
|
||||
|
@ -298,35 +296,32 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
|
|||
painter->save();
|
||||
|
||||
// Overall Progress Bar.
|
||||
QRect pBRect;
|
||||
pBRect.setTop(remotePathRect.top());
|
||||
pBRect.setLeft(nextToIcon);
|
||||
pBRect.setHeight(barHeight);
|
||||
pBRect.setWidth(overallWidth - 2 * margin);
|
||||
QRect progressBarRect;
|
||||
progressBarRect.setTop(remotePathRect.top());
|
||||
progressBarRect.setLeft(nextToIcon);
|
||||
progressBarRect.setHeight(barHeight);
|
||||
progressBarRect.setWidth(overallWidth - 2 * margin);
|
||||
|
||||
QStyleOptionProgressBar pBarOpt;
|
||||
QStyleOptionProgressBar progressBarOpt;
|
||||
|
||||
pBarOpt.state = option.state | QStyle::State_Horizontal;
|
||||
pBarOpt.minimum = 0;
|
||||
pBarOpt.maximum = 100;
|
||||
pBarOpt.progress = overallPercent;
|
||||
pBarOpt.orientation = Qt::Horizontal;
|
||||
pBarOpt.rect = QStyle::visualRect(option.direction, option.rect, pBRect);
|
||||
QApplication::style()->drawControl(QStyle::CE_ProgressBar, &pBarOpt, painter, option.widget);
|
||||
progressBarOpt.state = option.state | QStyle::State_Horizontal;
|
||||
progressBarOpt.minimum = 0;
|
||||
progressBarOpt.maximum = 100;
|
||||
progressBarOpt.progress = overallPercent;
|
||||
progressBarOpt.orientation = Qt::Horizontal;
|
||||
progressBarOpt.rect = QStyle::visualRect(option.direction, option.rect, progressBarRect);
|
||||
QApplication::style()->drawControl(QStyle::CE_ProgressBar, &progressBarOpt, painter, option.widget);
|
||||
|
||||
|
||||
// Overall Progress Text
|
||||
QRect overallProgressRect;
|
||||
overallProgressRect.setTop(pBRect.bottom() + margin);
|
||||
overallProgressRect.setTop(progressBarRect.bottom() + margin);
|
||||
overallProgressRect.setHeight(fileNameTextHeight);
|
||||
overallProgressRect.setLeft(pBRect.left());
|
||||
overallProgressRect.setWidth(pBRect.width());
|
||||
overallProgressRect.setLeft(progressBarRect.left());
|
||||
overallProgressRect.setWidth(progressBarRect.width());
|
||||
painter->setFont(progressFont);
|
||||
|
||||
painter->drawText(QStyle::visualRect(option.direction, option.rect, overallProgressRect),
|
||||
Qt::AlignLeft | Qt::AlignVCenter, overallString);
|
||||
// painter->drawRect(overallProgressRect);
|
||||
|
||||
painter->drawText(QStyle::visualRect(option.direction, option.rect, overallProgressRect), Qt::AlignLeft | Qt::AlignVCenter, overallString);
|
||||
painter->restore();
|
||||
}
|
||||
|
||||
|
@ -341,8 +336,8 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
|
|||
btnOpt.subControls = QStyle::SC_ToolButton;
|
||||
btnOpt.rect = optionsButtonVisualRect;
|
||||
btnOpt.icon = _iconMore;
|
||||
const auto e = QApplication::style()->pixelMetric(QStyle::PM_ButtonIconSize);
|
||||
btnOpt.iconSize = QSize(e,e);
|
||||
const auto buttonSize = QApplication::style()->pixelMetric(QStyle::PM_ButtonIconSize);
|
||||
btnOpt.iconSize = QSize(buttonSize, buttonSize);
|
||||
QApplication::style()->drawComplexControl(QStyle::CC_ToolButton, &btnOpt, painter);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue