From 3c69d75b4421f46fea685b755a01a0923db218f9 Mon Sep 17 00:00:00 2001 From: akashihi Date: Tue, 6 Jul 2010 08:05:36 +0000 Subject: [PATCH] Fix:gui/qml:Page switching implemented in QML git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@3475 ffa7fe5e-494d-0410-b361-a75ebd5db220 --- navit/navit/gui/qml/guiProxy.h | 76 +++++---------- navit/navit/gui/qml/gui_qml.cpp | 20 ++-- navit/navit/gui/qml/skins/navit/Cellar.qml | 15 +-- navit/navit/gui/qml/skins/navit/Makefile.am | 3 +- navit/navit/gui/qml/skins/navit/PageAbout.qml | 1 + navit/navit/gui/qml/skins/navit/PageBookmarks.qml | 3 +- .../navit/gui/qml/skins/navit/PageBookmarksAdd.qml | 3 +- navit/navit/gui/qml/skins/navit/PageMain.qml | 29 ++++++ navit/navit/gui/qml/skins/navit/PageNavigate.qml | 11 ++- navit/navit/gui/qml/skins/navit/PagePoi.qml | 3 +- navit/navit/gui/qml/skins/navit/PagePointInfo.qml | 1 + navit/navit/gui/qml/skins/navit/PageRoute.qml | 5 +- navit/navit/gui/qml/skins/navit/PageSearch.qml | 7 +- .../gui/qml/skins/navit/PageSearchSelector.qml | 9 +- navit/navit/gui/qml/skins/navit/PageSettings.qml | 103 +++++++++++---------- .../gui/qml/skins/navit/PageSettingsDisplay.qml | 1 + .../gui/qml/skins/navit/PageSettingsLocale.qml | 1 + .../gui/qml/skins/navit/PageSettingsRules.qml | 1 + .../gui/qml/skins/navit/PageSettingsTools.qml | 3 +- .../gui/qml/skins/navit/PageSettingsVehicle.qml | 3 +- .../qml/skins/navit/{command.qml => command.js} | 2 +- navit/navit/gui/qml/skins/navit/main.qml | 71 ++++++-------- navit/navit/gui/qml/skins/navit/pagenavigation.js | 15 +++ 23 files changed, 206 insertions(+), 180 deletions(-) create mode 100644 navit/navit/gui/qml/skins/navit/PageMain.qml rename navit/navit/gui/qml/skins/navit/{command.qml => command.js} (92%) create mode 100644 navit/navit/gui/qml/skins/navit/pagenavigation.js diff --git a/navit/navit/gui/qml/guiProxy.h b/navit/navit/gui/qml/guiProxy.h index c5c3634..f374fcc 100644 --- a/navit/navit/gui/qml/guiProxy.h +++ b/navit/navit/gui/qml/guiProxy.h @@ -5,7 +5,6 @@ class NGQProxyGui : public NGQProxy { Q_OBJECT; Q_PROPERTY(QString iconPath READ iconPath CONSTANT); - Q_PROPERTY(QString returnSource READ returnSource WRITE setReturnSource); Q_PROPERTY(QString commandFunction READ commandFunction CONSTANT); @@ -16,6 +15,9 @@ class NGQProxyGui : public NGQProxy { Q_PROPERTY(int width READ width WRITE setWidth NOTIFY widthSignal STORED false); Q_PROPERTY(int height READ height WRITE setHeight NOTIFY heightSignal STORED false); +private: + QStringList returnPath; + public: NGQProxyGui(struct gui_priv* this_,QObject *parent) : NGQProxy(this_, parent) { this->source=QString(""); @@ -43,43 +45,32 @@ public: this->object->guiWidget->rootContext()->setContextProperty("point",this->object->currentPoint); } void processCommand(QString function) { +#if 0 + QDeclarativeExpression commandJS(this->object->guiWidget->rootContext(),this->object->guiWidget->rootObject(),QString()); + commandJS.setSourceLocation("command.js",0); this->function=function; - this->setPage("command.qml",true); + commandJS.evaluate(); +#endif } signals: void widthSignal(int); void heightSignal(int); public slots: - void setPage(QString page,bool hidden=false) { - this->source+="/"+page; - - if (this->object->guiWidget) { - if (this->object->prevGuiWidget) { - this->object->switcherWidget->removeWidget(this->object->prevGuiWidget); - delete this->object->prevGuiWidget; + void pushPage(QString page) { + returnPath.push_front(page); + } + QString popPage() { + if (!returnPath.empty()) { + if (returnPath.length()>1) { + returnPath.pop_front(); } - this->object->prevGuiWidget=this->object->guiWidget; - } - this->object->guiWidget = new QDeclarativeView(NULL); - this->object->guiWidget->setResizeMode(QDeclarativeView::SizeRootObjectToView); - - this->object->guiWidget->rootContext()->setContextProperty("gui",this->object->guiProxy); - this->object->guiWidget->rootContext()->setContextProperty("navit",this->object->navitProxy); - this->object->guiWidget->rootContext()->setContextProperty("vehicle",this->object->vehicleProxy); - this->object->guiWidget->rootContext()->setContextProperty("search",this->object->searchProxy); - this->object->guiWidget->rootContext()->setContextProperty("bookmarks",this->object->bookmarksProxy); - this->object->guiWidget->rootContext()->setContextProperty("point",this->object->currentPoint); - - this->object->guiWidget->setSource(QUrl::fromLocalFile(QString(this->object->source)+"/"+this->object->skin+"/"+page)); - - if (!hidden) { - //we render commands page hidden, so the screen doesn't flicks. - this->object->switcherWidget->addWidget(this->object->guiWidget); - this->object->switcherWidget->setCurrentWidget(this->object->guiWidget); - this->object->guiWidget->setFocus(Qt::ActiveWindowFocusReason); + return returnPath.first(); } + return QString(); + } + int lengthPage() { + return returnPath.length(); } - void backToMap() { if (this->object->graphicsWidget) { this->object->graphicsWidget->setFocus(Qt::ActiveWindowFocusReason); @@ -87,27 +78,10 @@ public slots: this->object->graphicsWidget->show(); } } - void backToPrevPage() { - QStringList returnList=this->source.split(QString("/"), QString::SkipEmptyParts); - QString returnPage; - if (returnList.size()>1) { - returnList.takeLast();//Remove current element - returnPage=returnList.takeLast(); //Set previous element as return page and remove it from the list - } - if (returnList.size()>0) { - this->source=returnList.join(QString("/")); - if (!this->source.startsWith("/")) { - this->source.prepend(QString("/")); - } - } else { - this->source.clear(); - } - this->setPage(returnPage); - } void switchToMenu(struct point* p) { if (!this->object->lazy) { - this->setReturnSource(QString("")); - this->setPage("main.qml"); + this->returnPath.clear(); + this->object->guiWidget->setSource(QUrl::fromLocalFile(QString(this->object->source)+"/"+this->object->skin+"/main.qml")); } this->setNewPoint(p,MapPoint); this->object->guiWidget->setFocus(Qt::ActiveWindowFocusReason); @@ -118,12 +92,6 @@ public slots: QString iconPath() { return QString(this->object->icon_src); } - QString returnSource() { - return this->source; - } - void setReturnSource(QString returnSource) { - this->source=returnSource; - } int width() { return this->object->w; } diff --git a/navit/navit/gui/qml/gui_qml.cpp b/navit/navit/gui/qml/gui_qml.cpp index 1edaaa2..6792a57 100644 --- a/navit/navit/gui/qml/gui_qml.cpp +++ b/navit/navit/gui/qml/gui_qml.cpp @@ -66,13 +66,8 @@ struct gui_priv { struct graphics *gra; QWidget *mainWindow; QWidget *graphicsWidget; -#if QT_VERSION < 0x040700 - QmlView *guiWidget; - QmlView *prevGuiWidget; -#else QDeclarativeView *guiWidget; QDeclarativeView *prevGuiWidget; -#endif QStackedLayout *switcherWidget; struct callback *button_cb; struct callback *motion_cb; @@ -309,10 +304,21 @@ static int gui_qml_set_graphics(struct gui_priv *this_, struct graphics *gra) if (this_->graphicsWidget == NULL ) { this_->graphicsWidget = new QLabel(QString("Sorry, current graphics type is incompatible with this gui.")); } - this_->switcherWidget->addWidget(this_->graphicsWidget); + this_->switcherWidget->addWidget(this_->graphicsWidget); //Instantiate qml components - this_->guiProxy->setPage(QString("main.qml")); + this_->guiWidget = new QDeclarativeView(NULL); + this_->guiWidget->setResizeMode(QDeclarativeView::SizeRootObjectToView); + + this_->guiWidget->rootContext()->setContextProperty("gui",this_->guiProxy); + this_->guiWidget->rootContext()->setContextProperty("navit",this_->navitProxy); + this_->guiWidget->rootContext()->setContextProperty("vehicle",this_->vehicleProxy); + this_->guiWidget->rootContext()->setContextProperty("search",this_->searchProxy); + this_->guiWidget->rootContext()->setContextProperty("bookmarks",this_->bookmarksProxy); + this_->guiWidget->rootContext()->setContextProperty("point",this_->currentPoint); + + this_->guiWidget->setSource(QUrl::fromLocalFile(QString(this_->source)+"/"+this_->skin+"/main.qml")); + this_->switcherWidget->addWidget(this_->guiWidget); //Switch to graphics navit_draw(this_->nav); diff --git a/navit/navit/gui/qml/skins/navit/Cellar.qml b/navit/navit/gui/qml/skins/navit/Cellar.qml index 72b8bb1..dd54bc0 100644 --- a/navit/navit/gui/qml/skins/navit/Cellar.qml +++ b/navit/navit/gui/qml/skins/navit/Cellar.qml @@ -1,17 +1,20 @@ import Qt 4.7 +import "pagenavigation.js" as Navit Rectangle { - function onStartup() { - if ( gui.returnSource.split('/').length > 2 ) { + function onStartup(currentPage) { + btnBack.opacity=0; + btnQuit.opacity=0; + console.log(gui.lengthPage()); + if ( gui.lengthPage() > 1 ) { btnBack.opacity=1; } - if ( gui.returnSource == "/main.qml" ) { - btnQuit.opacity=1; + if ( gui.lengthPage() == 1 && currentPage == "PageMain.qml" ) { + btnQuit.opacity=1; } } - Component.onCompleted: onStartup(); ButtonIcon { id: btnMap; icon: "gui_map.svg"; text:"Map"; onClicked: gui.backToMap(); @@ -20,7 +23,7 @@ Rectangle { } ButtonIcon { - id: btnBack; icon: "gui_arrow_left.svg"; text: "Back"; onClicked: gui.backToPrevPage(); + id: btnBack; icon: "gui_arrow_left.svg"; text: "Back"; onClicked: Navit.back(); anchors.right: parent.right; anchors.leftMargin: 3 anchors.bottom: parent.bottom; anchors.bottomMargin: 3 opacity: 0; diff --git a/navit/navit/gui/qml/skins/navit/Makefile.am b/navit/navit/gui/qml/skins/navit/Makefile.am index d91e003..0842a33 100644 --- a/navit/navit/gui/qml/skins/navit/Makefile.am +++ b/navit/navit/gui/qml/skins/navit/Makefile.am @@ -4,5 +4,6 @@ SKIN = navit qmldir=$(skinsdir)/$(SKIN) -qml_DATA = ButtonIcon.qml ToggleSwitch.qml ToggleButton.qml ListSelector.qml Slider.qml CommonHighlight.qml Cellar.qml main.qml command.qml PageNavigate.qml PageAbout.qml PageBookmarksAdd.qml PageBookmarks.qml PageRoute.qml PageSearch.qml PageSearchSelector.qml PageSettingsDisplay.qml PageSettingsLocale.qml PageSettings.qml PageSettingsRules.qml PageSettingsTools.qml PageSettingsVehicle.qml PagePoi.qml PagePointInfo.qml +qml_DATA = ButtonIcon.qml ToggleSwitch.qml ToggleButton.qml ListSelector.qml Slider.qml CommonHighlight.qml Cellar.qml main.qml PageMain.qml PageNavigate.qml PageAbout.qml PageBookmarksAdd.qml PageBookmarks.qml PageRoute.qml PageSearch.qml PageSearchSelector.qml PageSettingsDisplay.qml PageSettingsLocale.qml PageSettings.qml PageSettingsRules.qml PageSettingsTools.qml PageSettingsVehicle.qml PagePoi.qml PagePointInfo.qml qml_DATA += background.svg knob.svg +qml_DATA += command.js pagenavigation.js diff --git a/navit/navit/gui/qml/skins/navit/PageAbout.qml b/navit/navit/gui/qml/skins/navit/PageAbout.qml index 1a46f59..a96baab 100644 --- a/navit/navit/gui/qml/skins/navit/PageAbout.qml +++ b/navit/navit/gui/qml/skins/navit/PageAbout.qml @@ -1,4 +1,5 @@ import Qt 4.7 +import "pagenavigation.js" as Navit Rectangle { id: page diff --git a/navit/navit/gui/qml/skins/navit/PageBookmarks.qml b/navit/navit/gui/qml/skins/navit/PageBookmarks.qml index ea94773..15a5982 100644 --- a/navit/navit/gui/qml/skins/navit/PageBookmarks.qml +++ b/navit/navit/gui/qml/skins/navit/PageBookmarks.qml @@ -1,4 +1,5 @@ import Qt 4.7 +import "pagenavigation.js" as Navit Rectangle { id: page @@ -23,7 +24,7 @@ Rectangle { bookmarkReload(); } else { bookmarks.setPoint(itemName); - gui.setPage("PageNavigate.qml"); + pageLoader.source="PageNavigate.qml"; } } diff --git a/navit/navit/gui/qml/skins/navit/PageBookmarksAdd.qml b/navit/navit/gui/qml/skins/navit/PageBookmarksAdd.qml index dac15a1..39694d2 100644 --- a/navit/navit/gui/qml/skins/navit/PageBookmarksAdd.qml +++ b/navit/navit/gui/qml/skins/navit/PageBookmarksAdd.qml @@ -1,4 +1,5 @@ import Qt 4.7 +import "pagenavigation.js" as Navit Rectangle { id: page @@ -10,7 +11,7 @@ Rectangle { Timer { id: backTimer interval: 2000; - onTriggered: gui.backToPrevPage(); + onTriggered: Navit.back(); } function add(description) { diff --git a/navit/navit/gui/qml/skins/navit/PageMain.qml b/navit/navit/gui/qml/skins/navit/PageMain.qml new file mode 100644 index 0000000..460ed4a --- /dev/null +++ b/navit/navit/gui/qml/skins/navit/PageMain.qml @@ -0,0 +1,29 @@ +import Qt 4.7 +import "pagenavigation.js" as Navit + +Rectangle { + id: page + + width: main.width; height: main.height + color: "Black" + + Grid { + columns: 2; rows: 2 + anchors.horizontalCenter: parent.horizontalCenter; + anchors.top: page.top;anchors.topMargin:page.height/10 + spacing: parent.height/6 + + ButtonIcon { + id: btnDestination; text: "Drive to\npoint on map"; icon: "gui_active.svg"; onClicked: { navit.setDestination(); gui.backToMap() } + } + ButtonIcon { + id: btnNavigate; text: "Navigate\nto . . ."; icon: "cursor.svg"; onClicked: Navit.load("PageNavigate.qml"); + } + ButtonIcon { + id: btnRoute; text: "Route\ninformation"; icon: "nav_destination_wh.svg"; onClicked: Navit.load("PageRoute.qml"); + } + ButtonIcon { + id: btnSettings; text: "Settings"; icon: "gui_settings.svg"; onClicked: Navit.load("PageSettings.qml"); + } + } +} diff --git a/navit/navit/gui/qml/skins/navit/PageNavigate.qml b/navit/navit/gui/qml/skins/navit/PageNavigate.qml index e827b1b..28d6b86 100644 --- a/navit/navit/gui/qml/skins/navit/PageNavigate.qml +++ b/navit/navit/gui/qml/skins/navit/PageNavigate.qml @@ -1,4 +1,5 @@ import Qt 4.7 +import "pagenavigation.js" as Navit Rectangle { id: page @@ -59,7 +60,7 @@ Rectangle { anchors.left:btnPosition.right;anchors.leftMargin: gui.height/6 } ButtonIcon { - id: btnAddBookmark; text: "Add as\na bookmark"; icon: "gui_active.svg"; onClicked: gui.setPage("PageBookmarksAdd.qml") + id: btnAddBookmark; text: "Add as\na bookmark"; icon: "gui_active.svg"; onClicked: Navit.load("PageBookmarksAdd.qml"); opacity: 0 anchors.top: nameTxt.bottom;anchors.topMargin:gui.height/32 anchors.left:btnDestination.right;anchors.leftMargin: gui.height/6 @@ -70,16 +71,16 @@ Rectangle { anchors.top: btnDestination.bottom;anchors.topMargin:gui.height/32 spacing: gui.height/6 ButtonIcon { - id: btnBookmarks; text: "Bookmarks"; icon: "gui_bookmark.svg"; onClicked: {bookmarks.moveRoot(); gui.setPage("PageBookmarks.qml"); } + id: btnBookmarks; text: "Bookmarks"; icon: "gui_bookmark.svg"; onClicked: {bookmarks.moveRoot(); Navit.load("PageBookmarks.qml"); } } ButtonIcon { - id: btnPOI; text: "Nearest\nPOIs"; icon: "attraction.svg"; onClicked: gui.setPage("PagePoi.qml"); + id: btnPOI; text: "Nearest\nPOIs"; icon: "attraction.svg"; onClicked: Navit.load("PagePoi.qml"); } ButtonIcon { - id: btnSearch; text: "Address\nSearch"; icon: "gui_town.svg"; onClicked: gui.setPage("PageSearch.qml") + id: btnSearch; text: "Address\nSearch"; icon: "gui_town.svg"; onClicked: Navit.load("PageSearch.qml"); } ButtonIcon { - id: btnInfo; text: "Point\ninformation"; icon: "gui_menu.svg"; onClicked: gui.setPage("PagePointInfo.qml") + id: btnInfo; text: "Point\ninformation"; icon: "gui_menu.svg"; onClicked: Navit.load("PagePointInfo.qml"); } } diff --git a/navit/navit/gui/qml/skins/navit/PagePoi.qml b/navit/navit/gui/qml/skins/navit/PagePoi.qml index 90e3d3c..4ab9f5c 100644 --- a/navit/navit/gui/qml/skins/navit/PagePoi.qml +++ b/navit/navit/gui/qml/skins/navit/PagePoi.qml @@ -1,4 +1,5 @@ import Qt 4.7 +import "pagenavigation.js" as Navit Rectangle { id: page @@ -125,7 +126,7 @@ Rectangle { MouseArea { id:delegateMouse anchors.fill: parent - onClicked: { point.setNewPoint(itemValue); gui.returnSource="/main.qml"; gui.setPage("PageNavigate.qml"); } + onClicked: { point.setNewPoint(itemValue); gui.returnSource="/main.qml"; Navit.load("PageNavigate.qml"); } } } } diff --git a/navit/navit/gui/qml/skins/navit/PagePointInfo.qml b/navit/navit/gui/qml/skins/navit/PagePointInfo.qml index 92e4ff6..1014c63 100644 --- a/navit/navit/gui/qml/skins/navit/PagePointInfo.qml +++ b/navit/navit/gui/qml/skins/navit/PagePointInfo.qml @@ -1,5 +1,6 @@ import Qt 4.7 import org.webkit 1.0 +import "pagenavigation.js" as Navit Rectangle { id: page diff --git a/navit/navit/gui/qml/skins/navit/PageRoute.qml b/navit/navit/gui/qml/skins/navit/PageRoute.qml index 45d29f6..cb11d25 100644 --- a/navit/navit/gui/qml/skins/navit/PageRoute.qml +++ b/navit/navit/gui/qml/skins/navit/PageRoute.qml @@ -1,4 +1,5 @@ import Qt 4.7 +import "pagenavigation.js" as Navit Rectangle { id: page @@ -81,11 +82,11 @@ Rectangle { id: btnView; text: "View position\non map"; icon: "gui_maps.svg"; onClicked: { navit.getPosition();navit.setCenter();gui.backToMap(); } } ButtonIcon { - id: btnPoi; text: "POIs near\nPosition"; icon: "attraction.svg"; onClicked: gui.setPage("PagePoi.qml"); + id: btnPoi; text: "POIs near\nPosition"; icon: "attraction.svg"; onClicked: Navit.load("PagePoi.qml"); opacity: 0; } ButtonIcon { - id: btnStop; text: "Stop"; icon: "gui_stop.svg"; onClicked: { navit.stopNavigation(); gui.backToPrevPage(); } + id: btnStop; text: "Stop"; icon: "gui_stop.svg"; onClicked: { navit.stopNavigation(); Navit.back(); } opacity: 0; } } diff --git a/navit/navit/gui/qml/skins/navit/PageSearch.qml b/navit/navit/gui/qml/skins/navit/PageSearch.qml index 612d64a..3d94199 100644 --- a/navit/navit/gui/qml/skins/navit/PageSearch.qml +++ b/navit/navit/gui/qml/skins/navit/PageSearch.qml @@ -1,4 +1,5 @@ import Qt 4.7 +import "pagenavigation.js" as Navit Rectangle { id: page @@ -39,7 +40,7 @@ Rectangle { color: "White"; font.pointSize: gui.height/32; horizontalAlignment: Qt.AlignHCenter } ButtonIcon { - id: btnCountry; text: search.countryName; icon: "country_"+search.countryISO2+".svgz"; onClicked: { search.searchContext="country"; gui.setPage("PageSearchSelector.qml"); } + id: btnCountry; text: search.countryName; icon: "country_"+search.countryISO2+".svgz"; onClicked: { search.searchContext="country"; Navit.load("PageSearchSelector.qml"); } } } Grid { @@ -51,7 +52,7 @@ Rectangle { color: "White"; font.pointSize: gui.height/32; horizontalAlignment: Qt.AlignHCenter } ButtonIcon { - id: btnCity; text: search.townName; icon: "gui_bookmark.svg"; onClicked: { search.searchContext="town"; gui.setPage("PageSearchSelector.qml"); } + id: btnCity; text: search.townName; icon: "gui_bookmark.svg"; onClicked: { search.searchContext="town"; Navit.load("PageSearchSelector.qml"); } } } } @@ -70,7 +71,7 @@ Rectangle { color: "White"; font.pointSize: gui.height/32; horizontalAlignment: Qt.AlignHCenter } ButtonIcon { - id: btnStreet; text: search.streetName; icon: "gui_town.svg"; onClicked: { search.searchContext="street"; gui.setPage("PageSearchSelector.qml"); } + id: btnStreet; text: search.streetName; icon: "gui_town.svg"; onClicked: { search.searchContext="street"; Navit.load("PageSearchSelector.qml"); } } } Grid { diff --git a/navit/navit/gui/qml/skins/navit/PageSearchSelector.qml b/navit/navit/gui/qml/skins/navit/PageSearchSelector.qml index a882ba9..ec1ca73 100644 --- a/navit/navit/gui/qml/skins/navit/PageSearchSelector.qml +++ b/navit/navit/gui/qml/skins/navit/PageSearchSelector.qml @@ -1,4 +1,5 @@ import Qt 4.7 +import "pagenavigation.js" as Navit Rectangle { id: page @@ -10,17 +11,17 @@ Rectangle { function setSearchResult(listValue) { if (search.searchContext=="country") { search.countryName=listValue; - gui.backToPrevPage(); + Navit.back; } if (search.searchContext=="town") { search.townName=listValue; - gui.backToPrevPage(); + Navit.back(); } if (search.searchContext=="street") { search.streetName=listValue; search.setPointToResult(); - gui.returnSource="/main.qml"; - gui.setPage("PageNavigate.qml"); + Navit.returnSource="main.qml"; + Navit.load("PageNavigate.qml"); } } diff --git a/navit/navit/gui/qml/skins/navit/PageSettings.qml b/navit/navit/gui/qml/skins/navit/PageSettings.qml index 11e04b0..f7efcac 100644 --- a/navit/navit/gui/qml/skins/navit/PageSettings.qml +++ b/navit/navit/gui/qml/skins/navit/PageSettings.qml @@ -1,53 +1,54 @@ import Qt 4.7 - -Rectangle { - id: page - - width: gui.width; height: gui.height - border.width: 1 - color: "Black" - opacity: 0 - - function pageOpen() { - page.opacity = 1; - } - - Component.onCompleted: pageOpen(); - - Behavior on opacity { - NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true } - } - - Grid { - columns: 3;rows: 1 - anchors.horizontalCenter: parent.horizontalCenter; - anchors.bottom: parent.verticalCenter; anchors.bottomMargin: gui.height/16; - spacing: gui.width/12 - ButtonIcon { - id: btnDisplay; text: "Display"; icon: "gui_display.svg"; onClicked: gui.setPage("PageSettingsDisplay.qml") - } - ButtonIcon { +import "pagenavigation.js" as Navit + +Rectangle { + id: page + + width: gui.width; height: gui.height + border.width: 1 + color: "Black" + opacity: 0 + + function pageOpen() { + page.opacity = 1; + } + + Component.onCompleted: pageOpen(); + + Behavior on opacity { + NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true } + } + + Grid { + columns: 3;rows: 1 + anchors.horizontalCenter: parent.horizontalCenter; + anchors.bottom: parent.verticalCenter; anchors.bottomMargin: gui.height/16; + spacing: gui.width/12 + ButtonIcon { + id: btnDisplay; text: "Display"; icon: "gui_display.svg"; onClicked: Navit.load("PageSettingsDisplay.qml"); + } + ButtonIcon { id: btnMap; text: "Map"; icon: "gui_maps.svg"; onClicked: console.log("Implement me!"); - } - ButtonIcon { - id: btnVehicle; text: "Vehicle"; icon: "gui_vehicle.svg"; onClicked: gui.setPage("PageSettingsVehicle.qml") - } - } - Grid { - columns: 3;rows: 1 - anchors.horizontalCenter: parent.horizontalCenter; - anchors.top: parent.verticalCenter; anchors.topMargin: gui.height/16; - spacing: gui.width/12 - ButtonIcon { - id: btnRules; text: "Rules"; icon: "gui_rules.svg"; onClicked: gui.setPage("PageSettingsRules.qml") - } - ButtonIcon { - id: btnTools; text: "Tools"; icon: "gui_tools.svg"; onClicked: gui.setPage("PageSettingsTools.qml") - } - ButtonIcon { - id: btnAbout; text: "About"; icon: "gui_about.svg"; onClicked: gui.setPage("PageAbout.qml") - } - } - - Cellar {anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width } -} + } + ButtonIcon { + id: btnVehicle; text: "Vehicle"; icon: "gui_vehicle.svg"; onClicked: Navit.load("PageSettingsVehicle.qml"); + } + } + Grid { + columns: 3;rows: 1 + anchors.horizontalCenter: parent.horizontalCenter; + anchors.top: parent.verticalCenter; anchors.topMargin: gui.height/16; + spacing: gui.width/12 + ButtonIcon { + id: btnRules; text: "Rules"; icon: "gui_rules.svg"; onClicked: Navit.load("PageSettingsRules.qml"); + } + ButtonIcon { + id: btnTools; text: "Tools"; icon: "gui_tools.svg"; onClicked: Navit.load("PageSettingsTools.qml"); + } + ButtonIcon { + id: btnAbout; text: "About"; icon: "gui_about.svg"; onClicked: Navit.load("PageAbout.qml"); + } + } + + Cellar {anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width } +} diff --git a/navit/navit/gui/qml/skins/navit/PageSettingsDisplay.qml b/navit/navit/gui/qml/skins/navit/PageSettingsDisplay.qml index 4f5d927..61db6a3 100644 --- a/navit/navit/gui/qml/skins/navit/PageSettingsDisplay.qml +++ b/navit/navit/gui/qml/skins/navit/PageSettingsDisplay.qml @@ -1,4 +1,5 @@ import Qt 4.7 +import "pagenavigation.js" as Navit Rectangle { id: page diff --git a/navit/navit/gui/qml/skins/navit/PageSettingsLocale.qml b/navit/navit/gui/qml/skins/navit/PageSettingsLocale.qml index 5f7adbc..868ca87 100644 --- a/navit/navit/gui/qml/skins/navit/PageSettingsLocale.qml +++ b/navit/navit/gui/qml/skins/navit/PageSettingsLocale.qml @@ -1,4 +1,5 @@ import Qt 4.7 +import "pagenavigation.js" as Navit Rectangle { id: page diff --git a/navit/navit/gui/qml/skins/navit/PageSettingsRules.qml b/navit/navit/gui/qml/skins/navit/PageSettingsRules.qml index 2dd9fbb..e5238f5 100644 --- a/navit/navit/gui/qml/skins/navit/PageSettingsRules.qml +++ b/navit/navit/gui/qml/skins/navit/PageSettingsRules.qml @@ -1,4 +1,5 @@ import Qt 4.7 +import "pagenavigation.js" as Navit Rectangle { id: page diff --git a/navit/navit/gui/qml/skins/navit/PageSettingsTools.qml b/navit/navit/gui/qml/skins/navit/PageSettingsTools.qml index 0000dd4..a4af122 100644 --- a/navit/navit/gui/qml/skins/navit/PageSettingsTools.qml +++ b/navit/navit/gui/qml/skins/navit/PageSettingsTools.qml @@ -1,4 +1,5 @@ import Qt 4.7 +import "pagenavigation.js" as Navit Rectangle { id: page @@ -23,7 +24,7 @@ Rectangle { anchors.horizontalCenter: parent.horizontalCenter; anchors.verticalCenter: parent.verticalCenter; ButtonIcon { - id: btnDisplay; text: "Locale"; icon: "gui_actions.svg"; onClicked: gui.setPage("PageSettingsLocale.qml") + id: btnDisplay; text: "Locale"; icon: "gui_actions.svg"; onClicked: Navit.load("PageSettingsLocale.qml"); } } diff --git a/navit/navit/gui/qml/skins/navit/PageSettingsVehicle.qml b/navit/navit/gui/qml/skins/navit/PageSettingsVehicle.qml index 9454896..637a511 100644 --- a/navit/navit/gui/qml/skins/navit/PageSettingsVehicle.qml +++ b/navit/navit/gui/qml/skins/navit/PageSettingsVehicle.qml @@ -1,4 +1,5 @@ import Qt 4.7 +import "pagenavigation.js" as Navit Rectangle { id: page @@ -43,7 +44,7 @@ CommonHighlight { id: listHighlight} anchors.left: parent.left; width: page.width/2;height: page.height/2 } ButtonIcon { - id: btnVehicle; text: "Vehicle options"; icon: "gui_vehicle.svg"; onClicked: gui.setPage("PageSettingsVehicleOptions.qml") + id: btnVehicle; text: "Vehicle options"; icon: "gui_vehicle.svg"; onClicked: Navit.load("PageSettingsVehicleOptions.qml"); anchors.verticalCenter: vehicleList.verticalCenter; anchors.leftMargin: gui.width/32 anchors.left: vehicleList.right; } diff --git a/navit/navit/gui/qml/skins/navit/command.qml b/navit/navit/gui/qml/skins/navit/command.js similarity index 92% rename from navit/navit/gui/qml/skins/navit/command.qml rename to navit/navit/gui/qml/skins/navit/command.js index b79ae38..071653a 100644 --- a/navit/navit/gui/qml/skins/navit/command.qml +++ b/navit/navit/gui/qml/skins/navit/command.js @@ -6,7 +6,7 @@ Rectangle { function pageOpen(command) { if ( command=="menu") { gui.returnSource=""; - gui.setPage("main.qml"); + Loader {source: "main.qml"}; } if (command=="quit") { navit.quit(); diff --git a/navit/navit/gui/qml/skins/navit/main.qml b/navit/navit/gui/qml/skins/navit/main.qml index cbb262e..20b93d1 100644 --- a/navit/navit/gui/qml/skins/navit/main.qml +++ b/navit/navit/gui/qml/skins/navit/main.qml @@ -1,42 +1,31 @@ import Qt 4.7 - -Rectangle { - id: page - - width: gui.width; height: gui.height - color: "Black" - opacity: 0 - - function pageOpen() { - page.opacity = 1; - } - - Component.onCompleted: pageOpen(); - - Behavior on opacity { - NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true } - } - - - Grid { - columns: 2; rows: 2 - anchors.horizontalCenter: parent.horizontalCenter; - anchors.top: parent.top;anchors.topMargin:gui.height/10 - spacing: gui.height/6 - - ButtonIcon { - id: btnDestination; text: "Drive to\npoint on map"; icon: "gui_active.svg"; onClicked: { navit.setDestination(); gui.backToMap() } - } - ButtonIcon { - id: btnNavigate; text: "Navigate\nto . . ."; icon: "cursor.svg"; onClicked: gui.setPage("PageNavigate.qml") - } - ButtonIcon { - id: btnRoute; text: "Route\ninformation"; icon: "nav_destination_wh.svg"; onClicked: gui.setPage("PageRoute.qml") - } - ButtonIcon { - id: btnSettings; text: "Settings"; icon: "gui_settings.svg"; onClicked: gui.setPage("PageSettings.qml") - } - } - - Cellar {anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width } -} +import "pagenavigation.js" as Navit + +Rectangle { + id: main + property variant returnPath:[ "test" ] + + width: gui.width; height: gui.height + color: "Black" + + function pageOpen() { + Navit.load("PageMain.qml"); + } + + Component.onCompleted: pageOpen(); + + Behavior on opacity { + NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true } + } + + + Loader { + id: pageLoader; + width: gui.width; + height: gui.height-cellar.height; + anchors.horizontalCenter: parent.horizontalCenter; + anchors.verticalCenter: parent.verticalCenter; + } + + Cellar {id: cellar;anchors.bottom: main.bottom; anchors.horizontalCenter: main.horizontalCenter; width: main.width } +} diff --git a/navit/navit/gui/qml/skins/navit/pagenavigation.js b/navit/navit/gui/qml/skins/navit/pagenavigation.js new file mode 100644 index 0000000..f5b8dc4 --- /dev/null +++ b/navit/navit/gui/qml/skins/navit/pagenavigation.js @@ -0,0 +1,15 @@ +var returnPath=new Array(); + +function load(page) { + gui.pushPage(page); + pageLoader.source=page; + cellar.onStartup(page); +} + +function back() { + var page=gui.popPage(); + console.log(page); + pageLoader.source=page; + cellar.onStartup(page); +} + -- 2.7.4