┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/panels/places/placesitem.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2012-05-11 23:00:26 +0200
committerPeter Penz <[email protected]>2012-05-11 23:02:14 +0200
commit28daa45a44bc172747bad6d948de2a58c8586845 (patch)
tree0bee0a91d45dcfe57597a0dba256b393e58431d0 /src/panels/places/placesitem.cpp
parentb319c59b8d1e068cf621be852ced9c5396bd77f9 (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.cpp41
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());
+}
+