[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kde-baseapps/KDE/4.9] dolphin/src/panels/places: Show MTP devices in case support for it is install
From:       Alex Fiestas <afiestas () kde ! org>
Date:       2012-10-23 23:25:13
Message-ID: 20121023232513.15C90A6078 () git ! kde ! org
[Download RAW message or body]

Git commit 430cbb156a594af83c1325b989290b33cc7e3b00 by Alex Fiestas.
Committed on 24/10/2012 at 01:21.
Pushed by afiestas into branch 'KDE/4.9'.

Show MTP devices in case support for it is installed

Basically adds a conditional that in case that mtp kioslave is installed
devices with MTP are added to the predicated.
REVIEW: 106651
(cherry picked from commit a09a23795050be4ad6e2c987614cb28096030cc8)

M  +6    -0    dolphin/src/panels/places/placesitem.cpp
M  +2    -0    dolphin/src/panels/places/placesitem.h
M  +17   -6    dolphin/src/panels/places/placesitemmodel.cpp

http://commits.kde.org/kde-baseapps/430cbb156a594af83c1325b989290b33cc7e3b00

diff --git a/dolphin/src/panels/places/placesitem.cpp \
b/dolphin/src/panels/places/placesitem.cpp index f72f639..f78c98b 100644
--- a/dolphin/src/panels/places/placesitem.cpp
+++ b/dolphin/src/panels/places/placesitem.cpp
@@ -37,6 +37,7 @@ PlacesItem::PlacesItem(const KBookmark& bookmark, PlacesItem* \
parent) :  m_access(),
     m_volume(),
     m_disc(),
+    m_mtp(),
     m_signalHandler(0),
     m_trashDirLister(0),
     m_bookmark()
@@ -124,6 +125,7 @@ void PlacesItem::setBookmark(const KBookmark& bookmark)
     delete m_access;
     delete m_volume;
     delete m_disc;
+    delete m_mtp;
 
 
     const QString udi = bookmark.metaDataItem("UDI");
@@ -252,6 +254,7 @@ void PlacesItem::initializeDevice(const QString& udi)
     m_access = m_device.as<Solid::StorageAccess>();
     m_volume = m_device.as<Solid::StorageVolume>();
     m_disc = m_device.as<Solid::OpticalDisc>();
+    m_mtp = m_device.as<Solid::PortableMediaPlayer>();
 
     setText(m_device.description());
     setIcon(m_device.icon());
@@ -265,6 +268,9 @@ void PlacesItem::initializeDevice(const QString& udi)
     } 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 if (m_mtp && m_mtp->supportedProtocols().contains("mtp")) {
+        setText(m_device.product());
+        setUrl(QString("mtp:udi=%1").arg(m_device.udi()));
     }
 }
 
diff --git a/dolphin/src/panels/places/placesitem.h \
b/dolphin/src/panels/places/placesitem.h index 5a24a52..297f12d 100644
--- a/dolphin/src/panels/places/placesitem.h
+++ b/dolphin/src/panels/places/placesitem.h
@@ -28,6 +28,7 @@
 #include <Solid/OpticalDisc>
 #include <Solid/StorageAccess>
 #include <Solid/StorageVolume>
+#include <Solid/PortableMediaPlayer>
 
 class KDirLister;
 class PlacesItemSignalHandler;
@@ -115,6 +116,7 @@ private:
     QPointer<Solid::StorageAccess> m_access;
     QPointer<Solid::StorageVolume> m_volume;
     QPointer<Solid::OpticalDisc> m_disc;
+    QPointer<Solid::PortableMediaPlayer> m_mtp;
     QPointer<PlacesItemSignalHandler> m_signalHandler;
     QPointer<KDirLister> m_trashDirLister;
     KBookmark m_bookmark;
diff --git a/dolphin/src/panels/places/placesitemmodel.cpp \
b/dolphin/src/panels/places/placesitemmodel.cpp index 4770c6b..1789f18 100644
--- a/dolphin/src/panels/places/placesitemmodel.cpp
+++ b/dolphin/src/panels/places/placesitemmodel.cpp
@@ -31,6 +31,7 @@
 #include <KComponentData>
 #include <KDebug>
 #include <KIcon>
+#include <kprotocolinfo.h>
 #include <KLocale>
 #include <KStandardDirs>
 #include <KUser>
@@ -554,11 +555,14 @@ void PlacesItemModel::onItemChanged(int index, const \
QSet<QByteArray>& changedRo  void PlacesItemModel::slotDeviceAdded(const QString& \
udi)  {
     const Solid::Device device(udi);
-    if (m_predicate.matches(device)) {
-        m_availableDevices << udi;
-        const KBookmark bookmark = \
                PlacesItem::createDeviceBookmark(m_bookmarkManager, udi);
-        appendItem(new PlacesItem(bookmark));
+
+    if (!m_predicate.matches(device)) {
+        return;
     }
+
+    m_availableDevices << udi;
+    const KBookmark bookmark = PlacesItem::createDeviceBookmark(m_bookmarkManager, \
udi); +    appendItem(new PlacesItem(bookmark));
 }
 
 void PlacesItemModel::slotDeviceRemoved(const QString& udi)
@@ -949,14 +953,21 @@ void PlacesItemModel::createSystemBookmarks()
 
 void PlacesItemModel::initializeAvailableDevices()
 {
-    m_predicate = Solid::Predicate::fromString(
-        "[[[[ StorageVolume.ignored == false AND [ StorageVolume.usage == \
'FileSystem' OR StorageVolume.usage == 'Encrypted' ]]" +    QString predicate("[[[[ \
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 ]");
+
+
+    if (KProtocolInfo::isKnownProtocol("mtp")) {
+        predicate.prepend("[");
+        predicate.append(" OR PortableMediaPlayer.supportedProtocols == 'mtp']");
+    }
+
+    m_predicate = Solid::Predicate::fromString(predicate);
     Q_ASSERT(m_predicate.isValid());
 
     Solid::DeviceNotifier* notifier = Solid::DeviceNotifier::instance();


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic