Add:gui/qml:Qml skin prototype
authorakashihi <akashihi@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Fri, 12 Mar 2010 14:44:47 +0000 (14:44 +0000)
committerakashihi <akashihi@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Fri, 12 Mar 2010 14:44:47 +0000 (14:44 +0000)
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@3000 ffa7fe5e-494d-0410-b361-a75ebd5db220

14 files changed:
navit/navit/gui/qml/gui_qml.cpp
navit/navit/gui/qml/skins/navit/ButtonIcon.qml [new file with mode: 0644]
navit/navit/gui/qml/skins/navit/Cellar.qml [new file with mode: 0644]
navit/navit/gui/qml/skins/navit/PageAbout.qml [new file with mode: 0644]
navit/navit/gui/qml/skins/navit/PageNavigation.qml [new file with mode: 0644]
navit/navit/gui/qml/skins/navit/PageRoute.qml [new file with mode: 0644]
navit/navit/gui/qml/skins/navit/PageSettings.qml [new file with mode: 0644]
navit/navit/gui/qml/skins/navit/PageSettingsLocale.qml [new file with mode: 0644]
navit/navit/gui/qml/skins/navit/PageSettingsRules.qml [new file with mode: 0644]
navit/navit/gui/qml/skins/navit/PageSettingsTools.qml [new file with mode: 0644]
navit/navit/gui/qml/skins/navit/ToggleSwitch.qml [new file with mode: 0644]
navit/navit/gui/qml/skins/navit/background.svg [new file with mode: 0644]
navit/navit/gui/qml/skins/navit/knob.svg [new file with mode: 0644]
navit/navit/gui/qml/skins/navit/main.qml [new file with mode: 0644]

index c08dbb4..1ef0b56 100644 (file)
@@ -12,6 +12,7 @@
 #include "navit.h"
 #include "point.h"
 #include "graphics.h"
