/* This file is part of the KDE libraries

   Copyright (c) 2007 Jos van den Oever <jos@vandenoever.info>

   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public
   License (LGPL) as published by the Free Software Foundation; either
   version 2 of the License, or (at your option) any later version.

   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 "kfilewriteplugin.h"
#include "kfilewriteplugin_p.h"
#include <kservicetypetrader.h>
#include <QHash>
#include <QDebug>

KFileWritePlugin::KFileWritePlugin(QObject *parent, const QStringList &)
    : QObject(parent), d(nullptr)
{
}

KFileWritePlugin::~KFileWritePlugin()
{
}

Q_GLOBAL_STATIC(KFileWriterProvider, staticKFileWriterProvider)

KFileWriterProvider *
KFileWriterProvider::self()
{
    return staticKFileWriterProvider();
}

KFileWriterProvider::~KFileWriterProvider()
{
    qDeleteAll(plugins);
    plugins.clear();
}

KFileWritePlugin *
KFileWriterProvider::loadPlugin(const QString &key)
{
    //qDebug() << "loading writer for key " << key;
    const QString constraint = QString::fromLatin1("'%1' in MetaDataKeys")
                               .arg(key);
    const KService::List offers = KServiceTypeTrader::self()->query(
                                      "KFileWrite", constraint);
    if (offers.isEmpty()) {
        return nullptr;
    }
    return offers.first()->createInstance<KFileWritePlugin>();
}

