summaryrefslogtreecommitdiff
path: root/gui/qml/skins/navit/PagePoi.qml
blob: b66a952177c93b8b28142b50f7a960fa80247809 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
import Qt 4.6

Rectangle {
    id: page

    property string poiFilter: ""

    width: gui.width; height: gui.height
    color: "Black"
    opacity: 0

    function bookmarkClick(itemId,itemIcon,itemName,itemPath) {
	if ( itemIcon=="yes" ) {
	    bookmarks.currentPath=itemPath;
	    bookmarks.getAttrList("");
	} else {
	   bookmarks.setPoint(itemId);
	   gui.setPage("point.qml");
	}
    }

    function calculateFilter() {
        page.poiFilter='/points/point[type="point_begin" or ';
	if (bankBtn.state=="on") {
		page.poiFilter+='type="poi_bank" or ';
	}
	if (fuelBtn.state=="on") {
		page.poiFilter+='type="poi_fuel" or ';
		page.poiFilter+='type="poi_autoservice" or ';
		page.poiFilter+='type="poi_repair_service" or ';
	}
	if (hotelBtn.state=="on") {
		page.poiFilter+='type="poi_hotel" or ';
		page.poiFilter+='type="poi_camp_rv" or ';
		page.poiFilter+='type="poi_camping" or ';
		page.poiFilter+='type="poi_resort" or ';
		page.poiFilter+='type="poi_motel" or ';
		page.poiFilter+='type="poi_hostel" or ';
	}
	if (foodBtn.state=="on") {
		page.poiFilter+='type="poi_bar" or ';
		page.poiFilter+='type="poi_picnic" or ';
		page.poiFilter+='type="poi_burgerking" or ';
		page.poiFilter+='type="poi_fastfood" or ';
		page.poiFilter+='type="poi_restaurant" or ';
	}
	if (shopBtn.state=="on") {
		page.poiFilter+='type="poi_shop_grocery" or ';
		page.poiFilter+='type="poi_mall" or ';
	}
	if (serviceBtn.state=="on") {
		page.poiFilter+='type="poi_marina" or ';
		page.poiFilter+='type="poi_hospital" or ';
		page.poiFilter+='type="poi_public_utilities" or ';
		page.poiFilter+='type="poi_police" or ';
		page.poiFilter+='type="poi_information" or ';
		page.poiFilter+='type="poi_personal_service" or ';
		page.poiFilter+='type="poi_restroom" or ';
	}
	if (parkingBtn.state=="on") {
		page.poiFilter+='type="poi_car_parking" or ';
	}
	if (landBtn.state=="on") {
		page.poiFilter+='type="poi_land_feature" or ';
		page.poiFilter+='type="poi_rock" or ';
		page.poiFilter+='type="poi_dam" or ';
	}
	page.poiFilter+='type="point_end"]';
	listModel.query=page.poiFilter;
	listModel.reload();
    }

    function pageOpen() {
        page.opacity = 1;
    }
    
    Component.onCompleted: pageOpen();    
    
    opacity: Behavior {
        NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }
    }

    Text {
	id: labelTxt; text: "Points of interest"; color: "White"; font.pointSize: 14;
	anchors.horizontalCenter: page.horizontalCenter
	anchors.top: page.top
    }

  VisualItemModel {
      	id: selectorsModel

        ToggleButton {	id: bankBtn; text: "Bank"; icon: "bank.svg";stOn: "true"; onChanged: calculateFilter(); }
	ToggleButton {	id: fuelBtn; text: "Fuel"; icon: "fuel.svg";stOn: "true"; onChanged: calculateFilter(); }
	ToggleButton {	id: hotelBtn; text: "Hotel"; icon: "bar.svg";stOn: "true"; onChanged: calculateFilter(); }
	ToggleButton {	id: foodBtn; text: "Food"; icon: "fastfood.svg";stOn: "true"; onChanged: calculateFilter(); }
	ToggleButton {	id: shopBtn; text: "Shop"; icon: "shopping.svg";stOn: "true"; onChanged: calculateFilter(); }
	ToggleButton {	id: serviceBtn; text: "Service"; icon: "hospital.svg";stOn: "true"; onChanged: calculateFilter(); }
	ToggleButton {	id: parkingBtn; text: "Parking"; icon: "police.svg";stOn: "true";  onChanged: calculateFilter(); }
	ToggleButton {	id: landBtn; text: "Land features"; icon: "peak.svg";stOn: "true";  onChanged: calculateFilter(); }
  }

  ListView {
      	id: selectorsList; model: selectorsModel
        focus: true; clip: true; orientation: Qt.Horizontal
	anchors.horizontalCenter: page.horizontalCenter; anchors.top: labelTxt.bottom
	width: page.width; height: bankBtn.height*2
  }

	Slider {
	    id: distanceSlider; minValue: 1; maxValue: 250; value: gui.getAttr("radius"); text: "Distance"; onChanged: { gui.setAttr("radius",distanceSlider.value); listModel.xml=point.getAttrList("points"); listModel.reload(); }
	    anchors.top: selectorsList.bottom; anchors.horizontalCenter: page.horizontalCenter;
       }

	XmlListModel {
		id: listModel
		xml: point.getAttrList("points")
		query: "/points/point"
		XmlRole { name: "itemName"; query: "name/string()" }
		XmlRole { name: "itemType"; query: "type/string()" }
	}
    ListSelector { 
	id:layoutList; text: ""; itemId: point.getAttrList("points"); onChanged: console.log("Poi clicked");
	anchors.top: distanceSlider.bottom;
	anchors.left: parent.left; anchors.leftMargin: 3
	anchors.topMargin: gui.height/16; anchors.leftMargin: gui.width/32
	width: page.width; height: page.height*0.25
    }

    Cellar {id: cellar; anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }
}