aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristopher Baines <cbaines8@gmail.com>2012-03-11 17:19:24 +0000
committerChristopher Baines <cbaines8@gmail.com>2012-03-11 17:19:24 +0000
commita45c1858d22622ef80253743c15c5a28760dbbae (patch)
tree75d1256944d553e8b4ec198ad9bf211e87b7f976 /src
parentacbff20cc3eb148621e1ffed9b06d17a2a1f53ce (diff)
downloadsouthamptonuniversitymap-a45c1858d22622ef80253743c15c5a28760dbbae.tar
southamptonuniversitymap-a45c1858d22622ef80253743c15c5a28760dbbae.tar.gz
Major progress on implementing the new search stuff.
Diffstat (limited to 'src')
-rw-r--r--src/net/cbaines/suma/BuildingNumOverlay.java24
-rw-r--r--src/net/cbaines/suma/DatabaseHelper.java4
-rw-r--r--src/net/cbaines/suma/MapActivity.java2
-rw-r--r--src/net/cbaines/suma/SearchResultsActivity.java374
4 files changed, 26 insertions, 378 deletions
diff --git a/src/net/cbaines/suma/BuildingNumOverlay.java b/src/net/cbaines/suma/BuildingNumOverlay.java
index b541aa1..6acffa1 100644
--- a/src/net/cbaines/suma/BuildingNumOverlay.java
+++ b/src/net/cbaines/suma/BuildingNumOverlay.java
@@ -239,12 +239,34 @@ public class BuildingNumOverlay extends Overlay implements Preferences, OnShared
}
}
+ /**
+ * <b>You can prevent all(!) other Touch-related events from happening!</b><br />
+ * By default does nothing (<code>return false</code>). If you handled the Event, return <code>true</code>, otherwise return
+ * <code>false</code>. If you returned <code>true</code> none of the following Overlays or the underlying {@link MapView} has
+ * the chance to handle this event.
+ */
+ public boolean onTouchEvent(final MotionEvent event, final MapView mapView) {
+ Log.i(TAG, "getAction " + event.getAction());
+ Log.i(TAG, "getDownTime " + event.getDownTime());
+ Log.i(TAG, "getPointerCount " + event.getPointerCount());
+
+ return true;
+ }
+
@Override
public boolean onLongPress(final MotionEvent event, final MapView mapView) {
if (!this.isEnabled())
return false;
+ int pointerCount = event.getPointerCount();
+ if (pointerCount > 1) {
+ Log.v(TAG, "Detected a zoom " + pointerCount);
+ return false;
+ } else {
+ Log.v(TAG, "Zoom not detected " + pointerCount);
+ }
+
final Building building = getSelectedItem(event, mapView);
if (building == null) {
@@ -254,7 +276,7 @@ public class BuildingNumOverlay extends Overlay implements Preferences, OnShared
Log.v(TAG, "building Pressed " + building.id);
final SharedPreferences favouritesPrefs = context.getSharedPreferences(FAVOURITES_PREFERENCES, 0);
- final SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
+ // final SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
if (favouritesPrefs.getBoolean(building.id, false)) {
favouritesPrefs.edit().remove(building.id).commit();
diff --git a/src/net/cbaines/suma/DatabaseHelper.java b/src/net/cbaines/suma/DatabaseHelper.java
index 17ef720..21ee99b 100644
--- a/src/net/cbaines/suma/DatabaseHelper.java
+++ b/src/net/cbaines/suma/DatabaseHelper.java
@@ -210,9 +210,9 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
myOutput.flush();
myOutput.close();
myInput.close();
-
+
// getWritableDatabase().close();
-
+
Log.i(TAG, "Finished copying db");
}
diff --git a/src/net/cbaines/suma/MapActivity.java b/src/net/cbaines/suma/MapActivity.java
index 2bdc3d7..f462060 100644
--- a/src/net/cbaines/suma/MapActivity.java
+++ b/src/net/cbaines/suma/MapActivity.java
@@ -195,7 +195,7 @@ public class MapActivity extends ToastHelperActivity implements MapViewConstants
Log.i(TAG, "Begining loading database " + (System.currentTimeMillis() - startTime));
- DatabaseHelper helper = getHelper();
+ DatabaseHelper helper = getHelperInternal(this);
Log.i(TAG, "Got the helper at " + (System.currentTimeMillis() - startTime));
boolean dbExist = helper.checkDataBase();
diff --git a/src/net/cbaines/suma/SearchResultsActivity.java b/src/net/cbaines/suma/SearchResultsActivity.java
deleted file mode 100644
index 503c876..0000000
--- a/src/net/cbaines/suma/SearchResultsActivity.java
+++ /dev/null
@@ -1,374 +0,0 @@
-/*
- * 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 java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import org.osmdroid.util.GeoPoint;
-
-import android.app.SearchManager;
-import android.content.Context;
-import android.content.Intent;
-import android.location.Location;
-import android.location.LocationListener;
-import android.location.LocationManager;
-import android.net.Uri;
-import android.os.Bundle;
-import android.text.Editable;
-import android.text.TextWatcher;
-import android.util.Log;
-import android.view.Gravity;
-import android.view.View;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.AdapterView.OnItemLongClickListener;
-import android.widget.LinearLayout;
-import android.widget.ListView;
-import android.widget.ProgressBar;
-
-import com.j256.ormlite.android.apptools.OrmLiteBaseActivity;
-import com.j256.ormlite.dao.Dao;
-import com.j256.ormlite.stmt.PreparedQuery;
-import com.j256.ormlite.stmt.QueryBuilder;
-
-public class SearchResultsActivity extends OrmLiteBaseActivity<DatabaseHelper> implements Runnable, TextWatcher,
- OnItemClickListener, LocationListener, OnItemLongClickListener {
-
- final static String TAG = "FindActivity";
-
- public static final String ORIGIN = "o";
- public static final int MAP_ACTIVITY = 0;
-
- private ListView listItems;
- private ProgressBar progBar;
- private LinearLayout findContentLayout;
-
- private String searchTerm = "";
-
- private Dao<Building, String> buildingDao;
- private Dao<BusStop, String> busStopDao;
- private Dao<Site, String> siteDao;
-
- private POIArrayAdapter adapter;
-
- private GeoPoint userLocation;
-
- private Thread searchThread;
-
- ArrayList<POI> getNearestPOIs(int distance) {
- Log.i(TAG, "Getting nearest POI's");
- ArrayList<POI> nearestPOIs = new ArrayList<POI>();
- for (Iterator<Building> buildingDaoIter = buildingDao.iterator(); buildingDaoIter.hasNext();) {
- POI poi = buildingDaoIter.next();
- int dist = poi.point.distanceTo(userLocation);
- if (dist < distance) {
- poi.distTo = dist;
- nearestPOIs.add(poi);
- }
- }
-
- for (Iterator<BusStop> busStopDaoIter = busStopDao.iterator(); busStopDaoIter.hasNext();) {
- POI poi = busStopDaoIter.next();
- int dist = poi.point.distanceTo(userLocation);
- if (dist < distance) {
- poi.distTo = dist;
- nearestPOIs.add(poi);
- }
- }
-
- Collections.sort(nearestPOIs, new POIDistanceComparator(userLocation, true));
-
- Log.i(TAG, "Got " + nearestPOIs.size() + " nearest POI's");
- return nearestPOIs;
- }
-
- // Search thread
- public void run() {
- POIArrayAdapter tempAdaptor;
- GeoPoint thisUserLocation = userLocation;
-
- Log.i(TAG, "Search thread started");
- String thisSearchTerm = searchTerm;
-
- ArrayList<POI> foundPOIsArray = null;
-
- Log.i(TAG, "Search term length " + thisSearchTerm.length() + " userLocation == null "
- + (thisUserLocation == null));
- if (thisSearchTerm.length() == 0 && thisUserLocation != null) {
- foundPOIsArray = getNearestPOIs(200);
-
- }
-
- if (foundPOIsArray != null && foundPOIsArray.size() != 0) {
-
- tempAdaptor = new POIArrayAdapter(this, foundPOIsArray);
- } else {
-
- try {
-
- foundPOIsArray = new ArrayList<POI>();
-
- if (thisSearchTerm.length() == 0) {
- for (Building building : buildingDao) {
- foundPOIsArray.add(building);
- }
-
- if (!thisSearchTerm.equals(searchTerm))
- return;
-
- for (BusStop busStop : busStopDao) {
- foundPOIsArray.add(busStop);
- }
-
- if (!thisSearchTerm.equals(searchTerm))
- return;
-
- for (Site site : siteDao) {
- foundPOIsArray.add(site);
- }
-
- } else {
-
- QueryBuilder<Building, String> buildingQueryBuilder = buildingDao.queryBuilder();
- buildingQueryBuilder.where().like(Building.ID_FIELD_NAME, "%" + thisSearchTerm + "%").or()
- .like(Building.NAME_FIELD_NAME, "%" + thisSearchTerm + "%");
- PreparedQuery<Building> buildingPreparedQuery = buildingQueryBuilder.prepare();
- List<Building> buildings = buildingDao.query(buildingPreparedQuery);
- for (Building building : buildings) {
- foundPOIsArray.add(building);
- }
- buildings = null;
-
- if (!thisSearchTerm.equals(searchTerm))
- return;
-
- if (thisSearchTerm.contains("site")) {
- for (Site site : siteDao) {
- foundPOIsArray.add(site);
- }
- } else {
- QueryBuilder<Site, String> siteQueryBuilder = siteDao.queryBuilder();
- siteQueryBuilder.where().like(Site.ID_FIELD_NAME, "%" + thisSearchTerm + "%").or()
- .like(Site.NAME_FIELD_NAME, "%" + thisSearchTerm + "%");
- PreparedQuery<Site> sitePreparedQuery = siteQueryBuilder.prepare();
- List<Site> sites = siteDao.query(sitePreparedQuery);
- for (Site site : sites) {
- foundPOIsArray.add(site);
- }
- sites = null;
- }
-
- if (!thisSearchTerm.equals(searchTerm))
- return;
-
- // if (thisSearchTerm.contains("bus")) {
- // for (BusStop busStop : busStopDao) {
- // foundPOIsArray.add(busStop);
- // }
- // } else {
- QueryBuilder<BusStop, String> busStopQueryBuilder = busStopDao.queryBuilder();
- busStopQueryBuilder.where().like(BusStop.ID_FIELD_NAME, "%" + thisSearchTerm + "%").or()
- .like(BusStop.DESCRIPTION_FIELD_NAME, "%" + thisSearchTerm + "%");
- PreparedQuery<BusStop> busStopPreparedQuery = busStopQueryBuilder.prepare();
- List<BusStop> busStops = busStopDao.query(busStopPreparedQuery);
- for (BusStop busStop : busStops) {
- foundPOIsArray.add(busStop);
- }
- busStops = null;
- // }
-
- if (!thisSearchTerm.equals(searchTerm))
- return;
-
- Log.i(TAG, "Found " + foundPOIsArray.size() + " pois");
-
- if (thisUserLocation != null) {
- Collections.sort(foundPOIsArray, new POIDistanceComparator(userLocation));
- } else {
- Collections.sort(foundPOIsArray, new StringDistanceComparator(thisSearchTerm));
- }
-
- }
-
- if (!thisSearchTerm.equals(searchTerm))
- return;
-
- tempAdaptor = new POIArrayAdapter(this, foundPOIsArray);
-
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- return;
- }
- }
-
- if (thisSearchTerm.equals(searchTerm)) {
- Log.i(TAG, "Search terms still equal, starting post");
- adapter = tempAdaptor;
- listItems.post(new Runnable() {
- public void run() {
- listItems.setAdapter(adapter);
- if (progBar.getVisibility() != View.GONE) {
- progBar.setVisibility(View.GONE);
- findContentLayout.setGravity(Gravity.TOP);
- }
- }
- });
- } else {
- Log.i(TAG, "Search terms no longer equal, exiting");
- }
- }
-
- /** Called when the activity is first created. */
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.search_activity);
-
- Log.i(TAG, "FindActivity started");
-
- Intent intent = getIntent();
- if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
- searchTerm = intent.getStringExtra(SearchManager.QUERY);
- Log.i(TAG, "Searching for " + searchTerm);
- }
-
- listItems = (ListView) findViewById(R.id.findListItems);
- listItems.setOnItemClickListener(this);
- listItems.setOnItemLongClickListener(this);
-
- progBar = (ProgressBar) findViewById(R.id.findLoadBar);
- findContentLayout = (LinearLayout) findViewById(R.id.findContentLayout);
-
- try {
- buildingDao = getHelper().getBuildingDao();
- busStopDao = getHelper().getBusStopDao();
- siteDao = getHelper().getSiteDao();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- // Acquire a reference to the system Location Manager
- LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
- Location lastKnownLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
- if (lastKnownLocation != null) {
- userLocation = Util.locationToGeoPoint(lastKnownLocation);
- } else {
- lastKnownLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
- if (lastKnownLocation != null) {
- userLocation = Util.locationToGeoPoint(lastKnownLocation);
-
- }
- }
- // Register the listener with the Location Manager to receive location
- // updates
- locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 10, this);
- try {
- locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000, 10, this);
- } catch (Exception e) {
- // Ignore anything that goes wrong here...
- }
-
- searchThread = new Thread(this);
- searchThread.start();
-
- }
-
- public void afterTextChanged(Editable s) {
- searchTerm = s.toString();
- Log.i(TAG, "Text changed " + searchTerm + " starting search thread");
- new Thread(this).start();
- }
-
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {
- }
-
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- }
-
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- Log.i(TAG, "OnItemClick pos " + position + " id " + id);
-
- POI poi = adapter.getPOIItem(position);
-
- Uri uri = Uri.parse("geo:" + Util.E6IntToDouble(poi.point.getLatitudeE6()) + ","
- + Util.E6IntToDouble(poi.point.getLongitudeE6()) + "?z=18");
-
- Log.i(TAG, "Starting a activity for " + uri);
-
- Intent mapIntent = new Intent(Intent.ACTION_VIEW, uri);
- startActivity(mapIntent);
- }
-
- public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
-
- POI poi = adapter.getPOIItem(position);
-
- Log.i(TAG, "Long Click Event ID: " + poi.id);
- Uri uri = null;
-
- if (poi.type.equals(POI.BUS_STOP)) {
- Log.i(TAG, "Its a bus stop");
-
- BusStop busStop = (BusStop) poi;
-
- uri = Uri.parse("http://id.southampton.ac.uk/bus-stop/" + busStop.id);
-
- } else if (poi.type.equals(POI.BUILDING)) {
- Log.i(TAG, "Its a buildings");
-
- Building building = (Building) poi;
-
- uri = Uri.parse("http://id.southampton.ac.uk/building/" + building.id);
- } else {
- Log.e(TAG, "Error in onItemLongClick");
- return false;
- }
-
- Log.i(TAG, "Starting a activity for " + uri + " path " + uri.getPath());
-
- Intent busStopIntent = new Intent(Intent.ACTION_VIEW, uri);
- startActivity(busStopIntent);
-
- return true;
- }
-
- public void onLocationChanged(Location location) {
- Log.i(TAG, "Got location update for FindActivity");
- userLocation = Util.locationToGeoPoint(location);
- if (!searchThread.isAlive()) {
- searchThread = new Thread(this);
- searchThread.start();
- }
- }
-
- public void onProviderDisabled(String arg0) {
- }
-
- public void onProviderEnabled(String provider) {
- }
-
- public void onStatusChanged(String provider, int status, Bundle extras) {
- }
-} \ No newline at end of file