X-Git-Url: http://git.maemo.org/git/?p=mardrone;a=blobdiff_plain;f=mardrone%2Fmain.cpp;h=bab92ef53a8f535b198c58ce7137e8b795b14b1e;hp=ee594e6e376d196ae2c54d4bc40b083d9516a826;hb=5338a11daffd03a49ef70b077b37ddc1414063a5;hpb=f19da612ad0dd01a6f6339386625ce2bdc259220 diff --git a/mardrone/main.cpp b/mardrone/main.cpp index ee594e6..bab92ef 100644 --- a/mardrone/main.cpp +++ b/mardrone/main.cpp @@ -24,49 +24,89 @@ #include "gaugehorizon.h" #include "gaugetape.h" #include "gaugelabel.h" +#include "uilistelement.h" #include #include #include #include +#include +#include #include #include "joystick.h" #include "qdeclarativetoucharea.h" +#include +#include +#include "qmlappviewer.h" + +QString selectQmlMain(QStringList inportPaths,QString cmdParam,QString activeUI,uiListModel &uiList); + + -QString selectQmlMain(QStringList inportPaths,QString cmdParam,QString activeUI); // MacOSX sdl hack so that SDL won't hijack main #undef main +#ifdef QT_IOS +int Qt_main(int argc, char *argv[]) +#else int main(int argc, char *argv[]) +#endif { qmlRegisterType("Drone", 1, 0, "DroneControl"); qmlRegisterType("Drone", 1, 0, "DroneVideo"); qmlRegisterType("Gauges", 1, 0, "GaugeTape"); qmlRegisterType("Gauges", 1, 0, "GaugeLabel"); qmlRegisterType("Gauges", 1, 0, "GaugeHorizon"); + qmlRegisterType("Gauges", 1, 0, "GaugeArc"); + qmlRegisterType("Gauges", 1, 0, "GaugeHSI"); qmlRegisterType("JoyStick", 1, 0, "JoyStick"); qmlRegisterType("TouchArea", 1, 0, "TouchArea"); QApplication app(argc, argv); QUrl *url; - + uiListModel uiList; + bool setDefault=false; QSettings *mardroneSettings=new QSettings("katix.org","mardrone"); - QString activeUi=mardroneSettings->value("activeUI","ardrone_desktop.qml").toString(); +#ifdef QT_IOS + QString activeUi=mardroneSettings->value("activeUI","ardrone_plainqml.qml").toString(); +#else + QString activeUi=mardroneSettings->value("activeUI","ardrone_harmattan.qml").toString(); +// QString activeUi=mardroneSettings->value("activeUI","ardrone_desktop.qml").toString(); +#endif qDebug() << "activeUI=" << activeUi; QString qmlmainfile=app.arguments().size()>=2 ? app.arguments()[1]:""; + if(app.arguments().size()>=3 && qmlmainfile=="set") { + qmlmainfile=app.arguments()[2]; + setDefault=true; + }; - QDeclarativeView window; + // QDeclarativeView window; + QmlAppViewer window; window.rootContext()->setContextProperty("MArdrone",window.window()); QObject::connect((QObject*)window.engine(), SIGNAL(quit()), &app, SLOT(quit())); + // Check available UI's - window.engine()->addImportPath("qrc:/gauges/"); + window.engine()->addImportPath(":/gauges/"); window.engine()->addImportPath("qrc:"); + window.engine()->addImportPath(":"); window.engine()->addImportPath("gauges"); window.engine()->addImportPath("."); - qDebug() << "ImportPathList" << window.engine()->importPathList() << window.engine()->importPathList();; +#ifdef Q_OS_ANDROID + window.engine()->addImportPath("/"); + window.engine()->addImportPath("/imports"); + window.engine()->addImportPath("/assets"); + window.engine()->addPluginPath(QDir::homePath()+"/../lib"); +#endif + qDebug() << "ImportPathList" << window.engine()->importPathList() ; QStringList importPath=window.engine()->importPathList(); - QString qmlFile=QString("qrc:/")+selectQmlMain(importPath,qmlmainfile,activeUi); + window.rootContext()->setContextProperty("uiList",&uiList); + QString qmlFile=selectQmlMain(importPath,qmlmainfile,activeUi,uiList); + if(setDefault) mardroneSettings->setValue("activeUI",qmlFile); +#ifndef QT_IOS + qmlFile=QString("qrc:/")+qmlFile; +#endif + qDebug() << "using:" << qmlFile; if(qmlFile.contains("desktop")) { // We have desktop UI @@ -80,16 +120,69 @@ int main(int argc, char *argv[]) if((screenGeometry.height()<=800) && (screenGeometry.width()<=1024)) window.window()->showFullScreen(); else window.window()->show(); } + QObject::connect(&window, SIGNAL(backKey()), window.rootObject(), SLOT(backKey())); return app.exec(); } -QString selectQmlMain(QStringList importPaths,QString cmdParam,QString activeUI) +QString selectQmlMain(QStringList importPaths,QString cmdParam,QString activeUI,uiListModel &uiList) { - QString importPath=importPaths.last(); + bool haveHarmattan=FALSE; + bool haveSymbian=FALSE; + bool haveDesktop=FALSE; + bool haveAndroid=FALSE; + QStringList appQmlFilesFilter; + QString uiName; + appQmlFilesFilter << "ardrone*.qml"; + QStringList appQmlFiles; + qDebug() << "selectQmlMain importPath=" << importPaths << " ActiveUi=" << activeUI; if(cmdParam.contains(".qml")) return cmdParam; - if(cmdParam.isEmpty() && !activeUI.isEmpty()) return activeUI; - if(cmdParam=="harmattan" || (cmdParam=="" && QFile(importPath+"/com/nokia/meego").exists())) return QString("ardrone_harmattan.qml"); - if(cmdParam=="symbian" || (cmdParam=="" && QFile(importPath+"/MeeGo/Components").exists())) return QString("ardrone_symbian.qml"); - if(cmdParam=="desktop" || (cmdParam=="" && QFile(importPath+"/QtDesktop").exists())) return QString("ardrone_desktop.qml"); + if(cmdParam=="plain") activeUI="ardrone_plainqml.qml"; + if(cmdParam=="harmattan") activeUI="ardrone_harmattan.qml"; + if(cmdParam=="symbian") activeUI="ardrone_symbian.qml"; + if(cmdParam=="desktop") activeUI="ardrone_desktop.qml"; + // Scan supported components + for(int i=0;ifile())==activeUI; + if(!validUi) activeUI=((uiListElement*)uiList.get(0))->file(); return(activeUI); } +