File indexing completed on 2024-05-05 16:08:27

0001 /* This file is part of the KDE libraries
0002 
0003    Copyright (c) 2007 Jos van den Oever <jos@vandenoever.info>
0004 
0005    This library is free software; you can redistribute it and/or
0006    modify it under the terms of the GNU Library General Public
0007    License (LGPL) as published by the Free Software Foundation; either
0008    version 2 of the License, or (at your option) any later version.
0009 
0010    This library is distributed in the hope that it will be useful,
0011    but WITHOUT ANY WARRANTY; without even the implied warranty of
0012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0013    Library General Public License for more details.
0014 
0015    You should have received a copy of the GNU Library General Public License
0016    along with this library; see the file COPYING.LIB.  If not, write to
0017    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0018    Boston, MA 02110-1301, USA.
0019 */
0020 
0021 #include "kfilewriteplugin.h"
0022 #include "kfilewriteplugin_p.h"
0023 #include <kservicetypetrader.h>
0024 #include <QHash>
0025 #include <QDebug>
0026 
0027 KFileWritePlugin::KFileWritePlugin(QObject *parent, const QStringList &)
0028     : QObject(parent), d(nullptr)
0029 {
0030 }
0031 
0032 KFileWritePlugin::~KFileWritePlugin()
0033 {
0034 }
0035 
0036 Q_GLOBAL_STATIC(KFileWriterProvider, staticKFileWriterProvider)
0037 
0038 KFileWriterProvider *
0039 KFileWriterProvider::self()
0040 {
0041     return staticKFileWriterProvider();
0042 }
0043 
0044 KFileWriterProvider::~KFileWriterProvider()
0045 {
0046     qDeleteAll(plugins);
0047     plugins.clear();
0048 }
0049 
0050 KFileWritePlugin *
0051 KFileWriterProvider::loadPlugin(const QString &key)
0052 {
0053     //qDebug() << "loading writer for key " << key;
0054     const QString constraint = QString::fromLatin1("'%1' in MetaDataKeys")
0055                                .arg(key);
0056     const KService::List offers = KServiceTypeTrader::self()->query(
0057                                       "KFileWrite", constraint);
0058     if (offers.isEmpty()) {
0059         return nullptr;
0060     }
0061     return offers.first()->createInstance<KFileWritePlugin>();
0062 }
0063 
0064 #include "moc_kfilewriteplugin.cpp"