Added About page.
[openvpnui.git] / src / openvpn-rig.cpp
diff --git a/src/openvpn-rig.cpp b/src/openvpn-rig.cpp
new file mode 100644 (file)
index 0000000..adfb69b
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+  Copyright (C) 2014 David Llewellyn-Jones
+  Contact: David Llewellyn-Jones <david@flypig.co.uk>
+  All rights reserved.
+
+  You may use this file under the terms of BSD license as follows:
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of the Jolla Ltd nor the
+      names of its contributors may be used to endorse or promote products
+      derived from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR
+  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+  Built using the standard template from Jolla
+  Copyright (C) 2013 Jolla Ltd.
+  Contact: Thomas Perl <thomas.perl@jollamobile.com>
+*/
+
+#ifdef QT_QML_DEBUG
+#include <QtQuick>
+#else
+#include <QtQuick>
+#endif
+
+#include <sailfishapp.h>
+#include "vpncontrol.h"
+#include "filemodel.h"
+#include "fileinfo.h"
+#include "searchengine.h"
+#include "engine.h"
+
+int main(int argc, char *argv[])
+{
+    qmlRegisterType<FileModel>("harbour.file.browser.FileModel", 1, 0, "FileModel");
+    qmlRegisterType<FileInfo>("harbour.file.browser.FileInfo", 1, 0, "FileInfo");
+    qmlRegisterType<SearchEngine>("harbour.file.browser.SearchEngine", 1, 0, "SearchEngine");
+
+    int result;
+
+    setuid(0);
+    seteuid(0);
+
+    // SailfishApp::main() will display "qml/template.qml", if you need more
+    // control over initialization, you can use:
+    //
+    //   - SailfishApp::application(int, char *[]) to get the QGuiApplication *
+    //   - SailfishApp::createView() to get a new QQuickView * instance
+    //   - SailfishApp::pathTo(QString) to get a QUrl to a resource file
+    //
+    // To display the view, call "show()" (will show fullscreen on device).
+
+    QScopedPointer<QGuiApplication> app(SailfishApp::application(argc, argv));
+
+    // These values are used by QSettings to access the config file in
+    // /home/nemo/.local/share/flypig/OpenVPNUI.conf
+    QCoreApplication::setOrganizationName("flypig");
+    QCoreApplication::setOrganizationDomain("www.flypig.co.uk");
+    QCoreApplication::setApplicationName("OpenVPN Rig");
+
+    QScopedPointer<QQuickView> view(SailfishApp::createView());
+
+    view->setSource(SailfishApp::pathTo("qml/harbour-openvpn-rig.qml"));
+
+    VPNControl * vpnControl = new VPNControl ();
+
+    view->rootContext()->setContextProperty("VpnControl", vpnControl);
+
+    vpnControl->initialise();
+
+    // QML global engine object
+    QScopedPointer<Engine> engine(new Engine);
+    view->rootContext()->setContextProperty("engine", engine.data());
+    // Store pointer to engine to access it in any class
+    QVariant engineVariant = qVariantFromValue(engine.data());
+    qApp->setProperty("engine", engineVariant);
+
+    // Run the application loop
+    view->show();
+    result = app->exec();
+
+    delete vpnControl;
+
+    return result;
+}
+