Merge branch 'f18' into f17
This commit is contained in:
commit
f2aaad9133
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
|||||||
/kdelibs-4.8.5.tar.xz
|
/kdelibs-4.8.5.tar.xz
|
||||||
/kdelibs-4.9.3.tar.xz
|
/kdelibs-4.9.3.tar.xz
|
||||||
|
/kdelibs-4.9.4.tar.xz
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
From 0820b3173aff4f0f3c803a9e75e726024da38ee5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Faure <faure@kde.org>
|
||||||
|
Date: Thu, 6 Dec 2012 11:55:05 +0100
|
||||||
|
Subject: [PATCH] Fix crash when no service was selected (user clicked on
|
||||||
|
"Open With...")
|
||||||
|
|
||||||
|
---
|
||||||
|
kparts/browserrun.cpp | 2 +-
|
||||||
|
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/kparts/browserrun.cpp b/kparts/browserrun.cpp
|
||||||
|
index 6d84800..6de0380 100644
|
||||||
|
--- a/kparts/browserrun.cpp
|
||||||
|
+++ b/kparts/browserrun.cpp
|
||||||
|
@@ -304,7 +304,7 @@ BrowserRun::NonEmbeddableResult BrowserRun::handleNonEmbeddable(const QString& _
|
||||||
|
this, SLOT(slotCopyToTempFileResult(KJob*)) );
|
||||||
|
return Delayed; // We'll continue after the job has finished
|
||||||
|
}
|
||||||
|
- if (selectedService) {
|
||||||
|
+ if (selectedService && question.selectedService()) {
|
||||||
|
*selectedService = question.selectedService();
|
||||||
|
// KRun will use this when starting an app
|
||||||
|
KRun::setPreferredService(question.selectedService()->desktopEntryName());
|
||||||
|
--
|
||||||
|
1.7.7
|
@ -0,0 +1,53 @@
|
|||||||
|
From 73283f1332e90fbb6fe0caa39a038cb16b83a54c Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Faure <faure@kde.org>
|
||||||
|
Date: Wed, 5 Dec 2012 22:42:25 +0100
|
||||||
|
Subject: [PATCH] Revert "Also check parent mimetypes in
|
||||||
|
protocolForArchiveMimetype()."
|
||||||
|
|
||||||
|
This reverts commit 4f296cfbced2c4ad54beec8f500ed2d3fc04ee05.
|
||||||
|
It breaks opening odt and other zip-based files in external apps.
|
||||||
|
That's what I get for delegating the testing :-)
|
||||||
|
BUG: 311214
|
||||||
|
---
|
||||||
|
kio/kio/kprotocolmanager.cpp | 19 +------------------
|
||||||
|
1 files changed, 1 insertions(+), 18 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/kio/kio/kprotocolmanager.cpp b/kio/kio/kprotocolmanager.cpp
|
||||||
|
index 3f1cadd..502a3e6 100644
|
||||||
|
--- a/kio/kio/kprotocolmanager.cpp
|
||||||
|
+++ b/kio/kio/kprotocolmanager.cpp
|
||||||
|
@@ -47,7 +47,6 @@
|
||||||
|
#include <ksharedconfig.h>
|
||||||
|
#include <kstandarddirs.h>
|
||||||
|
#include <kurl.h>
|
||||||
|
-#include <kmimetype.h>
|
||||||
|
#include <kmimetypetrader.h>
|
||||||
|
#include <kprotocolinfofactory.h>
|
||||||
|
|
||||||
|
@@ -1190,23 +1189,7 @@ QString KProtocolManager::protocolForArchiveMimetype( const QString& mimeType )
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- const QString prot = d->protocolForArchiveMimetypes.value(mimeType);
|
||||||
|
- if (!prot.isEmpty())
|
||||||
|
- return prot;
|
||||||
|
-
|
||||||
|
- // Check parent mimetypes
|
||||||
|
- KMimeType::Ptr mime = KMimeType::mimeType(mimeType);
|
||||||
|
- if (mime) {
|
||||||
|
- const QStringList parentMimeTypes = mime->allParentMimeTypes();
|
||||||
|
- Q_FOREACH(const QString& parentMimeType, parentMimeTypes) {
|
||||||
|
- const QString res = d->protocolForArchiveMimetypes.value(parentMimeType);
|
||||||
|
- if (!res.isEmpty()) {
|
||||||
|
- return res;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- return QString();
|
||||||
|
+ return d->protocolForArchiveMimetypes.value(mimeType);
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef PRIVATE_DATA
|
||||||
|
--
|
||||||
|
1.7.7
|
@ -1,10 +0,0 @@
|
|||||||
--- kdelibs-4.9.3/plasma/private/packages.cpp 2012-10-19 12:26:32.000000000 +0200
|
|
||||||
+++ kdelibs-4.9.3/plasma/private/packages.cpp_new 2012-11-23 13:19:25.757302077 +0100
|
|
||||||
@@ -109,6 +109,7 @@ void PlasmoidPackage::createNewWidgetBro
|
|
||||||
m_knsDialog = knsDialog = new KNS3::DownloadDialog("plasmoids.knsrc", parent);
|
|
||||||
knsDialog->setProperty("DoNotCloseController", true);
|
|
||||||
connect(knsDialog, SIGNAL(accepted()), this, SIGNAL(newWidgetBrowserFinished()));
|
|
||||||
+ connect(knsDialog, SIGNAL(accepted()), knsDialog, SLOT(deleteLater()));
|
|
||||||
}
|
|
||||||
|
|
||||||
knsDialog->show();
|
|
12
kdelibs-4.9.3-dot.patch
Normal file
12
kdelibs-4.9.3-dot.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -up kdelibs-4.9.3/doc/common/Doxyfile.global.me kdelibs-4.9.3/doc/common/Doxyfile.global
|
||||||
|
--- kdelibs-4.9.3/doc/common/Doxyfile.global.me 2012-12-04 16:57:09.239184154 +0100
|
||||||
|
+++ kdelibs-4.9.3/doc/common/Doxyfile.global 2012-12-04 16:57:13.157191451 +0100
|
||||||
|
@@ -1392,7 +1392,7 @@ HIDE_UNDOC_RELATIONS = NO
|
||||||
|
# toolkit from AT&T and Lucent Bell Labs. The other options in this section
|
||||||
|
# have no effect if this option is set to NO (the default)
|
||||||
|
|
||||||
|
-HAVE_DOT = YES
|
||||||
|
+HAVE_DOT = NO
|
||||||
|
|
||||||
|
# By default doxygen will write a font called FreeSans.ttf to the output
|
||||||
|
# directory and reference it in all dot files that doxygen generates. This
|
12
kdelibs-4.9.3-kcm_ssl.patch
Normal file
12
kdelibs-4.9.3-kcm_ssl.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -up kdelibs-4.9.3/kio/kssl/kcm/cacertificatespage.cpp.orig kdelibs-4.9.3/kio/kssl/kcm/cacertificatespage.cpp
|
||||||
|
--- kdelibs-4.9.3/kio/kssl/kcm/cacertificatespage.cpp.orig 2012-11-29 15:37:07.458858688 +0100
|
||||||
|
+++ kdelibs-4.9.3/kio/kssl/kcm/cacertificatespage.cpp 2012-11-29 13:52:05.243926802 +0100
|
||||||
|
@@ -291,7 +291,7 @@ void CaCertificatesPage::removeSelection
|
||||||
|
void CaCertificatesPage::addCertificateClicked()
|
||||||
|
{
|
||||||
|
QStringList certFiles
|
||||||
|
- = KFileDialog::getOpenFileNames(KUrl(), QLatin1String("application/x-x509-ca-cert"),
|
||||||
|
+ = KFileDialog::getOpenFileNames(KUrl(), QLatin1String("*.pem *.cert *.crt *.der"),
|
||||||
|
this, i18n("Pick Certificates"));
|
||||||
|
|
||||||
|
QList<QSslCertificate> certs;
|
File diff suppressed because it is too large
Load Diff
406
kdelibs-udisks2-kfileplacesdevicecache.patch
Normal file
406
kdelibs-udisks2-kfileplacesdevicecache.patch
Normal file
@ -0,0 +1,406 @@
|
|||||||
|
diff --git a/kfile/CMakeLists.txt b/kfile/CMakeLists.txt
|
||||||
|
index ceae140..c7c4d3d 100644
|
||||||
|
--- a/kfile/CMakeLists.txt
|
||||||
|
+++ b/kfile/CMakeLists.txt
|
||||||
|
@@ -20,6 +20,7 @@ set(kfile_LIB_SRCS
|
||||||
|
kfilefiltercombo.cpp
|
||||||
|
kfiletreeview.cpp
|
||||||
|
kfilewidget.cpp
|
||||||
|
+ kfileplacesdevicecache.cpp
|
||||||
|
kfileplacesitem.cpp
|
||||||
|
kfileplacesmodel.cpp
|
||||||
|
kfileplacessharedbookmarks.cpp
|
||||||
|
@@ -63,6 +64,7 @@ install( FILES
|
||||||
|
kdirselectdialog.h
|
||||||
|
kdirsortfilterproxymodel.h
|
||||||
|
kfilefiltercombo.h
|
||||||
|
+ kfileplacesdevicecache.h
|
||||||
|
kfileplacesmodel.h
|
||||||
|
kfileplacesview.h
|
||||||
|
kfilepreviewgenerator.h
|
||||||
|
diff --git a/kfile/kfileplacesdevicecache.cpp b/kfile/kfileplacesdevicecache.cpp
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..40f7242
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/kfile/kfileplacesdevicecache.cpp
|
||||||
|
@@ -0,0 +1,174 @@
|
||||||
|
+/*
|
||||||
|
+ Copyright (C) 2012 Dan Vrátil <dvratil@redhat.com>
|
||||||
|
+
|
||||||
|
+ This library is free software; you can redistribute it and/or
|
||||||
|
+ modify it under the terms of the GNU Library General Public
|
||||||
|
+ License version 2 as published by the Free Software Foundation.
|
||||||
|
+
|
||||||
|
+ This library 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
|
||||||
|
+ Library General Public License for more details.
|
||||||
|
+
|
||||||
|
+ You should have received a copy of the GNU Library General Public License
|
||||||
|
+ along with this library; see the file COPYING.LIB. If not, write to
|
||||||
|
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
+ Boston, MA 02110-1301, USA.
|
||||||
|
+*/
|
||||||
|
+
|
||||||
|
+#include "kfileplacesdevicecache.h"
|
||||||
|
+
|
||||||
|
+#include <QMutex>
|
||||||
|
+#include <QtConcurrentRun>
|
||||||
|
+#include <QFutureWatcher>
|
||||||
|
+#include <QTimer>
|
||||||
|
+
|
||||||
|
+#include <kprotocolinfo.h>
|
||||||
|
+#include <solid/predicate.h>
|
||||||
|
+#include <solid/device.h>
|
||||||
|
+#include <solid/devicenotifier.h>
|
||||||
|
+#include <solid/genericinterface.h>
|
||||||
|
+
|
||||||
|
+#include <kdebug.h>
|
||||||
|
+
|
||||||
|
+KFilePlacesDeviceCache* KFilePlacesDeviceCache::s_instance = 0;
|
||||||
|
+
|
||||||
|
+class KFilePlacesDeviceCache::Private
|
||||||
|
+{
|
||||||
|
+ public:
|
||||||
|
+ Private(KFilePlacesDeviceCache *parent):
|
||||||
|
+ queryRunning(false),
|
||||||
|
+ q(parent)
|
||||||
|
+ { }
|
||||||
|
+
|
||||||
|
+ ~Private()
|
||||||
|
+ { }
|
||||||
|
+
|
||||||
|
+ /* This method runs asynchronously in thread */
|
||||||
|
+ QSet<QString> listSolidDevicesAsync()
|
||||||
|
+ {
|
||||||
|
+ QSet<QString> udis;
|
||||||
|
+
|
||||||
|
+ kDebug() << "Querying Solid devices...";
|
||||||
|
+ const QList<Solid::Device>& deviceList = Solid::Device::listFromQuery(solidPredicate);
|
||||||
|
+ kDebug() << "Retrieved" << deviceList.count() << "devices";
|
||||||
|
+
|
||||||
|
+ Q_FOREACH (const Solid::Device& device, deviceList) {
|
||||||
|
+ if (solidPredicate.matches(device)) {
|
||||||
|
+ udis << device.udi();
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return udis;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ void _k_slotDeviceAdded(const QString &udi)
|
||||||
|
+ {
|
||||||
|
+ devicesCache << udi;
|
||||||
|
+
|
||||||
|
+ Q_EMIT q->deviceAdded(udi);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ void _k_slotDeviceRemoved(const QString &udi)
|
||||||
|
+ {
|
||||||
|
+ if (!devicesCache.contains(udi)) {
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ devicesCache.remove(udi);
|
||||||
|
+
|
||||||
|
+ Q_EMIT q->deviceRemoved(udi);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ void _k_listSolidDevicesFinished()
|
||||||
|
+ {
|
||||||
|
+ Q_FOREACH (const QString& device, futureWatcher->result()) {
|
||||||
|
+ _k_slotDeviceAdded(device);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ delete futureWatcher;
|
||||||
|
+ futureWatcher = 0;
|
||||||
|
+
|
||||||
|
+ queryRunning = false;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ Solid::Predicate solidPredicate;
|
||||||
|
+
|
||||||
|
+ QFutureWatcher< QSet<QString> >* futureWatcher;
|
||||||
|
+
|
||||||
|
+ /* Static */
|
||||||
|
+ QSet<QString> devicesCache;
|
||||||
|
+ bool queryRunning;
|
||||||
|
+
|
||||||
|
+ KFilePlacesDeviceCache *q;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+KFilePlacesDeviceCache::KFilePlacesDeviceCache():
|
||||||
|
+ QObject(),
|
||||||
|
+ d(new Private(this))
|
||||||
|
+{
|
||||||
|
+ Solid::DeviceNotifier* notifier = Solid::DeviceNotifier::instance();
|
||||||
|
+ connect(notifier, SIGNAL(deviceAdded(QString)), this, SLOT(_k_slotDeviceAdded(QString)));
|
||||||
|
+ connect(notifier, SIGNAL(deviceRemoved(QString)), this, SLOT(_k_slotDeviceRemoved(QString)));
|
||||||
|
+
|
||||||
|
+ 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']");
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ d->solidPredicate = Solid::Predicate::fromString(predicate);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+KFilePlacesDeviceCache* KFilePlacesDeviceCache::self()
|
||||||
|
+{
|
||||||
|
+ static QMutex mutex;
|
||||||
|
+
|
||||||
|
+ mutex.lock();
|
||||||
|
+ if (s_instance == 0) {
|
||||||
|
+ s_instance = new KFilePlacesDeviceCache();
|
||||||
|
+ }
|
||||||
|
+ mutex.unlock();
|
||||||
|
+
|
||||||
|
+ return s_instance;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+KFilePlacesDeviceCache::~KFilePlacesDeviceCache()
|
||||||
|
+{
|
||||||
|
+ Solid::DeviceNotifier* notifier = Solid::DeviceNotifier::instance();
|
||||||
|
+ disconnect(notifier, SIGNAL(deviceAdded(QString)));
|
||||||
|
+ disconnect(notifier, SIGNAL(deviceRemoved(QString)));
|
||||||
|
+
|
||||||
|
+ delete d;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+const Solid::Predicate& KFilePlacesDeviceCache::predicate() const
|
||||||
|
+{
|
||||||
|
+ return d->solidPredicate;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+const QSet<QString>& KFilePlacesDeviceCache::devices() const
|
||||||
|
+{
|
||||||
|
+ kDebug();
|
||||||
|
+ if (d->devicesCache.isEmpty() && !d->queryRunning) {
|
||||||
|
+ d->queryRunning = true;
|
||||||
|
+ d->futureWatcher = new QFutureWatcher< QSet<QString> >;
|
||||||
|
+ connect(d->futureWatcher, SIGNAL(finished()), this, SLOT(_k_listSolidDevicesFinished()));
|
||||||
|
+
|
||||||
|
+ QFuture< QSet<QString> > future = QtConcurrent::run(d, &Private::listSolidDevicesAsync);
|
||||||
|
+ d->futureWatcher->setFuture(future);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return d->devicesCache;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+#include "kfileplacesdevicecache.moc"
|
||||||
|
diff --git a/kfile/kfileplacesdevicecache.h b/kfile/kfileplacesdevicecache.h
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..7293d03
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/kfile/kfileplacesdevicecache.h
|
||||||
|
@@ -0,0 +1,96 @@
|
||||||
|
+/*
|
||||||
|
+ Copyright (C) 2012 Dan Vrátil <dvratil@redhat.com>
|
||||||
|
+
|
||||||
|
+ This library is free software; you can redistribute it and/or
|
||||||
|
+ modify it under the terms of the GNU Library General Public
|
||||||
|
+ License version 2 as published by the Free Software Foundation.
|
||||||
|
+
|
||||||
|
+ This library 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
|
||||||
|
+ Library General Public License for more details.
|
||||||
|
+
|
||||||
|
+ You should have received a copy of the GNU Library General Public License
|
||||||
|
+ along with this library; see the file COPYING.LIB. If not, write to
|
||||||
|
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
+ Boston, MA 02110-1301, USA.
|
||||||
|
+*/
|
||||||
|
+
|
||||||
|
+#ifndef KFILEPLACESDEVICECACHE_H
|
||||||
|
+#define KFILEPLACESDEVICECACHE_H
|
||||||
|
+
|
||||||
|
+#include <kfile_export.h>
|
||||||
|
+
|
||||||
|
+#include <QObject>
|
||||||
|
+#include <QSet>
|
||||||
|
+
|
||||||
|
+#include <solid/predicate.h>
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * @short Asynchronous cache for Solid devices
|
||||||
|
+ *
|
||||||
|
+ * Purpose of this cache is to load Solid devices asynchronously, because
|
||||||
|
+ * udisks2 backend can take quite a lot of time to enumerate devices, and
|
||||||
|
+ * since Solid does not have async API, the UI thread is blocked for too long.
|
||||||
|
+ *
|
||||||
|
+ * When libsolid2 with asynchronous API is available, this class can go away.
|
||||||
|
+ *
|
||||||
|
+ * The cache keeps itself up-to-date and notifies listeners when a
|
||||||
|
+ * new devices is added or removed.
|
||||||
|
+ */
|
||||||
|
+class KFILE_EXPORT KFilePlacesDeviceCache : public QObject
|
||||||
|
+{
|
||||||
|
+ Q_OBJECT
|
||||||
|
+
|
||||||
|
+public:
|
||||||
|
+ /**
|
||||||
|
+ * Returns a global instance of the cache
|
||||||
|
+ */
|
||||||
|
+ static KFilePlacesDeviceCache* self();
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Returns list of Solid devices.
|
||||||
|
+ *
|
||||||
|
+ * This method always returns immediatelly. When there are no
|
||||||
|
+ * devices in the cache, it returns an empty list and will asynchronously
|
||||||
|
+ * query Solid for devices and will notify listeners by emitting
|
||||||
|
+ * deviceAdded() signal for each devices loaded.
|
||||||
|
+ */
|
||||||
|
+ const QSet<QString>& devices() const;
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Returns Solid::Predicate used to obtain devices from Solid
|
||||||
|
+ */
|
||||||
|
+ const Solid::Predicate& predicate() const;
|
||||||
|
+
|
||||||
|
+Q_SIGNALS:
|
||||||
|
+ /**
|
||||||
|
+ * Emitted whenever a new device is discovered.
|
||||||
|
+ *
|
||||||
|
+ * @param udi UDI (Universal Device ID) of the newly discovered device
|
||||||
|
+ */
|
||||||
|
+ void deviceAdded(const QString& udi);
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Emitted whenever a device is removed from system
|
||||||
|
+ *
|
||||||
|
+ * @param udi UDI (Universal Device ID) of the removed device
|
||||||
|
+ */
|
||||||
|
+ void deviceRemoved(const QString& udi);
|
||||||
|
+
|
||||||
|
+private:
|
||||||
|
+ Q_PRIVATE_SLOT(d, void _k_listSolidDevicesFinished())
|
||||||
|
+ Q_PRIVATE_SLOT(d, void _k_slotDeviceAdded(const QString&))
|
||||||
|
+ Q_PRIVATE_SLOT(d, void _k_slotDeviceRemoved(const QString&))
|
||||||
|
+
|
||||||
|
+ class Private;
|
||||||
|
+ Private * const d;
|
||||||
|
+ friend class Private;
|
||||||
|
+
|
||||||
|
+ explicit KFilePlacesDeviceCache();
|
||||||
|
+ virtual ~KFilePlacesDeviceCache();
|
||||||
|
+
|
||||||
|
+ static KFilePlacesDeviceCache* s_instance;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+#endif // KFILEPLACESDEVICECACHE_H
|
||||||
|
diff --git a/kfile/kfileplacesmodel.cpp b/kfile/kfileplacesmodel.cpp
|
||||||
|
index 0192926..e0b01c6 100644
|
||||||
|
--- a/kfile/kfileplacesmodel.cpp
|
||||||
|
+++ b/kfile/kfileplacesmodel.cpp
|
||||||
|
@@ -20,6 +20,7 @@
|
||||||
|
#include "kfileplacesmodel.h"
|
||||||
|
#include "kfileplacesitem_p.h"
|
||||||
|
#include "kfileplacessharedbookmarks_p.h"
|
||||||
|
+#include "kfileplacesdevicecache.h"
|
||||||
|
|
||||||
|
#ifdef _WIN32_WCE
|
||||||
|
#include "Windows.h"
|
||||||
|
@@ -49,14 +50,12 @@
|
||||||
|
#include <kio/netaccess.h>
|
||||||
|
#include <kprotocolinfo.h>
|
||||||
|
|
||||||
|
-#include <solid/devicenotifier.h>
|
||||||
|
#include <solid/storageaccess.h>
|
||||||
|
#include <solid/storagedrive.h>
|
||||||
|
#include <solid/storagevolume.h>
|
||||||
|
#include <solid/opticaldrive.h>
|
||||||
|
#include <solid/opticaldisc.h>
|
||||||
|
#include <solid/portablemediaplayer.h>
|
||||||
|
-#include <solid/predicate.h>
|
||||||
|
|
||||||
|
class KFilePlacesModel::Private
|
||||||
|
{
|
||||||
|
@@ -74,7 +73,6 @@ public:
|
||||||
|
QSet<QString> availableDevices;
|
||||||
|
QMap<QObject*, QPersistentModelIndex> setupInProgress;
|
||||||
|
|
||||||
|
- Solid::Predicate predicate;
|
||||||
|
KBookmarkManager *bookmarkManager;
|
||||||
|
KFilePlacesSharedBookmarks * sharedBookmarks;
|
||||||
|
|
||||||
|
@@ -149,30 +147,12 @@ KFilePlacesModel::KFilePlacesModel(QObject *parent)
|
||||||
|
// create after, so if we have own places, they are added afterwards, in case of equal priorities
|
||||||
|
d->sharedBookmarks = new KFilePlacesSharedBookmarks(d->bookmarkManager);
|
||||||
|
|
||||||
|
- 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']");
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- d->predicate = Solid::Predicate::fromString(predicate);
|
||||||
|
-
|
||||||
|
- Q_ASSERT(d->predicate.isValid());
|
||||||
|
-
|
||||||
|
connect(d->bookmarkManager, SIGNAL(changed(QString,QString)),
|
||||||
|
this, SLOT(_k_reloadBookmarks()));
|
||||||
|
connect(d->bookmarkManager, SIGNAL(bookmarksChanged(QString)),
|
||||||
|
this, SLOT(_k_reloadBookmarks()));
|
||||||
|
|
||||||
|
- d->_k_reloadBookmarks();
|
||||||
|
- QTimer::singleShot(0, this, SLOT(_k_initDeviceList()));
|
||||||
|
+ d->_k_initDeviceList();
|
||||||
|
}
|
||||||
|
|
||||||
|
KFilePlacesModel::~KFilePlacesModel()
|
||||||
|
@@ -313,30 +293,21 @@ QModelIndex KFilePlacesModel::closestItem(const KUrl &url) const
|
||||||
|
|
||||||
|
void KFilePlacesModel::Private::_k_initDeviceList()
|
||||||
|
{
|
||||||
|
- Solid::DeviceNotifier *notifier = Solid::DeviceNotifier::instance();
|
||||||
|
-
|
||||||
|
- connect(notifier, SIGNAL(deviceAdded(QString)),
|
||||||
|
+ KFilePlacesDeviceCache *cache = KFilePlacesDeviceCache::self();
|
||||||
|
+ connect(cache, SIGNAL(deviceAdded(QString)),
|
||||||
|
q, SLOT(_k_deviceAdded(QString)));
|
||||||
|
- connect(notifier, SIGNAL(deviceRemoved(QString)),
|
||||||
|
+ connect(cache, SIGNAL(deviceRemoved(QString)),
|
||||||
|
q, SLOT(_k_deviceRemoved(QString)));
|
||||||
|
|
||||||
|
- const QList<Solid::Device> &deviceList = Solid::Device::listFromQuery(predicate);
|
||||||
|
-
|
||||||
|
- foreach(const Solid::Device &device, deviceList) {
|
||||||
|
- availableDevices << device.udi();
|
||||||
|
- }
|
||||||
|
+ availableDevices = cache->devices();
|
||||||
|
|
||||||
|
_k_reloadBookmarks();
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFilePlacesModel::Private::_k_deviceAdded(const QString &udi)
|
||||||
|
{
|
||||||
|
- Solid::Device d(udi);
|
||||||
|
-
|
||||||
|
- if (predicate.matches(d)) {
|
||||||
|
- availableDevices << udi;
|
||||||
|
- _k_reloadBookmarks();
|
||||||
|
- }
|
||||||
|
+ availableDevices << udi;
|
||||||
|
+ _k_reloadBookmarks();
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFilePlacesModel::Private::_k_deviceRemoved(const QString &udi)
|
44
kdelibs.spec
44
kdelibs.spec
@ -24,7 +24,7 @@
|
|||||||
%global dbusmenu_qt_version %(pkg-config --modversion dbusmenu-qt 2>/dev/null || echo %{dbusmenu_qt_ver})
|
%global dbusmenu_qt_version %(pkg-config --modversion dbusmenu-qt 2>/dev/null || echo %{dbusmenu_qt_ver})
|
||||||
|
|
||||||
Summary: KDE Libraries
|
Summary: KDE Libraries
|
||||||
Version: 4.9.3
|
Version: 4.9.4
|
||||||
Release: 4%{?dist}
|
Release: 4%{?dist}
|
||||||
|
|
||||||
Name: kdelibs
|
Name: kdelibs
|
||||||
@ -124,6 +124,11 @@ Patch45: kdelibs-4.7.3-halectomy.patch
|
|||||||
# udisks2 Solid backend
|
# udisks2 Solid backend
|
||||||
Patch47: kdelibs-udisks2-backend.patch
|
Patch47: kdelibs-udisks2-backend.patch
|
||||||
|
|
||||||
|
# cache to improve performance of apps using Solid with udisks2 (#868530)
|
||||||
|
# disable now, this patch causes new regression, backend devices are destroyed!
|
||||||
|
# the latest solid backend works fine without this patch
|
||||||
|
# Patch48: kdelibs-udisks2-kfileplacesdevicecache.patch
|
||||||
|
|
||||||
## upstreamable
|
## upstreamable
|
||||||
# knewstuff2 variant of:
|
# knewstuff2 variant of:
|
||||||
# https://git.reviewboard.kde.org/r/102439/
|
# https://git.reviewboard.kde.org/r/102439/
|
||||||
@ -155,8 +160,12 @@ Patch56: kdelibs-4.9.1-FindKipi-libkipi2.patch
|
|||||||
# required or not -- rex
|
# required or not -- rex
|
||||||
Patch58: kdelibs-cmake_python3.patch
|
Patch58: kdelibs-cmake_python3.patch
|
||||||
|
|
||||||
|
# make filter working
|
||||||
|
Patch59: kdelibs-4.9.3-kcm_ssl.patch
|
||||||
|
|
||||||
## upstream
|
## upstream
|
||||||
Patch100: kdelibs-4.9.3-delete-downloadDialog.patch
|
Patch100: 0001-Revert-Also-check-parent-mimetypes-in-protocolForArc.patch
|
||||||
|
Patch101: 0001-Fix-crash-when-no-service-was-selected-user-clicked-.patch
|
||||||
|
|
||||||
## security fix
|
## security fix
|
||||||
# Not Upstreamed? why not ? -- Rex
|
# Not Upstreamed? why not ? -- Rex
|
||||||
@ -164,6 +173,7 @@ Patch200: kdelibs-4.3.1-CVE-2009-2702.patch
|
|||||||
|
|
||||||
# rhel patches
|
# rhel patches
|
||||||
Patch300: kdelibs-4.8.3-webkit.patch
|
Patch300: kdelibs-4.8.3-webkit.patch
|
||||||
|
Patch301: kdelibs-4.9.3-dot.patch
|
||||||
|
|
||||||
# kmailservice moved here
|
# kmailservice moved here
|
||||||
Conflicts: kdelibs3 < 3.5.10-38
|
Conflicts: kdelibs3 < 3.5.10-38
|
||||||
@ -314,6 +324,7 @@ sed -i -e "s|@@VERSION_RELEASE@@|%{version}-%{release}|" kio/kio/kprotocolmanage
|
|||||||
|
|
||||||
%if "%{?udisks}" == "udisks2"
|
%if "%{?udisks}" == "udisks2"
|
||||||
%patch47 -p1 -b .udisks2backend
|
%patch47 -p1 -b .udisks2backend
|
||||||
|
#patch48 -p1 -b .kfileplacesdevicescache
|
||||||
%else
|
%else
|
||||||
%patch45 -p1 -b .halectomy
|
%patch45 -p1 -b .halectomy
|
||||||
%endif
|
%endif
|
||||||
@ -327,9 +338,11 @@ sed -i -e "s|@@VERSION_RELEASE@@|%{version}-%{release}|" kio/kio/kprotocolmanage
|
|||||||
%patch55 -p1 -b .FindSamba-samba4
|
%patch55 -p1 -b .FindSamba-samba4
|
||||||
%patch56 -p1 -b .FindKipi-libkipi2
|
%patch56 -p1 -b .FindKipi-libkipi2
|
||||||
%patch58 -p1 -b .cmake_python3
|
%patch58 -p1 -b .cmake_python3
|
||||||
|
%patch59 -p1 -b .filter
|
||||||
|
|
||||||
# upstream patches
|
# upstream patches
|
||||||
%patch100 -p1 -b .delete-downloadDialog
|
%patch100 -p1 -b .kio
|
||||||
|
%patch101 -p1 -b .crash
|
||||||
|
|
||||||
# security fixes
|
# security fixes
|
||||||
%patch200 -p1 -b .CVE-2009-2702
|
%patch200 -p1 -b .CVE-2009-2702
|
||||||
@ -337,6 +350,7 @@ sed -i -e "s|@@VERSION_RELEASE@@|%{version}-%{release}|" kio/kio/kprotocolmanage
|
|||||||
# rhel patches
|
# rhel patches
|
||||||
%if 0%{?rhel}
|
%if 0%{?rhel}
|
||||||
%patch300 -p1 -b .webkit
|
%patch300 -p1 -b .webkit
|
||||||
|
%patch301 -p1 -b .dot
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%build
|
%build
|
||||||
@ -588,6 +602,30 @@ rm -rf %{buildroot}
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Dec 06 2012 Than Ngo <than@redhat.com> - 6:4.9.4-4
|
||||||
|
- apply upstream patch to fix crash when no service was selected
|
||||||
|
|
||||||
|
* Thu Dec 06 2012 Than Ngo <than@redhat.com> - 6:4.9.4-3
|
||||||
|
- apply upstream patch to revert the check parent mimetypes in
|
||||||
|
protocolForArchiveMimetype() (kde#311214)
|
||||||
|
|
||||||
|
* Tue Dec 04 2012 Than Ngo <than@redhat.com> - 6:4.9.4-2
|
||||||
|
- disable kfileplacesdevicecache which causes bad regression
|
||||||
|
- add rhel condition
|
||||||
|
|
||||||
|
* Mon Dec 03 2012 Than Ngo <than@redhat.com> - 6:4.9.4-1
|
||||||
|
- 4.9.4
|
||||||
|
- update udisks2 backend patch to fix ghost devices
|
||||||
|
|
||||||
|
* Fri Nov 30 2012 Dan Vrátil <dvratil@redhat.com> - 6:4.9.3-7
|
||||||
|
- update udisks2 backend patch
|
||||||
|
|
||||||
|
* Thu Nov 29 2012 Than Ngo <than@redhat.com> - 6:4.9.3-6
|
||||||
|
- fix file filter
|
||||||
|
|
||||||
|
* Thu Nov 29 2012 Lukáš Tinkl <ltinkl@redhat.com> 6:4.9.3-5
|
||||||
|
- update udisks2 backend patch
|
||||||
|
|
||||||
* Fri Nov 23 2012 Jan Grulich <jgrulich@redhat.com> 6:4.9.3-4
|
* Fri Nov 23 2012 Jan Grulich <jgrulich@redhat.com> 6:4.9.3-4
|
||||||
- Fix previous patch
|
- Fix previous patch
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user