mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-12 12:54:29 +00:00
Places Panel: Provide access to devices
This commit is contained in:
parent
067642a23c
commit
23fff35aeb
|
@ -91,7 +91,13 @@ kde4_add_kcfg_files(dolphinprivate_LIB_SRCS
|
|||
|
||||
kde4_add_library(dolphinprivate SHARED ${dolphinprivate_LIB_SRCS})
|
||||
|
||||
target_link_libraries(dolphinprivate ${KDE4_KFILE_LIBS} konq ${KDE4_KNEWSTUFF3_LIBS})
|
||||
target_link_libraries(
|
||||
dolphinprivate
|
||||
${KDE4_KFILE_LIBS}
|
||||
konq
|
||||
${KDE4_KNEWSTUFF3_LIBS}
|
||||
)
|
||||
|
||||
if (Nepomuk_FOUND)
|
||||
target_link_libraries(
|
||||
dolphinprivate
|
||||
|
@ -104,7 +110,7 @@ if (Nepomuk_FOUND)
|
|||
endif (Nepomuk_FOUND)
|
||||
|
||||
if(X11_Xrender_FOUND)
|
||||
target_link_libraries(dolphinprivate ${X11_Xrender_LIB} )
|
||||
target_link_libraries(dolphinprivate ${X11_Xrender_LIB})
|
||||
endif(X11_Xrender_FOUND)
|
||||
|
||||
set_target_properties(dolphinprivate PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} )
|
||||
|
@ -143,6 +149,7 @@ set(dolphin_SRCS
|
|||
panels/information/pixmapviewer.cpp
|
||||
panels/information/phononwidget.cpp
|
||||
panels/places/placespanel.cpp
|
||||
panels/places/placesitem.cpp
|
||||
panels/places/placesitemeditdialog.cpp
|
||||
panels/places/placesitemlistgroupheader.cpp
|
||||
panels/places/placesitemlistwidget.cpp
|
||||
|
@ -203,6 +210,7 @@ target_link_libraries(kdeinit_dolphin
|
|||
konq
|
||||
dolphinprivate
|
||||
knewstuff3
|
||||
${KDE4_SOLID_LIBS}
|
||||
${KDE4_PHONON_LIBS}
|
||||
)
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ KStandardItem::KStandardItem(const QString& text, KStandardItem* parent) :
|
|||
setText(text);
|
||||
}
|
||||
|
||||
KStandardItem::KStandardItem(const QIcon& icon, const QString& text, KStandardItem* parent) :
|
||||
KStandardItem::KStandardItem(const QString& icon, const QString& text, KStandardItem* parent) :
|
||||
m_parent(parent),
|
||||
m_children(),
|
||||
m_model(0),
|
||||
|
@ -71,14 +71,24 @@ QString KStandardItem::text() const
|
|||
return m_data["text"].toString();
|
||||
}
|
||||
|
||||
void KStandardItem::setIcon(const QIcon& icon)
|
||||
void KStandardItem::setIcon(const QString& icon)
|
||||
{
|
||||
setDataValue("iconName", icon.name());
|
||||
setDataValue("iconName", icon);
|
||||
}
|
||||
|
||||
QIcon KStandardItem::icon() const
|
||||
QString KStandardItem::icon() const
|
||||
{
|
||||
return QIcon(m_data["iconName"].toString());
|
||||
return m_data["iconName"].toString();
|
||||
}
|
||||
|
||||
void KStandardItem::setIconOverlays(const QStringList& overlays)
|
||||
{
|
||||
setDataValue("iconOverlays", overlays);
|
||||
}
|
||||
|
||||
QStringList KStandardItem::iconOverlays() const
|
||||
{
|
||||
return m_data["iconOverlays"].toStringList();
|
||||
}
|
||||
|
||||
void KStandardItem::setGroup(const QString& group)
|
||||
|
|
|
@ -43,7 +43,7 @@ class LIBDOLPHINPRIVATE_EXPORT KStandardItem
|
|||
public:
|
||||
explicit KStandardItem(KStandardItem* parent = 0);
|
||||
explicit KStandardItem(const QString& text, KStandardItem* parent = 0);
|
||||
KStandardItem(const QIcon& icon, const QString& text, KStandardItem* parent = 0);
|
||||
KStandardItem(const QString& icon, const QString& text, KStandardItem* parent = 0);
|
||||
KStandardItem(const KStandardItem& item);
|
||||
virtual ~KStandardItem();
|
||||
|
||||
|
@ -56,8 +56,11 @@ public:
|
|||
/**
|
||||
* Sets the icon for the "iconName"-role.
|
||||
*/
|
||||
void setIcon(const QIcon& icon);
|
||||
QIcon icon() const;
|
||||
void setIcon(const QString& icon);
|
||||
QString icon() const;
|
||||
|
||||
void setIconOverlays(const QStringList& overlays);
|
||||
QStringList iconOverlays() const;
|
||||
|
||||
/**
|
||||
* Sets the group for the "group"-role.
|
||||
|
|
103
src/panels/places/placesitem.cpp
Normal file
103
src/panels/places/placesitem.cpp
Normal file
|
@ -0,0 +1,103 @@
|
|||
/***************************************************************************
|
||||
* Copyright (C) 2012 by Peter Penz <peter.penz19@gmail.com> *
|
||||
* *
|
||||
* Based on KFilePlacesItem from kdelibs: *
|
||||
* Copyright (C) 2007 Kevin Ottens <ervin@kde.org> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
|
||||
***************************************************************************/
|
||||
|
||||
#include "placesitem.h"
|
||||
|
||||
#include <KBookmark>
|
||||
#include <KIcon>
|
||||
#include <KLocale>
|
||||
#include <Solid/Block>
|
||||
|
||||
PlacesItem::PlacesItem(PlacesItem* parent) :
|
||||
KStandardItem(parent)
|
||||
{
|
||||
}
|
||||
|
||||
PlacesItem::PlacesItem(const KBookmark& bookmark, const QString& udi, PlacesItem* parent) :
|
||||
KStandardItem(parent),
|
||||
m_device(udi),
|
||||
m_access(),
|
||||
m_volume(),
|
||||
m_disc()
|
||||
{
|
||||
setHidden(bookmark.metaDataItem("IsHidden") == QLatin1String("true"));
|
||||
|
||||
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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PlacesItem::PlacesItem(const PlacesItem& item) :
|
||||
KStandardItem(item),
|
||||
m_device(),
|
||||
m_access(),
|
||||
m_volume(),
|
||||
m_disc()
|
||||
{
|
||||
}
|
||||
|
||||
PlacesItem::~PlacesItem()
|
||||
{
|
||||
}
|
||||
|
||||
void PlacesItem::setUrl(const KUrl& url)
|
||||
{
|
||||
setDataValue("url", url);
|
||||
}
|
||||
|
||||
KUrl PlacesItem::url() const
|
||||
{
|
||||
return dataValue("url").value<KUrl>();
|
||||
}
|
||||
|
||||
void PlacesItem::setHidden(bool hidden)
|
||||
{
|
||||
setDataValue("isHidden", hidden);
|
||||
}
|
||||
|
||||
bool PlacesItem::isHidden() const
|
||||
{
|
||||
return dataValue("isHidden").toBool();
|
||||
}
|
||||
|
||||
|
62
src/panels/places/placesitem.h
Normal file
62
src/panels/places/placesitem.h
Normal file
|
@ -0,0 +1,62 @@
|
|||
/***************************************************************************
|
||||
* Copyright (C) 2012 by Peter Penz <peter.penz19@gmail.com> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef PLACESITEM_H
|
||||
#define PLACESITEM_H
|
||||
|
||||
#include <kitemviews/kstandarditem.h>
|
||||
#include <KUrl>
|
||||
#include <QPointer>
|
||||
#include <Solid/Device>
|
||||
#include <Solid/OpticalDisc>
|
||||
#include <Solid/StorageAccess>
|
||||
#include <Solid/StorageVolume>
|
||||
|
||||
class KBookmark;
|
||||
|
||||
/**
|
||||
* @brief Extends KStandardItem by places-specific properties.
|
||||
*/
|
||||
class PlacesItem : public KStandardItem
|
||||
{
|
||||
|
||||
public:
|
||||
explicit PlacesItem(PlacesItem* parent = 0);
|
||||
PlacesItem(const KBookmark& bookmark,
|
||||
const QString& udi,
|
||||
PlacesItem* parent = 0);
|
||||
PlacesItem(const PlacesItem& item);
|
||||
virtual ~PlacesItem();
|
||||
|
||||
void setUrl(const KUrl& url);
|
||||
KUrl url() const;
|
||||
|
||||
void setHidden(bool hidden);
|
||||
bool isHidden() const;
|
||||
|
||||
private:
|
||||
Solid::Device m_device;
|
||||
QPointer<Solid::StorageAccess> m_access;
|
||||
QPointer<Solid::StorageVolume> m_volume;
|
||||
QPointer<Solid::OpticalDisc> m_disc;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
|
@ -38,18 +38,21 @@
|
|||
#include <KBookmarkManager>
|
||||
#include <KComponentData>
|
||||
#include <KDebug>
|
||||
#include <KIcon>
|
||||
#include <kitemviews/kstandarditem.h>
|
||||
#include <KLocale>
|
||||
#include <KStandardDirs>
|
||||
#include <KUser>
|
||||
#include "placesitem.h"
|
||||
#include <QDate>
|
||||
|
||||
#include <Solid/Device>
|
||||
#include <Solid/DeviceNotifier>
|
||||
|
||||
PlacesItemModel::PlacesItemModel(QObject* parent) :
|
||||
KStandardItemModel(parent),
|
||||
m_nepomukRunning(false),
|
||||
m_hiddenItemsShown(false),
|
||||
m_availableDevices(),
|
||||
m_predicate(),
|
||||
m_bookmarkManager(0),
|
||||
m_systemBookmarks(),
|
||||
m_systemBookmarksIndexes(),
|
||||
|
@ -62,6 +65,7 @@ PlacesItemModel::PlacesItemModel(QObject* parent) :
|
|||
m_bookmarkManager = KBookmarkManager::managerForFile(file, "kfilePlaces");
|
||||
|
||||
createSystemBookmarks();
|
||||
initializeAvailableDevices();
|
||||
loadBookmarks();
|
||||
}
|
||||
|
||||
|
@ -71,15 +75,20 @@ PlacesItemModel::~PlacesItemModel()
|
|||
m_hiddenItems.clear();
|
||||
}
|
||||
|
||||
PlacesItem* PlacesItemModel::placesItem(int index) const
|
||||
{
|
||||
return dynamic_cast<PlacesItem*>(item(index));
|
||||
}
|
||||
|
||||
int PlacesItemModel::hiddenCount() const
|
||||
{
|
||||
int modelIndex = 0;
|
||||
int itemCount = 0;
|
||||
foreach (const KStandardItem* hiddenItem, m_hiddenItems) {
|
||||
foreach (const PlacesItem* hiddenItem, m_hiddenItems) {
|
||||
if (hiddenItem) {
|
||||
++itemCount;
|
||||
} else {
|
||||
if (item(modelIndex)->dataValue("isHidden").toBool()) {
|
||||
if (placesItem(modelIndex)->isHidden()) {
|
||||
++itemCount;
|
||||
}
|
||||
++modelIndex;
|
||||
|
@ -92,11 +101,11 @@ int PlacesItemModel::hiddenCount() const
|
|||
void PlacesItemModel::setItemHidden(int index, bool hide)
|
||||
{
|
||||
if (index >= 0 && index < count()) {
|
||||
KStandardItem* shownItem = this->item(index);
|
||||
shownItem->setDataValue("isHidden", hide);
|
||||
PlacesItem* shownItem = placesItem(index);
|
||||
shownItem->setHidden(true);
|
||||
if (!m_hiddenItemsShown && hide) {
|
||||
const int newIndex = hiddenIndex(index);
|
||||
KStandardItem* hiddenItem = new KStandardItem(*shownItem);
|
||||
PlacesItem* hiddenItem = new PlacesItem(*shownItem);
|
||||
removeItem(index);
|
||||
m_hiddenItems.insert(newIndex, hiddenItem);
|
||||
}
|
||||
|
@ -125,7 +134,7 @@ void PlacesItemModel::setHiddenItemsShown(bool show)
|
|||
int modelIndex = 0;
|
||||
for (int hiddenIndex = 0; hiddenIndex < m_hiddenItems.count(); ++hiddenIndex) {
|
||||
if (m_hiddenItems[hiddenIndex]) {
|
||||
KStandardItem* visibleItem = new KStandardItem(*m_hiddenItems[hiddenIndex]);
|
||||
PlacesItem* visibleItem = new PlacesItem(*m_hiddenItems[hiddenIndex]);
|
||||
delete m_hiddenItems[hiddenIndex];
|
||||
m_hiddenItems.removeAt(hiddenIndex);
|
||||
insertItem(modelIndex, visibleItem);
|
||||
|
@ -138,9 +147,9 @@ void PlacesItemModel::setHiddenItemsShown(bool show)
|
|||
// m_hiddenItems.
|
||||
Q_ASSERT(m_hiddenItems.count() == count());
|
||||
for (int i = count() - 1; i >= 0; --i) {
|
||||
KStandardItem* visibleItem = item(i);
|
||||
if (visibleItem->dataValue("isHidden").toBool()) {
|
||||
KStandardItem* hiddenItem = new KStandardItem(*visibleItem);
|
||||
PlacesItem* visibleItem = placesItem(i);
|
||||
if (visibleItem->isHidden()) {
|
||||
PlacesItem* hiddenItem = new PlacesItem(*visibleItem);
|
||||
removeItem(i);
|
||||
m_hiddenItems.insert(i, hiddenItem);
|
||||
}
|
||||
|
@ -160,7 +169,7 @@ bool PlacesItemModel::hiddenItemsShown() const
|
|||
bool PlacesItemModel::isSystemItem(int index) const
|
||||
{
|
||||
if (index >= 0 && index < count()) {
|
||||
const KUrl url = data(index).value("url").value<KUrl>();
|
||||
const KUrl url = placesItem(index)->url();
|
||||
return m_systemBookmarksIndexes.contains(url);
|
||||
}
|
||||
return false;
|
||||
|
@ -172,7 +181,7 @@ int PlacesItemModel::closestItem(const KUrl& url) const
|
|||
int maxLength = 0;
|
||||
|
||||
for (int i = 0; i < count(); ++i) {
|
||||
const KUrl itemUrl = data(i).value("url").value<KUrl>();
|
||||
const KUrl itemUrl = placesItem(i)->url();
|
||||
if (itemUrl.isParentOf(url)) {
|
||||
const int length = itemUrl.prettyUrl().length();
|
||||
if (length > maxLength) {
|
||||
|
@ -245,6 +254,16 @@ void PlacesItemModel::onItemRemoved(int index)
|
|||
#endif
|
||||
}
|
||||
|
||||
void PlacesItemModel::slotDeviceAdded(const QString& udi)
|
||||
{
|
||||
Q_UNUSED(udi);
|
||||
}
|
||||
|
||||
void PlacesItemModel::slotDeviceRemoved(const QString& udi)
|
||||
{
|
||||
Q_UNUSED(udi);
|
||||
}
|
||||
|
||||
void PlacesItemModel::loadBookmarks()
|
||||
{
|
||||
KBookmarkGroup root = m_bookmarkManager->root();
|
||||
|
@ -256,6 +275,12 @@ void PlacesItemModel::loadBookmarks()
|
|||
missingSystemBookmarks.insert(data.url);
|
||||
}
|
||||
|
||||
// The bookmarks might have a mixed order of "places" and "devices". In
|
||||
// Dolphin's places panel the devices should always be appended as last
|
||||
// group.
|
||||
QList<PlacesItem*> placesItems;
|
||||
QList<PlacesItem*> devicesItems;
|
||||
|
||||
while (!bookmark.isNull()) {
|
||||
const QString udi = bookmark.metaDataItem("UDI");
|
||||
const KUrl url = bookmark.url();
|
||||
|
@ -266,61 +291,69 @@ void PlacesItemModel::loadBookmarks()
|
|||
&& (m_nepomukRunning || url.protocol() != QLatin1String("timeline"));
|
||||
|
||||
if ((udi.isEmpty() && allowedHere) || deviceAvailable) {
|
||||
KStandardItem* item = new KStandardItem();
|
||||
item->setIcon(KIcon(bookmark.icon()));
|
||||
item->setDataValue("address", bookmark.address());
|
||||
item->setDataValue("url", url);
|
||||
|
||||
if (missingSystemBookmarks.contains(url)) {
|
||||
missingSystemBookmarks.remove(url);
|
||||
// Apply the translated text to the system bookmarks, otherwise an outdated
|
||||
// translation might be shown.
|
||||
const int index = m_systemBookmarksIndexes.value(url);
|
||||
item->setText(m_systemBookmarks[index].text);
|
||||
|
||||
// The system bookmarks don't contain "real" queries stored as URLs, so
|
||||
// they must be translated first.
|
||||
item->setDataValue("url", translatedSystemBookmarkUrl(url));
|
||||
} else {
|
||||
item->setText(bookmark.text());
|
||||
}
|
||||
|
||||
PlacesItem* item = new PlacesItem(bookmark, udi);
|
||||
if (deviceAvailable) {
|
||||
item->setDataValue("udi", udi);
|
||||
item->setGroup(i18nc("@item", "Devices"));
|
||||
devicesItems.append(item);
|
||||
} else {
|
||||
item->setGroup(i18nc("@item", "Places"));
|
||||
}
|
||||
placesItems.append(item);
|
||||
|
||||
if (bookmark.metaDataItem("IsHidden") == QLatin1String("true")) {
|
||||
m_hiddenItems.append(item);
|
||||
} else {
|
||||
appendItem(item);
|
||||
if (missingSystemBookmarks.contains(url)) {
|
||||
missingSystemBookmarks.remove(url);
|
||||
|
||||
// Apply the translated text to the system bookmarks, otherwise an outdated
|
||||
// translation might be shown.
|
||||
const int index = m_systemBookmarksIndexes.value(url);
|
||||
item->setText(m_systemBookmarks[index].text);
|
||||
|
||||
// The system bookmarks don't contain "real" queries stored as URLs, so
|
||||
// they must be translated first.
|
||||
item->setUrl(translatedSystemBookmarkUrl(url));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bookmark = root.next(bookmark);
|
||||
}
|
||||
|
||||
addItems(placesItems);
|
||||
|
||||
if (!missingSystemBookmarks.isEmpty()) {
|
||||
foreach (const SystemBookmarkData& data, m_systemBookmarks) {
|
||||
if (missingSystemBookmarks.contains(data.url)) {
|
||||
KStandardItem* item = new KStandardItem();
|
||||
item->setIcon(KIcon(data.icon));
|
||||
PlacesItem* item = new PlacesItem();
|
||||
item->setIcon(data.icon);
|
||||
item->setText(data.text);
|
||||
item->setDataValue("url", translatedSystemBookmarkUrl(data.url));
|
||||
item->setUrl(translatedSystemBookmarkUrl(data.url));
|
||||
item->setGroup(data.group);
|
||||
appendItem(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
addItems(devicesItems);
|
||||
|
||||
// TODO: add bookmarks for missing devices
|
||||
// foreach (const QString &udi, devices) {
|
||||
// bookmark = KFilePlacesItem::createDeviceBookmark(bookmarkManager, udi);
|
||||
// ...
|
||||
|
||||
#ifdef PLACESITEMMODEL_DEBUG
|
||||
kDebug() << "Loaded bookmarks";
|
||||
showModelState();
|
||||
#endif
|
||||
}
|
||||
|
||||
void PlacesItemModel::addItems(const QList<PlacesItem*>& items)
|
||||
{
|
||||
foreach (PlacesItem* item, items) {
|
||||
if (item->isHidden()) {
|
||||
m_hiddenItems.append(item);
|
||||
} else {
|
||||
appendItem(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PlacesItemModel::createSystemBookmarks()
|
||||
{
|
||||
Q_ASSERT(m_systemBookmarks.isEmpty());
|
||||
|
@ -390,6 +423,28 @@ void PlacesItemModel::createSystemBookmarks()
|
|||
}
|
||||
}
|
||||
|
||||
void PlacesItemModel::initializeAvailableDevices()
|
||||
{
|
||||
m_predicate = Solid::Predicate::fromString(
|
||||
"[[[[ StorageVolume.ignored == false AND [ StorageVolume.usage == 'FileSystem' OR StorageVolume.usage == 'Encrypted' ]]"
|
||||
" OR "
|
||||
"[ IS StorageAccess AND StorageDrive.driveType == 'Floppy' ]]"
|
||||
" OR "
|
||||
"OpticalDisc.availableContent & 'Audio' ]"
|
||||
" OR "
|
||||
"StorageAccess.ignored == false ]");
|
||||
Q_ASSERT(m_predicate.isValid());
|
||||
|
||||
Solid::DeviceNotifier* notifier = Solid::DeviceNotifier::instance();
|
||||
connect(notifier, SIGNAL(deviceAdded(QString)), this, SLOT(slotDeviceAdded(QString)));
|
||||
connect(notifier, SIGNAL(deviceRemoved(QString)), this, SLOT(slotDeviceRemoved(QString)));
|
||||
|
||||
const QList<Solid::Device>& deviceList = Solid::Device::listFromQuery(m_predicate);
|
||||
foreach(const Solid::Device& device, deviceList) {
|
||||
m_availableDevices << device.udi();
|
||||
}
|
||||
}
|
||||
|
||||
int PlacesItemModel::hiddenIndex(int index) const
|
||||
{
|
||||
int hiddenIndex = 0;
|
||||
|
|
|
@ -28,8 +28,10 @@
|
|||
#include <QHash>
|
||||
#include <QList>
|
||||
#include <QSet>
|
||||
#include <Solid/Predicate>
|
||||
|
||||
class KBookmarkManager;
|
||||
class PlacesItem;
|
||||
class QAction;
|
||||
|
||||
#ifdef HAVE_NEPOMUK
|
||||
|
@ -58,6 +60,8 @@ public:
|
|||
explicit PlacesItemModel(QObject* parent = 0);
|
||||
virtual ~PlacesItemModel();
|
||||
|
||||
PlacesItem* placesItem(int index) const;
|
||||
|
||||
void setHiddenItemsShown(bool show);
|
||||
bool hiddenItemsShown() const;
|
||||
|
||||
|
@ -94,9 +98,20 @@ protected:
|
|||
virtual void onItemInserted(int index);
|
||||
virtual void onItemRemoved(int index);
|
||||
|
||||
private slots:
|
||||
void slotDeviceAdded(const QString& udi);
|
||||
void slotDeviceRemoved(const QString& udi);
|
||||
|
||||
private:
|
||||
void loadBookmarks();
|
||||
|
||||
/**
|
||||
* Helper method for loadBookmarks(): Adds the items
|
||||
* to the model if the "isHidden"-property is false,
|
||||
* otherwise the items get added to m_hiddenItems.
|
||||
*/
|
||||
void addItems(const QList<PlacesItem*>& items);
|
||||
|
||||
/**
|
||||
* Creates system bookmarks that are shown per default and can
|
||||
* only be hidden but not removed. The result will be stored
|
||||
|
@ -104,6 +119,8 @@ private:
|
|||
*/
|
||||
void createSystemBookmarks();
|
||||
|
||||
void initializeAvailableDevices();
|
||||
|
||||
/**
|
||||
* @param index Item index related to the model.
|
||||
* @return Corresponding item index related to m_hiddenItems.
|
||||
|
@ -153,6 +170,7 @@ private:
|
|||
bool m_hiddenItemsShown;
|
||||
|
||||
QSet<QString> m_availableDevices;
|
||||
Solid::Predicate m_predicate;
|
||||
KBookmarkManager* m_bookmarkManager;
|
||||
|
||||
struct SystemBookmarkData
|
||||
|
@ -171,7 +189,7 @@ private:
|
|||
QList<SystemBookmarkData> m_systemBookmarks;
|
||||
QHash<KUrl, int> m_systemBookmarksIndexes;
|
||||
|
||||
QList<KStandardItem*> m_hiddenItems;
|
||||
QList<PlacesItem*> m_hiddenItems;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -360,7 +360,7 @@ KStandardItem* PlacesPanel::createStandardItemFromDialog(PlacesItemEditDialog* d
|
|||
|
||||
const KUrl newUrl = dialog->url();
|
||||
KStandardItem* item = new KStandardItem();
|
||||
item->setIcon(KIcon(dialog->icon()));
|
||||
item->setIcon(dialog->icon());
|
||||
item->setText(dialog->text());
|
||||
item->setDataValue("url", newUrl);
|
||||
item->setGroup(m_model->groupName(newUrl));
|
||||
|
|
Loading…
Reference in a new issue