Basically adds a conditional that in case that mtp kioslave is installed
devices with MTP are added to the predicated.
REVIEW: 106651
m_access(),
m_volume(),
m_disc(),
m_access(),
m_volume(),
m_disc(),
m_signalHandler(0),
m_trashDirLister(0),
m_bookmark()
m_signalHandler(0),
m_trashDirLister(0),
m_bookmark()
delete m_access;
delete m_volume;
delete m_disc;
delete m_access;
delete m_volume;
delete m_disc;
const QString udi = bookmark.metaDataItem("UDI");
const QString udi = bookmark.metaDataItem("UDI");
m_access = m_device.as<Solid::StorageAccess>();
m_volume = m_device.as<Solid::StorageVolume>();
m_disc = m_device.as<Solid::OpticalDisc>();
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());
setText(m_device.description());
setIcon(m_device.icon());
} 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_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()));
#include <Solid/OpticalDisc>
#include <Solid/StorageAccess>
#include <Solid/StorageVolume>
#include <Solid/OpticalDisc>
#include <Solid/StorageAccess>
#include <Solid/StorageVolume>
+#include <Solid/PortableMediaPlayer>
class KDirLister;
class PlacesItemSignalHandler;
class KDirLister;
class PlacesItemSignalHandler;
QPointer<Solid::StorageAccess> m_access;
QPointer<Solid::StorageVolume> m_volume;
QPointer<Solid::OpticalDisc> m_disc;
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;
QPointer<PlacesItemSignalHandler> m_signalHandler;
QPointer<KDirLister> m_trashDirLister;
KBookmark m_bookmark;
#include <KComponentData>
#include <KDebug>
#include <KIcon>
#include <KComponentData>
#include <KDebug>
#include <KIcon>
+#include <kprotocolinfo.h>
#include <KLocale>
#include <KStandardDirs>
#include <KUser>
#include <KLocale>
#include <KStandardDirs>
#include <KUser>
void PlacesItemModel::slotDeviceAdded(const QString& udi)
{
const Solid::Device device(udi);
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)
}
void PlacesItemModel::slotDeviceRemoved(const QString& udi)
void PlacesItemModel::initializeAvailableDevices()
{
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 ]");
" 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();
Q_ASSERT(m_predicate.isValid());
Solid::DeviceNotifier* notifier = Solid::DeviceNotifier::instance();