diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/DistanceSeekBar.java b/app/src/main/java/de/apps4ics/mountainnavigation/DistanceSeekBar.java new file mode 100644 index 0000000..d1b0ae3 --- /dev/null +++ b/app/src/main/java/de/apps4ics/mountainnavigation/DistanceSeekBar.java @@ -0,0 +1,98 @@ +/** + * This file is part of MountainNavigation. + * + * MountainNavigation 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 3 of the License, or + * (at your option) any later version. + * + * MountainNavigation 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 MountainNavigation. If not, see . + * + * @copyright Copyright (c) 2016 Vinzenz Rosenkanz + * + * @author Vinzenz Rosenkranz + */ + +package de.apps4ics.mountainnavigation; + +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import android.view.Gravity; +import android.widget.LinearLayout; +import android.widget.SeekBar; +import android.widget.TextView; + +public class DistanceSeekBar extends LinearLayout implements SeekBar.OnSeekBarChangeListener { + protected Context context; + protected int maxValue; + protected int minValue; + protected int step; + protected int defaultStart; + protected String text; + + protected TextView infoText; + protected SeekBar seekbar; + + protected final static int DEFAULT_MAX_VALUE = 100; + protected final static int DEFAULT_MIN_VALUE = 0; + protected final static int DEFAULT_STEP_VALUE = 1; + + public DistanceSeekBar(Context context, AttributeSet attrs) { + super(context, attrs); + this.context = context; + init(attrs); + this.defaultStart = DEFAULT_MIN_VALUE; + infoText = new TextView(context); + infoText.setText(getInfoText(defaultStart)); + infoText.setTextSize(16); + infoText.setGravity(Gravity.CENTER_HORIZONTAL); + addView(infoText); + seekbar = new SeekBar(context); + seekbar.setOnSeekBarChangeListener(this); + seekbar.setProgress(defaultStart); + seekbar.setMax(maxValue); + addView(seekbar); + } + + protected void init(AttributeSet attrs) { + TypedArray ta = getContext().obtainStyledAttributes(attrs, R.styleable.MinSeekBar); + this.text = ta.getString(R.styleable.MinSeekBar_android_text); + this.maxValue = ta.getInt(R.styleable.MinSeekBar_android_max, DEFAULT_MAX_VALUE); + this.minValue = ta.getInt(R.styleable.MinSeekBar_min, DEFAULT_MIN_VALUE); + this.step = ta.getInt(R.styleable.MinSeekBar_step, DEFAULT_STEP_VALUE); + this.maxValue = (maxValue-minValue)/step; + ta.recycle(); + } + + protected String getInfoText(int value) { + return String.format(text, getSize(value)); + } + + @Override + public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { + infoText.setText(getInfoText(progress)); + } + + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + } + + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + } + + public int getSize() { + return getSize(seekbar.getProgress()); + } + + private int getSize(int value) { + return (value*step) + minValue; + } +} diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddBiotaDialog.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddBiotaDialog.java index 2428328..a3a73b3 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddBiotaDialog.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddBiotaDialog.java @@ -42,6 +42,7 @@ import java.util.ArrayList; import java.util.List; +import de.apps4ics.mountainnavigation.DistanceSeekBar; import de.apps4ics.mountainnavigation.MainActivity; import de.apps4ics.mountainnavigation.R; import de.apps4ics.mountainnavigation.adapters.EndangeredListAdapter; @@ -55,6 +56,7 @@ private EditText addElementInput; private Button addElementButton; private Button addBiota; + private DistanceSeekBar distanceLayout; public AddBiotaDialog() { this.poiHandler = MainActivity.getPoiHandler(); @@ -69,6 +71,7 @@ listAdapter = new EndangeredListAdapter(getActivity(), listItems); addElementInput = (EditText) view.findViewById(R.id.endangered_name); addElementButton = (Button) view.findViewById(R.id.endangered_add); + distanceLayout = (DistanceSeekBar) view.findViewById(R.id.endangered_distance_seekbar); ListView elementList = (ListView) view.findViewById(R.id.endangered_list); builder.setTitle(R.string.biota_dialog_title) .setView(view) @@ -76,7 +79,7 @@ @Override public void onClick(DialogInterface dialog, int which) { DatabaseHandler dbHandler = MainActivity.getDbHandler(); - Biota biota = new Biota(250.0f); //radius in m + Biota biota = new Biota(distanceLayout.getSize()); //radius in m long biotaId = dbHandler.addPoi(biota); biota.setId(biotaId); Location l = MainActivity.getLocation(); diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/Biota.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Biota.java index 23f3aa3..c7443e9 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/pois/Biota.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Biota.java @@ -24,9 +24,6 @@ public class Biota extends Poi { private float radius; - public Biota(long _id) { - super(_id, Types.BIOTA); - } public Biota() { super(Types.BIOTA); } diff --git a/app/src/main/res/layout/biota_dialog.xml b/app/src/main/res/layout/biota_dialog.xml index f48eb27..cee9f04 100644 --- a/app/src/main/res/layout/biota_dialog.xml +++ b/app/src/main/res/layout/biota_dialog.xml @@ -20,7 +20,9 @@ * Vinzenz Rosenkranz --> - -