┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2009-07-13 20:39:44 +0000
committerPeter Penz <[email protected]>2009-07-13 20:39:44 +0000
commita655a560fb6780c4a0c1dabb1fd31eddf5d462c9 (patch)
treeebdc323fb220e3a2a833b593931c2cc5ba55f288 /src
parent220355ca8d01f5e17e8b93dfa1a893dc6e20bd8a (diff)
The Oxygen team will provide revision control emblems for KDE 4.4. Adjust the code to use icons instead of coloring the text... The icon position at the moment is terrible, an interface extension in KFileItemDelegate is required to get the icon boundaries.
svn path=/trunk/KDE/kdebase/apps/; revision=996101
Diffstat (limited to 'src')
-rw-r--r--src/dolphinfileitemdelegate.cpp58
-rw-r--r--src/dolphinfileitemdelegate.h4
-rw-r--r--src/dolphinmodel.h3
-rw-r--r--src/revisioncontrolplugin.h3
4 files changed, 47 insertions, 21 deletions
diff --git a/src/dolphinfileitemdelegate.cpp b/src/dolphinfileitemdelegate.cpp
index cc8c44983..7232c38f5 100644
--- a/src/dolphinfileitemdelegate.cpp
+++ b/src/dolphinfileitemdelegate.cpp
@@ -21,6 +21,8 @@
#include <dolphinmodel.h>
#include <kfileitem.h>
+#include <kicon.h>
+#include <kiconloader.h>
#include <QAbstractItemModel>
#include <QAbstractProxyModel>
@@ -45,34 +47,32 @@ void DolphinFileItemDelegate::paint(QPainter* painter,
{
const QAbstractProxyModel* proxyModel = static_cast<const QAbstractProxyModel*>(index.model());
const DolphinModel* dolphinModel = static_cast<const DolphinModel*>(proxyModel->sourceModel());
- const bool useMinimizedNameColumn = m_hasMinimizedNameColumn && (index.column() == KDirModel::Name);
+ const bool isNameColumn = (index.column() == KDirModel::Name);
- if (dolphinModel->hasRevisionData()) {
+ if (m_hasMinimizedNameColumn && isNameColumn) {
+ QStyleOptionViewItemV4 opt(option);
+ adjustOptionWidth(opt, proxyModel, dolphinModel, index);
+ KFileItemDelegate::paint(painter, opt, index);
+ } else {
+ KFileItemDelegate::paint(painter, option, index);
+ }
+
+ if (dolphinModel->hasRevisionData() && isNameColumn) {
// The currently shown items are under revision control. Show the current revision
- // state by adjusting the text color.
+ // state by adding an emblem.
const QModelIndex dirIndex = proxyModel->mapToSource(index);
const QModelIndex revisionIndex = dolphinModel->index(dirIndex.row(), DolphinModel::Revision);
const QVariant data = dolphinModel->data(revisionIndex, Qt::DecorationRole);
const DolphinModel::RevisionState state = static_cast<DolphinModel::RevisionState>(data.toInt());
if (state != DolphinModel::LocalRevision) {
- QStyleOptionViewItemV4 opt(option);
- // TODO: use different colors for different states
- opt.palette.setColor(QPalette::Text, QColor(40, 150, 40));
- if (useMinimizedNameColumn) {
- adjustOptionWidth(opt, proxyModel, dolphinModel, index);
- }
- KFileItemDelegate::paint(painter, opt, index);
- return;
+ // TODO: extend KFileItemDelegate to be able to get the icon boundaries
+ const QRect iconRect(option.rect.x(), option.rect.y(),
+ KIconLoader::SizeSmall, KIconLoader::SizeSmall);
+ const QPixmap emblem = emblemForState(state, iconRect.size());
+ painter->drawPixmap(iconRect.x(), iconRect.y(), emblem);
}
- } else if (useMinimizedNameColumn) {
- QStyleOptionViewItemV4 opt(option);
- adjustOptionWidth(opt, proxyModel, dolphinModel, index);
- KFileItemDelegate::paint(painter, opt, index);
- return;
}
-
- KFileItemDelegate::paint(painter, option, index);
}
int DolphinFileItemDelegate::nameColumnWidth(const QString& name, const QStyleOptionViewItem& option)
@@ -105,3 +105,25 @@ void DolphinFileItemDelegate::adjustOptionWidth(QStyleOptionViewItemV4& option,
}
}
+QPixmap DolphinFileItemDelegate::emblemForState(DolphinModel::RevisionState state, const QSize& size)
+{
+ // TODO #1: all icons that are use here will be replaced by revision control emblems provided by the
+ // Oxygen team before KDE 4.4
+ // TODO #2: cache the icons
+ switch (state) {
+ case DolphinModel::LatestRevision:
+ return KIcon("dialog-ok-apply").pixmap(size);
+ break;
+
+ case DolphinModel::ConflictingRevision:
+ return KIcon("emblem-important").pixmap(size);
+ break;
+
+ // ...
+
+ default:
+ break;
+ }
+ return QPixmap();
+}
+
diff --git a/src/dolphinfileitemdelegate.h b/src/dolphinfileitemdelegate.h
index 70b30e99d..b6a4d45b2 100644
--- a/src/dolphinfileitemdelegate.h
+++ b/src/dolphinfileitemdelegate.h
@@ -20,9 +20,9 @@
#ifndef DOLPHINFILEITEMDELEGATE_H
#define DOLPHINFILEITEMDELEGATE_H
+#include <dolphinmodel.h>
#include <kfileitemdelegate.h>
-class DolphinModel;
class QAbstractProxyModel;
/**
@@ -66,6 +66,8 @@ private:
const DolphinModel* dolphinModel,
const QModelIndex& index);
+ static QPixmap emblemForState(DolphinModel::RevisionState state, const QSize& size);
+
private:
bool m_hasMinimizedNameColumn;
};
diff --git a/src/dolphinmodel.h b/src/dolphinmodel.h
index b03507dc5..717f21d4e 100644
--- a/src/dolphinmodel.h
+++ b/src/dolphinmodel.h
@@ -39,7 +39,8 @@ public:
enum RevisionState {
LocalRevision,
- LatestRevision
+ LatestRevision,
+ ConflictingRevision
// TODO...
};
diff --git a/src/revisioncontrolplugin.h b/src/revisioncontrolplugin.h
index 6cacb9224..2fd7d77c0 100644
--- a/src/revisioncontrolplugin.h
+++ b/src/revisioncontrolplugin.h
@@ -36,7 +36,8 @@ public:
enum RevisionState
{
LocalRevision,
- LatestRevision
+ LatestRevision,
+ ConflictingRevision
// TODO...
};