┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2012-04-21 23:27:53 +0200
committerPeter Penz <[email protected]>2012-04-21 23:29:11 +0200
commit007907be20cc63e4c12320b0406cc255286e7792 (patch)
tree37651b581aedd0a899cf48e4bda974e4da8ab63f /src/kitemviews
parente3f46c3b20ed52c7a6ddb9e4762df8b604971339 (diff)
Bring back basic bookmark support for the Places Panel
The folders-panel signals have been adjusted too for consistency.
Diffstat (limited to 'src/kitemviews')
-rw-r--r--src/kitemviews/kstandarditem.cpp50
-rw-r--r--src/kitemviews/kstandarditem.h26
-rw-r--r--src/kitemviews/kstandarditemlistwidget.cpp9
-rw-r--r--src/kitemviews/kstandarditemmodel.cpp11
4 files changed, 67 insertions, 29 deletions
diff --git a/src/kitemviews/kstandarditem.cpp b/src/kitemviews/kstandarditem.cpp
index 090746df1..1754c531b 100644
--- a/src/kitemviews/kstandarditem.cpp
+++ b/src/kitemviews/kstandarditem.cpp
@@ -19,34 +19,33 @@
#include "kstandarditem.h"
+#include <KDebug>
+
KStandardItem::KStandardItem(KStandardItem* parent) :
- m_text(),
- m_icon(),
- m_group(),
m_parent(parent),
m_children(),
- m_model(0)
+ m_model(0),
+ m_data()
{
}
KStandardItem::KStandardItem(const QString& text, KStandardItem* parent) :
- m_text(text),
- m_icon(),
- m_group(),
m_parent(parent),
m_children(),
- m_model(0)
+ m_model(0),
+ m_data()
{
+ setText(text);
}
KStandardItem::KStandardItem(const QIcon& icon, const QString& text, KStandardItem* parent) :
- m_text(text),
- m_icon(icon),
- m_group(),
m_parent(parent),
m_children(),
- m_model(0)
+ m_model(0),
+ m_data()
{
+ setIcon(icon);
+ setText(text);
}
KStandardItem::~KStandardItem()
@@ -55,32 +54,42 @@ KStandardItem::~KStandardItem()
void KStandardItem::setText(const QString& text)
{
- m_text = text;
+ m_data.insert("text", text);
}
QString KStandardItem::text() const
{
- return m_text;
+ return m_data["text"].toString();
}
void KStandardItem::setIcon(const QIcon& icon)
{
- m_icon = icon;
+ m_data.insert("iconName", icon.name());
}
QIcon KStandardItem::icon() const
{
- return m_icon;
+ return QIcon(m_data["iconName"].toString());
}
void KStandardItem::setGroup(const QString& group)
{
- m_group = group;
+ m_data.insert("group", group);
}
QString KStandardItem::group() const
{
- return m_group;
+ return m_data["group"].toString();
+}
+
+void KStandardItem::setDataValue(const QByteArray& role, const QVariant& value)
+{
+ m_data.insert(role, value);
+}
+
+QVariant KStandardItem::dataValue(const QByteArray& role) const
+{
+ return m_data[role];
}
void KStandardItem::setParent(KStandardItem* parent)
@@ -94,6 +103,11 @@ KStandardItem* KStandardItem::parent() const
return m_parent;
}
+QHash<QByteArray, QVariant> KStandardItem::data() const
+{
+ return m_data;
+}
+
QList<KStandardItem*> KStandardItem::children() const
{
return m_children;
diff --git a/src/kitemviews/kstandarditem.h b/src/kitemviews/kstandarditem.h
index 0315f4bf6..a108572a7 100644
--- a/src/kitemviews/kstandarditem.h
+++ b/src/kitemviews/kstandarditem.h
@@ -22,16 +22,20 @@
#include <libdolphin_export.h>
+#include <QByteArray>
+#include <QHash>
#include <QIcon>
#include <QList>
+#include <QVariant>
class KStandardItemModel;
/**
* @brief Represents and item of KStandardItemModel.
*
- * Provides setter- and getter-methods for most commonly
- * used properties.
+ * Provides setter- and getter-methods for the most commonly
+ * used roles. It is possible to assign values for custom
+ * roles by using setDataValue().
*/
class LIBDOLPHINPRIVATE_EXPORT KStandardItem
{
@@ -42,28 +46,40 @@ public:
KStandardItem(const QIcon& icon, const QString& text, KStandardItem* parent = 0);
virtual ~KStandardItem();
+ /**
+ * Sets the text for the "text"-role.
+ */
void setText(const QString& text);
QString text() const;
+ /**
+ * Sets the icon for the "iconName"-role.
+ */
void setIcon(const QIcon& icon);
QIcon icon() const;
+ /**
+ * Sets the group for the "group"-role.
+ */
void setGroup(const QString& group);
QString group() const;
+ void setDataValue(const QByteArray& role, const QVariant& value);
+ QVariant dataValue(const QByteArray& role) const;
+
void setParent(KStandardItem* parent);
KStandardItem* parent() const;
+ QHash<QByteArray, QVariant> data() const;
QList<KStandardItem*> children() const;
private:
- QString m_text;
- QIcon m_icon;
- QString m_group;
KStandardItem* m_parent;
QList<KStandardItem*> m_children;
KStandardItemModel* m_model;
+ QHash<QByteArray, QVariant> m_data;
+
friend class KStandardItemModel;
};
diff --git a/src/kitemviews/kstandarditemlistwidget.cpp b/src/kitemviews/kstandarditemlistwidget.cpp
index c9d9b4271..996d0cb58 100644
--- a/src/kitemviews/kstandarditemlistwidget.cpp
+++ b/src/kitemviews/kstandarditemlistwidget.cpp
@@ -339,9 +339,16 @@ QRectF KStandardItemListWidget::textFocusRect() const
case DetailsLayout: {
QRectF rect = m_textRect;
- const TextInfo* textInfo = m_textInfo.value(m_sortedVisibleRoles.first());
+ const TextInfo* textInfo = m_textInfo.value(m_sortedVisibleRoles.first());
rect.setTop(textInfo->pos.y());
rect.setBottom(textInfo->pos.y() + textInfo->staticText.size().height());
+
+ const KItemListStyleOption& option = styleOption();
+ if (option.extendedSelectionRegion) {
+ const QString text = textInfo->staticText.text();
+ rect.setWidth(option.fontMetrics.width(text) + 2 * option.padding);
+ }
+
return rect;
}
diff --git a/src/kitemviews/kstandarditemmodel.cpp b/src/kitemviews/kstandarditemmodel.cpp
index 76b2ad09a..86ef9563b 100644
--- a/src/kitemviews/kstandarditemmodel.cpp
+++ b/src/kitemviews/kstandarditemmodel.cpp
@@ -38,6 +38,8 @@ void KStandardItemModel::insertItem(int index, KStandardItem* item)
m_indexesForItems.insert(item, index);
item->m_model = this;
// TODO: no hierarchical items are handled yet
+
+ emit itemsInserted(KItemRangeList() << KItemRange(index, 1));
}
}
@@ -77,12 +79,11 @@ int KStandardItemModel::count() const
QHash<QByteArray, QVariant> KStandardItemModel::data(int index) const
{
- // TODO: Ugly hack
- QHash<QByteArray, QVariant> values;
const KStandardItem* item = m_items[index];
- values.insert("text", item->text());
- values.insert("iconName", item->icon().name());
- return values;
+ if (item) {
+ return item->data();
+ }
+ return QHash<QByteArray, QVariant>();
}
bool KStandardItemModel::setData(int index, const QHash<QByteArray, QVariant>& values)