You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.2 KiB
C++
85 lines
2.2 KiB
C++
/*
|
|
* Copyright 2013 Canonical Ltd.
|
|
* Copyright 2011 Wolfgang Koller - http://www.gofg.at/
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#ifndef CORDOVA_H_DJJKASDM44
|
|
#define CORDOVA_H_DJJKASDM44
|
|
|
|
#include <QtCore>
|
|
#include <cassert>
|
|
|
|
#include "cplugin.h"
|
|
#include "cordova_config.hpp"
|
|
|
|
class QQuickView;
|
|
class QQuickItem;
|
|
|
|
class Cordova: public QObject {
|
|
Q_OBJECT
|
|
Q_PROPERTY(QString mainUrl READ mainUrl CONSTANT)
|
|
|
|
public:
|
|
explicit Cordova(const QDir &wwwDir, QQuickItem *item, QObject *parent = nullptr);
|
|
|
|
QString mainUrl() const;
|
|
QObject *topLevelEventsReceiver();
|
|
QQuickItem *rootObject();
|
|
QString get_app_dir();
|
|
|
|
void pushViewState(const QString &state);
|
|
void popViewState(const QString &state);
|
|
QString getSplashscreenPath();
|
|
|
|
const CordovaInternal::Config& config() const;
|
|
|
|
template<typename A>
|
|
QSharedPointer<CPlugin> getPlugin() {
|
|
for (QSharedPointer<CPlugin> &plugin: _plugins) {
|
|
if (plugin->fullName() != A::fullID())
|
|
continue;
|
|
return plugin;
|
|
}
|
|
|
|
return QSharedPointer<CPlugin>();
|
|
}
|
|
signals:
|
|
void javaScriptExecNeeded(const QString &js);
|
|
void qmlExecNeeded(const QString &src);
|
|
void pluginWantsToBeAdded(const QString &pluginName, QObject *pluginObject, const QString &pluginShortName);
|
|
|
|
public slots:
|
|
void loadFinished(bool ok);
|
|
void execJS(const QString &js);
|
|
void setTitle(const QString &title);
|
|
void execQML(const QString &src);
|
|
void appLoaded();
|
|
|
|
private:
|
|
void initPlugins();
|
|
|
|
QQuickItem *_item;
|
|
QList<QSharedPointer<CPlugin>> _plugins;
|
|
|
|
QDir _www;
|
|
QString _mainUrl;
|
|
QList<QString> _states;
|
|
CordovaInternal::Config _config;
|
|
|
|
Q_DISABLE_COPY(Cordova)
|
|
};
|
|
|
|
#endif
|