aboutsummaryrefslogtreecommitdiff
path: root/src/net/cbaines/suma
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/cbaines/suma')
-rw-r--r--src/net/cbaines/suma/BuildingActivity.java1
-rw-r--r--src/net/cbaines/suma/BuildingNumOverlay.java18
-rw-r--r--src/net/cbaines/suma/Bus.java3
-rw-r--r--src/net/cbaines/suma/BusRoutesView.java19
-rw-r--r--src/net/cbaines/suma/BusSpecificStopView.java3
-rw-r--r--src/net/cbaines/suma/BusStopActivity.java6
-rw-r--r--src/net/cbaines/suma/BusStopOverlay.java29
-rw-r--r--src/net/cbaines/suma/MapActivity.java (renamed from src/net/cbaines/suma/SouthamptonUniversityMapActivity.java)289
-rw-r--r--src/net/cbaines/suma/ViewDialog.java295
9 files changed, 382 insertions, 281 deletions
diff --git a/src/net/cbaines/suma/BuildingActivity.java b/src/net/cbaines/suma/BuildingActivity.java
index 62fbb44..ca605c8 100644
--- a/src/net/cbaines/suma/BuildingActivity.java
+++ b/src/net/cbaines/suma/BuildingActivity.java
@@ -25,6 +25,7 @@ import java.util.HashSet;
import android.content.Context;
import android.os.Bundle;
+
import com.j256.ormlite.android.apptools.OrmLiteBaseActivity;
public class BuildingActivity extends OrmLiteBaseActivity<DatabaseHelper> {
diff --git a/src/net/cbaines/suma/BuildingNumOverlay.java b/src/net/cbaines/suma/BuildingNumOverlay.java
index baa92b5..47bee3c 100644
--- a/src/net/cbaines/suma/BuildingNumOverlay.java
+++ b/src/net/cbaines/suma/BuildingNumOverlay.java
@@ -61,13 +61,13 @@ public class BuildingNumOverlay extends Overlay {
private static final String TAG = "BuildingNumOverlay";
- private final SouthamptonUniversityMapActivity context;
+ private final MapActivity context;
private Dao<Building, String> buildingDao;
private float userScale = 1f;
- public BuildingNumOverlay(SouthamptonUniversityMapActivity context, List<Building> buildings) throws SQLException {
+ public BuildingNumOverlay(MapActivity context, List<Building> buildings) throws SQLException {
super(context);
this.context = context;
@@ -180,6 +180,13 @@ public class BuildingNumOverlay extends Overlay {
@Override
public boolean onSingleTapUp(final MotionEvent event, final MapView mapView) {
+
+ Log.v(TAG, "Pointer count for onSingleTapUp is " + event.getPointerCount() + " " + event.getAction());
+ if (event.getPointerCount() != 1) {
+ Log.v(TAG, "Pointer count for onSingleTapUp not 1, ignoring");
+ return false;
+ }
+
if (!this.isEnabled())
return false;
@@ -210,6 +217,13 @@ public class BuildingNumOverlay extends Overlay {
@Override
public boolean onLongPress(final MotionEvent event, final MapView mapView) {
+
+ Log.v(TAG, "Pointer count for onLongPress is " + event.getPointerCount() + " " + event.getAction());
+ if (event.getPointerCount() != 1) {
+ Log.v(TAG, "Pointer count for onLongPress not 1, ignoring");
+ return false;
+ }
+
if (!this.isEnabled())
return false;
diff --git a/src/net/cbaines/suma/Bus.java b/src/net/cbaines/suma/Bus.java
index ac2d223..b36dd89 100644
--- a/src/net/cbaines/suma/Bus.java
+++ b/src/net/cbaines/suma/Bus.java
@@ -19,9 +19,6 @@
package net.cbaines.suma;
-import android.os.Parcel;
-import android.os.Parcelable;
-
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
diff --git a/src/net/cbaines/suma/BusRoutesView.java b/src/net/cbaines/suma/BusRoutesView.java
index b7c1095..32226b0 100644
--- a/src/net/cbaines/suma/BusRoutesView.java
+++ b/src/net/cbaines/suma/BusRoutesView.java
@@ -1,3 +1,22 @@
+/*
+ * Southampton University Map App
+ * Copyright (C) 2011 Christopher Baines
+ *
+ * This program 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.
+ *
+ * This program 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 this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
package net.cbaines.suma;
import android.content.Context;
diff --git a/src/net/cbaines/suma/BusSpecificStopView.java b/src/net/cbaines/suma/BusSpecificStopView.java
index fc14fcb..77601ff 100644
--- a/src/net/cbaines/suma/BusSpecificStopView.java
+++ b/src/net/cbaines/suma/BusSpecificStopView.java
@@ -23,7 +23,6 @@ import java.sql.SQLException;
import java.text.DateFormat;
import android.app.Activity;
-import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.Gravity;
@@ -166,7 +165,7 @@ public class BusSpecificStopView extends LinearLayout implements OnClickListener
busDao.refresh(stop.bus);
if (stop.bus.id != null) {
- Intent i = new Intent(context, SouthamptonUniversityMapActivity.class);
+ Intent i = new Intent(context, MapActivity.class);
i.putExtra("poiPoint", stop.busStop.point.toDoubleString());
((Activity) context).startActivityForResult(i, 0);
} else {
diff --git a/src/net/cbaines/suma/BusStopActivity.java b/src/net/cbaines/suma/BusStopActivity.java
index 1c325ec..03dcbca 100644
--- a/src/net/cbaines/suma/BusStopActivity.java
+++ b/src/net/cbaines/suma/BusStopActivity.java
@@ -298,9 +298,9 @@ public class BusStopActivity extends OrmLiteBaseActivity<DatabaseHelper> impleme
try {
final SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(instance);
- newTimetable = DataManager.getTimetable(instance, busStopID, sharedPrefs.getBoolean(SouthamptonUniversityMapActivity.UNI_LINK_BUS_TIMES,
- SouthamptonUniversityMapActivity.UNI_LINK_BUS_TIMES_ENABLED_BY_DEFAULT), sharedPrefs.getBoolean(
- SouthamptonUniversityMapActivity.NON_UNI_LINK_BUS_TIMES, SouthamptonUniversityMapActivity.NON_UNI_LINK_BUS_TIMES_ENABLED_BY_DEFAULT));
+ newTimetable = DataManager.getTimetable(instance, busStopID, sharedPrefs.getBoolean(MapActivity.UNI_LINK_BUS_TIMES,
+ MapActivity.UNI_LINK_BUS_TIMES_ENABLED_BY_DEFAULT), sharedPrefs.getBoolean(
+ MapActivity.NON_UNI_LINK_BUS_TIMES, MapActivity.NON_UNI_LINK_BUS_TIMES_ENABLED_BY_DEFAULT));
} catch (SQLException e) {
errorMessage = "Error message regarding SQL?";
e.printStackTrace();
diff --git a/src/net/cbaines/suma/BusStopOverlay.java b/src/net/cbaines/suma/BusStopOverlay.java
index f912d19..58f5bb0 100644
--- a/src/net/cbaines/suma/BusStopOverlay.java
+++ b/src/net/cbaines/suma/BusStopOverlay.java
@@ -28,7 +28,6 @@ import org.osmdroid.views.MapView.Projection;
import org.osmdroid.views.overlay.Overlay;
import android.app.Activity;
-import android.content.Context;
import android.content.Intent;
import android.graphics.Canvas;
import android.graphics.Paint;
@@ -60,7 +59,7 @@ public class BusStopOverlay extends Overlay implements RouteColorConstants {
private static final String TAG = "BusStopOverlay";
- private final SouthamptonUniversityMapActivity context;
+ private final MapActivity context;
private Dao<BusStop, String> busStopDao;
@@ -68,7 +67,7 @@ public class BusStopOverlay extends Overlay implements RouteColorConstants {
private boolean[] routes = new boolean[5];
- public BusStopOverlay(SouthamptonUniversityMapActivity context, List<BusStop> busStops) throws SQLException {
+ public BusStopOverlay(MapActivity context, List<BusStop> busStops) throws SQLException {
super(context);
this.context = context;
@@ -191,9 +190,20 @@ public class BusStopOverlay extends Overlay implements RouteColorConstants {
}
}
+ public boolean onTouchEvent(final MotionEvent event, final MapView mapView) {
+ // Log.i(TAG, "Touch Event " + event.getPointerCount() + " " + event.getAction());
+ return false;
+ }
+
@Override
public boolean onSingleTapUp(final MotionEvent event, final MapView mapView) {
+ Log.v(TAG, "Pointer count for onSingleTapUp is " + event.getPointerCount() + " " + event.getAction());
+ if (event.getPointerCount() != 1) {
+ Log.v(TAG, "Pointer count for onSingleTapUp not 1, ignoring");
+ return false;
+ }
+
BusStop busStop = getSelectedItem(event, mapView);
if (busStop == null) {
@@ -216,6 +226,12 @@ public class BusStopOverlay extends Overlay implements RouteColorConstants {
public boolean onDoubleTap(final MotionEvent event, final MapView mapView) {
+ Log.v(TAG, "Pointer count for onDoubleTap is " + event.getPointerCount() + " " + event.getAction());
+ if (event.getPointerCount() != 1) {
+ Log.v(TAG, "Pointer count for onDoubleTap not 1, ignoring");
+ return false;
+ }
+
BusStop busStop = getSelectedItem(event, mapView);
if (busStop == null) {
@@ -237,6 +253,13 @@ public class BusStopOverlay extends Overlay implements RouteColorConstants {
@Override
public boolean onLongPress(final MotionEvent event, final MapView mapView) {
+
+ Log.v(TAG, "Pointer count for onLongPress is " + event.getPointerCount() + " " + event.getAction());
+ if (event.getPointerCount() != 1) {
+ Log.v(TAG, "Pointer count for onLongPress not 1, ignoring");
+ return false;
+ }
+
BusStop busStop = getSelectedItem(event, mapView);
if (busStop == null) {
diff --git a/src/net/cbaines/suma/SouthamptonUniversityMapActivity.java b/src/net/cbaines/suma/MapActivity.java
index 1412e3b..5db0a74 100644
--- a/src/net/cbaines/suma/SouthamptonUniversityMapActivity.java
+++ b/src/net/cbaines/suma/MapActivity.java
@@ -42,7 +42,6 @@ import org.osmdroid.views.util.constants.MapViewConstants;
import android.app.AlertDialog;
import android.app.Dialog;
-import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
@@ -54,30 +53,22 @@ import android.graphics.Paint;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
-import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
-import android.widget.BaseExpandableListAdapter;
-import android.widget.CheckBox;
-import android.widget.ExpandableListView;
-import android.widget.ExpandableListView.OnChildClickListener;
-import android.widget.TextView;
import android.widget.Toast;
import com.j256.ormlite.android.apptools.OrmLiteBaseActivity;
import com.j256.ormlite.dao.Dao;
-public class SouthamptonUniversityMapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements MapViewConstants, Runnable, RouteColorConstants,
- OnItemClickListener, OnItemLongClickListener, OnSharedPreferenceChangeListener, Preferences {
+public class MapActivity extends OrmLiteBaseActivity<DatabaseHelper> implements MapViewConstants, Runnable, RouteColorConstants, OnItemClickListener,
+ OnItemLongClickListener, OnSharedPreferenceChangeListener, Preferences {
- private boolean useBundledDatabase = false;
+ private boolean useBundledDatabase = true;
private MapView mapView;
private MapController mapController;
@@ -96,56 +87,56 @@ public class SouthamptonUniversityMapActivity extends OrmLiteBaseActivity<Databa
// Scale Bar Overlay
private static final String SCALE_BAR_OVERLAY = "scaleBarOverlay";
private ScaleBarOverlay scaleBarOverlay;
- private static final boolean SCALE_BAR_OVERLAY_ENABLED_BY_DEFAULT = true;
+ static final boolean SCALE_BAR_OVERLAY_ENABLED_BY_DEFAULT = true;
private static final int SCALE_BAR_OVERLAY_RANK = 1;
// My Location Overlay
private static final String MY_LOCATION_OVERLAY = "myLocationOverlay";
private MyLocationOverlay myLocationOverlay;
- private static final boolean MY_LOCATION_OVERLAY_ENABLED_BY_DEFAULT = true;
+ static final boolean MY_LOCATION_OVERLAY_ENABLED_BY_DEFAULT = true;
private static final int MY_LOCATION_OVERLAY_RANK = 1;
// Residential Building Overlay
private static final String RESIDENTIAL_BUILDING_OVERLAY = "residentialBuildingOverlay";
private BuildingNumOverlay residentialBuildingOverlay;
- private static final boolean RESIDENTIAL_BUILDING_OVERLAY_ENABLED_BY_DEFAULT = true;
+ static final boolean RESIDENTIAL_BUILDING_OVERLAY_ENABLED_BY_DEFAULT = true;
private static final int RESIDENTIAL_BUILDING_OVERLAY_RANK = 1;
// Non-Residential Building Overlay
private static final String NON_RESIDENTIAL_BUILDING_OVERLAY = "nonResidentialBuildingOverlay";
private BuildingNumOverlay nonResidentialBuildingOverlay;
- private static final boolean NON_RESIDENTIAL_BUILDING_OVERLAY_ENABLED_BY_DEFAULT = true;
+ static final boolean NON_RESIDENTIAL_BUILDING_OVERLAY_ENABLED_BY_DEFAULT = true;
private static final int NON_RESIDENTIAL_BUILDING_OVERLAY_RANK = 1;
// Uni-Link Bus Stop Overlay
private static final String UNI_LINK_BUS_STOP_OVERLAY = "uniLinkBusStopOverlay";
private BusStopOverlay uniLinkBusStopOverlay;
- private static final boolean UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT = true;
+ static final boolean UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT = true;
private static final int UNI_LINK_BUS_STOP_OVERLAY_RANK = 1;
// Uni-Link Bus Stop Overlay
private static final String NON_UNI_LINK_BUS_STOP_OVERLAY = "nonUniLinkBusStopOverlay";
private BusStopOverlay nonUniLinkBusStopOverlay;
- private static final boolean NON_UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT = true;
+ static final boolean NON_UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT = true;
private static final int NON_UNI_LINK_BUS_STOP_OVERLAY_RANK = 1;
// Site Overlays
private static final String SITE_OVERLAYS = "siteOverlays";
private HashMap<Site, PathOverlay> siteOverlays = new HashMap<Site, PathOverlay>(21);
- private static final boolean SITE_OVERLAYS_ENABLED_BY_DEFAULT = false;
+ static final boolean SITE_OVERLAYS_ENABLED_BY_DEFAULT = false;
private static final int SITE_OVERLAYS_RANK = 1;
// Route Overlays
private static final String ROUTE_OVERLAYS = "routeOverlays";
private HashMap<BusRoute, PathOverlay> routeOverlays = new HashMap<BusRoute, PathOverlay>(5);
- private static final boolean ROUTE_OVERLAYS_ENABLED_BY_DEFAULT = true;
+ static final boolean ROUTE_OVERLAYS_ENABLED_BY_DEFAULT = true;
private static final int ROUTE_OVERLAYS_RANK = 1;
private POIDialog favDialog;
Toast activityToast;
- private SouthamptonUniversityMapActivity instance;
+ private MapActivity instance;
private static final String TAG = "SUM";
@@ -788,7 +779,7 @@ public class SouthamptonUniversityMapActivity extends OrmLiteBaseActivity<Databa
// Handle item selection
switch (item.getItemId()) {
case R.id.menu_find:
- Intent i = new Intent(SouthamptonUniversityMapActivity.this, FindActivity.class);
+ Intent i = new Intent(MapActivity.this, FindActivity.class);
startActivityForResult(i, 0);
return true;
case R.id.menu_preferences:
@@ -844,7 +835,7 @@ public class SouthamptonUniversityMapActivity extends OrmLiteBaseActivity<Databa
return false;
case R.id.menu_about:
- Intent aboutIntent = new Intent(SouthamptonUniversityMapActivity.this, AboutActivity.class);
+ Intent aboutIntent = new Intent(MapActivity.this, AboutActivity.class);
startActivityForResult(aboutIntent, 0);
return true;
default:
@@ -879,7 +870,7 @@ public class SouthamptonUniversityMapActivity extends OrmLiteBaseActivity<Databa
@Override
public boolean onSearchRequested() {
- Intent i = new Intent(SouthamptonUniversityMapActivity.this, FindActivity.class);
+ Intent i = new Intent(MapActivity.this, FindActivity.class);
startActivityForResult(i, 0);
return false;
}
@@ -1123,9 +1114,9 @@ public class SouthamptonUniversityMapActivity extends OrmLiteBaseActivity<Databa
// Noting to do here atm
} else if (key.equals(UNI_LINK_BUS_STOP_OVERLAY)) {
- } else if (key.equals(UNI_LINK_BUS_STOP_OVERLAY)) { // Activity Preferences
- showUniLinkBusStopOverlays();
} else if (key.equals(NON_UNI_LINK_BUS_STOP_OVERLAY)) { // Activity Preferences
+ showUniLinkBusStopOverlays();
+ } else if (key.equals(NON_UNI_LINK_BUS_STOPS)) { // Activity Preferences
showNonUniLinkBusStopOverlays();
} else if (key.contains(ROUTE_OVERLAYS)) {
try {
@@ -1152,6 +1143,10 @@ public class SouthamptonUniversityMapActivity extends OrmLiteBaseActivity<Databa
} catch (SQLException e) {
e.printStackTrace();
}
+ } else if (key.startsWith("0")) {
+ uniLinkBusStopOverlay.setRoutes(Integer.parseInt(Character.toString(key.charAt(2))),
+ prefs.getBoolean(key, UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT));
+ mapView.postInvalidate();
} else if (key.contains("Other")) {
if (key.contains("Scale Bar")) {
showUtilityOverlays();
@@ -1176,246 +1171,4 @@ public class SouthamptonUniversityMapActivity extends OrmLiteBaseActivity<Databa
Log.e(TAG, "Unhandled preference key " + key);
}
}
-
- class ViewDialog extends Dialog implements OnChildClickListener {
-
- private final ExpandableListView epView;
-
- private static final String TAG = "ViewDialog";
-
- private final MyExpandableListAdapter mAdapter;
-
- private OnChildClickListener listener;
-
- private String[] busRoutes;
- private String[] buildingTypes;
- private String[] other;
- private String[] groupHeadings;
- private String[] siteNames;
-
- public ViewDialog(Context context) {
- super(context);
-
- setContentView(R.layout.view_dialog);
- setTitle("Select the map elements to display");
-
- WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
- lp.copyFrom(this.getWindow().getAttributes());
- lp.width = WindowManager.LayoutParams.FILL_PARENT;
- lp.height = WindowManager.LayoutParams.FILL_PARENT;
-
- this.getWindow().setAttributes(lp);
-
- epView = (ExpandableListView) findViewById(R.id.view_list);
- mAdapter = new MyExpandableListAdapter(context);
- epView.setAdapter(mAdapter);
- epView.setOnChildClickListener(this);
-
- int size;
- try {
- size = (int) getHelper().getSiteDao().countOf();
-
- ArrayList<Site> sites = new ArrayList<Site>(size);
-
- try {
- sites.addAll(getHelper().getSiteDao().queryForAll());
- } catch (SQLException e) {
- e.printStackTrace();
- }
- siteNames = new String[size];
- for (int i = 0; i < size; i++) {
- siteNames[i] = sites.get(i).name;
- }
- } catch (SQLException e1) {
- e1.printStackTrace();
- }
-
- busRoutes = getResources().getStringArray(R.array.uniLinkBusRoutes);
- buildingTypes = getResources().getStringArray(R.array.buildingTypes);
- other = getResources().getStringArray(R.array.utilityOverlays);
- groupHeadings = getResources().getStringArray(R.array.preferencesHeadings);
-
- }
-
- public void setOnItemClickListener(OnChildClickListener onChildClickListener) {
- Log.i(TAG, "Listener set for dialog");
- listener = onChildClickListener;
- }
-
- class MyExpandableListAdapter extends BaseExpandableListAdapter {
-
- private LayoutInflater inflater;
-
- private static final String TAG = "MyExpandableListAdapter";
-
- // Bus Stops (0)
- // |_ U1 (0:0)
- // |_ U1N (0:1)
- // |_ U2 (0:2)
- // |_ U6 (0:3)
- // |_ U9 (0:4)
- // Bus Routes (1)
- // |_ U1 (1:0)
- // |_ U1N (1:1)
- // |_ U2 (1:2)
- // |_ U6 (1:3)
- // |_ U9 (1:4)
- // Buildings (2)
- // |_ Residential (2:0)
- // |_ Non-Residential (2:1)
- // Site Outlines (3)
- // |_ Highfield Campus (3:0)
- // |_ Boldrewood Campus (3:1)
- // |_ Avenue Campus (3:2)
- // |_ Winchester School of Art (3:3)
- // |_ The University of Southampton Science Park (3:4)
- // |_ National Oceanography Centre Campus (3:5)
- // |_ Boat House (3:6)
- // |_ Southampton General Hospital (3:0)
- // |_ Royal South Hants Hospital (3:0)
- // |_ Belgrave Industrial Site (3:0)
- // |_ Highfield Hall (3:0)
- // |_ Glen Eyre Hall (3:0)
- // |_ South Hill Hall (3:0)
- // |_ Chamberlain Hall (3:0)
- // |_ Hartley Grove1 (3:0)
- // |_ Bencraft Hall (3:0)
- // |_ Connaught Hall (3:0)
- // |_ Montefiore Hall (3:0)
- // |_ Stoneham Hall (3:0)
- // |_ Erasmus Park (3:0)
- // Other (4)
- // |_ Scale Bar (4:0)
- // |_ Compass (4:1)
- // |_ My Location (4:2)
-
- MyExpandableListAdapter(Context context) {
- inflater = LayoutInflater.from(context);
- }
-
- public Object getChild(int groupPosition, int childPosition) {
- if (groupPosition == 0 || groupPosition == 1) {
- return busRoutes[childPosition];
- } else if (groupPosition == 2) {
- return buildingTypes[childPosition];
- } else if (groupPosition == 3) {
- return siteNames[childPosition];
- } else if (groupPosition == 4) {
- return other[childPosition];
- } else {
- Log.e(TAG, "Unrecognised groupPosition " + groupPosition);
- return null;
- }
- }
-
- public long getChildId(int groupPosition, int childPosition) {
- return groupPosition * 50 + childPosition;
- }
-
- public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
- View v = null;
- if (convertView != null)
- v = convertView;
- else
- v = inflater.inflate(R.layout.view_child_row, parent, false);
- String c = (String) getChild(groupPosition, childPosition);
- TextView childName = (TextView) v.findViewById(R.id.childname);
- if (childName != null)
- childName.setText(c);
- CheckBox cb = (CheckBox) v.findViewById(R.id.check1);
- cb.setClickable(false);
- cb.setFocusable(false);
- SharedPreferences activityPrefs = getPreferences(0);
-
- String str = groupPosition + ":" + childPosition;
-
- if (groupPosition == 0) {
- cb.setChecked(activityPrefs.getBoolean(str, UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT));
- } else if (groupPosition == 1) {
- cb.setChecked(activityPrefs.getBoolean(str, ROUTE_OVERLAYS_ENABLED_BY_DEFAULT));
- } else if (groupPosition == 2) {
- if (childPosition == 0) {
- cb.setChecked(activityPrefs.getBoolean(str, RESIDENTIAL_BUILDING_OVERLAY_ENABLED_BY_DEFAULT));
- } else {
- cb.setChecked(activityPrefs.getBoolean(str, NON_RESIDENTIAL_BUILDING_OVERLAY_ENABLED_BY_DEFAULT));
- }
- } else if (groupPosition == 3) {
- cb.setChecked(activityPrefs.getBoolean(str, SITE_OVERLAYS_ENABLED_BY_DEFAULT));
- } else if (groupPosition == 4) {
- cb.setChecked(activityPrefs.getBoolean(str, SCALE_BAR_OVERLAY_ENABLED_BY_DEFAULT));
- }
- return v;
- }
-
- public int getChildrenCount(int groupPosition) {
- if (groupPosition == 0 || groupPosition == 1) {
- return busRoutes.length;
- } else if (groupPosition == 2) {
- return buildingTypes.length;
- } else if (groupPosition == 3) {
- return siteNames.length;
- } else if (groupPosition == 4) {
- return other.length;
- }
- return 0;
- }
-
- public Object getGroup(int groupPosition) {
- return groupHeadings[groupPosition];
- }
-
- public int getGroupCount() {
- return groupHeadings.length;
- }
-
- public long getGroupId(int groupPosition) {
- return groupPosition * 5;
- }
-
- public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
- View v = null;
- if (convertView != null)
- v = convertView;
- else
- v = inflater.inflate(R.layout.view_group_row, parent, false);
- String gt = (String) getGroup(groupPosition);
- TextView colorGroup = (TextView) v.findViewById(R.id.childname);
- if (gt != null)
- colorGroup.setText(gt);
- return v;
- }
-
- public boolean hasStableIds() {
- return true;
- }
-
- public boolean isChildSelectable(int groupPosition, int childPosition) {
- return true;
- }
-
- }
-
- public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
- Log.i(TAG, "Got view dialog click at " + groupPosition + ":" + childPosition);
-
- SharedPreferences activityPrefs = getPreferences(0);
-
- Editor editor = activityPrefs.edit();
-
- CheckBox cb = (CheckBox) v.findViewById(R.id.check1);
-
- String str = groupPosition + ":" + childPosition;
-
- editor.putBoolean(str, !cb.isChecked());
-
- editor.commit();
-
- mAdapter.notifyDataSetInvalidated();
-
- listener.onChildClick(parent, v, groupPosition, childPosition, id);
-
- return true;
- }
-
- }
}
diff --git a/src/net/cbaines/suma/ViewDialog.java b/src/net/cbaines/suma/ViewDialog.java
new file mode 100644
index 0000000..a8e36ed
--- /dev/null
+++ b/src/net/cbaines/suma/ViewDialog.java
@@ -0,0 +1,295 @@
+/*
+ * Southampton University Map App
+ * Copyright (C) 2011 Christopher Baines
+ *
+ * This program 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.
+ *
+ * This program 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 this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+package net.cbaines.suma;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.SharedPreferences.Editor;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.BaseExpandableListAdapter;
+import android.widget.CheckBox;
+import android.widget.ExpandableListView;
+import android.widget.ExpandableListView.OnChildClickListener;
+import android.widget.TextView;
+
+import com.j256.ormlite.android.apptools.OpenHelperManager;
+
+class ViewDialog extends Dialog implements OnChildClickListener {
+
+ private final ExpandableListView epView;
+
+ private static final String TAG = "ViewDialog";
+
+ private final MyExpandableListAdapter mAdapter;
+
+ private OnChildClickListener listener;
+
+ private DatabaseHelper helper;
+
+ private String[] busRoutes;
+ private String[] buildingTypes;
+ private String[] other;
+ private String[] groupHeadings;
+ private String[] siteNames;
+
+ protected MapActivity context;
+
+ public ViewDialog(MapActivity context) {
+ super(context);
+
+ this.context = context;
+
+ helper = OpenHelperManager.getHelper(context, DatabaseHelper.class);
+
+ int size;
+ try {
+ size = (int) helper.getSiteDao().countOf();
+
+ ArrayList<Site> sites = new ArrayList<Site>(size);
+
+ try {
+ sites.addAll(helper.getSiteDao().queryForAll());
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ siteNames = new String[size];
+ for (int i = 0; i < size; i++) {
+ siteNames[i] = sites.get(i).name;
+ }
+ } catch (SQLException e1) {
+ e1.printStackTrace();
+ }
+
+ busRoutes = context.getResources().getStringArray(R.array.uniLinkBusRoutes);
+ buildingTypes = context.getResources().getStringArray(R.array.buildingTypes);
+ other = context.getResources().getStringArray(R.array.utilityOverlays);
+ groupHeadings = context.getResources().getStringArray(R.array.preferencesHeadings);
+
+ setContentView(R.layout.view_dialog);
+ setTitle("Select the map elements to display");
+
+ WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
+ lp.copyFrom(this.getWindow().getAttributes());
+ lp.width = WindowManager.LayoutParams.FILL_PARENT;
+ lp.height = WindowManager.LayoutParams.FILL_PARENT;
+
+ this.getWindow().setAttributes(lp);
+
+ epView = (ExpandableListView) findViewById(R.id.view_list);
+ mAdapter = new MyExpandableListAdapter(context);
+ epView.setAdapter(mAdapter);
+ epView.setOnChildClickListener(this);
+
+ }
+
+ public void setOnItemClickListener(OnChildClickListener onChildClickListener) {
+ Log.i(TAG, "Listener set for dialog");
+ listener = onChildClickListener;
+ }
+
+ class MyExpandableListAdapter extends BaseExpandableListAdapter implements Preferences {
+
+ private LayoutInflater inflater;
+
+ private static final String TAG = "MyExpandableListAdapter";
+
+ // Bus Stops (0)
+ // |_ U1 (0:0)
+ // |_ U1N (0:1)
+ // |_ U2 (0:2)
+ // |_ U6 (0:3)
+ // |_ U9 (0:4)
+ // Bus Routes (1)
+ // |_ U1 (1:0)
+ // |_ U1N (1:1)
+ // |_ U2 (1:2)
+ // |_ U6 (1:3)
+ // |_ U9 (1:4)
+ // Buildings (2)
+ // |_ Residential (2:0)
+ // |_ Non-Residential (2:1)
+ // Site Outlines (3)
+ // |_ Highfield Campus (3:0)
+ // |_ Boldrewood Campus (3:1)
+ // |_ Avenue Campus (3:2)
+ // |_ Winchester School of Art (3:3)
+ // |_ The University of Southampton Science Park (3:4)
+ // |_ National Oceanography Centre Campus (3:5)
+ // |_ Boat House (3:6)
+ // |_ Southampton General Hospital (3:0)
+ // |_ Royal South Hants Hospital (3:0)
+ // |_ Belgrave Industrial Site (3:0)
+ // |_ Highfield Hall (3:0)
+ // |_ Glen Eyre Hall (3:0)
+ // |_ South Hill Hall (3:0)
+ // |_ Chamberlain Hall (3:0)
+ // |_ Hartley Grove1 (3:0)
+ // |_ Bencraft Hall (3:0)
+ // |_ Connaught Hall (3:0)
+ // |_ Montefiore Hall (3:0)
+ // |_ Stoneham Hall (3:0)
+ // |_ Erasmus Park (3:0)
+ // Other (4)
+ // |_ Scale Bar (4:0)
+ // |_ Compass (4:1)
+ // |_ My Location (4:2)
+
+ MyExpandableListAdapter(Context context) {
+ inflater = LayoutInflater.from(context);
+ }
+
+ public Object getChild(int groupPosition, int childPosition) {
+ if (groupPosition == 0 || groupPosition == 1) {
+ return busRoutes[childPosition];
+ } else if (groupPosition == 2) {
+ return buildingTypes[childPosition];
+ } else if (groupPosition == 3) {
+ return siteNames[childPosition];
+ } else if (groupPosition == 4) {
+ return other[childPosition];
+ } else {
+ Log.e(TAG, "Unrecognised groupPosition " + groupPosition);
+ return null;
+ }
+ }
+
+ public long getChildId(int groupPosition, int childPosition) {
+ return groupPosition * 50 + childPosition;
+ }
+
+ public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
+ View v = null;
+ if (convertView != null)
+ v = convertView;
+ else
+ v = inflater.inflate(R.layout.view_child_row, parent, false);
+ String c = (String) getChild(groupPosition, childPosition);
+ TextView childName = (TextView) v.findViewById(R.id.childname);
+ if (childName != null)
+ childName.setText(c);
+ CheckBox cb = (CheckBox) v.findViewById(R.id.check1);
+ cb.setClickable(false);
+ cb.setFocusable(false);
+ if (context == null) {
+ Log.e(TAG, "context == null");
+ }
+ SharedPreferences activityPrefs = context.getPreferences(0);
+
+ String str = groupPosition + ":" + childPosition;
+
+ if (groupPosition == 0) {
+ cb.setChecked(activityPrefs.getBoolean(str, MapActivity.UNI_LINK_BUS_STOP_OVERLAY_ENABLED_BY_DEFAULT));
+ } else if (groupPosition == 1) {
+ cb.setChecked(activityPrefs.getBoolean(str, MapActivity.ROUTE_OVERLAYS_ENABLED_BY_DEFAULT));
+ } else if (groupPosition == 2) {
+ if (childPosition == 0) {
+ cb.setChecked(activityPrefs.getBoolean(str, MapActivity.RESIDENTIAL_BUILDING_OVERLAY_ENABLED_BY_DEFAULT));
+ } else {
+ cb.setChecked(activityPrefs.getBoolean(str, MapActivity.NON_RESIDENTIAL_BUILDING_OVERLAY_ENABLED_BY_DEFAULT));
+ }
+ } else if (groupPosition == 3) {
+ cb.setChecked(activityPrefs.getBoolean(str, MapActivity.SITE_OVERLAYS_ENABLED_BY_DEFAULT));
+ } else if (groupPosition == 4) {
+ cb.setChecked(activityPrefs.getBoolean(str, MapActivity.SCALE_BAR_OVERLAY_ENABLED_BY_DEFAULT));
+ }
+ return v;
+ }
+
+ public int getChildrenCount(int groupPosition) {
+ if (groupPosition == 0 || groupPosition == 1) {
+ return busRoutes.length;
+ } else if (groupPosition == 2) {
+ return buildingTypes.length;
+ } else if (groupPosition == 3) {
+ return siteNames.length;
+ } else if (groupPosition == 4) {
+ return other.length;
+ }
+ return 0;
+ }
+
+ public Object getGroup(int groupPosition) {
+ return groupHeadings[groupPosition];
+ }
+
+ public int getGroupCount() {
+ return groupHeadings.length;
+ }
+
+ public long getGroupId(int groupPosition) {
+ return groupPosition * 5;
+ }
+
+ public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
+ View v = null;
+ if (convertView != null)
+ v = convertView;
+ else
+ v = inflater.inflate(R.layout.view_group_row, parent, false);
+ String gt = (String) getGroup(groupPosition);
+ TextView colorGroup = (TextView) v.findViewById(R.id.childname);
+ if (gt != null)
+ colorGroup.setText(gt);
+ return v;
+ }
+
+ public boolean hasStableIds() {
+ return true;
+ }
+
+ public boolean isChildSelectable(int groupPosition, int childPosition) {
+ return true;
+ }
+
+ }
+
+ public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
+ Log.i(TAG, "Got view dialog click at " + groupPosition + ":" + childPosition);
+
+ SharedPreferences activityPrefs = context.getPreferences(0);
+
+ Editor editor = activityPrefs.edit();
+
+ CheckBox cb = (CheckBox) v.findViewById(R.id.check1);
+
+ String str = groupPosition + ":" + childPosition;
+
+ editor.putBoolean(str, !cb.isChecked());
+
+ editor.commit();
+
+ mAdapter.notifyDataSetInvalidated();
+
+ if (listener != null) {
+ listener.onChildClick(parent, v, groupPosition, childPosition, id);
+ }
+
+ return true;
+ }
+
+} \ No newline at end of file