[gnome-maps/wip/routing2: 13/22] Add Route query model
- From: Mattias Bengtsson <mattiasb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-maps/wip/routing2: 13/22] Add Route query model
- Date: Tue, 20 May 2014 20:52:35 +0000 (UTC)
commit cb49fb11517515a2728a7bfa5f2392a1c4bd422c
Author: Mattias Bengtsson <mattias jc bengtsson gmail com>
Date: Sun May 4 01:49:50 2014 +0200
Add Route query model
The Route query model encapsulates all data that makes up a route
request query in Maps.
https://bugzilla.gnome.org/show_bug.cgi?id=728695
src/gnome-maps.js.gresource.xml | 1 +
src/routeQuery.js | 104 +++++++++++++++++++++++++++++++++++++++
2 files changed, 105 insertions(+), 0 deletions(-)
---
diff --git a/src/gnome-maps.js.gresource.xml b/src/gnome-maps.js.gresource.xml
index a46aa9e..3a4b706 100644
--- a/src/gnome-maps.js.gresource.xml
+++ b/src/gnome-maps.js.gresource.xml
@@ -16,6 +16,7 @@
<file>path.js</file>
<file>placeStore.js</file>
<file>route.js</file>
+ <file>routeQuery.js</file>
<file>searchPopup.js</file>
<file>settings.js</file>
<file>sidebar.js</file>
diff --git a/src/routeQuery.js b/src/routeQuery.js
new file mode 100644
index 0000000..fd02f8b
--- /dev/null
+++ b/src/routeQuery.js
@@ -0,0 +1,104 @@
+/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */
+/* vim: set et ts=4 sw=4: */
+/*
+ * Copyright (c) 2013 Mattias Bengtsson.
+ *
+ * GNOME Maps is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * GNOME Maps is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with GNOME Maps; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Author: Mattias Bengtsson <mattias jc bengtsson gmail com>
+ */
+
+const Geocode = imports.gi.GeocodeGlib;
+const GObject = imports.gi.GObject;
+
+const Lang = imports.lang;
+
+const Utils = imports.utils;
+
+const Transportation = {
+ CAR: 0,
+ BIKE: 1,
+ PEDESTRIAN: 2,
+
+ toString: function (transportation) {
+ switch(transportation) {
+ case Transportation.CAR: return 'car';
+ case Transportation.BIKE: return 'bike';
+ case Transportation.PEDESTRIAN: return 'foot';
+ default: return null;
+ }
+ }
+};
+
+const RouteQuery = new Lang.Class({
+ Name: 'RouteQuery',
+ Extends: GObject.Object,
+ Properties: {
+ 'from': GObject.ParamSpec.object('from',
+ '',
+ '',
+ GObject.ParamFlags.READABLE |
+ GObject.ParamFlags.WRITABLE,
+ Geocode.Place),
+ 'to': GObject.ParamSpec.object('to',
+ '',
+ '',
+ GObject.ParamFlags.READABLE |
+ GObject.ParamFlags.WRITABLE,
+ Geocode.Place),
+ 'transportation': GObject.ParamSpec.int('transportation',
+ '',
+ '',
+ GObject.ParamFlags.READABLE |
+ GObject.ParamFlags.WRITABLE,
+ Transportation.CAR,
+ Transportation.PEDESTRIAN,
+ Transportation.CAR)
+ },
+
+ _init: function(args) {
+ this.parent(args);
+ this._changeSignalId = this.connect('notify',
+ this.emit.bind(this, 'change'));
+ this.reset();
+ },
+
+ reset: function() {
+ this.setMany({ from: null,
+ to: null,
+ transportation: Transportation.CAR });
+ },
+
+ setMany: function(obj) {
+ this.disconnect(this._changeSignalId);
+
+ // Only set properties actually defined on this object
+ ["from", "to", "transportation"].forEach((function(prop) {
+ if (obj.hasOwnProperty(prop))
+ this[prop] = obj[prop];
+ }).bind(this));
+
+ this._changeSignalId = this.connect('notify',
+ this.emit.bind(this, 'change'));
+ this.emit('change');
+ },
+
+ toString: function() {
+ return "From: " + this.from +
+ "\nTo: " + this.to +
+ "\nTransportation" + this.transportation;
+ }
+});
+Utils.addSignalMethods(RouteQuery.prototype);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]