mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-19 16:31:21 +00:00
Create items for devices that have not been added as bookmarks yet
This commit is contained in:
parent
02b251372e
commit
321f747ddf
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -212,6 +212,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
|
||||
|
@ -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";
|
||||
|
|
Loading…
Reference in a new issue