diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | ce4a32fe52ef09d8f5ff1dd22c001110902b60a2 (patch) | |
tree | 5ac38a06f3dde268dc7927dc155896926aaf7012 /kioslave/metainfo | |
download | tdelibs-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.am | 24 | ||||
-rw-r--r-- | kioslave/metainfo/metainfo.cpp | 103 | ||||
-rw-r--r-- | kioslave/metainfo/metainfo.h | 38 | ||||
-rw-r--r-- | kioslave/metainfo/metainfo.protocol | 9 |
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 |