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 75b62f836df..a89e6e03a88 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 @@ -3,33 +3,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.Collections; +import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; - -import android.annotation.SuppressLint; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.IntentFilter; -import android.location.Location; -import android.os.Bundle; -import android.support.annotation.ColorInt; -import android.support.v4.content.LocalBroadcastManager; -import android.support.v7.app.AlertDialog; -import android.text.InputFilter; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.webkit.WebSettings; -import android.webkit.WebView; -import android.widget.Button; -import android.widget.EditText; -import android.widget.ImageView; -import android.widget.NumberPicker; -import android.widget.TextView; +import java.util.Set; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.api.GoogleApiClient; @@ -39,7 +18,10 @@ 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.ViewHelper; +import com.sap.sailing.domain.base.racegroup.CurrentRaceComparator; +import com.sap.sailing.domain.base.racegroup.CurrentRaceFilter; import com.sap.sailing.domain.base.racegroup.RaceGroupSeriesFleet; +import com.sap.sailing.domain.base.racegroup.impl.CurrentRaceFilterImpl; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SpeedWithBearing; @@ -64,8 +46,33 @@ import com.sap.sailing.racecommittee.app.utils.ThemeHelper; import com.sap.sailing.racecommittee.app.utils.TimeUtils; import com.sap.sailing.racecommittee.app.utils.WindHelper; import com.sap.sse.common.TimePoint; +import com.sap.sse.common.Util; import com.sap.sse.common.impl.MillisecondsTimePoint; +import android.annotation.SuppressLint; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.IntentFilter; +import android.location.Location; +import android.os.Bundle; +import android.support.annotation.ColorInt; +import android.support.v4.content.LocalBroadcastManager; +import android.support.v7.app.AlertDialog; +import android.text.InputFilter; +import android.text.TextUtils; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.webkit.WebSettings; +import android.webkit.WebView; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.NumberPicker; +import android.widget.TextView; + public class WindFragment extends BaseFragment implements CompassDirectionListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener, OnRaceUpdatedListener { private final static String TAG = WindFragment.class.getName(); @@ -415,10 +422,8 @@ public class WindFragment extends BaseFragment implements CompassDirectionListen @Override public void onPause() { super.onPause(); - // disconnect googleApiClient and unregister position poller pauseApiClient(); - LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(mReceiver); sendIntent(AppConstants.INTENT_ACTION_TIME_SHOW); } @@ -427,7 +432,13 @@ public class WindFragment extends BaseFragment implements CompassDirectionListen public void onResume() { super.onResume(); mRacesByGroup = ((RacingActivity) getActivity()).getRacesByGroup(); - mManagedRaces = RaceHelper.getManagedRacesAsList(mRacesByGroup, getRace()); + final Set allRaces = new HashSet<>(); + for (final Iterable racesInGroup : mRacesByGroup.values()) { + Util.addAll(racesInGroup, allRaces); + } + final CurrentRaceFilter raceFilter = new CurrentRaceFilterImpl<>(allRaces); + mManagedRaces = new ArrayList<>(raceFilter.getCurrentRaces()); + Collections.sort(mManagedRaces, new CurrentRaceComparator()); mSelectedRaces = new ArrayList<>(); sendIntent(AppConstants.INTENT_ACTION_TIME_HIDE); // connect googleApiClient and register position poller @@ -523,10 +534,10 @@ public class WindFragment extends BaseFragment implements CompassDirectionListen 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)); + int i=0; + for (final ManagedRace r : mManagedRaces) { + selected[i++] = mSelectedRaces.contains(r); } - 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() { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/utils/RaceHelper.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/utils/RaceHelper.java index 2b0129ccf28..5a5408834f7 100755 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/utils/RaceHelper.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/utils/RaceHelper.java @@ -91,9 +91,6 @@ public class RaceHelper { if (maxElements == 2 && seriesName.equals(getSeriesName(race2.getSeries(), delimiter))) { maxElements -= 1; } - if (maxElements == 1 && fleetName.equals(getFleetName(race2.getFleet(), delimiter))) { - maxElements -= 1; - } if (maxElements >= 1) { raceName += fleetName; } @@ -160,12 +157,10 @@ public class RaceHelper { public static String getSeriesName(@Nullable SeriesBase series, @Nullable String delimiter) { delimiter = getDefaultDelimiter(delimiter); - String seriesName = ""; if (series != null && !LeaderboardNameConstants.DEFAULT_SERIES_NAME.equals(series.getName())) { seriesName = delimiter + series.getName(); } - return seriesName; } @@ -175,12 +170,10 @@ public class RaceHelper { public static String getFleetName(@Nullable Fleet fleet, @Nullable String delimiter) { delimiter = getDefaultDelimiter(delimiter); - String fleetName = ""; if (fleet != null && !LeaderboardNameConstants.DEFAULT_FLEET_NAME.equals(fleet.getName())) { fleetName = delimiter + fleet.getName(); } - return fleetName; }