94 line
1.8 KiB
C++
94 line
1.8 KiB
C++
/*
|
|
|
|
Copyright 2018 S. Razi Alavizadeh
|
|
Copyright 2012-2013, 2017, 2018 Adam Reichold
|
|
|
|
This file is part of qpdfview.
|
|
|
|
qpdfview is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
qpdfview 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 General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with qpdfview. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
#ifndef PLUGINHANDLER_H
|
|
#define PLUGINHANDLER_H
|
|
|
|
#include <QObject>
|
|
#include <QMap>
|
|
|
|
class QString;
|
|
class QWidget;
|
|
|
|
namespace qpdfview
|
|
{
|
|
|
|
namespace Model
|
|
{
|
|
class Document;
|
|
}
|
|
|
|
class SettingsWidget;
|
|
class Plugin;
|
|
|
|
class PluginHandler : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
static PluginHandler* instance();
|
|
~PluginHandler();
|
|
|
|
enum FileType
|
|
{
|
|
Unknown = 0,
|
|
PDF,
|
|
PS,
|
|
DjVu,
|
|
Image,
|
|
GZip,
|
|
BZip2,
|
|
XZ,
|
|
ZIP,
|
|
EPUB,
|
|
XPS,
|
|
FB2,
|
|
CBZ
|
|
};
|
|
|
|
static QLatin1String fileTypeName(FileType fileType);
|
|
|
|
static QStringList openFilter();
|
|
|
|
Model::Document* loadDocument(const QString& filePath);
|
|
|
|
SettingsWidget* createSettingsWidget(FileType fileType, QWidget* parent = 0);
|
|
|
|
private:
|
|
Q_DISABLE_COPY(PluginHandler)
|
|
|
|
static PluginHandler* s_instance;
|
|
PluginHandler(QObject* parent = 0);
|
|
|
|
QMap< FileType, Plugin* > m_plugins;
|
|
|
|
QMultiMap< FileType, QString > m_objectNames;
|
|
QMultiMap< FileType, QString > m_fileNames;
|
|
|
|
bool loadPlugin(FileType fileType);
|
|
|
|
};
|
|
|
|
} // qpdfview
|
|
|
|
#endif // PLUGINHANDLER_H
|