{
}
-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(),
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));
+ }
+}
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();
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;
}
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
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;
&& (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 {
}
}
- 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";