+#include "event.h"
 
 struct gui_priv {
        struct navit *nav;
@@ -23,6 +24,7 @@ struct gui_priv {
        int h;
        char *source;
        char *skin;
+       char* icon_src;
        
        //Interface stuff
        struct callback_list *cbl;
@@ -31,11 +33,123 @@ struct gui_priv {
        struct graphics *gra;
        struct QMainWindow *mainWindow;
        QWidget *graphicsWidget;
-       QWidget *guiWidget;
+       QmlView *guiWidget;
        QStackedWidget *switcherWidget;
        struct callback *button_cb;
+
+       //Proxy objects
+       class NGQProxyGui* guiProxy;
+       class NGQProxyNavit* navitProxy;
 };
 
+//Proxy classes
+class NGQProxyGui : public QObject {
+    Q_OBJECT;
+
+       Q_PROPERTY(QString iconPath READ iconPath CONSTANT);
+       Q_PROPERTY(QString returnSource READ returnSource WRITE setReturnSource);
+
+public:
+    NGQProxyGui(struct gui_priv* this_,QObject *parent) : QObject(parent) {
+        this->gui=this_;
+               this->source=QString("NoReturnTicket");
+    }
+
+public slots:
+       void setPage(QString page) {
+               this->gui->guiWidget->setUrl(QUrl::fromLocalFile(QString(this->gui->source)+"/"+this->gui->skin+"/"+page));
+               this->gui->guiWidget->execute();
+               this->gui->guiWidget->show();
+               dbg(0,"Page is: %s\n",page.toStdString().c_str());
+       }
+       void backToMap() {
+        if (this->gui->graphicsWidget) {
+                this->gui->switcherWidget->setCurrentWidget(this->gui->graphicsWidget);
+        }
+    }
+
+       //Properties
+       QString iconPath() {
+               return QString(this->gui->icon_src);
+       }
+       QString returnSource() {
+               return this->source;
+       }
+       void setReturnSource(QString returnSource) {
+               this->source=returnSource;
+       }
+
+private:
+    struct gui_priv* gui;
+       QString source;
+};
+
+class NGQProxyNavit : public QObject {
+    Q_OBJECT;
+
+public:
+    NGQProxyNavit(struct gui_priv* this_,QObject *parent) : QObject(parent) {
+        this->gui=this_;
+    }
+
+public slots:
+       void quit() {
+                       struct attr navit;
+                       navit.type=attr_navit;
+                       navit.u.navit=this->gui->nav;
+                       navit_destroy(navit.u.navit);
+                       event_main_loop_quit();
+                       this->gui->mainWindow->close();
+       }
+       //Attribute read/write
+       QString getAttr(const QString &attr_name) {
+               QString ret;
+               struct attr attr;
+               navit_get_attr(this->gui->nav, attr_from_name(attr_name.toStdString().c_str()), &attr, NULL);
+               if (ATTR_IS_INT(attr.type)) {
+                       ret.setNum(attr.u.num);
+               }
+               if (ATTR_IS_DOUBLE(attr.type)) {
+                       ret.setNum(*attr.u.numd);
+               }
+               if (ATTR_IS_STRING(attr.type)) {
+                       ret=attr.u.str;
+               }
+               return ret;
+       }
+       void setAttr(const QString &attr_name, const QString &attr_string) {
+                       struct attr attr_value;
+                       double *helper;
+
+                       navit_get_attr(this->gui->nav, attr_from_name(attr_name.toStdString().c_str()), &attr_value, NULL);
+
+                       if (ATTR_IS_INT(attr_value.type)) {
+                               attr_value.u.num=attr_string.toInt();
+                       }
+                       if (ATTR_IS_DOUBLE(attr_value.type)) {
+                               helper = g_new0(double,1);
+                               *helper=attr_string.toDouble();
+                               attr_value.u.numd=helper;
+                       }
+                       if (ATTR_IS_STRING(attr_value.type)) {
+                               attr_value.u.str=(char*)attr_string.toStdString().c_str();
+                       }
+
+                       navit_set_attr(this->gui->nav, &attr_value);
+
+                       return;
+       }
+       
+protected:
+
+private:
+    struct gui_priv* gui;
+
+};
+
+//Meta objects
+#include "gui_qml.moc"
+
 static void gui_qml_button(void *data, int pressed, int button, struct point *p)
 {
        struct gui_priv *this_=(struct gui_priv*)data;
@@ -52,7 +166,7 @@ static void gui_qml_button(void *data, int pressed, int button, struct point *p)
        }
 }
 
-
+//GUI interface calls
 static int argc=1;
 static char *argv[]={(char *)"navit",NULL};
 
@@ -87,10 +201,12 @@ static int gui_qml_set_graphics(struct gui_priv *this_, struct graphics *gra)
        view = new QmlView(NULL);
        this_->guiWidget = view;
        
-       view->setUrl(QUrl::fromLocalFile(QString(this_->source)+"/"+this_->skin+"/main.qml"));
-       view->execute();
-       this_->switcherWidget->addWidget(this_->guiWidget);
-       
+       //Create proxy object and bind them to gui widget
+       this_->guiProxy = new NGQProxyGui(this_,this_->mainWindow);
+       view->rootContext()->setContextProperty("gui",this_->guiProxy);
+       this_->navitProxy = new NGQProxyNavit(this_,this_->mainWindow);
+       view->rootContext()->setContextProperty("navit",this_->navitProxy);
+               
        //Check, if we have compatible graphics
        this_->graphicsWidget = (QWidget*)graphics_get_data(gra,"qt_widget");
        if (this_->graphicsWidget == NULL ) {
@@ -105,6 +221,10 @@ static int gui_qml_set_graphics(struct gui_priv *this_, struct graphics *gra)
        this_->button_cb=callback_new_attr_1(callback_cast(gui_qml_button), attr_button, this_);
        graphics_add_callback(gra, this_->button_cb);
 
+       //Instantiate qml components
+       this_->guiProxy->setPage(QString("main.qml"));
+       this_->switcherWidget->addWidget(this_->guiWidget);
+
        this_->mainWindow->show();
 
        return 0;
@@ -186,15 +306,18 @@ static struct gui_priv * gui_qml_new(struct navit *nav, struct gui_methods *meth
              this_->source=attr->u.str;
        if( (attr=attr_search(attrs,NULL,attr_skin)))
              this_->skin=attr->u.str;
+       if( (attr=attr_search(attrs,NULL,attr_icon_src)))
+                         this_->icon_src=attr->u.str;
 
        if ( this_->source==NULL ) {
            this_->source=g_strjoin(NULL,getenv("NAVIT_SHAREDIR"),"/gui/qml/skins",NULL);
        }
+       if ( this_->icon_src==NULL ) {
+               this_->icon_src=g_strjoin(NULL,getenv("NAVIT_SHAREDIR"),"/xpm/",NULL);
+       }
 
        this_->cbl=callback_list_new();
 
-       plugin_init();
-
        return this_;
 }
 
diff --git a/navit/navit/gui/qml/skins/navit/ButtonIcon.qml b/navit/navit/gui/qml/skins/navit/ButtonIcon.qml
new file mode 100644 (file)
index 0000000..8400d63
--- /dev/null
@@ -0,0 +1,40 @@
+import Qt 4.6\r
+\r
+Rectangle {\r
+    id: container
+\r
+    signal clicked\r
+    property string text: "Button"\r
+    property string icon: "Icon.png"\r
+\r
+    color: "black"; smooth: true; opacity: 0.75\r
+    width: imgItem.width+20; height: txtItem.height + 6 + imgItem.height;\r
+    transformOrigin: Rectangle.Center;\r
+\r
+    MouseRegion { id: mr; anchors.fill: parent; onClicked: container.clicked() }\r
+\r
+   Image {\r
+       id: imgItem; source: gui.iconPath+container.icon; anchors.top: container.top; anchors.horizontalCenter: container.horizontalCenter;\r
+       width: 48; height: 48\r
+   }\r
+\r
+    Text {\r
+        id: txtItem; text: container.text; anchors.top: imgItem.bottom; anchors.horizontalCenter: container.horizontalCenter; color: "White"; font.pointSize: 18;\r
+    }\r
+\r
+    states: [\r
+        State {\r
+            name: "Pressed"; when: mr.pressed == true\r
+            PropertyChanges { target: container; scale: 2.0 }\r
+            PropertyChanges { target: container; opacity: 1 }\r
+\r
+        }\r
+    ]\r
+\r
+    transitions: Transition {\r
+        NumberAnimation { matchProperties: "scale"; easing: "easeOutExpo"; duration: 200 }\r
+        NumberAnimation { matchProperties: "opacity"; easing: "easeInQuad"; duration: 200 }\r
+\r
+    }\r
+\r
+}\r
diff --git a/navit/navit/gui/qml/skins/navit/Cellar.qml b/navit/navit/gui/qml/skins/navit/Cellar.qml
new file mode 100644 (file)
index 0000000..8936bbc
--- /dev/null
@@ -0,0 +1,35 @@
+import Qt 4.6
+
+Rectangle {
+
+    function hideButtons() {
+               if ( gui.returnSource=="main.qml"  ) {
+               btnBack.opacity=0;
+       }
+       if ( gui.returnSource == "NoReturnTicket" ) {
+               btnHome.opacity=0;
+               btnBack.opacity=0;
+       }
+    }
+
+   Component.onCompleted: hideButtons();
+
+    ButtonIcon {
+        id: btnMap; icon: "gui_map.svg"; text:"Map"; onClicked: gui.backToMap();
+        anchors.left: parent.left; anchors.leftMargin: 3
+        anchors.bottom: parent.bottom; anchors.bottomMargin: 3
+    }
+
+    ButtonIcon {
+        id: btnHome; icon: "gui_home.svg"; text: "Home"; onClicked: gui.setPage("main.qml");
+        anchors.horizontalCenter: parent.horizontalCenter; anchors.leftMargin: 3
+        anchors.bottom: parent.bottom; anchors.bottomMargin: 3
+    }
+
+    ButtonIcon {
+        id: btnBack; icon: "gui_arrow_left.svg"; text: "Back"; onClicked: gui.setPage(gui.returnSource);
+        anchors.right: parent.right; anchors.leftMargin: 3
+        anchors.bottom: parent.bottom; anchors.bottomMargin: 3
+    }
+
+}
diff --git a/navit/navit/gui/qml/skins/navit/PageAbout.qml b/navit/navit/gui/qml/skins/navit/PageAbout.qml
new file mode 100644 (file)
index 0000000..2df622e
--- /dev/null
@@ -0,0 +1,24 @@
+import Qt 4.6
+
+Rectangle {
+    id: page
+
+    width: 800; height: 424
+    border.width: 1
+    color: "Black"
+    opacity: 0
+
+    function pageOpen() {
+        page.opacity = 1;
+    }
+    
+    Component.onCompleted: pageOpen();    
+    
+    opacity: Behavior {
+        NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }
+    }
+
+    Text { id: myText; anchors.centerIn: parent; text: "Hi, i'm Navit!"; color: "White" }
+
+    Cellar {anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }
+}
diff --git a/navit/navit/gui/qml/skins/navit/PageNavigation.qml b/navit/navit/gui/qml/skins/navit/PageNavigation.qml
new file mode 100644 (file)
index 0000000..d1698d5
--- /dev/null
@@ -0,0 +1,51 @@
+
+import Qt 4.6
+
+Rectangle {
+    id: page
+
+    width: 800; height: 424
+    color: "Black"
+    opacity: 0
+
+    function pageOpen() {
+        page.opacity = 1;
+    }
+    
+    Component.onCompleted: pageOpen();    
+    
+    opacity: Behavior {
+        NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }
+    }
+
+    Grid {
+        columns: 3;rows: 1
+        anchors.horizontalCenter: parent.horizontalCenter;
+        anchors.bottom: parent.verticalCenter; anchors.bottomMargin: 48;
+        spacing: 64
+        ButtonIcon {
+            id: btnView; text: "View on map"; icon: "gui_maps.svg"; onClicked: console.log("Implement me!");
+        }
+        ButtonIcon {
+            id: btnRoadbook; text: "Roadbook"; icon: "gui_log.svg"; onClicked: console.log("Implement me!");
+        }
+        ButtonIcon {
+            id: btnSettings; text: "Height profile"; icon: "peak.svg"; onClicked: console.log("Implement me!");
+        }
+    }
+
+    Grid {
+        columns: 2;rows: 1
+        anchors.horizontalCenter: parent.horizontalCenter;
+        anchors.top: parent.verticalCenter; anchors.topMargin: 48;
+        spacing: 64
+        ButtonIcon {
+            id: btnQuit; text: "POIs"; icon: "attraction.svg"; onClicked: console.log("Implement me!");
+        }
+        ButtonIcon {
+            id: btnStop; text: "Stop"; icon: "gui_stop.svg"; onClicked: console.log("Implement me!");
+        }
+    }
+
+    Cellar {anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }
+}
diff --git a/navit/navit/gui/qml/skins/navit/PageRoute.qml b/navit/navit/gui/qml/skins/navit/PageRoute.qml
new file mode 100644 (file)
index 0000000..f697b65
--- /dev/null
@@ -0,0 +1,50 @@
+import Qt 4.6\r
+\r
+Rectangle {\r
+    id: page\r
+\r
+    width: 800; height: 424\r
+    color: "Black"\r
+    opacity: 0\r
+\r
+    function pageOpen() {\r
+        page.opacity = 1;\r
+    }\r
+    \r
+    Component.onCompleted: pageOpen();    \r
+    \r
+    opacity: Behavior {\r
+        NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }\r
+    }\r
+\r
+    Grid {\r
+        columns: 3;rows: 1\r
+        anchors.horizontalCenter: parent.horizontalCenter;\r
+        anchors.bottom: parent.verticalCenter; anchors.bottomMargin: 48;\r
+        spacing: 64\r
+        ButtonIcon {\r
+            id: btnBookmarks; text: "Bookmarks"; icon: "gui_bookmark.svg"; onClicked: console.log("Implement me!");\r
+        }\r
+        ButtonIcon {\r
+            id: btnDestinations; text: "Destinations"; icon: "gui_bookmark.svg"; onClicked: console.log("Implement me!");\r
+        }\r
+        ButtonIcon {\r
+            id: btnSettings; text: "Locations"; icon: "gui_bookmark.svg"; onClicked: console.log("Implement me!");\r
+        }\r
+    }\r
+\r
+    Grid {\r
+        columns: 2;rows: 1\r
+        anchors.horizontalCenter: parent.horizontalCenter;\r
+        anchors.top: parent.verticalCenter; anchors.topMargin: 48;\r
+        spacing: 64\r
+        ButtonIcon {\r
+            id: btnAbout; text: "Search"; icon: "gui_town.svg"; onClicked: console.log("Implement me!");\r
+        }\r
+        ButtonIcon {\r
+            id: btnQuit; text: "POIs"; icon: "attraction.svg"; onClicked: console.log("Implement me!");\r
+        }\r
+    }\r
+\r
+    Cellar {anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }\r
+}\r
diff --git a/navit/navit/gui/qml/skins/navit/PageSettings.qml b/navit/navit/gui/qml/skins/navit/PageSettings.qml
new file mode 100644 (file)
index 0000000..fb74291
--- /dev/null
@@ -0,0 +1,50 @@
+import Qt 4.6\r
+\r
+Rectangle {\r
+    id: page\r
+\r
+    width: 800; height: 424\r
+    border.width: 1\r
+    color: "Black"\r
+    opacity: 0\r
+\r
+    function pageOpen() {\r
+        page.opacity = 1;\r
+    }\r
+    \r
+    Component.onCompleted: pageOpen();    \r
+    \r
+    opacity: Behavior {\r
+        NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }\r
+    }\r
+\r
+    Grid {\r
+        columns: 3;rows: 1\r
+        anchors.horizontalCenter: parent.horizontalCenter;\r
+        anchors.bottom: parent.verticalCenter; anchors.bottomMargin: 48;\r
+        spacing: 64\r
+        ButtonIcon {\r
+            id: btnDisplay; text: "Display"; icon: "gui_display.svg"; onClicked: console.log("Implement me!");\r
+        }\r
+        ButtonIcon {\r
+            id: btnMap; text: "Map"; icon: "gui_maps.svg"; onClicked: console.log("Implement me!");\r
+        }\r
+        ButtonIcon {\r
+            id: btnVehicle; text: "Vehicle"; icon: "gui_vehicle.svg"; onClicked: console.log("Implement me!");\r
+        }\r
+    }\r
+    Grid {\r
+        columns: 2;rows: 1\r
+        anchors.horizontalCenter: parent.horizontalCenter;\r
+        anchors.top: parent.verticalCenter; anchors.topMargin: 48;\r
+        spacing: 64\r
+        ButtonIcon {\r
+            id: btnRules; text: "Rules"; icon: "gui_rules.svg"; onClicked: { gui.returnSource="PageSettings.qml";gui.setPage("PageSettingsRules.qml") }\r
+        }\r
+        ButtonIcon {\r
+            id: btnTools; text: "Tools"; icon: "gui_tools.svg"; onClicked: { gui.returnSource="PageSettings.qml";gui.setPage("PageSettingsTools.qml") }\r
+        }\r
+    }\r
+\r
+    Cellar {anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }\r
+}\r
diff --git a/navit/navit/gui/qml/skins/navit/PageSettingsLocale.qml b/navit/navit/gui/qml/skins/navit/PageSettingsLocale.qml
new file mode 100644 (file)
index 0000000..964a2ff
--- /dev/null
@@ -0,0 +1,33 @@
+
+import Qt 4.6
+
+Rectangle {
+    id: page
+
+    width: 800; height: 424
+    border.width: 1
+    color: "Black"
+    opacity: 0
+
+    function pageOpen() {
+        page.opacity = 1;
+    }
+    
+    Component.onCompleted: pageOpen();    
+    
+    opacity: Behavior {
+        NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }
+    }
+
+    Grid {
+        columns: 1;rows: 3
+        anchors.horizontalCenter: parent.horizontalCenter;
+        anchors.verticalCenter: parent.verticalCenter; 
+
+       Text { id: lang; anchors.bottom: langname.top; text: "Hi, i'm Navit!"; color: "White" }
+       Text { id: langname; anchors.centerIn: parent; text: "Hi, i'm Navit!"; color: "White" }
+       Text { id: ctryname; anchors.top: langname.bottom; text: "Hi, i'm Navit!"; color: "White" }
+    }
+
+    Cellar {anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }
+}
diff --git a/navit/navit/gui/qml/skins/navit/PageSettingsRules.qml b/navit/navit/gui/qml/skins/navit/PageSettingsRules.qml
new file mode 100644 (file)
index 0000000..290efbb
--- /dev/null
@@ -0,0 +1,38 @@
+import Qt 4.6\r
+\r
+Rectangle {\r
+    id: page\r
+\r
+    width: 800; height: 424\r
+    border.width: 1\r
+    color: "Black"\r
+    opacity: 0\r
+\r
+    function pageOpen() {\r
+        page.opacity = 1;\r
+    }\r
+    \r
+    Component.onCompleted: pageOpen();    \r
+    \r
+    opacity: Behavior {\r
+        NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }\r
+    }\r
+\r
+    Grid {\r
+        columns: 1; rows: 3\r
+        anchors.horizontalCenter: parent.horizontalCenter;\r
+        anchors.verticalCenter: parent.verticalCenter;\r
+        spacing: 64\r
+        ToggleSwitch {\r
+             on: navit.getAttr("tracking");  text: "Lock on road"\r
+        }\r
+        ToggleSwitch {\r
+             on: navit.getAttr("orientation");  text: "Northing"
+        }\r
+       ToggleSwitch {\r
+             on: navit.getAttr("follow_cursor");  text: "Map follows Vehicle"\r
+        }\r
+    }\r
+\r
+    Cellar {anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }\r
+}\r
diff --git a/navit/navit/gui/qml/skins/navit/PageSettingsTools.qml b/navit/navit/gui/qml/skins/navit/PageSettingsTools.qml
new file mode 100644 (file)
index 0000000..d21d026
--- /dev/null
@@ -0,0 +1,33 @@
+
+import Qt 4.6
+
+Rectangle {
+    id: page
+
+    width: 800; height: 424
+    border.width: 1
+    color: "Black"
+    opacity: 0
+
+    function pageOpen() {
+        page.opacity = 1;
+    }
+    
+    Component.onCompleted: pageOpen();    
+    
+    opacity: Behavior {
+        NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }
+    }
+
+    Grid {
+        columns: 1;rows: 1
+        anchors.horizontalCenter: parent.horizontalCenter;
+        anchors.verticalCenter: parent.verticalCenter; 
+        spacing: 64
+        ButtonIcon {
+            id: btnDisplay; text: "Locale"; icon: "gui_actions.svg"; onClicked: { gui.returnSource="PageSettingsTools.qml";gui.setPage("PageSettingsLocale.qml") }
+        }
+    }
+
+    Cellar {anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }
+}
diff --git a/navit/navit/gui/qml/skins/navit/ToggleSwitch.qml b/navit/navit/gui/qml/skins/navit/ToggleSwitch.qml
new file mode 100644 (file)
index 0000000..7f229af
--- /dev/null
@@ -0,0 +1,64 @@
+import Qt 4.6\r
+\r
+ Item {\r
+     id: toggleswitch\r
+     width: background.width + label.width + 40; height: background.height\r
+\r
+     property string on: "false"\r
+     property string text: "Toggle switch"\r
+\r
+     function toggle() {\r
+         if (toggleswitch.state == "on")\r
+             toggleswitch.state = "off";\r
+         else toggleswitch.state = "on";\r
+     }\r
+\r
+     function startup () {\r
+        if (toggleswitch.on == "1" ) \r
+                       toggleswitch.on = "true";\r
+        else \r
+               toggleswitch.on = "false";\r
+         if (toggleswitch.on == "true")\r
+             toggleswitch.state = "on";\r
+         else\r
+             toggleswitch.state = "off";\r
+     }\r
+\r
+     Component.onCompleted: startup();\r
+\r
+     Text {\r
+        id: label; text: toggleswitch.text; color: "White"; font.pointSize: 18;\r
+        anchors.left: background.right; anchors.leftMargin: 32;\r
+        anchors.verticalCenter: background.verticalCenter\r
+     }\r
+\r
+\r
+     Image {\r
+         id: background; source: "background.svg"\r
+         MouseRegion { anchors.fill: parent; onClicked: toggle() }\r
+     }\r
+\r
+     Image {\r
+         id: knob; source: "knob.svg"; x: 1; y: 2\r
+\r
+         MouseRegion {\r
+             anchors.fill: parent\r
+             drag.target: knob; drag.axis: "XAxis"; drag.minimumX: 1; drag.maximumX: 78\r
+         }\r
+     }\r
+\r
+     states: [\r
+         State {\r
+             name: "on"\r
+             PropertyChanges { target: knob; x: 78 }\r
+         },\r
+         State {\r
+             name: "off"\r
+             PropertyChanges { target: knob; x: 1 }\r
+         }\r
+     ]\r
+\r
+     transitions: Transition {\r
+         NumberAnimation { matchProperties: "x"; easing: "easeInOutQuad"; duration: 200 }\r
+     }\r
+ }\r
diff --git a/navit/navit/gui/qml/skins/navit/background.svg b/navit/navit/gui/qml/skins/navit/background.svg
new file mode 100644 (file)
index 0000000..f920d3e
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+       <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.1"
+        xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+        x="0px" y="0px" width="130px" height="56px" viewBox="0 0 130 56" enable-background="new 0 0 130 56" xml:space="preserve">
+<defs>
+</defs>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-37.5005" y1="-66" x2="-37.5005" y2="-121.9985" gradientTransform="matrix(1 0 0 -1 102.5 -66)">
+       <stop  offset="0.0056" style="stop-color:#000000"/>
+       <stop  offset="1" style="stop-color:#EAECEF"/>
+</linearGradient>
+<path fill="url(#SVGID_1_)" d="M101.998,55.998H28c-15.439,0-28-12.562-28-28C0,12.56,12.561,0,28,0h73.998
+       c15.439,0,28,12.559,28,27.998C129.998,43.438,117.438,55.998,101.998,55.998L101.998,55.998z"/>
+<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-5.5" y1="-132.1338" x2="-69.5002" y2="-55.8613" gradientTransform="matrix(1 0 0 -1 102.5 -66)">
+       <stop  offset="0.0056" style="stop-color:#000000"/>
+       <stop  offset="1" style="stop-color:#828385"/>
+</linearGradient>
+<path fill="url(#SVGID_2_)" d="M127.999,27.998c0,14.359-11.642,26-26,26h-74c-14.359,0-26-11.641-26-26l0,0
+       c0-14.359,11.641-26,26-26h74C116.357,1.998,127.999,13.639,127.999,27.998L127.999,27.998z"/>
+</svg>
diff --git a/navit/navit/gui/qml/skins/navit/knob.svg b/navit/navit/gui/qml/skins/navit/knob.svg
new file mode 100644 (file)
index 0000000..fb69337
--- /dev/null
@@ -0,0 +1,867 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In  -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   x="0px"
+   y="0px"
+   width="52px"
+   height="52px"
+   viewBox="0 0 52 52"
+   enable-background="new 0 0 52 52"
+   xml:space="preserve"
+   id="svg3883"
+   sodipodi:version="0.32"
+   inkscape:version="0.44.1"
+   sodipodi:docname="knob_on.svg"
+   sodipodi:docbase="/local/axel/embeddedwidgets/embeddedstories/skins/svgslideswitch/MetallicBrush"><metadata
+   id="metadata4200"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+   inkscape:window-height="640"
+   inkscape:window-width="937"
+   inkscape:pageshadow="2"
+   inkscape:pageopacity="0.0"
+   guidetolerance="10.0"
+   gridtolerance="10.0"
+   objecttolerance="10.0"
+   borderopacity="1.0"
+   bordercolor="#666666"
+   pagecolor="#ffffff"
+   id="base"
+   inkscape:zoom="8.3653846"
+   inkscape:cx="26.000002"
+   inkscape:cy="26"
+   inkscape:window-x="0"
+   inkscape:window-y="0"
+   inkscape:current-layer="svg3883" />
+<defs
+   id="defs3885">
+</defs>
+<linearGradient
+   id="SVGID_1_"
+   gradientUnits="userSpaceOnUse"
+   x1="-59.7866"
+   y1="-115.917"
+   x2="-93.2123"
+   y2="-76.0818"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#000000"
+   id="stop3888" />
+       <stop
+   offset="1"
+   style="stop-color:#EAECEF"
+   id="stop3890" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="26"
+   id="circle3892"
+   style="fill:url(#SVGID_1_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="26"
+   sodipodi:ry="26"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_2_"
+   gradientUnits="userSpaceOnUse"
+   x1="-100.5"
+   y1="-96"
+   x2="-52.5"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop3895" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop3897" />
+       <stop
+   offset="0.6043"
+   style="stop-color:#E7EAED"
+   id="stop3899" />
+       <stop
+   offset="0.6751"
+   style="stop-color:#DEE4E7"
+   id="stop3901" />
+       <stop
+   offset="0.7358"
+   style="stop-color:#CFD9DD"
+   id="stop3903" />
+       <stop
+   offset="0.791"
+   style="stop-color:#B9CACF"
+   id="stop3905" />
+       <stop
+   offset="0.8425"
+   style="stop-color:#9EB6BD"
+   id="stop3907" />
+       <stop
+   offset="0.891"
+   style="stop-color:#7B9EA7"
+   id="stop3909" />
+       <stop
+   offset="0.9374"
+   style="stop-color:#53828C"
+   id="stop3911" />
+       <stop
+   offset="0.9809"
+   style="stop-color:#25626E"
+   id="stop3913" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop3915" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="24"
+   id="circle3917"
+   style="fill:url(#SVGID_2_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="24"
+   sodipodi:ry="24"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_3_"
+   gradientUnits="userSpaceOnUse"
+   x1="-98.6328"
+   y1="-96"
+   x2="-54.3672"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop3920" />
+       <stop
+   offset="0.073"
+   style="stop-color:#8FAECB"
+   id="stop3922" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop3924" />
+       <stop
+   offset="0.5902"
+   style="stop-color:#E7E9ED"
+   id="stop3926" />
+       <stop
+   offset="0.618"
+   style="stop-color:#E4E7EB"
+   id="stop3928" />
+       <stop
+   offset="0.6697"
+   style="stop-color:#E0E4E9"
+   id="stop3930" />
+       <stop
+   offset="0.7211"
+   style="stop-color:#D4DCE1"
+   id="stop3932" />
+       <stop
+   offset="0.7722"
+   style="stop-color:#C0CFD5"
+   id="stop3934" />
+       <stop
+   offset="0.809"
+   style="stop-color:#ADC2C9"
+   id="stop3936" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop3938" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="22.132999"
+   id="circle3940"
+   style="fill:url(#SVGID_3_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="22.132999"
+   sodipodi:ry="22.132999"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_4_"
+   gradientUnits="userSpaceOnUse"
+   x1="-96.7671"
+   y1="-96"
+   x2="-56.2324"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop3943" />
+       <stop
+   offset="0.073"
+   style="stop-color:#86A7C4"
+   id="stop3945" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop3947" />
+       <stop
+   offset="0.577"
+   style="stop-color:#E7EAED"
+   id="stop3949" />
+       <stop
+   offset="0.618"
+   style="stop-color:#E1E6EA"
+   id="stop3951" />
+       <stop
+   offset="0.6697"
+   style="stop-color:#DDE3E8"
+   id="stop3953" />
+       <stop
+   offset="0.7211"
+   style="stop-color:#D1DBE1"
+   id="stop3955" />
+       <stop
+   offset="0.7722"
+   style="stop-color:#BDCDD5"
+   id="stop3957" />
+       <stop
+   offset="0.809"
+   style="stop-color:#AAC0CA"
+   id="stop3959" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop3961" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="20.267"
+   id="circle3963"
+   style="fill:url(#SVGID_4_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="20.267"
+   sodipodi:ry="20.267"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_5_"
+   gradientUnits="userSpaceOnUse"
+   x1="-94.8999"
+   y1="-96"
+   x2="-58.0996"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop3966" />
+       <stop
+   offset="0.073"
+   style="stop-color:#7E9FBC"
+   id="stop3968" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop3970" />
+       <stop
+   offset="0.5709"
+   style="stop-color:#E6E9ED"
+   id="stop3972" />
+       <stop
+   offset="0.618"
+   style="stop-color:#DFE4E9"
+   id="stop3974" />
+       <stop
+   offset="0.6687"
+   style="stop-color:#DBE1E7"
+   id="stop3976" />
+       <stop
+   offset="0.7193"
+   style="stop-color:#CFD9E0"
+   id="stop3978" />
+       <stop
+   offset="0.7695"
+   style="stop-color:#BBCCD6"
+   id="stop3980" />
+       <stop
+   offset="0.809"
+   style="stop-color:#A6BECA"
+   id="stop3982" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop3984" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="18.4"
+   id="circle3986"
+   style="fill:url(#SVGID_5_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="18.4"
+   sodipodi:ry="18.4"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_6_"
+   gradientUnits="userSpaceOnUse"
+   x1="-93.0332"
+   y1="-96"
+   x2="-59.9668"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop3989" />
+       <stop
+   offset="0.073"
+   style="stop-color:#7697B4"
+   id="stop3991" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop3993" />
+       <stop
+   offset="0.5636"
+   style="stop-color:#E6E9ED"
+   id="stop3995" />
+       <stop
+   offset="0.618"
+   style="stop-color:#DCE2E8"
+   id="stop3997" />
+       <stop
+   offset="0.6687"
+   style="stop-color:#D8DFE6"
+   id="stop3999" />
+       <stop
+   offset="0.7193"
+   style="stop-color:#CCD7E0"
+   id="stop4001" />
+       <stop
+   offset="0.7695"
+   style="stop-color:#B8CAD5"
+   id="stop4003" />
+       <stop
+   offset="0.809"
+   style="stop-color:#A3BCCA"
+   id="stop4005" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop4007" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="16.533001"
+   id="circle4009"
+   style="fill:url(#SVGID_6_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="16.533001"
+   sodipodi:ry="16.533001"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_7_"
+   gradientUnits="userSpaceOnUse"
+   x1="-91.167"
+   y1="-96"
+   x2="-61.833"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop4012" />
+       <stop
+   offset="0.073"
+   style="stop-color:#6D8FAD"
+   id="stop4014" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop4016" />
+       <stop
+   offset="0.5605"
+   style="stop-color:#E5E8EC"
+   id="stop4018" />
+       <stop
+   offset="0.618"
+   style="stop-color:#DAE1E7"
+   id="stop4020" />
+       <stop
+   offset="0.6679"
+   style="stop-color:#D6DEE5"
+   id="stop4022" />
+       <stop
+   offset="0.7175"
+   style="stop-color:#CAD6DF"
+   id="stop4024" />
+       <stop
+   offset="0.7669"
+   style="stop-color:#B6C9D6"
+   id="stop4026" />
+       <stop
+   offset="0.809"
+   style="stop-color:#9FBACB"
+   id="stop4028" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop4030" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="14.667"
+   id="circle4032"
+   style="fill:url(#SVGID_7_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="14.667"
+   sodipodi:ry="14.667"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_8_"
+   gradientUnits="userSpaceOnUse"
+   x1="-89.2998"
+   y1="-96"
+   x2="-63.7002"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop4035" />
+       <stop
+   offset="0.073"
+   style="stop-color:#6587A5"
+   id="stop4037" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop4039" />
+       <stop
+   offset="0.5588"
+   style="stop-color:#E4E8EC"
+   id="stop4041" />
+       <stop
+   offset="0.618"
+   style="stop-color:#D8DFE7"
+   id="stop4043" />
+       <stop
+   offset="0.6675"
+   style="stop-color:#D4DCE5"
+   id="stop4045" />
+       <stop
+   offset="0.7167"
+   style="stop-color:#C8D5E0"
+   id="stop4047" />
+       <stop
+   offset="0.7657"
+   style="stop-color:#B4C8D6"
+   id="stop4049" />
+       <stop
+   offset="0.809"
+   style="stop-color:#9CB8CB"
+   id="stop4051" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop4053" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="12.8"
+   id="circle4055"
+   style="fill:url(#SVGID_8_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="12.8"
+   sodipodi:ry="12.8"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_9_"
+   gradientUnits="userSpaceOnUse"
+   x1="-87.4331"
+   y1="-96"
+   x2="-65.5664"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop4058" />
+       <stop
+   offset="0.073"
+   style="stop-color:#5D809D"
+   id="stop4060" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop4062" />
+       <stop
+   offset="0.5567"
+   style="stop-color:#E3E7EC"
+   id="stop4064" />
+       <stop
+   offset="0.618"
+   style="stop-color:#D5DDE6"
+   id="stop4066" />
+       <stop
+   offset="0.6671"
+   style="stop-color:#D1DAE4"
+   id="stop4068" />
+       <stop
+   offset="0.7159"
+   style="stop-color:#C5D3DF"
+   id="stop4070" />
+       <stop
+   offset="0.7645"
+   style="stop-color:#B1C6D6"
+   id="stop4072" />
+       <stop
+   offset="0.809"
+   style="stop-color:#98B5CB"
+   id="stop4074" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop4076" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="10.933"
+   id="circle4078"
+   style="fill:url(#SVGID_9_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="10.933"
+   sodipodi:ry="10.933"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_10_"
+   gradientUnits="userSpaceOnUse"
+   x1="-85.5659"
+   y1="-96"
+   x2="-67.4336"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop4081" />
+       <stop
+   offset="0.073"
+   style="stop-color:#547896"
+   id="stop4083" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop4085" />
+       <stop
+   offset="0.5588"
+   style="stop-color:#E1E6EB"
+   id="stop4087" />
+       <stop
+   offset="0.618"
+   style="stop-color:#D3DCE5"
+   id="stop4089" />
+       <stop
+   offset="0.6663"
+   style="stop-color:#CFD9E3"
+   id="stop4091" />
+       <stop
+   offset="0.7143"
+   style="stop-color:#C3D2DF"
+   id="stop4093" />
+       <stop
+   offset="0.7621"
+   style="stop-color:#AFC5D7"
+   id="stop4095" />
+       <stop
+   offset="0.809"
+   style="stop-color:#94B3CC"
+   id="stop4097" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop4099" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="9.066"
+   id="circle4101"
+   style="fill:url(#SVGID_10_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="9.066"
+   sodipodi:ry="9.066"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_11_"
+   gradientUnits="userSpaceOnUse"
+   x1="-83.7002"
+   y1="-96"
+   x2="-69.2998"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop4104" />
+       <stop
+   offset="0.073"
+   style="stop-color:#4C708E"
+   id="stop4106" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop4108" />
+       <stop
+   offset="0.5625"
+   style="stop-color:#DEE4EA"
+   id="stop4110" />
+       <stop
+   offset="0.618"
+   style="stop-color:#D0DAE4"
+   id="stop4112" />
+       <stop
+   offset="0.6663"
+   style="stop-color:#CCD7E2"
+   id="stop4114" />
+       <stop
+   offset="0.7143"
+   style="stop-color:#C0D0DE"
+   id="stop4116" />
+       <stop
+   offset="0.7621"
+   style="stop-color:#ACC3D6"
+   id="stop4118" />
+       <stop
+   offset="0.809"
+   style="stop-color:#91B1CC"
+   id="stop4120" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop4122" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="7.1999998"
+   id="circle4124"
+   style="fill:url(#SVGID_11_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="7.1999998"
+   sodipodi:ry="7.1999998"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_12_"
+   gradientUnits="userSpaceOnUse"
+   x1="-81.833"
+   y1="-96"
+   x2="-71.167"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop4127" />
+       <stop
+   offset="0.073"
+   style="stop-color:#446986"
+   id="stop4129" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop4131" />
+       <stop
+   offset="0.5757"
+   style="stop-color:#D9E0E8"
+   id="stop4133" />
+       <stop
+   offset="0.618"
+   style="stop-color:#CED8E3"
+   id="stop4135" />
+       <stop
+   offset="0.6655"
+   style="stop-color:#CAD5E2"
+   id="stop4137" />
+       <stop
+   offset="0.7129"
+   style="stop-color:#BECEDD"
+   id="stop4139" />
+       <stop
+   offset="0.7601"
+   style="stop-color:#AAC1D6"
+   id="stop4141" />
+       <stop
+   offset="0.807"
+   style="stop-color:#8EB0CC"
+   id="stop4143" />
+       <stop
+   offset="0.809"
+   style="stop-color:#8DAFCC"
+   id="stop4145" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop4147" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="5.3330002"
+   id="circle4149"
+   style="fill:url(#SVGID_12_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="5.3330002"
+   sodipodi:ry="5.3330002"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_13_"
+   gradientUnits="userSpaceOnUse"
+   x1="-79.9658"
+   y1="-96"
+   x2="-73.0342"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop4152" />
+       <stop
+   offset="0.073"
+   style="stop-color:#3B617F"
+   id="stop4154" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop4156" />
+       <stop
+   offset="0.6087"
+   style="stop-color:#CED9E3"
+   id="stop4158" />
+       <stop
+   offset="0.618"
+   style="stop-color:#CBD7E2"
+   id="stop4160" />
+       <stop
+   offset="0.6655"
+   style="stop-color:#C7D4E1"
+   id="stop4162" />
+       <stop
+   offset="0.7129"
+   style="stop-color:#BBCDDD"
+   id="stop4164" />
+       <stop
+   offset="0.7601"
+   style="stop-color:#A7C0D6"
+   id="stop4166" />
+       <stop
+   offset="0.807"
+   style="stop-color:#8BAECD"
+   id="stop4168" />
+       <stop
+   offset="0.809"
+   style="stop-color:#8AADCD"
+   id="stop4170" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop4172" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="3.4660001"
+   id="circle4174"
+   style="fill:url(#SVGID_13_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="3.4660001"
+   sodipodi:ry="3.4660001"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_14_"
+   gradientUnits="userSpaceOnUse"
+   x1="-78.1001"
+   y1="-96"
+   x2="-74.9004"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop4177" />
+       <stop
+   offset="0.073"
+   style="stop-color:#335977"
+   id="stop4179" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop4181" />
+       <stop
+   offset="0.618"
+   style="stop-color:#C9D5E1"
+   id="stop4183" />
+       <stop
+   offset="0.6648"
+   style="stop-color:#C5D3E0"
+   id="stop4185" />
+       <stop
+   offset="0.7114"
+   style="stop-color:#B9CBDC"
+   id="stop4187" />
+       <stop
+   offset="0.758"
+   style="stop-color:#A5BFD6"
+   id="stop4189" />
+       <stop
+   offset="0.8042"
+   style="stop-color:#89ADCE"
+   id="stop4191" />
+       <stop
+   offset="0.809"
+   style="stop-color:#86ABCD"
+   id="stop4193" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop4195" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="1.6"
+   id="circle4197"
+   style="fill:url(#SVGID_14_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="1.6"
+   sodipodi:ry="1.6"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+</svg>
\ No newline at end of file
diff --git a/navit/navit/gui/qml/skins/navit/main.qml b/navit/navit/gui/qml/skins/navit/main.qml
new file mode 100644 (file)
index 0000000..16ea874
--- /dev/null
@@ -0,0 +1,52 @@
+import Qt 4.6\r
+\r
+Rectangle {\r
+    id: page\r
+\r
+    width: 800; height: 424\r
+    color: "Black"\r
+    opacity: 0\r
+\r
+    function pageOpen() {\r
+       gui.returnSource="NoReturnTicket";\r
+        page.opacity = 1;\r
+    }\r
+    \r
+    Component.onCompleted: pageOpen();    \r
+    \r
+    opacity: Behavior {\r
+        NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }\r
+    }\r
+\r
+\r
+    Grid {\r
+        columns: 3;rows: 1\r
+        anchors.horizontalCenter: parent.horizontalCenter;\r
+        anchors.bottom: parent.verticalCenter; anchors.bottomMargin: 48;\r
+        spacing: 64\r
+        ButtonIcon {\r
+            id: btnRoute; text: "Route"; icon: "cursor.svg";  onClicked: { gui.returnSource="main.qml";gui.setPage("PageRoute.qml") }\r
+        }\r
+        ButtonIcon {\r
+            id: btnNavigation; text: "Navigation"; icon: "nav_destination_wh.svg"; onClicked: { gui.returnSource="main.qml";gui.setPage("PageNavigation.qml") }\r
+        }\r
+        ButtonIcon {\r
+            id: btnSettings; text: "Settings"; icon: "gui_settings.svg"; onClicked: { gui.returnSource="main.qml";gui.setPage("PageSettings.qml") }\r
+        }\r
+    }\r
+\r
+    Grid {\r
+        columns: 2;rows: 1\r
+        anchors.horizontalCenter: parent.horizontalCenter;\r
+        anchors.top: parent.verticalCenter; anchors.topMargin: 48;\r
+        spacing: 64\r
+        ButtonIcon {\r
+            id: btnAbout; text: "About"; icon: "gui_about.svg"; onClicked: { gui.returnSource="main.qml";gui.setPage("PageAbout.qml") }\r
+        }\r
+        ButtonIcon {\r
+            id: btnQuit; text: "Quit"; icon: "gui_quit.svg"; onClicked: navit.quit();\r
+        }\r
+    }\r
+\r
+    Cellar {anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }\r
+}\r