Dekko
Loading...
Searching...
No Matches
PluginIncubator.cpp
1/* Copyright (C) 2017 Dan Chapman <dpniel@ubuntu.com>
2
3 This file is part of Dekko email client for Ubuntu devices
4
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License as
7 published by the Free Software Foundation; either version 2 of
8 the License or (at your option) version 3
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#include "PluginIncubator.h"
19#include <QQmlContext>
20#include <QDebug>
21
22Q_LOGGING_CATEGORY(PLUGIN_INCUBATOR, "dekko.plugman.incubator")
23
24PluginIncubator::PluginIncubator(QObject *parent) : QObject(parent),
25 QQmlIncubator(QQmlIncubator::Asynchronous), m_comp(Q_NULLPTR)
26{
27}
28
29void PluginIncubator::setSourceUrl(QQmlEngine *engine, const QUrl &source)
30{
31 m_comp = new QQmlComponent(engine, source, this);
32 if (m_comp->isError()) {
33 qCDebug(PLUGIN_INCUBATOR) << "Comp failed: " << m_comp->errorString();
34 emit error();
35 return;
36 }
37 QQmlContext *c = engine->contextForObject(parent());
38 if (c->isValid()) {
39 m_comp->create(*this, c);
40 }
41}
42
43void PluginIncubator::statusChanged(QQmlIncubator::Status status)
44{
45 switch (status) {
46 case QQmlIncubator::Null:
47 break;
48 case QQmlIncubator::Ready:
49 qCDebug(PLUGIN_INCUBATOR) << "Incubator finished and ready to hatch.";
50 emit objectReady();
51 break;
52 case QQmlIncubator::Loading:
53 qCDebug(PLUGIN_INCUBATOR) << "Incubating plugin";
54 break;
55 case QQmlIncubator::Error:
56 qCDebug(PLUGIN_INCUBATOR) << "Incubation Error";
57 emit error();
58 break;
59 default:
60 break;
61 }
62}