diff --git a/mobile/com.sap.sailing.racecommittee.app/res/layout/wind_list_item.xml b/mobile/com.sap.sailing.racecommittee.app/res/layout/wind_list_item.xml
deleted file mode 100644
index 779a62e9557..00000000000
--- a/mobile/com.sap.sailing.racecommittee.app/res/layout/wind_list_item.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
\ No newline at end of file
diff --git a/mobile/com.sap.sailing.racecommittee.app/res/layout/wind_multiple_dialog.xml b/mobile/com.sap.sailing.racecommittee.app/res/layout/wind_multiple_dialog.xml
deleted file mode 100644
index 71816ba4982..00000000000
--- a/mobile/com.sap.sailing.racecommittee.app/res/layout/wind_multiple_dialog.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/WindFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/WindFragment.java
index 6fffd92452e..3f71c638315 100644
--- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/WindFragment.java
+++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/WindFragment.java
@@ -1,5 +1,12 @@
package com.sap.sailing.racecommittee.app.ui.fragments.raceinfo;
+import java.lang.ref.WeakReference;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
+
import android.annotation.SuppressLint;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -18,12 +25,9 @@ import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
-import android.widget.AdapterView;
-import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
-import android.widget.ListView;
import android.widget.NumberPicker;
import android.widget.TextView;
@@ -34,7 +38,6 @@ import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
import com.sap.sailing.android.shared.logging.ExLog;
import com.sap.sailing.android.shared.util.AppUtils;
-import com.sap.sailing.android.shared.util.ScreenHelper;
import com.sap.sailing.android.shared.util.ViewHelper;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Position;
@@ -63,13 +66,6 @@ import com.sap.sailing.racecommittee.app.utils.WindHelper;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.impl.MillisecondsTimePoint;
-import java.lang.ref.WeakReference;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Locale;
-
public class WindFragment extends BaseFragment implements CompassDirectionListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener, OnRaceUpdatedListener {
private final static String TAG = WindFragment.class.getName();
@@ -534,8 +530,31 @@ public class WindFragment extends BaseFragment implements CompassDirectionListen
}
private void showWindDialog() {
+ ArrayList races = new ArrayList<>();
+ for (ManagedRace race : mManagedRaces) {
+ races.add(RaceHelper.getShortReverseRaceName(race, " / ", getRace()));
+ }
+ mSelectedRaces.clear();
+ mSelectedRaces.addAll(RaceHelper.getPreSelectedRaces(mRacesByGroup, getRace()));
+ boolean[] selected = new boolean[mManagedRaces.size()];
+ for (int i = 0; i < mManagedRaces.size(); i++) {
+ selected[i] = mSelectedRaces.contains(mManagedRaces.get(i));
+ }
+
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AppTheme_AlertDialog);
builder.setTitle(getString(R.string.wind_select_race));
+ builder.setMultiChoiceItems(races.toArray(new String[races.size()]), selected, new DialogInterface.OnMultiChoiceClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which, boolean isChecked) {
+ ManagedRace race = mManagedRaces.get(which);
+ if (mSelectedRaces.contains(race)) {
+ mSelectedRaces.remove(race);
+ }
+ if (isChecked) {
+ mSelectedRaces.add(race);
+ }
+ }
+ });
builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
@@ -544,75 +563,10 @@ public class WindFragment extends BaseFragment implements CompassDirectionListen
}
}
});
- builder.setNegativeButton(R.string.cancel, null);
- builder.setView(setupDialogView());
+ builder.setNegativeButton(android.R.string.cancel, null);
builder.show();
}
- private View setupDialogView() {
- LayoutInflater inflater = LayoutInflater.from(getActivity());
- View view = inflater.inflate(R.layout.wind_multiple_dialog, null);
- ListView racesList = (ListView) view.findViewById(R.id.wind_races_list);
- racesList.setAdapter(new WindAdapter(getActivity(), mManagedRaces));
- racesList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
- racesList.setOnItemClickListener(new ItemClickListener());
- preselectRacesInDialog(racesList);
-
- ViewGroup.LayoutParams layoutParams = racesList.getLayoutParams();
- layoutParams.height = 49 * mManagedRaces.size();
- int screenHeight = (int) (ScreenHelper.on(getActivity()).getScreenHeight() * 0.65);
- if (layoutParams.height > screenHeight) {
- layoutParams.height = screenHeight;
- }
- view.setLayoutParams(layoutParams);
-
- return view;
- }
-
- private void preselectRacesInDialog(ListView racesList) {
- mSelectedRaces.clear();
- mSelectedRaces.addAll(RaceHelper.getPreSelectedRaces(mRacesByGroup, getRace()));
- for (int index = 0; index < mManagedRaces.size(); index++) {
- ManagedRace race = mManagedRaces.get(index);
- if (race != null) {
- racesList.setItemChecked(index, mSelectedRaces.contains(race));
- }
- }
- }
-
- private static class WindAdapter extends ArrayAdapter {
-
- public WindAdapter(Context context, List races) {
- super(context, R.layout.wind_list_item, wrap(races));
- }
-
- private static List wrap(List races) {
- List wrapped = new ArrayList<>();
- for (ManagedRace race : races) {
- wrapped.add(new ManagedRaceItem(race));
- }
- return wrapped;
- }
-
- }
-
- private static class ManagedRaceItem {
-
- private RaceGroupSeriesFleet group;
- private ManagedRace race;
-
- public ManagedRaceItem(ManagedRace race) {
- this.race = race;
- this.group = new RaceGroupSeriesFleet(race);
- }
-
- @Override
- public String toString() {
- return String.format("%s - %s", group.getDisplayName(true), race.getRaceName());
- }
-
- }
-
private static class IsTrackedReceiver extends BroadcastReceiver {
private WeakReference