diff options
| author | Peter Penz <[email protected]> | 2012-04-21 23:27:53 +0200 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2012-04-21 23:29:11 +0200 |
| commit | 007907be20cc63e4c12320b0406cc255286e7792 (patch) | |
| tree | 37651b581aedd0a899cf48e4bda974e4da8ab63f /src/kitemviews | |
| parent | e3f46c3b20ed52c7a6ddb9e4762df8b604971339 (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.cpp | 50 | ||||
| -rw-r--r-- | src/kitemviews/kstandarditem.h | 26 | ||||
| -rw-r--r-- | src/kitemviews/kstandarditemlistwidget.cpp | 9 | ||||
| -rw-r--r-- | src/kitemviews/kstandarditemmodel.cpp | 11 |
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) |
