diff --git a/org.envirocar.app/res/values-de/car_list_item_options.xml b/org.envirocar.app/res/values-de/car_list_item_options.xml
index 6ef8519cb..9b932beee 100644
--- a/org.envirocar.app/res/values-de/car_list_item_options.xml
+++ b/org.envirocar.app/res/values-de/car_list_item_options.xml
@@ -25,7 +25,8 @@
- Fahrzeug auswählen
-
+
- Fahrzeug löschen
+ - Fahrzeug abwählen
\ No newline at end of file
diff --git a/org.envirocar.app/res/values-de/strings_car_selection.xml b/org.envirocar.app/res/values-de/strings_car_selection.xml
index 3b5a38642..28c4848f8 100644
--- a/org.envirocar.app/res/values-de/strings_car_selection.xml
+++ b/org.envirocar.app/res/values-de/strings_car_selection.xml
@@ -27,6 +27,7 @@
Fahrzeug Auswahl
%s %s ausgewählt.
+ %s %s wurde nicht ausgewählt.
%s %s gelöscht.
%s %s wurde hinzugefügt und als mein Auto ausgewählt.
%s %s wurde hinzugefügt.
diff --git a/org.envirocar.app/res/values/car_list_item_options.xml b/org.envirocar.app/res/values/car_list_item_options.xml
index 663e8fb7a..491902aab 100644
--- a/org.envirocar.app/res/values/car_list_item_options.xml
+++ b/org.envirocar.app/res/values/car_list_item_options.xml
@@ -25,7 +25,8 @@
- Select Car
-
+
- Delete Car
+ - Deselect Car
\ No newline at end of file
diff --git a/org.envirocar.app/res/values/strings_car_selection.xml b/org.envirocar.app/res/values/strings_car_selection.xml
index 61d035625..0381227b1 100644
--- a/org.envirocar.app/res/values/strings_car_selection.xml
+++ b/org.envirocar.app/res/values/strings_car_selection.xml
@@ -27,6 +27,7 @@
Select a Car
%s %s has been selected as my car.
+ %s %s has been deselected.
%s %s has been deleted.
%s %s has been added and selected as my car.
%s %s has been added to the list.
diff --git a/org.envirocar.app/src/org/envirocar/app/handler/preferences/CarPreferenceHandler.java b/org.envirocar.app/src/org/envirocar/app/handler/preferences/CarPreferenceHandler.java
index d4678aefc..29e498fb4 100644
--- a/org.envirocar.app/src/org/envirocar/app/handler/preferences/CarPreferenceHandler.java
+++ b/org.envirocar.app/src/org/envirocar/app/handler/preferences/CarPreferenceHandler.java
@@ -265,7 +265,35 @@ public boolean removeCar(Car car) {
flushCarListState();
return true;
}
+ /**
+ *
+ * @param car the car to deselect from the shared preferences.
+ * @return true if the car has been successfully deselected.
+ */
+ public boolean deselectCar(Car car) {
+ LOG.info(String.format("deselectCar(%s %s)", car.getManufacturer(), car.getModel()));
+
+ // If the car type equals the selected car, then set it to null and fire an event on the
+ // event bus.
+ if (mSelectedCar != null && mSelectedCar.equals(car)) {
+ LOG.info(String.format("%s %s equals the selected car type.",
+ car.getManufacturer(), car.getModel()));
+
+ // Set the selected car to null and flush the car state.
+ mSelectedCar = null;
+ flushSelectedCarState();
+ mBus.post(new NewCarTypeSelectedEvent(null));
+ }
+
+ // Return false when the car is not contained in the set.
+ if (!mDeserialzedCars.contains(car))
+ return false;
+
+ // Finally flush the state to shared preferences
+ flushCarListState();
+ return true;
+ }
/**
* Returns true if there already are some cars created.
*
diff --git a/org.envirocar.app/src/org/envirocar/app/views/carselection/CarSelectionActivity.java b/org.envirocar.app/src/org/envirocar/app/views/carselection/CarSelectionActivity.java
index be71920f3..f0d3166c1 100644
--- a/org.envirocar.app/src/org/envirocar/app/views/carselection/CarSelectionActivity.java
+++ b/org.envirocar.app/src/org/envirocar/app/views/carselection/CarSelectionActivity.java
@@ -239,6 +239,17 @@ public void onSelectCar(Car car) {
}
}
+ @Override
+ public void onDeselectCar(Car car){
+ Car selectedCar = mCarManager.getCar();
+ mCarManager.deselectCar(car);
+ mCarListAdapter.notifyDataSetChanged();
+
+ // Show Snackbar.
+ showSnackbar(String.format(getString(R.string.car_selection_car_deselected),
+ car.getManufacturer(), car.getModel()));
+ }
+
@Override
public void onDeleteCar(Car car) {
LOG.info(String.format("onDeleteCar(%s %s %s %s)",
diff --git a/org.envirocar.app/src/org/envirocar/app/views/carselection/CarSelectionListAdapter.java b/org.envirocar.app/src/org/envirocar/app/views/carselection/CarSelectionListAdapter.java
index ffbab5c30..466c72fe8 100644
--- a/org.envirocar.app/src/org/envirocar/app/views/carselection/CarSelectionListAdapter.java
+++ b/org.envirocar.app/src/org/envirocar/app/views/carselection/CarSelectionListAdapter.java
@@ -57,12 +57,20 @@ public interface OnCarListActionCallback {
*/
void onSelectCar(Car car);
+ /**
+ * Called whenever a car should be deselected.
+ *
+ * @param car the selected car.
+ */
+ void onDeselectCar(Car car);
+
/**
* Called whenever a car should be deleted.
*
* @param car the selected car.
*/
void onDeleteCar(Car car);
+
}
/**
@@ -144,7 +152,7 @@ public View getView(int position, View convertView, ViewGroup parent) {
Resources res = getContext().getResources();
String[] state;
if (mSelectedCar != null && mSelectedCar.equals(car)) {
- state = res.getStringArray(R.array.car_list_option_item_Delete_car);
+ state = res.getStringArray(R.array.selected_car_list_option_items);
}
else{
state = res.getStringArray(R.array.car_list_option_items);
@@ -168,8 +176,15 @@ public View getView(int position, View convertView, ViewGroup parent) {
mCallback.onDeleteCar(car);
break;
case 1:
+ // deselect the car if its selected
if(car.equals(mSelectedCar))
+ {
+ mSelectedCar = null;
+ mSelectedButton.setChecked(false);
+ mSelectedButton= null;
+ mCallback.onDeselectCar(car);
return;
+ }
// Uncheck the currently checked car.
if (mSelectedButton != null) {