┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2012-05-09 09:03:21 +0200
committerPeter Penz <[email protected]>2012-05-09 09:04:06 +0200
commit321f747ddf9cf71ed3c8fa4de287d131cd22c2d8 (patch)
tree0e75bf2126f335b38c0de4fe204654d2da8e5d6f
parent02b251372efb53344388a9e3da098b08289e7e3b (diff)
Create items for devices that have not been added as bookmarks yet
-rw-r--r--src/panels/places/placesitem.cpp63
-rw-r--r--src/panels/places/placesitem.h10
-rw-r--r--src/panels/places/placesitemmodel.cpp34
3 files changed, 68 insertions, 39 deletions
diff --git a/src/panels/places/placesitem.cpp b/src/panels/places/placesitem.cpp
index 11a7462c4..33af8a820 100644
--- a/src/panels/places/placesitem.cpp
+++ b/src/panels/places/placesitem.cpp
@@ -32,41 +32,37 @@ PlacesItem::PlacesItem(PlacesItem* parent) :
{
}
-PlacesItem::PlacesItem(const KBookmark& bookmark, const QString& udi, PlacesItem* parent) :
+PlacesItem::PlacesItem(const KBookmark& bookmark, PlacesItem* parent) :
KStandardItem(parent),
- m_device(udi),
+ m_device(),
m_access(),
m_volume(),
m_disc()
{
setHidden(bookmark.metaDataItem("IsHidden") == QLatin1String("true"));
+ const QString udi = bookmark.metaDataItem("UDI");
if (udi.isEmpty()) {
setIcon(bookmark.icon());
setText(bookmark.text());
setUrl(bookmark.url());
setDataValue("address", bookmark.address());
setGroup(i18nc("@item", "Places"));
- } else if (m_device.isValid()) {
- m_access = m_device.as<Solid::StorageAccess>();
- m_volume = m_device.as<Solid::StorageVolume>();
- m_disc = m_device.as<Solid::OpticalDisc>();
-
- setText(m_device.description());
- setIcon(m_device.icon());
- setIconOverlays(m_device.emblems());
- setDataValue("udi", udi);
- setGroup(i18nc("@item", "Devices"));
-
- if (m_access) {
- setUrl(m_access->filePath());
- } 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));
- }
+ } else {
+ initializeDevice(udi);
}
}
+PlacesItem::PlacesItem(const QString& udi, PlacesItem* parent) :
+ KStandardItem(parent),
+ m_device(),
+ m_access(),
+ m_volume(),
+ m_disc()
+{
+ initializeDevice(udi);
+}
+
PlacesItem::PlacesItem(const PlacesItem& item) :
KStandardItem(item),
m_device(),
@@ -100,4 +96,33 @@ bool PlacesItem::isHidden() const
return dataValue("isHidden").toBool();
}
+Solid::Device PlacesItem::device() const
+{
+ return m_device;
+}
+
+void PlacesItem::initializeDevice(const QString& udi)
+{
+ m_device = Solid::Device(udi);
+ if (!m_device.isValid()) {
+ return;
+ }
+
+ m_access = m_device.as<Solid::StorageAccess>();
+ m_volume = m_device.as<Solid::StorageVolume>();
+ m_disc = m_device.as<Solid::OpticalDisc>();
+
+ setText(m_device.description());
+ setIcon(m_device.icon());
+ setIconOverlays(m_device.emblems());
+ setDataValue("udi", udi);
+ setGroup(i18nc("@item", "Devices"));
+
+ if (m_access) {
+ setUrl(m_access->filePath());
+ } 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));
+ }
+}
diff --git a/src/panels/places/placesitem.h b/src/panels/places/placesitem.h
index 20289c95a..5c6988424 100644
--- a/src/panels/places/placesitem.h
+++ b/src/panels/places/placesitem.h
@@ -38,9 +38,8 @@ class PlacesItem : public KStandardItem
public:
explicit PlacesItem(PlacesItem* parent = 0);
- PlacesItem(const KBookmark& bookmark,
- const QString& udi,
- PlacesItem* parent = 0);
+ explicit PlacesItem(const KBookmark& bookmark, PlacesItem* parent = 0);
+ explicit PlacesItem(const QString& udi, PlacesItem* parent = 0);
PlacesItem(const PlacesItem& item);
virtual ~PlacesItem();
@@ -50,6 +49,11 @@ public:
void setHidden(bool hidden);
bool isHidden() const;
+ Solid::Device device() const;
+
+private:
+ void initializeDevice(const QString& udi);
+
private:
Solid::Device m_device;
QPointer<Solid::StorageAccess> m_access;
diff --git a/src/panels/places/placesitemmodel.cpp b/src/panels/places/placesitemmodel.cpp
index b4fc49c2c..48f54b276 100644
--- a/src/panels/places/placesitemmodel.cpp
+++ b/src/panels/places/placesitemmodel.cpp
@@ -213,6 +213,16 @@ QString PlacesItemModel::groupName(const KUrl &url) const
QAction* PlacesItemModel::ejectAction(int index) const
{
+ const PlacesItem* item = placesItem(index);
+ if (item && item->device().is<Solid::OpticalDisc>()) {
+ return new QAction(KIcon("media-eject"), i18nc("@item", "Eject '%1'", item->text()), 0);
+ }
+
+ return 0;
+}
+
+QAction* PlacesItemModel::tearDownAction(int index) const
+{
// TODO: This is a dummy-implementation to have at least all
// translation-strings as part of the code before the freeze
QString iconName;
@@ -238,17 +248,6 @@ QAction* PlacesItemModel::ejectAction(int index) const
return 0;
}
-QAction* PlacesItemModel::tearDownAction(int index) const
-{
- // TODO: This is a dummy-implementation to have at least all
- // translation-strings as part of the code before the freeze
- Q_UNUSED(index);
- QString label;
- QAction action(KIcon("media-eject"), i18nc("@item", "Eject '%1'", label), 0);
- Q_UNUSED(action);
- return 0;
-}
-
void PlacesItemModel::onItemInserted(int index)
{
int modelIndex = 0;
@@ -319,7 +318,7 @@ void PlacesItemModel::loadBookmarks()
&& (m_nepomukRunning || url.protocol() != QLatin1String("timeline"));
if ((udi.isEmpty() && allowedHere) || deviceAvailable) {
- PlacesItem* item = new PlacesItem(bookmark, udi);
+ PlacesItem* item = new PlacesItem(bookmark);
if (deviceAvailable) {
devicesItems.append(item);
} else {
@@ -358,12 +357,13 @@ void PlacesItemModel::loadBookmarks()
}
}
- addItems(devicesItems);
+ // Create items for devices that have not stored as bookmark yet
+ foreach (const QString& udi, devices) {
+ PlacesItem* item = new PlacesItem(udi);
+ devicesItems.append(item);
+ }
- // TODO: add bookmarks for missing devices
- // foreach (const QString &udi, devices) {
- // bookmark = KFilePlacesItem::createDeviceBookmark(bookmarkManager, udi);
- // ...
+ addItems(devicesItems);
#ifdef PLACESITEMMODEL_DEBUG
kDebug() << "Loaded bookmarks";