Ui selection code improved
authorKate Alhola <kate@kathy.(none)>
Sat, 28 Apr 2012 16:08:19 +0000 (19:08 +0300)
committerKate Alhola <kate@kathy.(none)>
Sat, 28 Apr 2012 16:08:19 +0000 (19:08 +0300)
mardrone/main.cpp
mardrone/mardrone.pro

index 13356b1..ce57cd7 100644 (file)
@@ -36,7 +36,7 @@
 #include "qdeclarativetoucharea.h"
 #include <QList>
 
-QString selectQmlMain(QStringList inportPaths,QString cmdParam,QString activeUI);
+QString selectQmlMain(QStringList inportPaths,QString cmdParam,QString activeUI,uiListModel &uiList);
 
 // MacOSX sdl hack so that SDL won't hijack main
 #undef main
@@ -62,11 +62,11 @@ int main(int argc, char *argv[])
     uiListModel uiList;
     bool setDefault=false;
 
-    uiList.addUI(new uiListElement("MeeGo","ardrone_harmattan.qml"));
+/*    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"));
-
+*/
 
     QSettings *mardroneSettings=new QSettings("katix.org","mardrone");
 #ifdef QT_IOS
@@ -97,7 +97,7 @@ int main(int argc, char *argv[])
     qDebug() << "ImportPathList" << window.engine()->importPathList() ;
     QStringList importPath=window.engine()->importPathList();
     window.rootContext()->setContextProperty("uiList",&uiList);
-    QString qmlFile=selectQmlMain(importPath,qmlmainfile,activeUi);
+    QString qmlFile=selectQmlMain(importPath,qmlmainfile,activeUi,uiList);
     if(setDefault) mardroneSettings->setValue("activeUI",qmlFile);
 #ifndef QT_IOS
     qmlFile=QString("qrc:/")+qmlFile;
@@ -119,14 +119,48 @@ int main(int argc, char *argv[])
     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;
+  QStringList appQmlFilesFilter;
+  QString uiName;
+  appQmlFilesFilter << "ardrone*.qml";
+  QStringList appQmlFiles;
+          qDebug() << "selectQmlMain importPath=" << importPaths << " ActiveUi=" << activeUI;
+  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;
+    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))
+        {
+            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=="" && 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") return QString("ardrone_plainqml.qml");
+  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");
+
   return(activeUI);
 }
index 00de90c..ac9ebb8 100644 (file)
@@ -24,7 +24,8 @@ DEFINES+=HAVE_SDL
 #For Android
 android {
  LIBS += -L../mardrone/ardrone-lib-android -lvlib -lsdk
-#/home/kate/necessitas/android-ndk-r6b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/lib/gcc/arm-linux-androideabi/4.4.3/libgcc.a
+# If you got cannot locate '__aeabi_f2uiz'..., uncomment following and point libgcc.a
+ LIBS += ~/necessitas/android-ndk-r6b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/lib/gcc/arm-linux-androideabi/4.4.3/libgcc.a
 }
 
 
@@ -55,8 +56,7 @@ SOURCES += main.cpp\
     qdeclarativetoucharea.cpp \
     gauges/gaugearc.cpp \
     uilistelement.cpp \
-    gauges/gaugehsi.cpp \
-    gauges/gaugeplugin.cpp
+    gauges/gaugehsi.cpp
 
 INCLUDEPATH += dronelib \
                gauges \
@@ -81,7 +81,7 @@ HEADERS  +=  dronelib/dronecontrol.h \
     uilistelement.h \
     gauges/gaugehsi.h
 
-system(pkg-config --exists sdl){
+system(pkg-config --exists sdl):!android{
     message("I have sdl")
     DEFINES+=HAVE_SDL
     SOURCES +=
@@ -165,9 +165,43 @@ OTHER_FILES += \
     android/src/org/kde/necessitas/ministro/IMinistroCallback.aidl \
     android/src/org/kde/necessitas/origo/QtActivity.java \
     android/src/org/kde/necessitas/origo/QtApplication.java \
+    android/version.xml \
+    android/res/drawable-ldpi/icon.png \
+    android/res/drawable-mdpi/icon.png \
+    android/res/drawable-hdpi/icon.png \
+    android/res/drawable/icon.png \
+    android/res/drawable/logo.png \
+    android/res/values/libs.xml \
+    android/res/values/strings.xml \
+    android/res/layout/splash.xml \
+    android/res/values-et/strings.xml \
+    android/res/values-zh-rCN/strings.xml \
+    android/res/values-zh-rTW/strings.xml \
+    android/res/values-es/strings.xml \
+    android/res/values-nb/strings.xml \
+    android/res/values-ms/strings.xml \
+    android/res/values-it/strings.xml \
+    android/res/values-pl/strings.xml \
+    android/res/values-id/strings.xml \
+    android/res/values-pt-rBR/strings.xml \
+    android/res/values-rs/strings.xml \
+    android/res/values-fr/strings.xml \
+    android/res/values-ro/strings.xml \
+    android/res/values-nl/strings.xml \
+    android/res/values-de/strings.xml \
+    android/res/values-ja/strings.xml \
+    android/res/values-ru/strings.xml \
+    android/res/values-fa/strings.xml \
+    android/res/values-el/strings.xml \
+    android/src/org/kde/necessitas/origo/QtActivity.java \
+    android/src/org/kde/necessitas/origo/QtApplication.java \
+    android/src/org/kde/necessitas/ministro/IMinistro.aidl \
+    android/src/org/kde/necessitas/ministro/IMinistroCallback.aidl \
+    android/AndroidManifest.xml \
+    deploy.pri \
     android/version.xml
 
-unix:!symbian {
+unix:!symbian:!android {
     maemo5 {
         target.path = /opt/usr/bin
     } else {
@@ -176,7 +210,7 @@ unix:!symbian {
     INSTALLS += target
 }
 
-unix:!symbian {
+unix:!symbian:!android {
     desktopfile.files = $${TARGET}.desktop
     maemo5 {
         desktopfile.path = /usr/share/applications/hildon
@@ -192,6 +226,28 @@ unix:!symbian {
 RESOURCES += \
     ardrone.qrc
 
+# Add more folders to ship with the application, here
+#folder_01.source = qml/meegocomponents1
+#folder_01.target = qml
+android {
+qtcomponents.source = imports
+qtcomponents.target =
+themes.source = themes
+themes.target =
+DEPLOYMENTFOLDERS = qtcomponents themes
+
+qmlplugins.files = plugins/libmeegoplugin.so
+qmlplugins.files += plugins/libmeegoextrasplugin.so
+qmlplugins.files += plugins/libqtcomponentsplugin_1_1.so
+qmlplugins.path = /libs/armeabi
+
+INSTALLS += qmlplugins
+}
+
+# Please do not modify the following two lines. Required for deployment.
+include(deploy.pri)
+qtcAddDeployment()
+
 ios:include($$[QMAKE_MKSPECS]/common/ios/qiosapp.conf)
 
 
@@ -222,3 +278,6 @@ ios:include($$[QMAKE_MKSPECS]/common/ios/qiosapp.conf)
 
 
 
+
+
+