diff options
| author | Peter Penz <[email protected]> | 2012-05-11 23:00:26 +0200 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2012-05-11 23:02:14 +0200 |
| commit | 28daa45a44bc172747bad6d948de2a58c8586845 (patch) | |
| tree | 0bee0a91d45dcfe57597a0dba256b393e58431d0 /src/panels/places/placesitem.cpp | |
| parent | b319c59b8d1e068cf621be852ced9c5396bd77f9 (diff) | |
Places Panel: Implement eject and teardown actions
Further fixes:
- Add/remove item when device has been added/removed
- Update emblem if the accessibility-state has been changed
Diffstat (limited to 'src/panels/places/placesitem.cpp')
| -rw-r--r-- | src/panels/places/placesitem.cpp | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/src/panels/places/placesitem.cpp b/src/panels/places/placesitem.cpp index 33af8a820..c865aa11d 100644 --- a/src/panels/places/placesitem.cpp +++ b/src/panels/places/placesitem.cpp @@ -25,10 +25,16 @@ #include <KBookmark> #include <KIcon> #include <KLocale> +#include "placesitemstorageaccesslistener.h" #include <Solid/Block> PlacesItem::PlacesItem(PlacesItem* parent) : - KStandardItem(parent) + KStandardItem(parent), + m_device(), + m_access(), + m_volume(), + m_disc(), + m_accessListener(0) { } @@ -37,7 +43,8 @@ PlacesItem::PlacesItem(const KBookmark& bookmark, PlacesItem* parent) : m_device(), m_access(), m_volume(), - m_disc() + m_disc(), + m_accessListener(0) { setHidden(bookmark.metaDataItem("IsHidden") == QLatin1String("true")); @@ -58,7 +65,8 @@ PlacesItem::PlacesItem(const QString& udi, PlacesItem* parent) : m_device(), m_access(), m_volume(), - m_disc() + m_disc(), + m_accessListener(0) { initializeDevice(udi); } @@ -68,12 +76,15 @@ PlacesItem::PlacesItem(const PlacesItem& item) : m_device(), m_access(), m_volume(), - m_disc() + m_disc(), + m_accessListener(0) { } PlacesItem::~PlacesItem() { + delete m_accessListener; + m_accessListener = 0; } void PlacesItem::setUrl(const KUrl& url) @@ -86,6 +97,16 @@ KUrl PlacesItem::url() const return dataValue("url").value<KUrl>(); } +void PlacesItem::setUdi(const QString& udi) +{ + setDataValue("udi", udi); +} + +QString PlacesItem::udi() const +{ + return dataValue("udi").toString(); +} + void PlacesItem::setHidden(bool hidden) { setDataValue("isHidden", hidden); @@ -115,14 +136,24 @@ void PlacesItem::initializeDevice(const QString& udi) setText(m_device.description()); setIcon(m_device.icon()); setIconOverlays(m_device.emblems()); - setDataValue("udi", udi); + setUdi(udi); setGroup(i18nc("@item", "Devices")); if (m_access) { setUrl(m_access->filePath()); + + // The access listener takes care to call PlacesItem::onAccessibilityChanged() + // in case if the accessibility of m_access has been changed. + Q_ASSERT(!m_accessListener); + m_accessListener = new PlacesItemStorageAccessListener(this); } else if (m_disc && (m_disc->availableContent() & Solid::OpticalDisc::Audio) != 0) { const QString device = m_device.as<Solid::Block>()->device(); setUrl(QString("audiocd:/?device=%1").arg(device)); } } +void PlacesItem::onAccessibilityChanged() +{ + setIconOverlays(m_device.emblems()); +} + |
