diff --git a/shell_integration/dolphin/0001-KOverlayIconPlugin.patch b/shell_integration/dolphin/0001-KOverlayIconPlugin.patch deleted file mode 100644 index 25f9ceeea7..0000000000 --- a/shell_integration/dolphin/0001-KOverlayIconPlugin.patch +++ /dev/null @@ -1,256 +0,0 @@ -From 3a26dc77f8e988ea99b23c4d5a2c831ecc31c920 Mon Sep 17 00:00:00 2001 -From: Olivier Goffart -Date: Thu, 17 Jul 2014 13:26:56 +0200 -Subject: [PATCH] WIP: add KOverlayIconPlugin - ---- - .../src/kitemviews/kfileitemmodelrolesupdater.cpp | 35 ++++++++++++- - .../src/kitemviews/kfileitemmodelrolesupdater.h | 9 ++++ - lib/konq/CMakeLists.txt | 4 +- - lib/konq/koverlayiconplugin.cpp | 30 ++++++++++++ - lib/konq/koverlayiconplugin.desktop | 4 ++ - lib/konq/koverlayiconplugin.h | 57 ++++++++++++++++++++++ - 6 files changed, 137 insertions(+), 2 deletions(-) - create mode 100644 lib/konq/koverlayiconplugin.cpp - create mode 100644 lib/konq/koverlayiconplugin.desktop - create mode 100644 lib/konq/koverlayiconplugin.h - -diff --git a/dolphin/src/kitemviews/kfileitemmodelrolesupdater.cpp b/dolphin/src/kitemviews/kfileitemmodelrolesupdater.cpp -index 0865d40..840a65d 100644 ---- a/dolphin/src/kitemviews/kfileitemmodelrolesupdater.cpp -+++ b/dolphin/src/kitemviews/kfileitemmodelrolesupdater.cpp -@@ -28,9 +28,11 @@ - #include - #include - #include -+#include - - #include "private/kpixmapmodifier.h" - #include "private/kdirectorycontentscounter.h" -+#include - - #include - #include -@@ -129,6 +131,17 @@ KFileItemModelRolesUpdater::KFileItemModelRolesUpdater(KFileItemModel* model, QO - m_directoryContentsCounter = new KDirectoryContentsCounter(m_model, this); - connect(m_directoryContentsCounter, SIGNAL(result(QString,int)), - this, SLOT(slotDirectoryContentsCountReceived(QString,int))); -+ -+ -+ const KService::List pluginServices = KServiceTypeTrader::self()->query("KOverlayIconPlugin"); -+ -+ for (KService::List::ConstIterator it = pluginServices.constBegin(); it != pluginServices.constEnd(); ++it) { -+ KOverlayIconPlugin* plugin = (*it)->createInstance(this); -+ if (plugin) { -+ m_overlayIconsPlugin.append(plugin); -+ connect(plugin, SIGNAL(overlaysChanged(KUrl,QStringList)), this, SLOT(slotOverlaysChanged(KUrl,QStringList))); -+ } -+ } - } - - KFileItemModelRolesUpdater::~KFileItemModelRolesUpdater() -@@ -1075,7 +1088,11 @@ QHash KFileItemModelRolesUpdater::rolesData(const KFileIte - data.insert("type", item.mimeComment()); - } - -- data.insert("iconOverlays", item.overlays()); -+ QStringList overlays = item.overlays(); -+ foreach(KOverlayIconPlugin *it, m_overlayIconsPlugin) { -+ overlays.append(it->getOverlays(item)); -+ } -+ data.insert("iconOverlays", overlays); - - #ifdef HAVE_BALOO - if (m_balooFileMonitor) { -@@ -1086,6 +1103,22 @@ QHash KFileItemModelRolesUpdater::rolesData(const KFileIte - return data; - } - -+void KFileItemModelRolesUpdater::slotOverlaysChanged(const KUrl& url, const QStringList &) -+{ -+ KFileItem item = m_model->fileItem(url); -+ if (item.isNull()) -+ return; -+ int index = m_model->index(item); -+ QHash data = m_model->data(index); -+ QStringList overlays = item.overlays(); -+ foreach(KOverlayIconPlugin *it, m_overlayIconsPlugin) { -+ overlays.append(it->getOverlays(item)); -+ } -+ data.insert("iconOverlays", overlays); -+ m_model->setData(index, data); -+} -+ -+ - void KFileItemModelRolesUpdater::updateAllPreviews() - { - if (m_state == Paused) { -diff --git a/dolphin/src/kitemviews/kfileitemmodelrolesupdater.h b/dolphin/src/kitemviews/kfileitemmodelrolesupdater.h -index a9e979a..6d3add0 100644 ---- a/dolphin/src/kitemviews/kfileitemmodelrolesupdater.h -+++ b/dolphin/src/kitemviews/kfileitemmodelrolesupdater.h -@@ -32,6 +32,7 @@ - #include - #include - -+class KOverlayIconPlugin; - class KDirectoryContentsCounter; - class KFileItemModel; - class KJob; -@@ -180,6 +181,12 @@ private slots: - void slotPreviewJobFinished(); - - /** -+ * Is invoked when one of the KOverlayIconPlugin emit the signal that an overlay has changed -+ */ -+ void slotOverlaysChanged(const KUrl&, const QStringList&); -+ -+ -+ /** - * Resolves the sort role of the next item in m_pendingSortRole, applies it - * to the model, and invokes itself if there are any pending items left. If - * that is not the case, \a startUpdating() is called. -@@ -331,6 +338,8 @@ private: - - KDirectoryContentsCounter* m_directoryContentsCounter; - -+ QList m_overlayIconsPlugin; -+ - #ifdef HAVE_BALOO - Baloo::FileMonitor* m_balooFileMonitor; - #endif -diff --git a/lib/konq/CMakeLists.txt b/lib/konq/CMakeLists.txt -index 8ecbfa9..7381caf 100644 ---- a/lib/konq/CMakeLists.txt -+++ b/lib/konq/CMakeLists.txt -@@ -22,6 +22,7 @@ set(konq_LIB_SRCS - konq_historyprovider.cpp - kversioncontrolplugin.cpp # used by dolphin and its version control plugins (deprecated) - kversioncontrolplugin2.cpp # used by dolphin and its version control plugins -+ koverlayiconplugin.cpp - - konq_nameandurlinputdialog.cpp # deprecated (functionality has moved to kdelibs) - knewmenu.cpp # deprecated (functionality has moved to kdelibs) -@@ -67,8 +68,9 @@ install( FILES - konq_fileitemcapabilities.h - kversioncontrolplugin.h - kversioncontrolplugin2.h -+ koverlayiconplugin.h - konq_historyprovider.h - konq_historyentry.h - DESTINATION ${INCLUDE_INSTALL_DIR} COMPONENT Devel - ) --install( FILES konqpopupmenuplugin.desktop konqdndpopupmenuplugin.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR} ) -+install( FILES konqpopupmenuplugin.desktop konqdndpopupmenuplugin.desktop koverlayiconplugin.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR} ) -diff --git a/lib/konq/koverlayiconplugin.cpp b/lib/konq/koverlayiconplugin.cpp -new file mode 100644 -index 0000000..6125040 ---- /dev/null -+++ b/lib/konq/koverlayiconplugin.cpp -@@ -0,0 +1,30 @@ -+/***************************************************************************** -+ * Copyright (C) 2014 by Olivier Goffart * -+ * * -+ * 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 "koverlayiconplugin.h" -+#include -+ -+KOverlayIconPlugin::KOverlayIconPlugin(QObject* parent) : QObject(parent) -+{ -+} -+ -+KOverlayIconPlugin::~KOverlayIconPlugin() -+{ -+} -+ -+#include "koverlayiconplugin.moc" -diff --git a/lib/konq/koverlayiconplugin.desktop b/lib/konq/koverlayiconplugin.desktop -new file mode 100644 -index 0000000..65a1170 ---- /dev/null -+++ b/lib/konq/koverlayiconplugin.desktop -@@ -0,0 +1,4 @@ -+[Desktop Entry] -+Type=ServiceType -+X-KDE-ServiceType=KOverlayIconPlugin -+Comment=Plugin to add overlay icons in Dolphin -diff --git a/lib/konq/koverlayiconplugin.h b/lib/konq/koverlayiconplugin.h -new file mode 100644 -index 0000000..bcdf31b ---- /dev/null -+++ b/lib/konq/koverlayiconplugin.h -@@ -0,0 +1,57 @@ -+/***************************************************************************** -+ * Copyright (C) 2014 by Olivier Goffart * -+ * * -+ * 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 OverlayIconPlugin_H -+#define OverlayIconPlugin_H -+ -+#include -+#include -+ -+class KUrl; -+class KFileItem; -+ -+/** -+ * @brief Base class for overlay icon plugins. -+ * -+ * Enables the file manager to show custom overlay icons on files. -+ * -+ * To write a custom plugin you need to create a .desktop file for your plugin with -+ * KDE-ServiceTypes=KOverlayIconPlugin -+ */ -+class LIBKONQ_EXPORT KOverlayIconPlugin : public QObject { -+ Q_OBJECT -+ void *d; -+public: -+ explicit KOverlayIconPlugin(QObject *parent = 0); -+ ~KOverlayIconPlugin(); -+ -+ /** -+ * Returns a list of overlay pixmap to add to a file -+ * This can be a path to an icon, or the icon name -+ */ -+ virtual QStringList getOverlays(const KFileItem &item) = 0; -+signals: -+ -+ /** -+ * Emit this signal when the list of overlay icon changed for a given URL -+ */ -+ void overlaysChanged(const KUrl &url, const QStringList &overlays); -+}; -+ -+#endif --- -2.1.3 - diff --git a/shell_integration/dolphin/CMakeLists.txt b/shell_integration/dolphin/CMakeLists.txt deleted file mode 100644 index 0d70854ab8..0000000000 --- a/shell_integration/dolphin/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -cmake_minimum_required(VERSION 2.6) -project(dolphin-owncloud) -find_package(KDE4 REQUIRED) -include(KDE4Defaults) -include(MacroLibrary) -find_package(LibKonq REQUIRED) - -add_definitions (${QT_DEFINITIONS} ${KDE4_DEFINITIONS}) -add_definitions(-DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS) -include_directories (${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${KDE4_INCLUDES} ) -include_directories( ${KDE4_INCLUDE_DIR} ${QT_INCLUDES} ${LIBKONQ_INCLUDE_DIR} ) - -kde4_add_plugin(ownclouddolphinplugin ownclouddolphinplugin.cpp) - -target_link_libraries(ownclouddolphinplugin ${KDE4_KIO_LIBS} ${LIBKONQ_LIBRARY}) -install(FILES ownclouddolphinplugin.desktop DESTINATION ${SERVICES_INSTALL_DIR}) -install(TARGETS ownclouddolphinplugin DESTINATION ${PLUGIN_INSTALL_DIR}) diff --git a/shell_integration/dolphin/README b/shell_integration/dolphin/README deleted file mode 100644 index 7cd06d83b8..0000000000 --- a/shell_integration/dolphin/README +++ /dev/null @@ -1,18 +0,0 @@ - - -- The patch 0001-KOverlayIconPlugin.patch should be applied to kde-baseapps git repository -(It should apply to both KDE/4.14 or Applications/14.12 branches) - -- Recompile and install dolphin - -- Build and install the plugin - -- After installing, run - kdeinit4 --noincremental - -- To test that the plugin is well installed - ktraderclient --servicetype KOverlayIconPlugin - It should show the Owncloud plugin - -- restart dolphin (make sure to kill all instances) - diff --git a/shell_integration/dolphin/ownclouddolphinplugin.cpp b/shell_integration/dolphin/ownclouddolphinplugin.cpp deleted file mode 100644 index def66573da..0000000000 --- a/shell_integration/dolphin/ownclouddolphinplugin.cpp +++ /dev/null @@ -1,131 +0,0 @@ -/****************************************************************************** - * Copyright (C) 2014 by Olivier Goffart -#include -#include -#include -#include -#include - - -class OwncloudDolphinPlugin : public KOverlayIconPlugin -{ - Q_OBJECT - QLocalSocket m_socket; - typedef QHash StatusMap; - StatusMap m_status; - QByteArray m_line; - -public: - explicit OwncloudDolphinPlugin(QObject* parent, const QList&) : KOverlayIconPlugin(parent) { - connect(&m_socket, SIGNAL(readyRead()), this, SLOT(readyRead())); - tryConnect(); - } - - virtual QStringList getOverlays(const KFileItem& item) { - KUrl url = item.url(); - if (!url.isLocalFile()) - return QStringList(); - const QByteArray localFile = url.toLocalFile().toUtf8(); - kDebug() << localFile; - - tryConnect(); - if (m_socket.state() == QLocalSocket::ConnectingState) { - if (!m_socket.waitForConnected(100)) { - kWarning() << "not connected" << m_socket.errorString(); - } - } - if (m_socket.state() == QLocalSocket::ConnectedState) { - m_socket.write("RETRIEVE_FILE_STATUS:"); - m_socket.write(localFile); - m_socket.write("\n"); - } - - StatusMap::iterator it = m_status.find(localFile); - if (it != m_status.constEnd()) { - return overlaysForString(*it); - } - return QStringList(); - } - - - -private: - void tryConnect() { - if (m_socket.state() != QLocalSocket::UnconnectedState) - return; - QString runtimeDir = QFile::decodeName(qgetenv("XDG_RUNTIME_DIR")); - QString socketPath = runtimeDir + "/" + "ownCloud" + "/socket"; - m_socket.connectToServer(socketPath); - } - - QStringList overlaysForString(const QByteArray status) { - QStringList r; - if (status.startsWith("NOP")) - return r; - - if (status.startsWith("OK")) - r << "dialog-ok"; - if (status.startsWith("SYNC") || status.startsWith("NEW")) - r << "view-refresh"; - - if (status.contains("+SWM")) - r << "document-share"; - - kDebug() << status << r; - return r; - } - -private slots: - void readyRead() { - while (m_socket.bytesAvailable()) { - m_line += m_socket.readLine(); - if (!m_line.endsWith("\n")) - continue; - QByteArray line; - qSwap(line, m_line); - line.chop(1); - kDebug() << "got line " << line; - if (line.isEmpty()) - continue; - QList tokens = line.split(':'); - if (tokens.count() != 3) - continue; - if (tokens[0] != "STATUS" && tokens[0] != "BROADCAST") - continue; - if (tokens[2].isEmpty()) - continue; - - const QByteArray name = tokens[2]; - QByteArray &status = m_status[name]; // reference to the item in the hash - if (status == tokens[1]) - continue; - status = tokens[1]; - - emit this->overlaysChanged(KUrl::fromLocalFile(QString::fromUtf8(name)), overlaysForString(status)); - } - } -}; - -K_PLUGIN_FACTORY(OwncloudDolphinPluginFactory, registerPlugin();) -K_EXPORT_PLUGIN(OwncloudDolphinPluginFactory("ownclouddolhpinplugin")) - - -#include "ownclouddolphinplugin.moc" diff --git a/shell_integration/dolphin/ownclouddolphinplugin.desktop b/shell_integration/dolphin/ownclouddolphinplugin.desktop deleted file mode 100644 index 07fc63f337..0000000000 --- a/shell_integration/dolphin/ownclouddolphinplugin.desktop +++ /dev/null @@ -1,6 +0,0 @@ -[Desktop Entry] -Type=Service -Name=Owncloud -X-KDE-ServiceTypes=KOverlayIconPlugin -MimeType=text/plain; -X-KDE-Library=ownclouddolphinplugin