mirror of
https://github.com/nextcloud/desktop.git
synced 2025-10-26 11:17:43 +00:00
Merge pull request #8804 from nextcloud/bugfix/folderstatusdelegate-icon-rendering
fix(folderstatusdelegate): improve rendering of status icons on HiDPI screens
This commit is contained in:
commit
66d9e9aac7
@ -156,8 +156,6 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
|
||||
auto overallPercent = qvariant_cast<int>(index.data(SyncProgressOverallPercent));
|
||||
auto overallString = qvariant_cast<QString>(index.data(SyncProgressOverallString));
|
||||
auto itemString = qvariant_cast<QString>(index.data(SyncProgressItemString));
|
||||
auto warningCount = qvariant_cast<int>(index.data(WarningCount));
|
||||
auto syncOngoing = qvariant_cast<bool>(index.data(SyncRunning));
|
||||
auto syncEnabled = qvariant_cast<bool>(index.data(FolderAccountConnected));
|
||||
auto syncText = qvariant_cast<QString>(index.data(FolderSyncText));
|
||||
|
||||
@ -190,27 +188,14 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
|
||||
localPathRect.setLeft(nextToIcon);
|
||||
remotePathRect.setLeft(nextToIcon);
|
||||
|
||||
const auto iconSize = iconRect.width();
|
||||
|
||||
auto optionsButtonVisualRect = optionsButtonRect(option.rect, option.direction);
|
||||
|
||||
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.
|
||||
if (warningCount > 0 && syncOngoing) {
|
||||
QRect warnRect;
|
||||
warnRect.setLeft(iconRect.left());
|
||||
warnRect.setTop(iconRect.bottom() - 17);
|
||||
warnRect.setWidth(16);
|
||||
warnRect.setHeight(16);
|
||||
|
||||
QIcon warnIcon(":/client/theme/warning");
|
||||
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()), warnPixmap);
|
||||
}
|
||||
statusIcon.paint(
|
||||
painter,
|
||||
QStyle::visualRect(option.direction, option.rect, iconRect),
|
||||
Qt::AlignCenter,
|
||||
syncEnabled ? QIcon::Normal : QIcon::Disabled
|
||||
);
|
||||
|
||||
auto palette = option.palette;
|
||||
|
||||
|
||||
@ -33,9 +33,6 @@ public:
|
||||
SyncProgressOverallPercent,
|
||||
SyncProgressOverallString,
|
||||
SyncProgressItemString,
|
||||
WarningCount,
|
||||
SyncRunning,
|
||||
SyncDate,
|
||||
|
||||
AddButton, // 1 = enabled; 2 = disabled
|
||||
FolderSyncText,
|
||||
|
||||
@ -254,10 +254,6 @@ QVariant FolderStatusModel::data(const QModelIndex &index, int role) const
|
||||
return folder->virtualFilesEnabled() && folder->vfs().mode() != Vfs::Mode::WindowsCfApi
|
||||
? QStringList(tr("Virtual file support is enabled."))
|
||||
: QStringList();
|
||||
case FolderStatusDelegate::SyncRunning:
|
||||
return folder->syncResult().status() == SyncResult::SyncRunning;
|
||||
case FolderStatusDelegate::SyncDate:
|
||||
return folder->syncResult().syncTime();
|
||||
case FolderStatusDelegate::HeaderRole:
|
||||
return folder->shortGuiRemotePathOrAppName();
|
||||
case FolderStatusDelegate::FolderAliasRole:
|
||||
@ -306,8 +302,6 @@ QVariant FolderStatusModel::data(const QModelIndex &index, int role) const
|
||||
case FolderStatusDelegate::SyncProgressItemString:
|
||||
// e.g. Syncing fileName1, filename2
|
||||
return progress._progressString;
|
||||
case FolderStatusDelegate::WarningCount:
|
||||
return progress._warningCount;
|
||||
case FolderStatusDelegate::SyncProgressOverallPercent:
|
||||
return progress._overallPercent;
|
||||
case FolderStatusDelegate::SyncProgressOverallString:
|
||||
@ -985,8 +979,7 @@ void FolderStatusModel::slotSetProgress(const ProgressInfo &progress)
|
||||
_isSyncRunningForAwhile = false;
|
||||
}
|
||||
|
||||
const QVector<int> roles{ FolderStatusDelegate::SyncProgressItemString, FolderStatusDelegate::WarningCount,
|
||||
Qt::ToolTipRole };
|
||||
const QVector<int> roles{ FolderStatusDelegate::SyncProgressItemString, Qt::ToolTipRole };
|
||||
|
||||
if (progress.status() == ProgressInfo::Discovery) {
|
||||
if (!progress._currentDiscoveredRemoteFolder.isEmpty()) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user