+ setOverlay(overlay);
+}
+
+void DolphinFileItemListWidget::styleOptionChanged(const KItemListStyleOption& current, const KItemListStyleOption& previous)
+{
+ KFileItemListWidget::styleOptionChanged(current, previous);
+
+ if (!overlay().isNull() && current.iconSize != previous.iconSize) {
+ const KVersionControlPlugin::VersionState version = static_cast<KVersionControlPlugin::VersionState>(data().value("version").toInt());
+ const QPixmap newOverlay = overlayForState(version, current.iconSize);
+ setOverlay(newOverlay);
+ }
+}
+
+QPixmap DolphinFileItemListWidget::overlayForState(KVersionControlPlugin::VersionState version, int size)
+{
+ int overlayHeight = KIconLoader::SizeSmall;
+ if (size >= KIconLoader::SizeEnormous) {
+ overlayHeight = KIconLoader::SizeMedium;
+ } else if (size >= KIconLoader::SizeLarge) {
+ overlayHeight = KIconLoader::SizeSmallMedium;
+ } else if (size >= KIconLoader::SizeMedium) {
+ overlayHeight = KIconLoader::SizeSmall;
+ } else {
+ overlayHeight = KIconLoader::SizeSmall / 2;
+ }
+
+ QString iconName;
+ switch (version) {
+ case KVersionControlPlugin::NormalVersion:
+ iconName = "vcs-normal";
+ break;
+ case KVersionControlPlugin::UpdateRequiredVersion:
+ iconName = "vcs-update-required";
+ break;
+ case KVersionControlPlugin::LocallyModifiedVersion:
+ iconName = "vcs-locally-modified";
+ break;
+ case KVersionControlPlugin::LocallyModifiedUnstagedVersion:
+ iconName = "vcs-locally-modified-unstaged";
+ break;
+ case KVersionControlPlugin::AddedVersion:
+ iconName = "vcs-added";
+ break;
+ case KVersionControlPlugin::RemovedVersion:
+ iconName = "vcs-removed";
+ break;
+ case KVersionControlPlugin::ConflictingVersion:
+ iconName = "vcs-conflicting";
+ break;
+ case KVersionControlPlugin::UnversionedVersion:
+ break;
+ default:
+ Q_ASSERT(false);
+ break;
+ }
+
+ return KIcon(iconName).pixmap(QSize(overlayHeight, overlayHeight));