#include "qdeclarativetoucharea.h"
#include <QList>
-QString selectQmlMain(QStringList inportPaths,QString cmdParam,QString activeUI,uiListModel &uiList);
+QString selectQmlMain(QStringList inportPaths,QString cmdParam,QString activeUI,uiListModel &uiList,QStringList &uiNames,QStringList &uiFiles);
// MacOSX sdl hack so that SDL won't hijack main
#undef main
QUrl *url;
uiListModel uiList;
bool setDefault=false;
-
-/* uiList.addUI(new uiListElement("MeeGo","ardrone_harmattan.qml"));
- uiList.addUI(new uiListElement("Symbian","ardrone_symbian.qml"));
- uiList.addUI(new uiListElement("Desktop","ardrone_desktop.qml"));
- uiList.addUI(new uiListElement("PlainQml","ardrone_plainqml.qml"));
-*/
+ QStringList uiNames,uiFiles;
QSettings *mardroneSettings=new QSettings("katix.org","mardrone");
#ifdef QT_IOS
// Check available UI's
window.engine()->addImportPath("qrc:/gauges/");
window.engine()->addImportPath("qrc:");
+ window.engine()->addImportPath(":");
window.engine()->addImportPath("gauges");
window.engine()->addImportPath(".");
#ifdef Q_OS_ANDROID
qDebug() << "ImportPathList" << window.engine()->importPathList() ;
QStringList importPath=window.engine()->importPathList();
window.rootContext()->setContextProperty("uiList",&uiList);
- QString qmlFile=selectQmlMain(importPath,qmlmainfile,activeUi,uiList);
+ window.rootContext()->setContextProperty("uiNames",uiNames);
+ window.rootContext()->setContextProperty("uiFiles",uiFiles);
+ QString qmlFile=selectQmlMain(importPath,qmlmainfile,activeUi,uiList,uiNames,uiFiles);
if(setDefault) mardroneSettings->setValue("activeUI",qmlFile);
#ifndef QT_IOS
qmlFile=QString("qrc:/")+qmlFile;
return app.exec();
}
-QString selectQmlMain(QStringList importPaths,QString cmdParam,QString activeUI,uiListModel &uiList)
+QString selectQmlMain(QStringList importPaths,QString cmdParam,QString activeUI,uiListModel &uiList,QStringList &uiNames,QStringList &uiFiles)
{
bool haveHarmattan=FALSE;
bool haveSymbian=FALSE;
QString uiName;
appQmlFilesFilter << "ardrone*.qml";
QStringList appQmlFiles;
- qDebug() << "selectQmlMain importPath=" << importPaths << " ActiveUi=" << activeUI;
+ qDebug() << "selectQmlMain importPath=" << importPaths << " ActiveUi=" << activeUI;
+ if(cmdParam.contains(".qml")) return cmdParam;
+ 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;i<importPaths.size();i++) {
QString importPath=importPaths[i];
haveHarmattan|=QFile(importPath+"/com/nokia/meego").exists();
- haveHarmattan|=QFile(importPath+"/MeeGo/Components").exists();
haveSymbian|=QFile(importPath+"/com/nokia/symbian.1.1").exists();
haveDesktop|=QFile(importPath+"/QtDesktop").exists();
qDebug() << importPath << haveHarmattan << haveSymbian << haveDesktop;
+ }
+ // Scan UI .qml files
+ for(int i=0;i<importPaths.size();i++) {
+ QString importPath=importPaths[i];
QDir searchDir(importPath);
QStringList qmlFiles=searchDir.entryList(appQmlFilesFilter);
qDebug() << qmlFiles;
appQmlFiles+=qmlFiles;
for(int j=0;j<qmlFiles.size();j++) {
-
- QFile qmlFile(importPath+"/"+qmlFiles[j]);
- if(qmlFile.open(QFile::ReadOnly))
+ if((qmlFiles[j].contains("harmattan") && haveHarmattan)||
+ (qmlFiles[j].contains("symbian") && haveSymbian) ||
+ (qmlFiles[j].contains("desktop") && haveDesktop) ||
+ (qmlFiles[j].contains("plainqml")))
{
- QString firstLine=QString(qmlFile.readLine(100));
- if(firstLine.contains("// uiName:")) { uiName=firstLine.remove(0,10); }
- else uiName=qmlFiles[j];
- if(uiName.endsWith("\n")) uiName.chop(1);
- }
- qDebug() << importPath+"/"+qmlFiles[j] << uiName;
- uiList.addUI(new uiListElement(uiName,qmlFiles[j]));
+ QFile qmlFile(importPath+"/"+qmlFiles[j]);
+ if(qmlFile.open(QFile::ReadOnly))
+ {
+ QString firstLine=QString(qmlFile.readLine(100));
+ if(firstLine.contains("// uiName:")) { uiName=firstLine.remove(0,10); }
+ else uiName=qmlFiles[j];
+ if(uiName.endsWith("\n")) uiName.chop(1);
+ qDebug() << importPath+"/"+qmlFiles[j] << uiName;
+ uiList.addUI(new uiListElement(uiName,qmlFiles[j]));
+ }
}
+ }
}
-
- if(cmdParam.contains(".qml")) return cmdParam;
- if(cmdParam=="plain") return QString("ardrone_plainqml.qml");
- if(cmdParam.isEmpty() && !activeUI.isEmpty()) return activeUI;
- if(cmdParam=="harmattan" || cmdParam=="" ) return QString("ardrone_harmattan.qml");
- if(cmdParam=="symbian" || cmdParam=="" ) return QString("ardrone_symbian.qml");
- if(cmdParam=="desktop" || cmdParam=="" ) return QString("ardrone_desktop.qml");
-
+ // Check validity of activeUi
+ bool validUi=false;
+ for(int j=0;j<uiList.count();j++) validUi|=(((uiListElement*)uiList.get(j))->file())==activeUI;
+ if(!validUi) activeUI=((uiListElement*)uiList.get(0))->file();
return(activeUI);
}