summaryrefslogtreecommitdiffstats
path: root/kioslave/metainfo
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commitce4a32fe52ef09d8f5ff1dd22c001110902b60a2 (patch)
tree5ac38a06f3dde268dc7927dc155896926aaf7012 /kioslave/metainfo
downloadtdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.tar.gz
tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kioslave/metainfo')
-rw-r--r--kioslave/metainfo/Makefile.am24
-rw-r--r--kioslave/metainfo/metainfo.cpp103
-rw-r--r--kioslave/metainfo/metainfo.h38
-rw-r--r--kioslave/metainfo/metainfo.protocol9
4 files changed, 174 insertions, 0 deletions
diff --git a/kioslave/metainfo/Makefile.am b/kioslave/metainfo/Makefile.am
new file mode 100644
index 000000000..6807019f4
--- /dev/null
+++ b/kioslave/metainfo/Makefile.am
@@ -0,0 +1,24 @@
+## $Id$
+## Makefile.am of kdebase/kioslave/metainfo
+
+INCLUDES = $(all_includes)
+AM_LDFLAGS = $(all_libraries) $(KDE_RPATH)
+METASOURCES = AUTO
+
+kde_module_LTLIBRARIES = kio_metainfo.la
+
+kio_metainfo_la_SOURCES = metainfo.cpp
+kio_metainfo_la_LIBADD = $(LIB_KIO)
+kio_metainfo_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN)
+
+noinst_HEADERS = metainfo.h
+
+kdelnk_DATA = metainfo.protocol
+kdelnkdir = $(kde_servicesdir)
+
+#servicetypes_DATA = thumbcreator.desktop
+#servicetypesdir = $(kde_servicetypesdir)
+
+#services_DATA = imagethumbnail.desktop textthumbnail.desktop
+# htmlthumbnail.desktop gsthumbnail.desktop
+#servicesdir = $(kde_servicesdir)
diff --git a/kioslave/metainfo/metainfo.cpp b/kioslave/metainfo/metainfo.cpp
new file mode 100644
index 000000000..0e4814b33
--- /dev/null
+++ b/kioslave/metainfo/metainfo.cpp
@@ -0,0 +1,103 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2002 Rolf Magnus <ramagnus@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation version 2.0
+
+ 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.
+*/
+
+// $Id$
+
+#include <kdatastream.h> // Do not remove, needed for correct bool serialization
+#include <kurl.h>
+#include <kapplication.h>
+#include <kmimetype.h>
+#include <kdebug.h>
+#include <kfilemetainfo.h>
+#include <klocale.h>
+#include <stdlib.h>
+
+#include "metainfo.h"
+
+// Recognized metadata entries:
+// mimeType - the mime type of the file, so we need not extra determine it
+// what - what to load
+
+using namespace KIO;
+
+extern "C"
+{
+ KDE_EXPORT int kdemain(int argc, char **argv);
+}
+
+int kdemain(int argc, char **argv)
+{
+ KApplication app(argc, argv, "kio_metainfo", false, true);
+
+ if (argc != 4)
+ {
+ kdError() << "Usage: kio_metainfo protocol domain-socket1 domain-socket2" << endl;
+ exit(-1);
+ }
+
+ MetaInfoProtocol slave(argv[2], argv[3]);
+ slave.dispatchLoop();
+
+ return 0;
+}
+
+MetaInfoProtocol::MetaInfoProtocol(const QCString &pool, const QCString &app)
+ : SlaveBase("metainfo", pool, app)
+{
+}
+
+MetaInfoProtocol::~MetaInfoProtocol()
+{
+}
+
+void MetaInfoProtocol::get(const KURL &url)
+{
+ QString mimeType = metaData("mimeType");
+ KFileMetaInfo info(url.path(), mimeType);
+
+ QByteArray arr;
+ QDataStream stream(arr, IO_WriteOnly);
+
+ stream << info;
+
+ data(arr);
+ finished();
+}
+
+void MetaInfoProtocol::put(const KURL& url, int, bool, bool)
+{
+ QString mimeType = metaData("mimeType");
+ KFileMetaInfo info;
+
+ QByteArray arr;
+ readData(arr);
+ QDataStream stream(arr, IO_ReadOnly);
+
+ stream >> info;
+
+ if (info.isValid())
+ {
+ info.applyChanges();
+ }
+ else
+ {
+ error(ERR_NO_CONTENT, i18n("No metainfo for %1").arg(url.path()));
+ return;
+ }
+ finished();
+}
diff --git a/kioslave/metainfo/metainfo.h b/kioslave/metainfo/metainfo.h
new file mode 100644
index 000000000..de2a6b055
--- /dev/null
+++ b/kioslave/metainfo/metainfo.h
@@ -0,0 +1,38 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2002 Rolf Magnus <ramagnus@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation version 2.0
+
+ 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.
+*/
+
+// $Id$
+
+#ifndef _METAINFO_H_
+#define _METAINFO_H_
+
+#include <kio/slavebase.h>
+
+class MetaInfoProtocol : public KIO::SlaveBase
+{
+public:
+ MetaInfoProtocol(const QCString &pool, const QCString &app);
+ virtual ~MetaInfoProtocol();
+
+ virtual void get(const KURL &url);
+ virtual void put(const KURL& url, int permissions,
+ bool overwrite, bool resume);
+
+};
+
+#endif
diff --git a/kioslave/metainfo/metainfo.protocol b/kioslave/metainfo/metainfo.protocol
new file mode 100644
index 000000000..f1fa9adac
--- /dev/null
+++ b/kioslave/metainfo/metainfo.protocol
@@ -0,0 +1,9 @@
+[Protocol]
+exec=kio_metainfo
+protocol=metainfo
+input=stream
+output=stream
+reading=true
+writing=true
+source=false
+Icon=help