diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/CheckboxImageAdapter.java b/app/src/main/java/de/apps4ics/mountainnavigation/CheckboxImageAdapter.java deleted file mode 100644 index 20a83a4..0000000 --- a/app/src/main/java/de/apps4ics/mountainnavigation/CheckboxImageAdapter.java +++ /dev/null @@ -1,125 +0,0 @@ -package de.apps4ics.mountainnavigation; - -import android.app.Activity; -import android.graphics.drawable.Drawable; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; -import android.widget.CheckBox; -import android.widget.ImageView; -import android.widget.TableRow; -import android.widget.TextView; - -/** - * Created by Vinz on 09.10.2015. - */ -public class CheckboxImageAdapter extends BaseAdapter { - Activity context; - boolean[] itemChecked; - int nrOfItems; - String[] entries; - String[] entryDesc; - Integer[] imgs; - - public CheckboxImageAdapter(Activity context, String[] entries, String[] entryDesc, Integer[] entryImgs){ - super(); - this.context = context; - itemChecked = new boolean[entries.length]; - nrOfItems = 0; - this.entries = entries; - this.entryDesc = entryDesc; - imgs = entryImgs; - } - - private class ViewHolder { - TableRow tr; - ImageView iv; - TextView tv_title; - TextView tv_desc; - CheckBox cb; - } - - public int[] getCheckedItems(){ - int[] items = new int[nrOfItems]; - int added = 0; - for(int i=0; i getAllPois() { - List poiList = new ArrayList<>(); - for(int i=0; i getPoiByType(int _type){ - List poiList = new ArrayList<>(); - SQLiteDatabase db = this.getReadableDatabase(); - - String table = getTableName(_type); - - String query = "SELECT * FROM " + table; - Cursor cursor = db.rawQuery(query, null); - if(cursor.moveToFirst()){ - do { - poiList.add(getPoiFromCursor(cursor, _type)); - } while(cursor.moveToNext()); - } - - db.close(); - cursor.close(); - - return poiList; - } - - public int getPoiCountByType(int _type){ - SQLiteDatabase db = this.getReadableDatabase(); - String query = "SELECT * FROM " + getTableName(_type); - Cursor cursor = db.rawQuery(query, null); - int count = cursor.getCount(); - cursor.close(); - - return count; - } - - private String getTableName(int _type){ - String table = ""; - switch (_type){ - case Types.FOUNTAIN: - table = TABLE_FOUNTAIN; - break; - case Types.PATH: - table = TABLE_PATH; - break; - case Types.BREAK_POINT: - table = TABLE_BREAK_POINT; - break; - case Types.TRASH_BIN: - table = TABLE_TRASH_BIN; - break; - case Types.PIC: - table = TABLE_IMAGE; - break; - case Types.CELL_RECEPTION: - table = TABLE_CELL_RECEPTION; - break; - case Types.WIFI: - table = TABLE_WIFI; - break; - case Types.LIFT: - table = TABLE_LIFT; - break; - case Types.PEAK: - table = TABLE_PEAK; - break; - case Types.HUT: - table = TABLE_HUT; - break; - case Types.GP: - table = TABLE_GP; - break; - } - return table; - } -} diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/ImageDialogItemizedIconOverlay.java b/app/src/main/java/de/apps4ics/mountainnavigation/ImageDialogItemizedIconOverlay.java deleted file mode 100644 index 5f5ca01..0000000 --- a/app/src/main/java/de/apps4ics/mountainnavigation/ImageDialogItemizedIconOverlay.java +++ /dev/null @@ -1,81 +0,0 @@ -package de.apps4ics.mountainnavigation; - -import android.app.AlertDialog; -import android.content.Context; -import android.content.res.Resources; -import android.graphics.drawable.Drawable; - -import org.osmdroid.views.MapView; -import org.osmdroid.views.overlay.ItemizedIconOverlay; -import org.osmdroid.views.overlay.OverlayItem; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by Vinz on 03.11.2015. - */ -public class ImageDialogItemizedIconOverlay extends ItemizedIconOverlay { - private Context context; - private AlertDialog alertDialog; - private List items; - private Drawable posIcon; - private Drawable negIcon; - private MapView mapView; - private int selected; - - public ImageDialogItemizedIconOverlay(final Context context, final List aList, AlertDialog alertDialog, MapView mapView) { - super(context, aList, new OnItemGestureListener() { - @Override - public boolean onItemSingleTapUp(int index, OverlayItem item) { - return false; - } - - @Override - public boolean onItemLongPress(int index, OverlayItem item) { - return false; - } - }); - this.context = context; - this.items = new ArrayList<>(); - this.alertDialog = alertDialog; - this.mapView = mapView; - selected = 0; - Resources res = context.getResources(); - posIcon = res.getDrawable(R.mipmap.ic_poi); - negIcon = res.getDrawable(R.mipmap.ic_poi_red); - for(int i=0; i { - - private final Activity context; - private final String[] texts; - private final Integer[] imgs; - private final boolean selected; - - public ImageListAdapter(Activity context, String[] texts, Integer[] imgs, boolean selected) { - super(context, R.layout.drawer_list_item, texts); - this.context = context; - this.texts = texts; - this.imgs = imgs; - this.selected = selected; - } - - @Override - public View getView(int position, View view, ViewGroup parent) { - LayoutInflater inflater = context.getLayoutInflater(); - View rowView= inflater.inflate(R.layout.drawer_list_item, null, true); - TextView txtTitle = (TextView) rowView.findViewById(R.id.toggleEntryDesc); - - ImageView imageView = (ImageView) rowView.findViewById(R.id.toggleEntryImg); - txtTitle.setText(texts[position]); - - imageView.setImageResource(imgs[position]); - if(!selected) imageView.setColorFilter(context.getResources().getColor(R.color.icon_unselected_gray)); - return rowView; - } -} diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java b/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java index 60b9c76..aadd0f9 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java @@ -22,7 +22,6 @@ import android.net.NetworkInfo; import android.net.Uri; import android.net.wifi.WifiManager; -import android.os.AsyncTask; import android.os.Vibrator; import android.provider.MediaStore; import android.provider.Settings; @@ -64,15 +63,12 @@ import com.survivingwithandroid.weather.lib.request.WeatherRequest; import org.osmdroid.api.IMapController; -import org.osmdroid.bonuspack.location.NominatimPOIProvider; -import org.osmdroid.bonuspack.location.POI; import org.osmdroid.bonuspack.overlays.MapEventsOverlay; import org.osmdroid.bonuspack.overlays.MapEventsReceiver; import org.osmdroid.bonuspack.overlays.Marker; import org.osmdroid.tileprovider.tilesource.TileSourceFactory; import org.osmdroid.util.GeoPoint; import org.osmdroid.views.MapView; -import org.osmdroid.views.overlay.Overlay; import org.osmdroid.views.overlay.OverlayItem; import java.io.ByteArrayOutputStream; @@ -84,11 +80,13 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; import java.util.List; -import java.util.Map; +import de.apps4ics.mountainnavigation.adapters.ImageListAdapter; +import de.apps4ics.mountainnavigation.handlers.DatabaseHandler; +import de.apps4ics.mountainnavigation.handlers.PoiHandler; +import de.apps4ics.mountainnavigation.overlays.ImageDialogItemizedIconOverlay; +import de.apps4ics.mountainnavigation.overlays.MapDialogItemizedIconOverlay; import de.apps4ics.mountainnavigation.pois.AddBreakpointDialog; import de.apps4ics.mountainnavigation.pois.AddFountainDialog; import de.apps4ics.mountainnavigation.pois.AddHutDialog; @@ -99,9 +97,9 @@ import de.apps4ics.mountainnavigation.pois.Fountain; import de.apps4ics.mountainnavigation.pois.Image; import de.apps4ics.mountainnavigation.pois.Lift; -import de.apps4ics.mountainnavigation.pois.Path; import de.apps4ics.mountainnavigation.pois.Poi; import de.apps4ics.mountainnavigation.pois.TrashBin; +import de.apps4ics.mountainnavigation.pois.Types; import de.apps4ics.mountainnavigation.pois.Wifi; public class MainActivity extends AppCompatActivity implements LocationListener { @@ -125,8 +123,8 @@ public static final long VIB_LENGTH = 50; public final static int SELECT_POI_PHOTO = 1; - private static SimpleDateFormat df_hm; - private static SimpleDateFormat df_full; + public static SimpleDateFormat df_hm; + public static SimpleDateFormat df_full; private Resources res; private FloatingActionButton fab; @@ -144,33 +142,21 @@ private boolean showWeatherHints; private DatabaseHandler dbHandler; + private PoiHandler poiHandler; private MapView mapView; private IMapController mapController; private int ZOOM_LEVEL; private ActionBarDrawerToggle drawerToggle; - private String[] fountainSizes; - private String[] pathOptions; - private String[] pathDescs; - private Integer[] pathOptionImgs; - private String[] hutTypes; - private String[] breakPointOptions; - private Integer[] breakPointOptionsImgs; - private String[] entries; - private Integer[] entryImgs; - private Integer[] fountainImgs; private DrawerLayout drawerLayout; private ListView listView; - private List[] poiMarkers; - private Map> pois; - - protected static ArrayList pathMarkers; - protected static OverlayItem imageMarker; + public static ArrayList pathMarkers; + public static OverlayItem imageMarker; private String provider; - private Location mLocation; + private static Location mLocation; private LocationManager locationManager; private List foundLocations; @@ -195,8 +181,6 @@ RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.container); - dbHandler = new DatabaseHandler(this); - ZOOM_LEVEL = 18; mapView = new MapView(getApplicationContext()); mapView.setTileSource(TileSourceFactory.MAPNIK); @@ -206,10 +190,8 @@ mapController.setZoom(ZOOM_LEVEL); mapController.setCenter(new GeoPoint(48.52, 9.055)); - poiMarkers = new ArrayList[Types.SIZE]; - for(int i=0; i(); - } + dbHandler = new DatabaseHandler(this); + poiHandler = new PoiHandler(this, res, mapView); foundLocations = new ArrayList<>(); @@ -219,43 +201,6 @@ initGps(); - fountainSizes = res.getStringArray(R.array.fountain_size_dialog_options); - fountainImgs = new Integer[]{ - R.drawable.fountain_size_small, - R.drawable.fountain_size_medium, - R.drawable.fountain_size_big, - }; - pathDescs = res.getStringArray(R.array.path_dialog_descs); - pathOptions = res.getStringArray(R.array.path_dialog_options); - pathOptionImgs = new Integer[]{ - R.mipmap.path_exposed, - R.mipmap.path_difficult_wet, - R.mipmap.path_giddiness, - R.mipmap.path_climbing - }; - hutTypes = res.getStringArray(R.array.hut_dialog_types); - breakPointOptions = res.getStringArray(R.array.break_point_dialog_options); - breakPointOptionsImgs = new Integer[]{ - R.mipmap.ic_rock, - R.mipmap.ic_bench, - R.mipmap.ic_table, - R.mipmap.ic_roofed - }; - - entries = res.getStringArray(R.array.toggleEntries); - entryImgs = new Integer[]{ - R.drawable.water, - R.drawable.path, - R.mipmap.ic_cabin, - R.mipmap.ic_peak, - R.drawable.break_point, - R.drawable.trash, - R.drawable.image_upload, - R.drawable.cell_reception, - R.drawable.wifi, - R.mipmap.cable_car - }; - WeatherClient.ClientBuilder weatherBuilder = new WeatherClient.ClientBuilder(); WeatherConfig weatherConfig = new WeatherConfig(); weatherConfig.unitSystem = WeatherConfig.UNIT_SYSTEM.M; @@ -339,7 +284,7 @@ drawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); // listView.setItemsCanFocus(false); - ImageListAdapter adapter = new ImageListAdapter(MainActivity.this, entries, entryImgs, false); + ImageListAdapter adapter = new ImageListAdapter(MainActivity.this, PoiHandler.getEntries(), PoiHandler.getEntryImgs(), false); listView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override @@ -388,111 +333,21 @@ iv.setColorFilter(null); iv.setTag(""); tv.setTextColor(res.getColor(R.color.text_color_selected)); - String title = entries[position]; - List tempPoiList = dbHandler.getPoiByType(type); - UpdatePoiIconsAsyncTask asyncTask = new UpdatePoiIconsAsyncTask(type, title); - poiMarkers[type] = asyncTask.doInBackground(tempPoiList); - mapView.getOverlays().addAll(poiMarkers[type]); + String title = PoiHandler.getEntries()[position]; + List markers = poiHandler.getPoiIcons(type, title); + mapView.getOverlays().addAll(markers); mapView.invalidate(); } else { iv.setColorFilter(res.getColor(R.color.icon_unselected_gray)); iv.setTag("disabled"); tv.setTextColor(res.getColor(R.color.text_color)); - Toaster("You disabled " + entries[position]); - for(int i=0; i(); + Toaster("You disabled " + PoiHandler.getEntries()[position]); + poiHandler.disablePois(type); mapView.invalidate(); } } - private class UpdatePoiIconsAsyncTask extends AsyncTask, Void, List> { - int type; - String title; - - public UpdatePoiIconsAsyncTask(int type, String title){ - this.type = type; - this.title = title; - } - - @Override - protected List doInBackground(List... params) { - //TODO get weather and rate POIs (if sunny, smaller fountains, ...) - List result = new ArrayList<>(); - List tempPoiList = params[0]; //This is only one list - for(int i=0; i(); - pois.put("path", new ArrayList()); - pois.put("spring", new ArrayList()); - pois.put("stream", new ArrayList()); - pois.put("peak", new ArrayList()); - pois.put("wilderness_hut", new ArrayList()); - pois.put("alpine_hut", new ArrayList()); - pois.put("water", new ArrayList()); - pois.put("aerialway", new ArrayList()); - Iterator it = pois.entrySet().iterator(); - while(it.hasNext()) { - Map.Entry entry = (Map.Entry) it.next(); - new GetPoiFromOsm().execute(entry.getKey()); - } - } - @Override public void onLocationChanged(Location location) { mLocation = location; if(mLocation == null) return; foundLocations.add(location); - updatePois(); + poiHandler.updatePois(); double lat = location.getLatitude(); double lon = location.getLongitude(); @@ -941,7 +754,7 @@ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(R.string.add_poi_dialog_title) //.setIcon(res.getDrawable(R.mipmap.ic_add_poi)) - .setAdapter(new ImageListAdapter(MainActivity.this, entries, entryImgs, true), new DialogInterface.OnClickListener() { + .setAdapter(new ImageListAdapter(MainActivity.this, PoiHandler.getEntries(), PoiHandler.getEntryImgs(), true), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { int type = getType(which); @@ -1027,7 +840,7 @@ OverlayItem oI = new OverlayItem(String.valueOf(dbgp.getTime()), String.valueOf(p.getId()), String.valueOf(p.getType()), gp); Drawable[] iconLayer = new Drawable[2]; iconLayer[0] = res.getDrawable(R.mipmap.ic_poi); - BitmapDrawable bd = (BitmapDrawable) res.getDrawable(entryImgs[getPos(p.getType())]); + BitmapDrawable bd = (BitmapDrawable) res.getDrawable(PoiHandler.getEntryImgs()[getPos(p.getType())]); if(bd == null) continue; Bitmap b = bd.getBitmap(); Bitmap bResized = Bitmap.createScaledBitmap(b, b.getWidth()/2, b.getHeight()/2, false); @@ -1098,7 +911,7 @@ OverlayItem oI = new OverlayItem(String.valueOf(dbgp.getTime()), String.valueOf(p.getId()), String.valueOf(p.getType()), gp); Drawable[] iconLayer = new Drawable[2]; iconLayer[0] = res.getDrawable(R.mipmap.ic_poi); - BitmapDrawable bd = (BitmapDrawable) res.getDrawable(entryImgs[getPos(p.getType())]); + BitmapDrawable bd = (BitmapDrawable) res.getDrawable(PoiHandler.getEntryImgs()[getPos(p.getType())]); if(bd == null) continue; Bitmap b = bd.getBitmap(); Bitmap bResized = Bitmap.createScaledBitmap(b, b.getWidth()/2, b.getHeight()/2, false); @@ -1132,7 +945,7 @@ popupMapView.getOverlays().add(overlay); } - public boolean hasInternet() { + public static boolean hasInternet() { setActiveNetwork(); return activeNetwork != null && activeNetwork.isConnected(); } @@ -1274,26 +1087,6 @@ return null; } - class GetPoiFromOsm extends AsyncTask { - protected ArrayList doInBackground(String... params) { - try { - NominatimPOIProvider poiProvider = new NominatimPOIProvider(""); - ArrayList foundPois = poiProvider.getPOICloseTo(new GeoPoint(mLocation), params[0], 50, 0.1); - pois.put(params[0], foundPois); - return foundPois; - } catch (Exception e) { - return null; - } - } - - @Override - protected void onPostExecute(ArrayList arrayList) { - for(POI p : (ArrayList) arrayList) { - Log.d(TAG, p.mCategory + ", " + p.mType + ", " + p.mUrl); - } - } - } - private class WarningListAdapter extends ArrayAdapter { private final Activity context; diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/MapDialogItemizedIconOverlay.java b/app/src/main/java/de/apps4ics/mountainnavigation/MapDialogItemizedIconOverlay.java deleted file mode 100644 index 00c0491..0000000 --- a/app/src/main/java/de/apps4ics/mountainnavigation/MapDialogItemizedIconOverlay.java +++ /dev/null @@ -1,154 +0,0 @@ -package de.apps4ics.mountainnavigation; - -import android.app.AlertDialog; -import android.content.Context; -import android.content.DialogInterface; -import android.content.res.Resources; -import android.graphics.drawable.Drawable; - -import org.osmdroid.bonuspack.overlays.Polyline; -import org.osmdroid.bonuspack.routing.OSRMRoadManager; -import org.osmdroid.bonuspack.routing.Road; -import org.osmdroid.bonuspack.routing.RoadManager; -import org.osmdroid.util.GeoPoint; -import org.osmdroid.views.MapView; -import org.osmdroid.views.overlay.ItemizedIconOverlay; -import org.osmdroid.views.overlay.OverlayItem; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by Vinz on 21.10.2015. - */ -public class MapDialogItemizedIconOverlay extends ItemizedIconOverlay { - private Context context; - private AlertDialog alertDialog; - private List items; - private int selected; - private Drawable posIcon; - private Drawable negIcon; - private MapView mapView; - - private RoadManager roadManager; - private ArrayList waypoints; - private ArrayList waypointIds; - private Road road; - private Polyline line; - - public MapDialogItemizedIconOverlay(final Context context, final List aList, AlertDialog alertDialog, MapView mapView) { - super(context, aList, new OnItemGestureListener() { - @Override - public boolean onItemSingleTapUp(int index, OverlayItem item) { - return false; - } - - @Override - public boolean onItemLongPress(int index, OverlayItem item) { - return false; - } - }); - this.context = context; - this.items = new ArrayList<>(); - this.waypointIds = new ArrayList<>(); - this.alertDialog = alertDialog; - this.mapView = mapView; - this.selected = 0; - Resources res = context.getResources(); - posIcon = res.getDrawable(R.mipmap.ic_poi); - negIcon = res.getDrawable(R.mipmap.ic_poi_red); - for(int i=0; i(); - road = new Road(); - } - - @Override - protected boolean onLongPressHelper(int index, OverlayItem item) { - final int remIndex = index; - AlertDialog.Builder removeBuilder = new AlertDialog.Builder(context); - removeBuilder.setTitle(R.string.path_map_remove_marker_dialog_title) - .setMessage(R.string.path_map_remove_marker_dialog_text) - .setPositiveButton(R.string.ok_button_remove_marker, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - removeItem(remIndex); - mapView.invalidate(); - } - }) - .setNegativeButton(R.string.cancel_button_remove_marker, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - } - }); - AlertDialog dialog = removeBuilder.create(); - dialog.show(); - return true; - } - - @Override - public boolean addItem(OverlayItem item) { - boolean ret = super.addItem(item); - items.add(false); - waypointIds.add(-1); - return ret; - } - - @Override - public OverlayItem removeItem(int position) { - OverlayItem oI = super.removeItem(position); - if(items.get(position)) selected--; - items.remove(position); - int waypointIndex = waypointIds.get(position); - waypoints.remove(waypointIndex); - waypointIds.set(position, -1); - MainActivity.pathMarkers.remove(waypointIndex); - checkForSelection(); - return oI; - } - - private void updateItem(int index){ - if(items.get(index)){ - items.set(index, false); - selected--; - getItem(index).setMarker(negIcon); - int waypointIndex = waypointIds.get(index); - waypoints.remove(waypointIndex); - waypointIds.set(index, -1); - MainActivity.pathMarkers.remove(waypointIndex); - } else { - items.set(index, true); - selected++; - getItem(index).setMarker(posIcon); - waypoints.add((GeoPoint) getItem(index).getPoint()); - waypointIds.set(index, waypoints.size()-1); - MainActivity.pathMarkers.add(getItem(index)); - } - mapView.invalidate(); - checkForSelection(); - } - - private void checkForSelection(){ - //TODO disable network calls for now - //mapView.getOverlays().remove(line); - if(selected >= 2){ - //road = roadManager.getRoad(waypoints); - //line = RoadManager.buildRoadOverlay(road, context); - //mapView.getOverlays().add(line); - //mapView.invalidate(); - alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true); - } else { - alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); - } - } - - @Override - protected boolean onSingleTapUpHelper(int index, OverlayItem item, MapView mapView) { - updateItem(index); - return true; - } -} diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/PoiHandler.java b/app/src/main/java/de/apps4ics/mountainnavigation/PoiHandler.java deleted file mode 100644 index cf7a361..0000000 --- a/app/src/main/java/de/apps4ics/mountainnavigation/PoiHandler.java +++ /dev/null @@ -1,62 +0,0 @@ -package de.apps4ics.mountainnavigation; - -import de.apps4ics.mountainnavigation.pois.Options; - -/** - * Created by Vinz on 06.03.2016. - */ -public class PoiHandler { - public void getPoisAround(double lat, double lon) { - getPoisAround(lat, lon, -1); - } - - public void getPoisAround(double lat, double lon, int limit) { - - } - - private void getPoisAroundOnline(double lat, double lon, int limit) { - - } - - private void getPoisAroundCached(double lat, double lon, int limit) { - - } - - public void getPoisAlong(double lat, double lon) { - getPoisAlong(lat, lon, -1); - } - - public void getPoisAlong(double lat, double lon, int limit) { - - } - - private void getPoisAlongOnline(double lat, double lon, int limit) { - - } - - private void getPoisAlongCached(double lat, double lon, int limit) { - - } - - //TODO move addPoiDialog and stuff to this class - - private void addPoiToOsm(double lat, double lon, double alt, int type, Options[] options) { - - } - - private void addPoiToCache(double lat, double lon, double alt, int type, Options[] options) { - //TODO register callback to upload it to OSM as soon as data/wifi is available - } - - public void editPoi(int id, Options[] options) { - - } - - private void editPoiToOsm(int id, Options[] options) { - - } - - private void editPoiToCache(int id, Options[] options) { - - } -} diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/Types.java b/app/src/main/java/de/apps4ics/mountainnavigation/Types.java deleted file mode 100644 index 576444d..0000000 --- a/app/src/main/java/de/apps4ics/mountainnavigation/Types.java +++ /dev/null @@ -1,20 +0,0 @@ -package de.apps4ics.mountainnavigation; - -/** - * Created by Vinz on 06.10.2015. - */ -public class Types { - public static final int FOUNTAIN = 0; - public static final int PATH = 1; - public static final int BREAK_POINT = 2; - public static final int TRASH_BIN = 3; - public static final int PIC = 4; - public static final int CELL_RECEPTION = 5; - public static final int WIFI = 6; - public static final int LIFT = 7; - public static final int PEAK = 8; - public static final int HUT = 9; - public static final int GP = 10; - - public static final int SIZE = 11; -} diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/WeatherHandler.java b/app/src/main/java/de/apps4ics/mountainnavigation/WeatherHandler.java deleted file mode 100644 index dcd87ab..0000000 --- a/app/src/main/java/de/apps4ics/mountainnavigation/WeatherHandler.java +++ /dev/null @@ -1,61 +0,0 @@ -package de.apps4ics.mountainnavigation; - -import android.content.Context; - -import com.survivingwithandroid.weather.lib.model.Weather; - -/** - * Created by Vinz on 06.03.2016. - */ -public class WeatherHandler { - private Context context; - private WeatherDatabase weatherDb; - - public WeatherHandler(Context context) { - weatherDb = new WeatherDatabase(context); - } - - public void getCurrentWeather() { - getCurrentWeather(0); - } - - /** - * - * @param offset number of days (in the past) to search for result in the cache, only for getCurrentWeatherCached - */ - public void getCurrentWeather(int offset) { - - } - - private void getCurrentWeatherOnline() { - - } - - private void getCurrentWeatherCached(int offset) { - - } - - public void getForecast(long start, long end, int step) { - getForecast(start, end, step, 0); - } - - public void getForecast(long start, long end, int step, int offset) { - - } - - public void getForecastOnline(long start, long end, int step) { - - } - - public void getForecastCached(long start, long end, int step, int offset) { - - } - - private void convertWeatherLibWeather(Weather weather) { - - } - - private void insertIntoDatabase(MyWeather weather) { - weatherDb.insertWeather(weather); - } -} diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/adapters/CheckboxImageAdapter.java b/app/src/main/java/de/apps4ics/mountainnavigation/adapters/CheckboxImageAdapter.java new file mode 100644 index 0000000..14d925c --- /dev/null +++ b/app/src/main/java/de/apps4ics/mountainnavigation/adapters/CheckboxImageAdapter.java @@ -0,0 +1,127 @@ +package de.apps4ics.mountainnavigation.adapters; + +import android.app.Activity; +import android.graphics.drawable.Drawable; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.CheckBox; +import android.widget.ImageView; +import android.widget.TableRow; +import android.widget.TextView; + +import de.apps4ics.mountainnavigation.R; + +/** + * Created by Vinz on 09.10.2015. + */ +public class CheckboxImageAdapter extends BaseAdapter { + Activity context; + boolean[] itemChecked; + int nrOfItems; + String[] entries; + String[] entryDesc; + Integer[] imgs; + + public CheckboxImageAdapter(Activity context, String[] entries, String[] entryDesc, Integer[] entryImgs){ + super(); + this.context = context; + itemChecked = new boolean[entries.length]; + nrOfItems = 0; + this.entries = entries; + this.entryDesc = entryDesc; + imgs = entryImgs; + } + + private class ViewHolder { + TableRow tr; + ImageView iv; + TextView tv_title; + TextView tv_desc; + CheckBox cb; + } + + public int[] getCheckedItems(){ + int[] items = new int[nrOfItems]; + int added = 0; + for(int i=0; i { + + private final Activity context; + private final String[] texts; + private final Integer[] imgs; + private final boolean selected; + + public ImageListAdapter(Activity context, String[] texts, Integer[] imgs, boolean selected) { + super(context, R.layout.drawer_list_item, texts); + this.context = context; + this.texts = texts; + this.imgs = imgs; + this.selected = selected; + } + + @Override + public View getView(int position, View view, ViewGroup parent) { + LayoutInflater inflater = context.getLayoutInflater(); + View rowView= inflater.inflate(R.layout.drawer_list_item, null, true); + TextView txtTitle = (TextView) rowView.findViewById(R.id.toggleEntryDesc); + + ImageView imageView = (ImageView) rowView.findViewById(R.id.toggleEntryImg); + txtTitle.setText(texts[position]); + + imageView.setImageResource(imgs[position]); + if(!selected) imageView.setColorFilter(context.getResources().getColor(R.color.icon_unselected_gray)); + return rowView; + } +} diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/handlers/DatabaseHandler.java b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/DatabaseHandler.java new file mode 100644 index 0000000..8556e21 --- /dev/null +++ b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/DatabaseHandler.java @@ -0,0 +1,721 @@ +package de.apps4ics.mountainnavigation.handlers; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import android.util.Log; + +import java.util.ArrayList; +import java.util.List; + +import de.apps4ics.mountainnavigation.MainActivity; +import de.apps4ics.mountainnavigation.pois.Types; +import de.apps4ics.mountainnavigation.pois.BreakPoint; +import de.apps4ics.mountainnavigation.pois.CellReception; +import de.apps4ics.mountainnavigation.pois.DbGeoPoint; +import de.apps4ics.mountainnavigation.pois.Fountain; +import de.apps4ics.mountainnavigation.pois.Hut; +import de.apps4ics.mountainnavigation.pois.Image; +import de.apps4ics.mountainnavigation.pois.Lift; +import de.apps4ics.mountainnavigation.pois.Path; +import de.apps4ics.mountainnavigation.pois.Peak; +import de.apps4ics.mountainnavigation.pois.Poi; +import de.apps4ics.mountainnavigation.pois.TrashBin; +import de.apps4ics.mountainnavigation.pois.Wifi; + +/** + * Created by Vinz on 06.10.2015. + */ +public class DatabaseHandler extends SQLiteOpenHelper { + private static final int DATABASE_VERSION = 2; + private static final String DATABASE_NAME = "mountainNavigation.db"; + private static final String TABLE_GP = "geopoint"; + private static final String TABLE_FOUNTAIN = "fountain"; + private static final String TABLE_PATH = "path"; + private static final String TABLE_HUT = "hut"; + private static final String TABLE_PEAK = "peak"; + private static final String TABLE_BREAK_POINT = "break_point"; + private static final String TABLE_TRASH_BIN = "trash_bin"; + private static final String TABLE_IMAGE = "image"; + private static final String TABLE_CELL_RECEPTION = "cell_reception"; + private static final String TABLE_WIFI = "wifi"; + private static final String TABLE_LIFT = "lift"; + private static final String[] TABLES = new String[]{TABLE_FOUNTAIN, TABLE_PATH, TABLE_HUT, TABLE_PEAK, TABLE_BREAK_POINT, TABLE_TRASH_BIN, TABLE_IMAGE, TABLE_CELL_RECEPTION, TABLE_WIFI, TABLE_LIFT}; + private static final Integer[] TABLE_TYPES = new Integer[]{Types.FOUNTAIN, Types.PATH, Types.HUT, Types.PEAK, Types.BREAK_POINT, Types.TRASH_BIN, Types.PIC, Types.CELL_RECEPTION, Types.WIFI, Types.LIFT}; + + private static final String KEY_POI_ID = "_id"; + private static final String KEY_POI_LAT = "_lat"; + private static final String KEY_POI_LON = "_lon"; + private static final String KEY_POI_ALT = "_alt"; + private static final String KEY_POI_TYPE = "_type"; + private static final String KEY_POI_TIME = "_time"; + + private static final String KEY_GP_ID = "_gp_id"; + private static final String KEY_FOUNTAIN_SIZE = "_size"; + private static final String KEY_GP_S_ID = "_gp_s_id"; + private static final String KEY_GP_E_ID = "_gp_e_id"; + private static final String KEY_PATH_LENGTH = "_length"; + private static final String KEY_PATH_EXPOSED = "_path_exp"; + private static final String KEY_PATH_DIFF_WET = "_path_diff"; + private static final String KEY_PATH_GIDDINESS = "_path_giddiness"; + private static final String KEY_PATH_CLIMBING = "_path_climbing"; + private static final String KEY_BREAK_POINT_STONE = "_break_point_stone"; + private static final String KEY_BREAK_POINT_BENCH = "_break_point_bench"; + private static final String KEY_BREAK_POINT_TABLE = "_break_point_table"; + private static final String KEY_BREAK_POINT_ROOFED = "_break_point_roofed"; + private static final String KEY_HUT_TYPE = "_hut_type"; + private static final String KEY_HUT_WINTER_ROOM = "_hut_winter_room"; + private static final String KEY_HUT_NAME = "_hut_name"; + private static final String KEY_PEAK_NAME = "_peak_name"; + private static final String KEY_LIFT_NAME = "_lift_name"; + private static final String KEY_CELL_RECEPTION_STRENGTH = "_cell_reception_strength"; + private static final String KEY_CELL_RECEPTION_OP_NAME = "_cell_reception_op_name"; + private static final String KEY_CELL_RECEPTION_OP_COUNTRY = "_cell_reception_op_country"; + private static final String KEY_CELL_RECEPTION_NW_TYPE = "_cell_reception_nw_type"; + private static final String KEY_CELL_RECEPTION_ROAMING = "_cell_reception_roaming"; + private static final String KEY_WIFI_SSID = "_wifi_ssid"; + private static final String KEY_WIFI_LEVELS = "_wifi_levels"; + private static final String KEY_IMAGE_IMG = "_img_src"; + private static final String KEY_IMAGE_ASSOC = "_associated_poi"; + + public DatabaseHandler(Context context){ + super(context, DATABASE_NAME, null, DATABASE_VERSION); + } + + @Override + public void onCreate(SQLiteDatabase db) { + //create geo point table + String CREATE_GP_TABLE = "CREATE TABLE " + TABLE_GP + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_POI_LAT + " REAL," + + KEY_POI_LON + " REAL," + + KEY_POI_ALT + " REAL," + + KEY_POI_TIME + " INTEGER" + ")"; + db.execSQL(CREATE_GP_TABLE); + //create Fountain table + String CREATE_FOUNTAIN_TABLE = "CREATE TABLE " + TABLE_FOUNTAIN + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_GP_ID + " INTEGER," + + KEY_FOUNTAIN_SIZE + " INTEGER" + ")"; + db.execSQL(CREATE_FOUNTAIN_TABLE); + //create Fountain table + String CREATE_PATH_TABLE = "CREATE TABLE " + TABLE_PATH + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_GP_S_ID + " INTEGER," + + KEY_GP_E_ID + " INTEGER," + + KEY_PATH_LENGTH + " INTEGER," + + KEY_PATH_EXPOSED + " INTEGER," + + KEY_PATH_DIFF_WET + " INTEGER," + + KEY_PATH_GIDDINESS + " INTEGER," + + KEY_PATH_CLIMBING + " INTEGER" + ")"; + db.execSQL(CREATE_PATH_TABLE); + //create break point table + String CREATE_BREAK_POINT_TABLE = "CREATE TABLE " + TABLE_BREAK_POINT + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_GP_ID + " INTEGER," + + KEY_BREAK_POINT_STONE + " INTEGER," + + KEY_BREAK_POINT_BENCH + " INTEGER," + + KEY_BREAK_POINT_TABLE + " INTEGER," + + KEY_BREAK_POINT_ROOFED + " INTEGER" + ")"; + db.execSQL(CREATE_BREAK_POINT_TABLE); + //create hut table + String CREATE_HUT_TABLE = "CREATE TABLE " + TABLE_HUT + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_GP_ID + " INTEGER," + + KEY_HUT_TYPE + " INTEGER," + + KEY_HUT_WINTER_ROOM + " INTEGER," + + KEY_HUT_NAME + " TEXT" + ")"; + db.execSQL(CREATE_HUT_TABLE); + //create peak table + String CREATE_PEAK_TABLE = "CREATE TABLE " + TABLE_PEAK + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_GP_ID + " INTEGER," + + KEY_PEAK_NAME + " TEXT" + ")"; + db.execSQL(CREATE_PEAK_TABLE); + //create cell reception table + String CREATE_CR_TABLE = "CREATE TABLE " + TABLE_CELL_RECEPTION + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_GP_ID + " INTEGER," + + KEY_CELL_RECEPTION_STRENGTH + " INTEGER," + + KEY_CELL_RECEPTION_OP_NAME + " TEXT," + + KEY_CELL_RECEPTION_OP_COUNTRY + " TEXT," + + KEY_CELL_RECEPTION_ROAMING + " INTEGER," + + KEY_CELL_RECEPTION_NW_TYPE + " TEXT" + ")"; + db.execSQL(CREATE_CR_TABLE); + //create wifi table + String CREATE_WIFI_TABLE = "CREATE TABLE " + TABLE_WIFI + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_GP_ID + " INTEGER," + + KEY_WIFI_SSID + " TEXT," + + KEY_WIFI_LEVELS + " INTEGER" + ")"; + db.execSQL(CREATE_WIFI_TABLE); + //create lift table + String CREATE_LIFT_TABLE = "CREATE TABLE " + TABLE_LIFT + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_GP_S_ID + " INTEGER," + + KEY_GP_E_ID + " INTEGER," + + KEY_LIFT_NAME + " TEXT" + ")"; + db.execSQL(CREATE_LIFT_TABLE); + //create image table + String CREATE_IMAGE_TABLE = "CREATE TABLE " + TABLE_IMAGE + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_GP_ID + " INTEGER," + + KEY_IMAGE_IMG + " BLOB," + + KEY_IMAGE_ASSOC + " INTEGER" + ")"; + db.execSQL(CREATE_IMAGE_TABLE); + //create trash bin table + String CREATE_TRASH_TABLE = "CREATE TABLE " + TABLE_TRASH_BIN + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_GP_ID + " INTEGER" + ")"; + db.execSQL(CREATE_TRASH_TABLE); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + db.execSQL("DROP TABLE IF EXISTS " + TABLE_GP); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_FOUNTAIN); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_PATH); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_HUT); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_PEAK); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_BREAK_POINT); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_TRASH_BIN); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_IMAGE); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_CELL_RECEPTION); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_WIFI); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_LIFT); + onCreate(db); + } + + private ContentValues getValues(Poi poi){ + ContentValues values = new ContentValues(); + switch(poi.getType()){ + case Types.FOUNTAIN: + Fountain f = (Fountain) poi; + values.put(KEY_GP_ID, f.getGpId()); + values.put(KEY_FOUNTAIN_SIZE, f.getSize()); + break; + case Types.PATH: + Path p = (Path) poi; + values.put(KEY_GP_S_ID, p.getStartGpId()); + values.put(KEY_GP_E_ID, p.getEndGpId()); + values.put(KEY_PATH_LENGTH, p.getLength()); + values.put(KEY_PATH_EXPOSED, p.getExposed()); + values.put(KEY_PATH_DIFF_WET, p.getDiffWet()); + values.put(KEY_PATH_GIDDINESS, p.getGiddiness()); + values.put(KEY_PATH_CLIMBING, p.getClimbing()); + break; + case Types.BREAK_POINT: + BreakPoint bp = (BreakPoint) poi; + values.put(KEY_GP_ID, bp.getGpId()); + values.put(KEY_BREAK_POINT_STONE, bp.getStone()); + values.put(KEY_BREAK_POINT_BENCH, bp.getBench()); + values.put(KEY_BREAK_POINT_TABLE, bp.getTable()); + values.put(KEY_BREAK_POINT_ROOFED, bp.getRoofed()); + break; + case Types.TRASH_BIN: + TrashBin tb = (TrashBin) poi; + values.put(KEY_GP_ID, tb.getGpId()); + break; + case Types.PIC: + Image i = (Image) poi; + values.put(KEY_GP_ID, i.getGpId()); + values.put(KEY_IMAGE_IMG, i.getImage()); + break; + case Types.CELL_RECEPTION: + CellReception cr = (CellReception) poi; + values.put(KEY_GP_ID, cr.getGpId()); + values.put(KEY_CELL_RECEPTION_STRENGTH, cr.getStrength()); + values.put(KEY_CELL_RECEPTION_OP_NAME, cr.getOpName()); + values.put(KEY_CELL_RECEPTION_OP_COUNTRY, cr.getOpCountry()); + values.put(KEY_CELL_RECEPTION_ROAMING, cr.getRoaming()); + values.put(KEY_CELL_RECEPTION_NW_TYPE, cr.getNwType()); + break; + case Types.WIFI: + Wifi w = (Wifi) poi; + values.put(KEY_GP_ID, w.getGpId()); + values.put(KEY_WIFI_SSID, w.getSsid()); + values.put(KEY_WIFI_LEVELS, w.getLevels()); + break; + case Types.LIFT: + Lift l = (Lift) poi; + values.put(KEY_GP_S_ID, l.getStartGpId()); + values.put(KEY_GP_E_ID, l.getEndGpId()); + values.put(KEY_LIFT_NAME, l.getName()); + break; + case Types.PEAK: + Peak peak = (Peak) poi; + values.put(KEY_GP_ID, peak.getGpId()); + values.put(KEY_PEAK_NAME, peak.getName()); + break; + case Types.HUT: + Hut h = (Hut) poi; + values.put(KEY_GP_ID, h.getGpId()); + values.put(KEY_HUT_TYPE, h.getHutType()); + values.put(KEY_HUT_WINTER_ROOM, h.getWinterRoom()); + values.put(KEY_HUT_NAME, h.getName()); + break; + case Types.GP: + DbGeoPoint dbgp = (DbGeoPoint) poi; + values.put(KEY_POI_LAT, dbgp.getLat()); + values.put(KEY_POI_LON, dbgp.getLon()); + values.put(KEY_POI_ALT, dbgp.getAlt()); + values.put(KEY_POI_TIME, dbgp.getTime()); + break; + } + return values; + } + + public long addPoi(Poi poi){ + SQLiteDatabase db = this.getWritableDatabase(); + String table = getTableName(poi.getType()); + ContentValues values = getValues(poi); + long rowId = db.insert(table, null, values); + db.close(); + return rowId; + } + + private Poi getPoiFromCursor(Cursor cursor, int type){ + switch(type){ + case Types.FOUNTAIN: + return getFountainFromCursor(cursor); + case Types.PATH: + return getPathFromCursor(cursor); + case Types.BREAK_POINT: + return getBreakpointFromCursor(cursor); + case Types.TRASH_BIN: + return getTrashbinFromCursor(cursor); + case Types.PIC: + return getImageFromCursor(cursor); + case Types.CELL_RECEPTION: + return getCellReceptionFromCursor(cursor); + case Types.WIFI: + return getWifiFromCursor(cursor); + case Types.LIFT: + return getLiftFromCursor(cursor); + case Types.PEAK: + return getPeakFromCursor(cursor); + case Types.HUT: + return getHutFromCursor(cursor); + case Types.GP: + return getGeoPointFromCursor(cursor); + } + return null; + } + + private DbGeoPoint getGeoPointFromCursor(Cursor cursor){ + long gp_id = cursor.getLong(0); + double lat = cursor.getDouble(1); + double lon = cursor.getDouble(2); + double alt = cursor.getDouble(3); + long time = cursor.getLong(4) * 1000; + return new DbGeoPoint(gp_id, lat, lon, alt, time); + } + + private DbGeoPoint getGeoPoint(long gp_id){ + SQLiteDatabase db = getReadableDatabase(); + Cursor gpCursor = db.query(TABLE_GP, + new String[]{KEY_POI_ID, KEY_POI_LAT, KEY_POI_LON, KEY_POI_ALT, KEY_POI_TIME}, + KEY_POI_ID + "=?", + new String[]{String.valueOf(gp_id)}, null, null, null, null); + if(gpCursor != null){ + gpCursor.moveToFirst(); + return getGeoPointFromCursor(gpCursor); + } else { + Log.e(MainActivity.TAG, "No geopoint with id " + gp_id + " found"); + return null; + } + } + + private Fountain getFountainFromCursor(Cursor cursor){ + long _id = cursor.getLong(0); + long _gp_id = cursor.getLong(1); + int size = cursor.getInt(2); + return new Fountain(_id, size, getGeoPoint(_gp_id)); + } + + private Fountain getFountain(SQLiteDatabase db, long id){ + Cursor cursor = db.query(TABLE_FOUNTAIN, + new String[]{KEY_POI_ID, KEY_GP_ID, KEY_FOUNTAIN_SIZE}, + KEY_POI_ID + "=?", + new String[]{String.valueOf(id)}, null, null, null, null); + if (cursor != null) { + cursor.moveToFirst(); + } + return getFountainFromCursor(cursor); + } + + private Path getPathFromCursor(Cursor cursor){ + long _id = cursor.getLong(0); + long _gp_s_id = cursor.getLong(1); + long _gp_e_id = cursor.getLong(2); + long _length = cursor.getLong(3); + int exposed = cursor.getInt(4); + int diff_wet = cursor.getInt(5); + int giddiness = cursor.getInt(6); + int climbing = cursor.getInt(7); + return new Path(_id, _length, exposed, diff_wet, giddiness, climbing, getGeoPoint(_gp_s_id), getGeoPoint(_gp_e_id)); + } + + private Path getPath(SQLiteDatabase db, long id){ + Cursor cursor = db.query(TABLE_PATH, + new String[]{KEY_POI_ID, KEY_GP_S_ID, KEY_GP_E_ID, KEY_PATH_LENGTH, KEY_PATH_EXPOSED, KEY_PATH_DIFF_WET, KEY_PATH_GIDDINESS, KEY_PATH_CLIMBING}, + KEY_POI_ID + "=?", + new String[]{String.valueOf(id)}, null, null, null, null); + if (cursor != null) { + cursor.moveToFirst(); + } + return getPathFromCursor(cursor); + } + + private BreakPoint getBreakpointFromCursor(Cursor cursor){ + long _id = cursor.getLong(0); + long _gp_id = cursor.getLong(1); + int stone = cursor.getInt(2); + int bench = cursor.getInt(3); + int table = cursor.getInt(4); + int roofed = cursor.getInt(5); + return new BreakPoint(_id, stone, bench, table, roofed, getGeoPoint(_gp_id)); + } + + private BreakPoint getBreakpoint(SQLiteDatabase db, long id){ + Cursor cursor = db.query(TABLE_BREAK_POINT, + new String[]{KEY_POI_ID, KEY_GP_ID, KEY_BREAK_POINT_STONE, KEY_BREAK_POINT_BENCH, KEY_BREAK_POINT_TABLE, KEY_BREAK_POINT_ROOFED}, + KEY_POI_ID + "=?", + new String[]{String.valueOf(id)}, null, null, null, null); + if (cursor != null) { + cursor.moveToFirst(); + } + return getBreakpointFromCursor(cursor); + } + + private TrashBin getTrashbinFromCursor(Cursor cursor){ + long _id = cursor.getLong(0); + long _gp_id = cursor.getLong(1); + return new TrashBin(_id, getGeoPoint(_gp_id)); + } + + private TrashBin getTrashbin(SQLiteDatabase db, long id){ + Cursor cursor = db.query(TABLE_TRASH_BIN, + new String[]{KEY_POI_ID, KEY_GP_ID}, + KEY_POI_ID + "=?", + new String[]{String.valueOf(id)}, null, null, null, null); + if (cursor != null) { + cursor.moveToFirst(); + } + return getTrashbinFromCursor(cursor); + } + + private Image getImageFromCursor(Cursor cursor){ + long _id = cursor.getLong(0); + long _gp_id = cursor.getLong(1); + byte[] img = cursor.getBlob(2); + int assoc_poi = cursor.getInt(3); + return new Image(_id, img, assoc_poi, getGeoPoint(_gp_id)); + } + + private Image getImage(SQLiteDatabase db, long id){ + Cursor cursor = db.query(TABLE_IMAGE, + new String[]{KEY_POI_ID, KEY_GP_ID, KEY_IMAGE_IMG, KEY_IMAGE_ASSOC}, + KEY_POI_ID + "=?", + new String[]{String.valueOf(id)}, null, null, null, null); + if (cursor != null) { + cursor.moveToFirst(); + } + return getImageFromCursor(cursor); + } + + private CellReception getCellReceptionFromCursor(Cursor cursor){ + long _id = cursor.getLong(0); + long _gp_id = cursor.getLong(1); + int strength = cursor.getInt(2); + String opName = cursor.getString(3); + String opCountry = cursor.getString(4); + int roaming = cursor.getInt(5); + String nwType = cursor.getString(6); + return new CellReception(_id, strength, opName, opCountry, roaming, nwType, getGeoPoint(_gp_id)); + } + + private CellReception getCellReception(SQLiteDatabase db, long id){ + Cursor cursor = db.query(TABLE_CELL_RECEPTION, + new String[]{KEY_POI_ID, KEY_GP_ID, KEY_CELL_RECEPTION_STRENGTH, KEY_CELL_RECEPTION_OP_NAME, KEY_CELL_RECEPTION_OP_COUNTRY, KEY_CELL_RECEPTION_ROAMING, KEY_CELL_RECEPTION_NW_TYPE}, + KEY_POI_ID + "=?", + new String[]{String.valueOf(id)}, null, null, null, null); + if (cursor != null) { + cursor.moveToFirst(); + } + return getCellReceptionFromCursor(cursor); + } + + private Wifi getWifiFromCursor(Cursor cursor){ + long _id = cursor.getLong(0); + long _gp_id = cursor.getLong(1); + String ssid = cursor.getString(2); + int levels = cursor.getInt(3); + return new Wifi(_id, ssid, levels, getGeoPoint(_gp_id)); + } + + private Wifi getWifi(SQLiteDatabase db, long id){ + Cursor cursor = db.query(TABLE_WIFI, + new String[]{KEY_POI_ID, KEY_GP_ID, KEY_WIFI_SSID, KEY_WIFI_LEVELS}, + KEY_POI_ID + "=?", + new String[]{String.valueOf(id)}, null, null, null, null); + if (cursor != null) { + cursor.moveToFirst(); + } + return getWifiFromCursor(cursor); + } + + private Lift getLiftFromCursor(Cursor cursor){ + long _id = cursor.getLong(0); + long _gp_s_id = cursor.getLong(1); + long _gp_e_id = cursor.getLong(2); + String name = cursor.getString(3); + return new Lift(_id, name, getGeoPoint(_gp_s_id), getGeoPoint(_gp_e_id)); + } + + private Lift getLift(SQLiteDatabase db, long id){ + Cursor cursor = db.query(TABLE_LIFT, + new String[]{KEY_POI_ID, KEY_GP_S_ID, KEY_GP_E_ID, KEY_LIFT_NAME}, + KEY_POI_ID + "=?", + new String[]{String.valueOf(id)}, null, null, null, null); + if (cursor != null) { + cursor.moveToFirst(); + } + return getLiftFromCursor(cursor); + } + + private Peak getPeakFromCursor(Cursor cursor){ + long _id = cursor.getLong(0); + long _gp_id = cursor.getLong(1); + String name = cursor.getString(2); + return new Peak(_id, name, getGeoPoint(_gp_id)); + } + + private Peak getPeak(SQLiteDatabase db, long id){ + Cursor cursor = db.query(TABLE_PEAK, + new String[]{KEY_POI_ID, KEY_GP_ID, KEY_PEAK_NAME}, + KEY_POI_ID + "=?", + new String[]{String.valueOf(id)}, null, null, null, null); + if (cursor != null) { + cursor.moveToFirst(); + } + return getPeakFromCursor(cursor); + } + + private Hut getHutFromCursor(Cursor cursor){ + long _id = cursor.getLong(0); + long _gp_id = cursor.getLong(1); + int hut_type = cursor.getInt(2); + int winterroom = cursor.getInt(3); + String name = cursor.getString(4); + return new Hut(_id, hut_type, winterroom, name, getGeoPoint(_gp_id)); + } + + private Hut getHut(SQLiteDatabase db, long id){ + Cursor cursor = db.query(TABLE_HUT, + new String[]{KEY_POI_ID, KEY_GP_ID, KEY_HUT_TYPE, KEY_HUT_WINTER_ROOM, KEY_HUT_NAME}, + KEY_POI_ID + "=?", + new String[]{String.valueOf(id)}, null, null, null, null); + if (cursor != null) { + cursor.moveToFirst(); + } + return getHutFromCursor(cursor); + } + + public Poi getPoi(long id, int type){ + SQLiteDatabase db = this.getReadableDatabase(); + + switch(type){ + case Types.FOUNTAIN: + return getFountain(db, id); + case Types.PATH: + return getPath(db, id); + case Types.BREAK_POINT: + return getBreakpoint(db, id); + case Types.TRASH_BIN: + return getTrashbin(db, id); + case Types.PIC: + return getImage(db, id); + case Types.CELL_RECEPTION: + return getCellReception(db, id); + case Types.WIFI: + return getWifi(db, id); + case Types.LIFT: + return getLift(db , id); + case Types.PEAK: + return getPeak(db, id); + case Types.HUT: + return getHut(db, id); + case Types.GP: + return getGeoPoint(id); + } + + db.close(); + return null; + } + + public List getAllPois() { + List poiList = new ArrayList<>(); + for(int i=0; i getPoiByType(int _type){ + List poiList = new ArrayList<>(); + SQLiteDatabase db = this.getReadableDatabase(); + + String table = getTableName(_type); + + String query = "SELECT * FROM " + table; + Cursor cursor = db.rawQuery(query, null); + if(cursor.moveToFirst()){ + do { + poiList.add(getPoiFromCursor(cursor, _type)); + } while(cursor.moveToNext()); + } + + db.close(); + cursor.close(); + + return poiList; + } + + public int getPoiCountByType(int _type){ + SQLiteDatabase db = this.getReadableDatabase(); + String query = "SELECT * FROM " + getTableName(_type); + Cursor cursor = db.rawQuery(query, null); + int count = cursor.getCount(); + cursor.close(); + + return count; + } + + private String getTableName(int _type){ + String table = ""; + switch (_type){ + case Types.FOUNTAIN: + table = TABLE_FOUNTAIN; + break; + case Types.PATH: + table = TABLE_PATH; + break; + case Types.BREAK_POINT: + table = TABLE_BREAK_POINT; + break; + case Types.TRASH_BIN: + table = TABLE_TRASH_BIN; + break; + case Types.PIC: + table = TABLE_IMAGE; + break; + case Types.CELL_RECEPTION: + table = TABLE_CELL_RECEPTION; + break; + case Types.WIFI: + table = TABLE_WIFI; + break; + case Types.LIFT: + table = TABLE_LIFT; + break; + case Types.PEAK: + table = TABLE_PEAK; + break; + case Types.HUT: + table = TABLE_HUT; + break; + case Types.GP: + table = TABLE_GP; + break; + } + return table; + } +} diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java new file mode 100644 index 0000000..89be2af --- /dev/null +++ b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java @@ -0,0 +1,344 @@ +package de.apps4ics.mountainnavigation.handlers; + +import android.content.Context; +import android.content.res.Resources; +import android.graphics.Bitmap; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.LayerDrawable; +import android.os.AsyncTask; +import android.util.Log; +import android.view.Gravity; + +import org.osmdroid.bonuspack.location.NominatimPOIProvider; +import org.osmdroid.bonuspack.location.POI; +import org.osmdroid.bonuspack.overlays.Marker; +import org.osmdroid.util.GeoPoint; +import org.osmdroid.views.MapView; +import org.osmdroid.views.overlay.Overlay; + +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import de.apps4ics.mountainnavigation.MainActivity; +import de.apps4ics.mountainnavigation.R; +import de.apps4ics.mountainnavigation.pois.DbGeoPoint; +import de.apps4ics.mountainnavigation.pois.Fountain; +import de.apps4ics.mountainnavigation.pois.Options; +import de.apps4ics.mountainnavigation.pois.Path; +import de.apps4ics.mountainnavigation.pois.Poi; +import de.apps4ics.mountainnavigation.pois.Types; + +/** + * Created by Vinz on 06.03.2016. + */ +public class PoiHandler { + private static List[] poiMarkers; + private Map> pois; + private Resources res; + private MapView mapView; + private DatabaseHandler dbHandler; + private Context context; + + private static String[] fountainSizes; + private static String[] pathOptions; + private static String[] pathDescs; + private static Integer[] pathOptionImgs; + private static String[] hutTypes; + private static String[] breakPointOptions; + private static Integer[] breakPointOptionsImgs; + private static Integer[] fountainImgs; + private static String[] entries; + private static Integer[] entryImgs; + + public PoiHandler(Context context, Resources res, MapView mapView) { + poiMarkers = new ArrayList[Types.SIZE]; + for(int i=0; i(); + } + dbHandler = new DatabaseHandler(context); + this.context = context; + this.res = res; + this.mapView = mapView; + + fountainSizes = res.getStringArray(R.array.fountain_size_dialog_options); + fountainImgs = new Integer[]{ + R.drawable.fountain_size_small, + R.drawable.fountain_size_medium, + R.drawable.fountain_size_big, + }; + pathDescs = res.getStringArray(R.array.path_dialog_descs); + pathOptions = res.getStringArray(R.array.path_dialog_options); + pathOptionImgs = new Integer[]{ + R.mipmap.path_exposed, + R.mipmap.path_difficult_wet, + R.mipmap.path_giddiness, + R.mipmap.path_climbing + }; + hutTypes = res.getStringArray(R.array.hut_dialog_types); + breakPointOptions = res.getStringArray(R.array.break_point_dialog_options); + breakPointOptionsImgs = new Integer[]{ + R.mipmap.ic_rock, + R.mipmap.ic_bench, + R.mipmap.ic_table, + R.mipmap.ic_roofed + }; + + entries = res.getStringArray(R.array.toggleEntries); + entryImgs = new Integer[]{ + R.drawable.water, + R.drawable.path, + R.mipmap.ic_cabin, + R.mipmap.ic_peak, + R.drawable.break_point, + R.drawable.trash, + R.drawable.image_upload, + R.drawable.cell_reception, + R.drawable.wifi, + R.mipmap.cable_car + }; + } + + public static String[] getFountainSizes() { + return fountainSizes; + } + + public static String[] getPathOptions() { + return pathOptions; + } + + public static String[] getPathDescs() { + return pathDescs; + } + + public static Integer[] getPathOptionImgs() { + return pathOptionImgs; + } + + public static String[] getHutTypes() { + return hutTypes; + } + + public static String[] getBreakPointOptions() { + return breakPointOptions; + } + + public static Integer[] getBreakPointOptionsImgs() { + return breakPointOptionsImgs; + } + + public static Integer[] getFountainImgs() { + return fountainImgs; + } + + public static Integer[] getEntryImgs() { + return entryImgs; + } + + public static String[] getEntries() { + return entries; + } + + public static void addPoiMarker(int type, Marker marker) { + poiMarkers[type].add(marker); + } + + public void updatePois() { + pois = new HashMap<>(); + pois.put("path", new ArrayList()); + pois.put("spring", new ArrayList()); + pois.put("stream", new ArrayList()); + pois.put("peak", new ArrayList()); + pois.put("wilderness_hut", new ArrayList()); + pois.put("alpine_hut", new ArrayList()); + pois.put("water", new ArrayList()); + pois.put("aerialway", new ArrayList()); + Iterator it = pois.entrySet().iterator(); + while(it.hasNext()) { + Map.Entry entry = (Map.Entry) it.next(); + new GetPoiFromOsm().execute(entry.getKey()); + } + } + + public void getPoisAround(double lat, double lon) { + getPoisAround(lat, lon, -1); + } + + public void getPoisAround(double lat, double lon, int limit) { + if(MainActivity.hasInternet()) getPoisAroundOnline(lat, lon, limit); + else getPoisAroundCached(lat, lon, limit); + } + + private void getPoisAroundOnline(double lat, double lon, int limit) { + + } + + private void getPoisAroundCached(double lat, double lon, int limit) { + + } + + public void getPoisAlong(double lat, double lon) { + getPoisAlong(lat, lon, -1); + } + + public void getPoisAlong(double lat, double lon, int limit) { + + } + + private void getPoisAlongOnline(double lat, double lon, int limit) { + + } + + private void getPoisAlongCached(double lat, double lon, int limit) { + + } + + //TODO move addPoiDialog and stuff to this class + + private void addPoiToOsm(double lat, double lon, double alt, int type, Options[] options) { + + } + + private void addPoiToCache(double lat, double lon, double alt, int type, Options[] options) { + //TODO register callback to upload it to OSM as soon as data/wifi is available + } + + public void editPoi(int id, Options[] options) { + + } + + private void editPoiToOsm(int id, Options[] options) { + + } + + private void editPoiToCache(int id, Options[] options) { + + } + + public List getPoiIcons(int type, String title) { + UpdatePoiIconsAsyncTask task = new UpdatePoiIconsAsyncTask(type, title, res, mapView); + List tempPoiList = dbHandler.getPoiByType(type); + poiMarkers[type] = task.doInBackground(tempPoiList); + return poiMarkers[type]; + } + + public void disablePois(int type) { + for(int i=0; i(); + } + + class GetPoiFromOsm extends AsyncTask { + protected ArrayList doInBackground(String... params) { + try { + NominatimPOIProvider poiProvider = new NominatimPOIProvider(""); + ArrayList foundPois = poiProvider.getPOICloseTo(new GeoPoint(MainActivity.getLocation()), params[0], 50, 0.1); + pois.put(params[0], foundPois); + return foundPois; + } catch (Exception e) { + return null; + } + } + + @Override + protected void onPostExecute(ArrayList arrayList) { + for(POI p : (ArrayList) arrayList) { + Log.d(MainActivity.TAG, p.mCategory + ", " + p.mType + ", " + p.mUrl); + } + } + } +} + +class UpdatePoiIconsAsyncTask extends AsyncTask, Void, List> { + int type; + String title; + Resources res; + MapView mapView; + + public UpdatePoiIconsAsyncTask(int type, String title, Resources res, MapView mapView){ + this.type = type; + this.title = title; + this.res = res; + this.mapView = mapView; + } + + @Override + protected List doInBackground(List... params) { + //TODO get weather and rate POIs (if sunny, smaller fountains, ...) + List result = new ArrayList<>(); + List tempPoiList = params[0]; //This is only one list + for(int i=0; i { + private Context context; + private AlertDialog alertDialog; + private List items; + private Drawable posIcon; + private Drawable negIcon; + private MapView mapView; + private int selected; + + public ImageDialogItemizedIconOverlay(final Context context, final List aList, AlertDialog alertDialog, MapView mapView) { + super(context, aList, new OnItemGestureListener() { + @Override + public boolean onItemSingleTapUp(int index, OverlayItem item) { + return false; + } + + @Override + public boolean onItemLongPress(int index, OverlayItem item) { + return false; + } + }); + this.context = context; + this.items = new ArrayList<>(); + this.alertDialog = alertDialog; + this.mapView = mapView; + selected = 0; + Resources res = context.getResources(); + posIcon = res.getDrawable(R.mipmap.ic_poi); + negIcon = res.getDrawable(R.mipmap.ic_poi_red); + for(int i=0; i { + private Context context; + private AlertDialog alertDialog; + private List items; + private int selected; + private Drawable posIcon; + private Drawable negIcon; + private MapView mapView; + + private RoadManager roadManager; + private ArrayList waypoints; + private ArrayList waypointIds; + private Road road; + private Polyline line; + + public MapDialogItemizedIconOverlay(final Context context, final List aList, AlertDialog alertDialog, MapView mapView) { + super(context, aList, new OnItemGestureListener() { + @Override + public boolean onItemSingleTapUp(int index, OverlayItem item) { + return false; + } + + @Override + public boolean onItemLongPress(int index, OverlayItem item) { + return false; + } + }); + this.context = context; + this.items = new ArrayList<>(); + this.waypointIds = new ArrayList<>(); + this.alertDialog = alertDialog; + this.mapView = mapView; + this.selected = 0; + Resources res = context.getResources(); + posIcon = res.getDrawable(R.mipmap.ic_poi); + negIcon = res.getDrawable(R.mipmap.ic_poi_red); + for(int i=0; i(); + road = new Road(); + } + + @Override + protected boolean onLongPressHelper(int index, OverlayItem item) { + final int remIndex = index; + AlertDialog.Builder removeBuilder = new AlertDialog.Builder(context); + removeBuilder.setTitle(R.string.path_map_remove_marker_dialog_title) + .setMessage(R.string.path_map_remove_marker_dialog_text) + .setPositiveButton(R.string.ok_button_remove_marker, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + removeItem(remIndex); + mapView.invalidate(); + } + }) + .setNegativeButton(R.string.cancel_button_remove_marker, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + } + }); + AlertDialog dialog = removeBuilder.create(); + dialog.show(); + return true; + } + + @Override + public boolean addItem(OverlayItem item) { + boolean ret = super.addItem(item); + items.add(false); + waypointIds.add(-1); + return ret; + } + + @Override + public OverlayItem removeItem(int position) { + OverlayItem oI = super.removeItem(position); + if(items.get(position)) selected--; + items.remove(position); + int waypointIndex = waypointIds.get(position); + waypoints.remove(waypointIndex); + waypointIds.set(position, -1); + MainActivity.pathMarkers.remove(waypointIndex); + checkForSelection(); + return oI; + } + + private void updateItem(int index){ + if(items.get(index)){ + items.set(index, false); + selected--; + getItem(index).setMarker(negIcon); + int waypointIndex = waypointIds.get(index); + waypoints.remove(waypointIndex); + waypointIds.set(index, -1); + MainActivity.pathMarkers.remove(waypointIndex); + } else { + items.set(index, true); + selected++; + getItem(index).setMarker(posIcon); + waypoints.add((GeoPoint) getItem(index).getPoint()); + waypointIds.set(index, waypoints.size()-1); + MainActivity.pathMarkers.add(getItem(index)); + } + mapView.invalidate(); + checkForSelection(); + } + + private void checkForSelection(){ + //TODO disable network calls for now + //mapView.getOverlays().remove(line); + if(selected >= 2){ + //road = roadManager.getRoad(waypoints); + //line = RoadManager.buildRoadOverlay(road, context); + //mapView.getOverlays().add(line); + //mapView.invalidate(); + alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true); + } else { + alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); + } + } + + @Override + protected boolean onSingleTapUpHelper(int index, OverlayItem item, MapView mapView) { + updateItem(index); + return true; + } +} diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddBreakpointDialog.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddBreakpointDialog.java index 7335faa..6107478 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddBreakpointDialog.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddBreakpointDialog.java @@ -6,10 +6,11 @@ import android.content.DialogInterface; import android.os.Bundle; -import de.apps4ics.mountainnavigation.CheckboxImageAdapter; +import de.apps4ics.mountainnavigation.adapters.CheckboxImageAdapter; import de.apps4ics.mountainnavigation.Features; import de.apps4ics.mountainnavigation.MainActivity; import de.apps4ics.mountainnavigation.R; +import de.apps4ics.mountainnavigation.handlers.PoiHandler; /** * Created by Vinz on 03.11.2015. @@ -25,7 +26,7 @@ @Override public Dialog onCreateDialog(Bundle savedInstanceState) { - final CheckboxImageAdapter adapter = new CheckboxImageAdapter(getActivity(), ma.getBreakPointOptions(), null, ma.getBreakPointOptionsImgs()); + final CheckboxImageAdapter adapter = new CheckboxImageAdapter(getActivity(), PoiHandler.getBreakPointOptions(), null, PoiHandler.getBreakPointOptionsImgs()); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(R.string.break_point_dialog_title) //.setIcon(res.getDrawable(R.drawable.break_point)) diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddFountainDialog.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddFountainDialog.java index 334788f..5875862 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddFountainDialog.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddFountainDialog.java @@ -8,9 +8,10 @@ import android.util.Log; import de.apps4ics.mountainnavigation.Features; -import de.apps4ics.mountainnavigation.ImageListAdapter; +import de.apps4ics.mountainnavigation.adapters.ImageListAdapter; import de.apps4ics.mountainnavigation.MainActivity; import de.apps4ics.mountainnavigation.R; +import de.apps4ics.mountainnavigation.handlers.PoiHandler; /** * Created by Vinz on 03.11.2015. @@ -27,7 +28,7 @@ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(R.string.fountain_size_dialog_title) //.setIcon(res.getDrawable(R.drawable.water)) - .setAdapter(new ImageListAdapter(getActivity(), ma.getFountainSizes(), ma.getFountainImgs(), true), new DialogInterface.OnClickListener() { + .setAdapter(new ImageListAdapter(getActivity(), PoiHandler.getFountainSizes(), PoiHandler.getFountainImgs(), true), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { int size = 0; diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddPathDialog.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddPathDialog.java index 599270d..8467b3f 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddPathDialog.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddPathDialog.java @@ -16,10 +16,11 @@ import java.util.ArrayList; -import de.apps4ics.mountainnavigation.CheckboxImageAdapter; +import de.apps4ics.mountainnavigation.adapters.CheckboxImageAdapter; import de.apps4ics.mountainnavigation.Features; import de.apps4ics.mountainnavigation.MainActivity; import de.apps4ics.mountainnavigation.R; +import de.apps4ics.mountainnavigation.handlers.PoiHandler; /** * Created by Vinz on 03.11.2015. @@ -33,7 +34,7 @@ @Override public Dialog onCreateDialog(Bundle savedInstanceState) { - final CheckboxImageAdapter adapter = new CheckboxImageAdapter(getActivity(), ma.getPathOptions(), ma.getPathDescs(), ma.getPathOptionImgs()); + final CheckboxImageAdapter adapter = new CheckboxImageAdapter(getActivity(), PoiHandler.getPathOptions(), PoiHandler.getPathDescs(), PoiHandler.getPathOptionImgs()); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(R.string.path_dialog_title) .setPositiveButton(R.string.ok_button, new DialogInterface.OnClickListener() { diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/BreakPoint.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/BreakPoint.java index 731ffdd..1655d6e 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/pois/BreakPoint.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/BreakPoint.java @@ -1,7 +1,5 @@ package de.apps4ics.mountainnavigation.pois; -import de.apps4ics.mountainnavigation.Types; - /** * Created by Vinz on 03.11.2015. */ diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/CellReception.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/CellReception.java index 2231f8d..7efd300 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/pois/CellReception.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/CellReception.java @@ -1,7 +1,5 @@ package de.apps4ics.mountainnavigation.pois; -import de.apps4ics.mountainnavigation.Types; - /** * Created by Vinz on 03.11.2015. */ diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/DbGeoPoint.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/DbGeoPoint.java index a3415e7..183365a 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/pois/DbGeoPoint.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/DbGeoPoint.java @@ -1,7 +1,5 @@ package de.apps4ics.mountainnavigation.pois; -import de.apps4ics.mountainnavigation.Types; - /** * Created by Vinz on 03.11.2015. */ diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/Fountain.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Fountain.java index 31006a1..1170d1a 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/pois/Fountain.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Fountain.java @@ -1,7 +1,5 @@ package de.apps4ics.mountainnavigation.pois; -import de.apps4ics.mountainnavigation.Types; - /** * Created by Vinz on 03.11.2015. */ diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/Hut.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Hut.java index bbdee76..fd08a43 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/pois/Hut.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Hut.java @@ -1,9 +1,5 @@ package de.apps4ics.mountainnavigation.pois; -import de.apps4ics.mountainnavigation.Types; -import de.apps4ics.mountainnavigation.pois.DbGeoPoint; -import de.apps4ics.mountainnavigation.pois.Poi; - /** * Created by Vinz on 03.11.2015. */ diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/Image.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Image.java index 0d4f65e..5a2ca0d 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/pois/Image.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Image.java @@ -1,7 +1,5 @@ package de.apps4ics.mountainnavigation.pois; -import de.apps4ics.mountainnavigation.Types; - /** * Created by Vinz on 03.11.2015. */ diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/Lift.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Lift.java index c869b4e..650de2b 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/pois/Lift.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Lift.java @@ -1,7 +1,5 @@ package de.apps4ics.mountainnavigation.pois; -import de.apps4ics.mountainnavigation.Types; - /** * Created by Vinz on 03.11.2015. */ diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/Path.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Path.java index 0dae224..5f607fd 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/pois/Path.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Path.java @@ -1,7 +1,5 @@ package de.apps4ics.mountainnavigation.pois; -import de.apps4ics.mountainnavigation.Types; - /** * Created by Vinz on 03.11.2015. */ diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/Peak.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Peak.java index d7aee0d..0db3581 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/pois/Peak.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Peak.java @@ -1,7 +1,5 @@ package de.apps4ics.mountainnavigation.pois; -import de.apps4ics.mountainnavigation.Types; - /** * Created by Vinz on 03.11.2015. */ diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/TrashBin.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/TrashBin.java index f611ba1..f4bdb2e 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/pois/TrashBin.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/TrashBin.java @@ -1,7 +1,5 @@ package de.apps4ics.mountainnavigation.pois; -import de.apps4ics.mountainnavigation.Types; - /** * Created by Vinz on 03.11.2015. */ diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/Types.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Types.java new file mode 100644 index 0000000..fbf21e5 --- /dev/null +++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Types.java @@ -0,0 +1,20 @@ +package de.apps4ics.mountainnavigation.pois; + +/** + * Created by Vinz on 06.10.2015. + */ +public class Types { + public static final int FOUNTAIN = 0; + public static final int PATH = 1; + public static final int BREAK_POINT = 2; + public static final int TRASH_BIN = 3; + public static final int PIC = 4; + public static final int CELL_RECEPTION = 5; + public static final int WIFI = 6; + public static final int LIFT = 7; + public static final int PEAK = 8; + public static final int HUT = 9; + public static final int GP = 10; + + public static final int SIZE = 11; +} diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/Wifi.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Wifi.java index eeccf92..d7d7607 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/pois/Wifi.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Wifi.java @@ -1,7 +1,5 @@ package de.apps4ics.mountainnavigation.pois; -import de.apps4ics.mountainnavigation.Types; - /** * Created by Vinz on 03.11.2015. */