1 /* ============================================================ 2 * Falkon - Qt web browser 3 * Copyright (C) 2018 Anmol Gautam <tarptaeya@gmail.com> 4 * 5 * This program is free software: you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation, either version 3 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 17 * ============================================================ */ 18 #pragma once 19 20 #include <QQmlEngine> 21 #include <QQmlComponent> 22 23 #include "qmlplugininterface.h" 24 #include "plugins.h" 25 26 class QmlEngine; 27 28 class QmlPluginLoader : public QObject 29 { 30 Q_OBJECT 31 public: 32 explicit QmlPluginLoader(const QString &name, const QString &path); 33 void createComponent(); 34 QQmlComponent *component() const; 35 QmlPluginInterface *instance() const; 36 private: 37 QString m_path; 38 QString m_name; 39 QmlEngine *m_engine = nullptr; 40 QQmlComponent *m_component = nullptr; 41 QmlPluginInterface *m_interface = nullptr; 42 43 void initEngineAndComponent(); 44 }; 45 46 Q_DECLARE_METATYPE(QmlPluginLoader *) 47