Merge remote-tracking branch 'origin/bug3916'
No files matched your search
@@ -16,7 +16,7 @@
|
||||
<string name="preference_energy_saving_sending_interval_summary">Choose a value as high as possible to preserve battery life while still maintaining a reasonable live experience, depending on your use case.</string>
|
||||
|
||||
<string name="preference_energy_saving_sending_interval_message">GPS updates will be sent to the server%1$s %2$s.</string>
|
||||
<string name="preference_energy_saving_sending_interval_message_key">msgSndIntMessage</string>
|
||||
<string name="preference_energy_saving_sending_interval_message_key" translatable="false">msgSndIntMessage</string>
|
||||
<string name="preference_energy_saving_sending_interval_message_every">every</string>
|
||||
<string-array name="preference_energy_saving_sending_interval_entries">
|
||||
<item>immediately</item>
|
||||
|
||||
|
After Width: | Height: | Size: 490 B |
|
After Width: | Height: | Size: 625 B |
|
After Width: | Height: | Size: 758 B |
|
After Width: | Height: | Size: 1020 B |
|
After Width: | Height: | Size: 356 B |
|
After Width: | Height: | Size: 490 B |
|
After Width: | Height: | Size: 586 B |
|
After Width: | Height: | Size: 758 B |
|
After Width: | Height: | Size: 586 B |
|
After Width: | Height: | Size: 758 B |
|
After Width: | Height: | Size: 941 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 758 B |
|
After Width: | Height: | Size: 1020 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 941 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
@@ -199,7 +199,7 @@
|
||||
<string name="gate_launch_stops_after">Gate Launch stoppt nach %dmin</string>
|
||||
<string name="override_default_course_designer_type_select_header">Kursdesigner</string>
|
||||
<string name="settings_course_designer_by_name_course_names_header">Kursnamen</string>
|
||||
<string name="preference_racing_procedure_rrs26_startmode_flags_header">Startmodus Flaggen</string>
|
||||
<string name="preference_racing_procedure_startmode_flags_header">Startmodus Flaggen</string>
|
||||
<string name="preference_racing_procedure_classflag_header">Klassenflagge</string>
|
||||
<string name="preference_racing_procedure_hasxray_header">Einzelrückruf</string>
|
||||
<string name="preference_racing_procedure_hasxray_description">Diese Option aktiviert den Einzelrückruf</string>
|
||||
|
||||
@@ -61,6 +61,19 @@
|
||||
<item>UNIFORM</item>
|
||||
<item>ZULU</item>
|
||||
</string-array>
|
||||
<string name="preference_racing_procedure_swc_classflag_key" translatable="false">swcClassFlag</string>
|
||||
<string name="preference_racing_procedure_swc_hasxray_key" translatable="false">swcIndividualRecall</string>
|
||||
<bool name="preference_racing_procedure_swc_hasxray_default">true</bool>
|
||||
<string name="preference_racing_procedure_swc_resultentryenabled_key" translatable="false">swcResultEntryEnabled</string>
|
||||
<bool name="preference_racing_procedure_swc_resultentryenabled_default">false</bool>
|
||||
<string name="preference_racing_procedure_swc_startmode_flags_key" translatable="false">swcStartmodeFlags</string>
|
||||
<string-array name="preference_racing_procedure_swc_startmode_flags_default">
|
||||
<item>PAPA</item>
|
||||
<item>INDIA</item>
|
||||
<item>BLACK</item>
|
||||
<item>UNIFORM</item>
|
||||
<item>ZULU</item>
|
||||
</string-array>
|
||||
<string name="preference_racing_procedure_gatestart_classflag_key" translatable="false">gateStartClassFlag</string>
|
||||
<string name="preference_racing_procedure_gatestart_hasxray_key" translatable="false">gateStartIndividualRecall</string>
|
||||
<bool name="preference_racing_procedure_gatestart_hasxray_default">false</bool>
|
||||
|
||||
@@ -207,7 +207,7 @@
|
||||
<string name="settings_category_course_designer">Course Designer Configuration</string>
|
||||
<string name="override_default_course_designer_type_select_header">Course Designer Type</string>
|
||||
<string name="settings_course_designer_by_name_course_names_header">Course Names</string>
|
||||
<string name="preference_racing_procedure_rrs26_startmode_flags_header">Startmode Flags</string>
|
||||
<string name="preference_racing_procedure_startmode_flags_header">Startmode Flags</string>
|
||||
<string name="preference_racing_procedure_classflag_header">Class Flag</string>
|
||||
<string name="preference_racing_procedure_hasxray_header">Individual Recall</string>
|
||||
<string name="preference_racing_procedure_hasxray_description">Activate this option to enable individual recall</string>
|
||||
|
||||
@@ -72,7 +72,35 @@
|
||||
android:defaultValue="@array/preference_racing_procedure_rrs26_startmode_flags_default"
|
||||
android:key="@string/preference_racing_procedure_rrs26_startmode_flags_key"
|
||||
android:summary="@string/empty"
|
||||
android:title="@string/preference_racing_procedure_rrs26_startmode_flags_header" />
|
||||
android:title="@string/preference_racing_procedure_startmode_flags_header" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory android:title="SWC Start">
|
||||
|
||||
<ListPreference
|
||||
android:defaultValue="@string/preference_racing_procedure_classflag_default"
|
||||
android:key="@string/preference_racing_procedure_swc_classflag_key"
|
||||
android:summary="@string/empty"
|
||||
android:title="@string/preference_racing_procedure_classflag_header" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="@bool/preference_racing_procedure_swc_hasxray_default"
|
||||
android:key="@string/preference_racing_procedure_swc_hasxray_key"
|
||||
android:summary="@string/preference_racing_procedure_hasxray_description"
|
||||
android:title="@string/preference_racing_procedure_hasxray_header" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="@bool/preference_racing_procedure_swc_resultentryenabled_default"
|
||||
android:key="@string/preference_racing_procedure_swc_resultentryenabled_key"
|
||||
android:summary="@string/preference_racing_procedure_resultentryenabled_description"
|
||||
android:title="@string/preference_racing_procedure_resultentryenabled_header"/>
|
||||
|
||||
<com.sap.sailing.racecommittee.app.ui.views.FixedMultiSelectListPreference
|
||||
android:defaultValue="@array/preference_racing_procedure_swc_startmode_flags_default"
|
||||
android:key="@string/preference_racing_procedure_swc_startmode_flags_key"
|
||||
android:summary="@string/empty"
|
||||
android:title="@string/preference_racing_procedure_startmode_flags_header" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
|
||||
@@ -223,6 +223,8 @@ public class AppPreferences {
|
||||
switch (type) {
|
||||
case RRS26:
|
||||
return key(R.string.preference_racing_procedure_rrs26_classflag_key);
|
||||
case SWC:
|
||||
return key(R.string.preference_racing_procedure_swc_classflag_key);
|
||||
case GateStart:
|
||||
return key(R.string.preference_racing_procedure_gatestart_classflag_key);
|
||||
case ESS:
|
||||
@@ -245,6 +247,8 @@ public class AppPreferences {
|
||||
switch (type) {
|
||||
case RRS26:
|
||||
return key(R.string.preference_racing_procedure_rrs26_hasxray_key);
|
||||
case SWC:
|
||||
return key(R.string.preference_racing_procedure_swc_hasxray_key);
|
||||
case GateStart:
|
||||
return key(R.string.preference_racing_procedure_gatestart_hasxray_key);
|
||||
case ESS:
|
||||
@@ -267,6 +271,8 @@ public class AppPreferences {
|
||||
switch (type) {
|
||||
case RRS26:
|
||||
return key(R.string.preference_racing_procedure_rrs26_resultentryenabled_key);
|
||||
case SWC:
|
||||
return key(R.string.preference_racing_procedure_swc_resultentryenabled_key);
|
||||
case GateStart:
|
||||
return key(R.string.preference_racing_procedure_gatestart_resultentryenabled_key);
|
||||
case ESS:
|
||||
@@ -289,6 +295,15 @@ public class AppPreferences {
|
||||
return flags;
|
||||
}
|
||||
|
||||
public Set<Flags> getSWCStartmodeFlags() {
|
||||
Set<String> flagNames = helper.getStringSet(key(R.string.preference_racing_procedure_swc_startmode_flags_key), new HashSet<String>());
|
||||
Set<Flags> flags = new HashSet<>();
|
||||
for (String flagName : flagNames) {
|
||||
flags.add(Flags.valueOf(flagName));
|
||||
}
|
||||
return flags;
|
||||
}
|
||||
|
||||
public String getServerBaseURL() {
|
||||
return helper.getString(key(R.string.preference_server_url_key), null);
|
||||
}
|
||||
@@ -423,6 +438,14 @@ public class AppPreferences {
|
||||
helper.getEditor().putStringSet(key(R.string.preference_racing_procedure_rrs26_startmode_flags_key), flagNames).commit();
|
||||
}
|
||||
|
||||
public void setSWCStartmodeFlags(Set<Flags> flags) {
|
||||
Set<String> flagNames = new HashSet<>();
|
||||
for (Flags flag : flags) {
|
||||
flagNames.add(flag.name());
|
||||
}
|
||||
helper.getEditor().putStringSet(key(R.string.preference_racing_procedure_swc_startmode_flags_key), flagNames).commit();
|
||||
}
|
||||
|
||||
public void setSendingActive(boolean activate) {
|
||||
ExLog.i(context, this.getClass().toString(), "setSendingActive: " + activate);
|
||||
helper.getEditor().putBoolean(context.getResources().getString(R.string.preference_isSendingActive_key), activate).commit();
|
||||
|
||||
@@ -13,11 +13,12 @@ import com.sap.sailing.domain.base.configuration.impl.LeagueConfigurationImpl;
|
||||
import com.sap.sailing.domain.base.configuration.impl.RRS26ConfigurationImpl;
|
||||
import com.sap.sailing.domain.base.configuration.impl.RacingProcedureConfigurationImpl;
|
||||
import com.sap.sailing.domain.base.configuration.impl.RegattaConfigurationImpl;
|
||||
import com.sap.sailing.domain.base.configuration.impl.SWCConfigurationImpl;
|
||||
import com.sap.sailing.domain.base.configuration.procedures.ESSConfiguration;
|
||||
import com.sap.sailing.domain.base.configuration.procedures.GateStartConfiguration;
|
||||
import com.sap.sailing.domain.base.configuration.procedures.LeagueConfiguration;
|
||||
import com.sap.sailing.domain.base.configuration.procedures.RRS26Configuration;
|
||||
import com.sap.sailing.domain.common.racelog.Flags;
|
||||
import com.sap.sailing.domain.base.configuration.procedures.SWCConfiguration;
|
||||
import com.sap.sailing.domain.common.racelog.RacingProcedureType;
|
||||
import com.sap.sailing.racecommittee.app.AppPreferences;
|
||||
|
||||
@@ -52,9 +53,16 @@ public class PreferencesRegattaConfigurationLoader implements ConfigurationLoade
|
||||
rrs26.setClassFlag(preferences.getRacingProcedureClassFlag(RacingProcedureType.RRS26));
|
||||
rrs26.setHasIndividualRecall(preferences.getRacingProcedureHasIndividualRecall(RacingProcedureType.RRS26));
|
||||
rrs26.setResultEntryEnabled(preferences.getRacingProcedureIsResultEntryEnabled(RacingProcedureType.RRS26));
|
||||
rrs26.setStartModeFlags(new ArrayList<Flags>(preferences.getRRS26StartmodeFlags()));
|
||||
rrs26.setStartModeFlags(new ArrayList<>(preferences.getRRS26StartmodeFlags()));
|
||||
configuration.setRRS26Configuration(rrs26);
|
||||
|
||||
SWCConfigurationImpl swcStart = new SWCConfigurationImpl();
|
||||
swcStart.setClassFlag(preferences.getRacingProcedureClassFlag(RacingProcedureType.SWC));
|
||||
swcStart.setHasIndividualRecall(preferences.getRacingProcedureHasIndividualRecall(RacingProcedureType.SWC));
|
||||
swcStart.setResultEntryEnabled(preferences.getRacingProcedureIsResultEntryEnabled(RacingProcedureType.SWC));
|
||||
swcStart.setStartModeFlags(new ArrayList<>(preferences.getSWCStartmodeFlags()));
|
||||
configuration.setSWCConfiguration(swcStart);
|
||||
|
||||
GateStartConfigurationImpl gateStart = new GateStartConfigurationImpl();
|
||||
gateStart.setClassFlag(preferences.getRacingProcedureClassFlag(RacingProcedureType.GateStart));
|
||||
gateStart.setHasIndividualRecall(preferences.getRacingProcedureHasIndividualRecall(RacingProcedureType.GateStart));
|
||||
@@ -100,9 +108,17 @@ public class PreferencesRegattaConfigurationLoader implements ConfigurationLoade
|
||||
RRS26Configuration config = configuration.getRRS26Configuration();
|
||||
storeRacingProcedureConfiguration(RacingProcedureType.RRS26, config);
|
||||
if (config.getStartModeFlags() != null) {
|
||||
preferences.setRRS26StartmodeFlags(new HashSet<Flags>(config.getStartModeFlags()));
|
||||
preferences.setRRS26StartmodeFlags(new HashSet<>(config.getStartModeFlags()));
|
||||
}
|
||||
}
|
||||
if (configuration.getSWCConfiguration() != null) {
|
||||
SWCConfiguration config = configuration.getSWCConfiguration();
|
||||
storeRacingProcedureConfiguration(RacingProcedureType.SWC, config);
|
||||
if (config.getStartModeFlags() != null) {
|
||||
preferences.setSWCStartmodeFlags(new HashSet<>(config.getStartModeFlags()));
|
||||
}
|
||||
}
|
||||
|
||||
if (configuration.getGateStartConfiguration() != null) {
|
||||
GateStartConfiguration config = configuration.getGateStartConfiguration();
|
||||
storeRacingProcedureConfiguration(RacingProcedureType.GateStart, config);
|
||||
|
||||
@@ -18,10 +18,7 @@ import com.sap.sailing.android.shared.logging.ExLog;
|
||||
import com.sap.sailing.android.shared.util.ViewHelper;
|
||||
import com.sap.sailing.racecommittee.app.AppConstants;
|
||||
import com.sap.sailing.racecommittee.app.R;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.CourseFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.LineStartModeFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.PhotoListFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.StartProcedureFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.TrackingListFragment;
|
||||
|
||||
public class FinishedButtonFragment extends BasePanelFragment {
|
||||
@@ -110,17 +107,17 @@ public class FinishedButtonFragment extends BasePanelFragment {
|
||||
private void uncheckMarker(View view) {
|
||||
if (isAdded() && view != null) {
|
||||
if (!view.equals(mRecord)) {
|
||||
resetFragment(null, getFrameId(getActivity(), R.id.race_edit, R.id.race_content, false), StartProcedureFragment.class);
|
||||
// TODO
|
||||
setMarkerLevel(mRecord, R.id.record_marker, LEVEL_NORMAL);
|
||||
}
|
||||
|
||||
if (!view.equals(mPhoto)) {
|
||||
resetFragment(null, getFrameId(getActivity(), R.id.race_edit, R.id.race_content, false), LineStartModeFragment.class);
|
||||
resetFragment(null, getFrameId(getActivity(), R.id.race_edit, R.id.race_content, false), PhotoListFragment.class);
|
||||
setMarkerLevel(mPhoto, R.id.photo_marker, LEVEL_NORMAL);
|
||||
}
|
||||
|
||||
if (!view.equals(mList)) {
|
||||
resetFragment(null, getFrameId(getActivity(), R.id.race_edit, R.id.race_content, false), CourseFragment.class);
|
||||
resetFragment(null, getFrameId(getActivity(), R.id.race_edit, R.id.race_content, false), TrackingListFragment.class);
|
||||
setMarkerLevel(mList, R.id.list_marker, LEVEL_NORMAL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,436 +0,0 @@
|
||||
package com.sap.sailing.racecommittee.app.ui.fragments.panels;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
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.abstractlog.race.state.ReadonlyRaceState;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.impl.BaseRaceStateChangedListener;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.RacingProcedure;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.ReadonlyRacingProcedure;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.gate.GateStartRacingProcedure;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.impl.BaseRacingProcedureChangedListener;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.rrs26.RRS26RacingProcedure;
|
||||
import com.sap.sailing.racecommittee.app.AppConstants;
|
||||
import com.sap.sailing.racecommittee.app.R;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.GateStartPathFinderFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.GateStartTimingFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.LineStartModeFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.utils.FlagsResources;
|
||||
import com.sap.sailing.racecommittee.app.utils.RaceHelper;
|
||||
|
||||
public class MorePanelFragment extends BasePanelFragment {
|
||||
|
||||
private RaceStateChangedListener mStateListener;
|
||||
private RaceProcedureChangedListener mProcedureListener;
|
||||
private IntentReceiver mReceiver;
|
||||
|
||||
// Start Mode Toggle
|
||||
private View mStartMode;
|
||||
private View mStartModeLock;
|
||||
private ImageView mStartModeFlag;
|
||||
private View mStartModeLayer;
|
||||
|
||||
// Gate Start PathFinder
|
||||
private View mGatePathfinder;
|
||||
private View mGatePathfinderLock;
|
||||
private TextView mGatePathfinderValue;
|
||||
private View mGatePathfinderLayer;
|
||||
|
||||
// Gate Start Timing
|
||||
private View mGateTiming;
|
||||
private View mGateTimingLock;
|
||||
private TextView mGateTimingValue;
|
||||
private View mGateTimingLayer;
|
||||
|
||||
public MorePanelFragment() {
|
||||
mReceiver = new IntentReceiver();
|
||||
}
|
||||
|
||||
public static MorePanelFragment newInstance(Bundle args) {
|
||||
MorePanelFragment fragment = new MorePanelFragment();
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
View layout = inflater.inflate(R.layout.race_panel_more, container, false);
|
||||
|
||||
mStateListener = new RaceStateChangedListener();
|
||||
mProcedureListener = new RaceProcedureChangedListener();
|
||||
|
||||
mStartMode = ViewHelper.get(layout, R.id.start_mode);
|
||||
if (mStartMode != null) {
|
||||
mStartMode.setOnClickListener(new StartModeClick());
|
||||
}
|
||||
mStartModeLock = ViewHelper.get(layout, R.id.start_mode_lock);
|
||||
mStartModeFlag = ViewHelper.get(layout, R.id.start_mode_flag);
|
||||
mStartModeLayer = ViewHelper.get(layout, R.id.start_mode_layer);
|
||||
|
||||
mGatePathfinder = ViewHelper.get(layout, R.id.gate_pathfinder);
|
||||
if (mGatePathfinder != null) {
|
||||
mGatePathfinder.setOnClickListener(new PathfinderClick());
|
||||
}
|
||||
mGatePathfinderLock = ViewHelper.get(layout, R.id.gate_pathfinder_lock);
|
||||
mGatePathfinderValue = ViewHelper.get(layout, R.id.gate_pathfinder_value);
|
||||
mGatePathfinderLayer = ViewHelper.get(layout, R.id.gate_pathfinder_layer);
|
||||
|
||||
mGateTiming = ViewHelper.get(layout, R.id.gate_timing);
|
||||
if (mGateTiming != null) {
|
||||
mGateTiming.setOnClickListener(new TimingClick());
|
||||
}
|
||||
mGateTimingLock = ViewHelper.get(layout, R.id.gate_timing_lock);
|
||||
mGateTimingValue = ViewHelper.get(layout, R.id.gate_timing_value);
|
||||
mGateTimingLayer = ViewHelper.get(layout, R.id.gate_timing_layer);
|
||||
|
||||
View view = ViewHelper.get(layout, R.id.top_line);
|
||||
if (view != null && AppUtils.with(getActivity()).isPort()) {
|
||||
view.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
return layout;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
|
||||
refreshPanel();
|
||||
checkStatus();
|
||||
|
||||
getRaceState().addChangedListener(mStateListener);
|
||||
getRaceState().getRacingProcedure().addChangedListener(mProcedureListener);
|
||||
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.addAction(AppConstants.INTENT_ACTION_TOGGLE);
|
||||
filter.addAction(AppConstants.INTENT_ACTION_CLEAR_TOGGLE);
|
||||
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(mReceiver, filter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
|
||||
getRaceState().removeChangedListener(mStateListener);
|
||||
getRaceState().getRacingProcedure().removeChangedListener(mProcedureListener);
|
||||
|
||||
LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(mReceiver);
|
||||
}
|
||||
|
||||
private void refreshPanel() {
|
||||
RacingProcedure procedure = getRaceState().getRacingProcedure();
|
||||
if (procedure instanceof RRS26RacingProcedure) {
|
||||
RRS26RacingProcedure typedProcedure = getRaceState().getTypedRacingProcedure();
|
||||
if (mStartMode != null && mStartModeFlag != null) {
|
||||
mStartMode.setVisibility(View.VISIBLE);
|
||||
mStartModeFlag.setImageDrawable(FlagsResources
|
||||
.getFlagDrawable(getActivity(), typedProcedure.getStartModeFlag().name(), getResources().getInteger(R.integer.flag_size)));
|
||||
}
|
||||
}
|
||||
|
||||
if (procedure instanceof GateStartRacingProcedure) {
|
||||
GateStartRacingProcedure typedProcedure = getRaceState().getTypedRacingProcedure();
|
||||
if (mGatePathfinder != null && mGatePathfinderValue != null) {
|
||||
mGatePathfinder.setVisibility(View.VISIBLE);
|
||||
mGatePathfinderValue.setText(typedProcedure.getPathfinder());
|
||||
}
|
||||
|
||||
if (mGateTiming != null && mGateTimingValue != null) {
|
||||
mGateTiming.setVisibility(View.VISIBLE);
|
||||
mGateTimingValue.setText(RaceHelper.getGateTiming(getActivity(), typedProcedure, getRace().getRaceGroup()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void checkStatus() {
|
||||
switch (getRace().getStatus()) {
|
||||
case UNSCHEDULED:
|
||||
changeVisibility(mStartModeLock, mStartModeLayer, View.GONE);
|
||||
changeVisibility(mGatePathfinderLock, mGatePathfinderLayer, View.GONE);
|
||||
changeVisibility(mGateTimingLock, mGateTimingLayer, View.GONE);
|
||||
break;
|
||||
|
||||
case PRESCHEDULED:
|
||||
changeVisibility(mStartModeLock, mStartModeLayer, View.GONE);
|
||||
changeVisibility(mGatePathfinderLock, mGatePathfinderLayer, View.GONE);
|
||||
changeVisibility(mGateTimingLock, mGateTimingLayer, View.GONE);
|
||||
break;
|
||||
|
||||
case SCHEDULED:
|
||||
changeVisibility(mStartModeLock, mStartModeLayer, View.GONE);
|
||||
changeVisibility(mGatePathfinderLock, mGatePathfinderLayer, View.GONE);
|
||||
changeVisibility(mGateTimingLock, mGateTimingLayer, View.GONE);
|
||||
break;
|
||||
|
||||
case STARTPHASE:
|
||||
changeVisibility(mStartModeLock, mStartModeLayer, View.VISIBLE);
|
||||
changeVisibility(mGatePathfinderLock, mGatePathfinderLayer, View.VISIBLE);
|
||||
changeVisibility(mGateTimingLock, mGateTimingLayer, View.VISIBLE);
|
||||
break;
|
||||
|
||||
case RUNNING:
|
||||
changeVisibility(mStartModeLock, mStartModeLayer, View.VISIBLE);
|
||||
changeVisibility(mGatePathfinderLock, mGatePathfinderLayer, View.VISIBLE);
|
||||
changeVisibility(mGateTimingLock, mGateTimingLayer, View.VISIBLE);
|
||||
|
||||
uncheckMarker(mStartMode);
|
||||
break;
|
||||
|
||||
case FINISHING:
|
||||
changeVisibility(mStartModeLock, mStartModeLayer, View.VISIBLE);
|
||||
changeVisibility(mGatePathfinderLock, mGatePathfinderLayer, View.VISIBLE);
|
||||
changeVisibility(mGateTimingLock, mGateTimingLayer, View.VISIBLE);
|
||||
|
||||
uncheckMarker(mStartMode);
|
||||
break;
|
||||
|
||||
case FINISHED:
|
||||
changeVisibility(mStartModeLock, mStartModeLayer, View.GONE);
|
||||
changeVisibility(mGatePathfinderLock, mGatePathfinderLayer, View.GONE);
|
||||
changeVisibility(mGateTimingLock, mGateTimingLayer, View.GONE);
|
||||
|
||||
uncheckMarker(mStartMode);
|
||||
break;
|
||||
|
||||
default:
|
||||
changeVisibility(mStartModeLock, mStartModeLayer, View.VISIBLE);
|
||||
changeVisibility(mGatePathfinderLock, mGatePathfinderLayer, View.VISIBLE);
|
||||
changeVisibility(mGateTimingLock, mGateTimingLayer, View.VISIBLE);
|
||||
|
||||
uncheckMarker(mStartMode);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void uncheckMarker(View view) {
|
||||
if (isAdded() && view != null) {
|
||||
if (!AppUtils.with(getActivity()).is10inch()) {
|
||||
if (!view.equals(mStartMode)) {
|
||||
setMarkerLevel(mStartMode, R.id.start_mode_marker, LEVEL_NORMAL);
|
||||
}
|
||||
if (!view.equals(mGatePathfinder)) {
|
||||
setMarkerLevel(mGatePathfinder, R.id.gate_pathfinder_marker, LEVEL_NORMAL);
|
||||
}
|
||||
if (!view.equals(mGateTiming)) {
|
||||
setMarkerLevel(mGateTiming, R.id.gate_timing_marker, LEVEL_NORMAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class RaceStateChangedListener extends BaseRaceStateChangedListener {
|
||||
|
||||
private View mView;
|
||||
|
||||
public RaceStateChangedListener() {
|
||||
mView = new View(getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRacingProcedureChanged(ReadonlyRaceState state) {
|
||||
super.onRacingProcedureChanged(state);
|
||||
|
||||
refreshPanel();
|
||||
uncheckMarker(mView);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCourseDesignChanged(ReadonlyRaceState state) {
|
||||
super.onCourseDesignChanged(state);
|
||||
|
||||
refreshPanel();
|
||||
uncheckMarker(mView);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWindFixChanged(ReadonlyRaceState state) {
|
||||
super.onWindFixChanged(state);
|
||||
|
||||
refreshPanel();
|
||||
uncheckMarker(mView);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStatusChanged(ReadonlyRaceState state) {
|
||||
super.onStatusChanged(state);
|
||||
|
||||
checkStatus();
|
||||
uncheckMarker(mView);
|
||||
}
|
||||
}
|
||||
|
||||
private class RaceProcedureChangedListener extends BaseRacingProcedureChangedListener {
|
||||
|
||||
private View mView;
|
||||
|
||||
public RaceProcedureChangedListener() {
|
||||
mView = new View(getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActiveFlagsChanged(ReadonlyRacingProcedure racingProcedure) {
|
||||
super.onActiveFlagsChanged(racingProcedure);
|
||||
|
||||
refreshPanel();
|
||||
uncheckMarker(mView);
|
||||
}
|
||||
}
|
||||
|
||||
private class StartModeClick implements View.OnClickListener, DialogInterface.OnClickListener {
|
||||
|
||||
private final String TAG = StartModeClick.class.getName();
|
||||
private final View container = mStartMode;
|
||||
private final int markerId = R.id.start_mode_marker;
|
||||
|
||||
public void onClick(View v) {
|
||||
if (mStartModeLock != null) {
|
||||
if (mStartModeLock.getVisibility() == View.VISIBLE && isNormal(container, markerId)) {
|
||||
showChangeDialog(this);
|
||||
} else {
|
||||
toggleFragment();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
toggleFragment();
|
||||
}
|
||||
|
||||
private void toggleFragment() {
|
||||
sendIntent(AppConstants.INTENT_ACTION_TOGGLE, AppConstants.INTENT_ACTION_EXTRA, AppConstants.INTENT_ACTION_TOGGLE_PROCEDURE_MORE_MODE);
|
||||
switch (toggleMarker(container, markerId)) {
|
||||
case LEVEL_NORMAL:
|
||||
sendIntent(AppConstants.INTENT_ACTION_SHOW_MAIN_CONTENT);
|
||||
break;
|
||||
|
||||
case LEVEL_TOGGLED:
|
||||
replaceFragment(LineStartModeFragment.newInstance(LineStartModeFragment.START_MODE_PLANNED));
|
||||
break;
|
||||
|
||||
default:
|
||||
ExLog.i(getActivity(), TAG, "Unknown return value");
|
||||
}
|
||||
disableToggle(container, markerId);
|
||||
}
|
||||
}
|
||||
|
||||
private class PathfinderClick implements View.OnClickListener, DialogInterface.OnClickListener {
|
||||
|
||||
private final String TAG = PathfinderClick.class.getName();
|
||||
private final View container = mGatePathfinder;
|
||||
private final int markerId = R.id.gate_pathfinder_marker;
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (mGatePathfinderLock != null) {
|
||||
if (mGatePathfinderLock.getVisibility() == View.VISIBLE && isNormal(container, markerId)) {
|
||||
showChangeDialog(this);
|
||||
} else {
|
||||
toggleFragment();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
toggleFragment();
|
||||
}
|
||||
|
||||
private void toggleFragment() {
|
||||
sendIntent(AppConstants.INTENT_ACTION_TOGGLE, AppConstants.INTENT_ACTION_EXTRA, AppConstants.INTENT_ACTION_TOGGLE_PROCEDURE_MORE_PATHFINDER);
|
||||
switch (toggleMarker(container, markerId)) {
|
||||
case LEVEL_NORMAL:
|
||||
sendIntent(AppConstants.INTENT_ACTION_SHOW_MAIN_CONTENT);
|
||||
break;
|
||||
|
||||
case LEVEL_TOGGLED:
|
||||
replaceFragment(GateStartPathFinderFragment.newInstance(GateStartPathFinderFragment.START_MODE_PLANNED));
|
||||
break;
|
||||
|
||||
default:
|
||||
ExLog.i(getActivity(), TAG, "Unknown return value");
|
||||
}
|
||||
disableToggle(container, markerId);
|
||||
}
|
||||
}
|
||||
|
||||
private class TimingClick implements View.OnClickListener, DialogInterface.OnClickListener {
|
||||
|
||||
private final String TAG = TimingClick.class.getName();
|
||||
private final View container = mGateTiming;
|
||||
private final int markerId = R.id.gate_timing_marker;
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (mGateTimingLock != null) {
|
||||
if (mGateTimingLock.getVisibility() == View.VISIBLE && isNormal(container, markerId)) {
|
||||
showChangeDialog(this);
|
||||
} else {
|
||||
toggleFragment();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
toggleFragment();
|
||||
}
|
||||
|
||||
private void toggleFragment() {
|
||||
sendIntent(AppConstants.INTENT_ACTION_TOGGLE, AppConstants.INTENT_ACTION_EXTRA, AppConstants.INTENT_ACTION_TOGGLE_PROCEDURE_MORE_TIMING);
|
||||
switch (toggleMarker(container, markerId)) {
|
||||
case LEVEL_NORMAL:
|
||||
sendIntent(AppConstants.INTENT_ACTION_SHOW_MAIN_CONTENT);
|
||||
break;
|
||||
|
||||
case LEVEL_TOGGLED:
|
||||
replaceFragment(GateStartTimingFragment.newInstance(GateStartTimingFragment.START_MODE_PLANNED));
|
||||
break;
|
||||
|
||||
default:
|
||||
ExLog.i(getActivity(), TAG, "Unknown return value");
|
||||
}
|
||||
disableToggle(container, markerId);
|
||||
}
|
||||
}
|
||||
|
||||
private class IntentReceiver extends BroadcastReceiver {
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
if (AppConstants.INTENT_ACTION_CLEAR_TOGGLE.equals(action)) {
|
||||
uncheckMarker(new View(context));
|
||||
}
|
||||
|
||||
if (AppConstants.INTENT_ACTION_TOGGLE.equals(action)) {
|
||||
if (intent.getExtras() != null) {
|
||||
String data = intent.getExtras().getString(AppConstants.INTENT_ACTION_EXTRA);
|
||||
if (AppConstants.INTENT_ACTION_TOGGLE_PROCEDURE_MORE_MODE.equals(data)) {
|
||||
uncheckMarker(mStartMode);
|
||||
} else if (AppConstants.INTENT_ACTION_TOGGLE_PROCEDURE_MORE_PATHFINDER.equals(data)) {
|
||||
uncheckMarker(mGatePathfinder);
|
||||
} else if (AppConstants.INTENT_ACTION_TOGGLE_PROCEDURE_MORE_TIMING.equals(data)) {
|
||||
uncheckMarker(mGateTiming);
|
||||
} else {
|
||||
uncheckMarker(new View(context));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -21,7 +21,7 @@ import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.ReadonlyRac
|
||||
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.ess.ESSRacingProcedure;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.gate.GateStartRacingProcedure;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.impl.BaseRacingProcedureChangedListener;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.rrs26.RRS26RacingProcedure;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.line.ConfigurableStartModeFlagRacingProcedure;
|
||||
import com.sap.sailing.domain.common.Wind;
|
||||
import com.sap.sailing.racecommittee.app.AppConstants;
|
||||
import com.sap.sailing.racecommittee.app.R;
|
||||
@@ -29,8 +29,8 @@ import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.BaseFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.CourseFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.GateStartPathFinderFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.GateStartTimingFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.LineStartModeFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.RaceFactorFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.StartModeFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.StartProcedureFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.WindFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.utils.FlagsResources;
|
||||
@@ -176,9 +176,9 @@ public class SetupPanelFragment extends BasePanelFragment {
|
||||
mButtonRaceGroup.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
if (getRaceState().getRacingProcedure() instanceof RRS26RacingProcedure) {
|
||||
if (getRaceState().getRacingProcedure() instanceof ConfigurableStartModeFlagRacingProcedure) {
|
||||
if (mButtonMode != null) {
|
||||
RRS26RacingProcedure typedProcedure = getRaceState().getTypedRacingProcedure();
|
||||
ConfigurableStartModeFlagRacingProcedure typedProcedure = getRaceState().getTypedRacingProcedure();
|
||||
mButtonMode.setPanelImage(FlagsResources.getFlagDrawable(getActivity(), typedProcedure.getStartModeFlag().name(), getResources().getInteger(R.integer.flag_size)));
|
||||
mButtonMode.setVisibility(View.VISIBLE);
|
||||
}
|
||||
@@ -344,7 +344,7 @@ public class SetupPanelFragment extends BasePanelFragment {
|
||||
mButtonProcedure.setMarkerLevel(PanelButton.LEVEL_NORMAL);
|
||||
}
|
||||
if (mButtonMode != null && !mButtonMode.equals(view)) {
|
||||
resetFragment(mButtonMode.isLocked(), getFrameId(getActivity(), R.id.race_edit, R.id.race_content, false), LineStartModeFragment.class);
|
||||
resetFragment(mButtonMode.isLocked(), getFrameId(getActivity(), R.id.race_edit, R.id.race_content, false), StartModeFragment.class);
|
||||
mButtonMode.setMarkerLevel(PanelButton.LEVEL_NORMAL);
|
||||
}
|
||||
if (mButtonPathfinder != null && !mButtonPathfinder.equals(view)) {
|
||||
@@ -466,7 +466,7 @@ public class SetupPanelFragment extends BasePanelFragment {
|
||||
break;
|
||||
|
||||
case PanelButton.LEVEL_TOGGLED:
|
||||
replaceFragment(LineStartModeFragment.newInstance(LineStartModeFragment.START_MODE_PLANNED));
|
||||
replaceFragment(StartModeFragment.newInstance(StartModeFragment.START_MODE_PLANNED));
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -8,6 +8,7 @@ import java.util.Set;
|
||||
import android.os.Bundle;
|
||||
import android.preference.ListPreference;
|
||||
import android.preference.MultiSelectListPreference;
|
||||
import android.support.annotation.StringRes;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.sap.sailing.android.shared.ui.fragments.preference.BasePreferenceFragment;
|
||||
@@ -39,6 +40,8 @@ public class RegattaPreferenceFragment extends BasePreferenceFragment {
|
||||
|
||||
bindPreferenceSummaryToValue(findPreference(R.string.preference_racing_procedure_rrs26_classflag_key));
|
||||
bindPreferenceSummaryToSet(findPreference(R.string.preference_racing_procedure_rrs26_startmode_flags_key));
|
||||
bindPreferenceSummaryToValue(findPreference(R.string.preference_racing_procedure_swc_classflag_key));
|
||||
bindPreferenceSummaryToSet(findPreference(R.string.preference_racing_procedure_swc_startmode_flags_key));
|
||||
bindPreferenceSummaryToValue(findPreference(R.string.preference_racing_procedure_gatestart_classflag_key));
|
||||
bindPreferenceSummaryToValue(findPreference(R.string.preference_racing_procedure_ess_classflag_key));
|
||||
bindPreferenceSummaryToValue(findPreference(R.string.preference_racing_procedure_basic_classflag_key));
|
||||
@@ -46,6 +49,7 @@ public class RegattaPreferenceFragment extends BasePreferenceFragment {
|
||||
|
||||
setupGeneral();
|
||||
setupRRS26();
|
||||
setupSWC();
|
||||
setupGateStart();
|
||||
setupESS();
|
||||
setupBasic();
|
||||
@@ -53,10 +57,15 @@ public class RegattaPreferenceFragment extends BasePreferenceFragment {
|
||||
}
|
||||
|
||||
private void setupRRS26() {
|
||||
setupRRS26StartmodeFlagsList();
|
||||
setupStartmodeFlagsList(R.string.preference_racing_procedure_rrs26_startmode_flags_key);
|
||||
setupClassFlagList(this.<ListPreference>findPreference(R.string.preference_racing_procedure_rrs26_classflag_key));
|
||||
}
|
||||
|
||||
private void setupSWC() {
|
||||
setupStartmodeFlagsList(R.string.preference_racing_procedure_swc_startmode_flags_key);
|
||||
setupClassFlagList(this.<ListPreference>findPreference(R.string.preference_racing_procedure_swc_classflag_key));
|
||||
}
|
||||
|
||||
private void setupGateStart() {
|
||||
setupClassFlagList(this.<ListPreference>findPreference(R.string.preference_racing_procedure_gatestart_classflag_key));
|
||||
}
|
||||
@@ -122,8 +131,8 @@ public class RegattaPreferenceFragment extends BasePreferenceFragment {
|
||||
bindPreferenceSummaryToInteger(findPreference(R.string.preference_protest_time_duration_key));
|
||||
}
|
||||
|
||||
private void setupRRS26StartmodeFlagsList() {
|
||||
MultiSelectListPreference preference = findPreference(R.string.preference_racing_procedure_rrs26_startmode_flags_key);
|
||||
private void setupStartmodeFlagsList(@StringRes int prefId) {
|
||||
MultiSelectListPreference preference = findPreference(prefId);
|
||||
List<String> flags = new ArrayList<>();
|
||||
for (Flags flag : Flags.validValues()) {
|
||||
flags.add(flag.name());
|
||||
|
||||
@@ -19,12 +19,12 @@ import com.sap.sailing.domain.abstractlog.race.SimpleRaceLogIdentifier;
|
||||
import com.sap.sailing.domain.abstractlog.race.scoring.AdditionalScoringInformationType;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.ReadonlyRaceState;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.impl.BaseRaceStateChangedListener;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.RacingProcedure;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.ess.ESSRacingProcedure;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.gate.GateStartRacingProcedure;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.rrs26.RRS26RacingProcedure;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.line.ConfigurableStartModeFlagRacingProcedure;
|
||||
import com.sap.sailing.domain.common.Wind;
|
||||
import com.sap.sailing.domain.common.racelog.Flags;
|
||||
import com.sap.sailing.domain.common.racelog.RacingProcedureType;
|
||||
import com.sap.sailing.racecommittee.app.R;
|
||||
import com.sap.sailing.racecommittee.app.data.DataManager;
|
||||
import com.sap.sailing.racecommittee.app.domain.ManagedRace;
|
||||
@@ -59,7 +59,7 @@ public class MainScheduleFragment extends BaseFragment implements View.OnClickLi
|
||||
private SimpleRaceLogIdentifier mRaceId;
|
||||
private TimePoint mStartTime;
|
||||
private Duration mStartTimeDiff;
|
||||
private RacingProcedureType mRacingProcedureType;
|
||||
private RacingProcedure mRacingProcedure;
|
||||
private TimePoint lastTick;
|
||||
|
||||
private Calendar mCalendar;
|
||||
@@ -146,29 +146,27 @@ public class MainScheduleFragment extends BaseFragment implements View.OnClickLi
|
||||
}
|
||||
|
||||
private void initStartMode() {
|
||||
mRacingProcedureType = getRaceState().getRacingProcedure().getType();
|
||||
if (mRacingProcedureType != null) {
|
||||
mRacingProcedure = getRaceState().getRacingProcedure();
|
||||
if (mRacingProcedure != null) {
|
||||
Runnable runnableProcedure = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
openFragment(StartProcedureFragment.newInstance(START_MODE_PRESETUP));
|
||||
}
|
||||
};
|
||||
mItems.add(new SelectionItem(getString(R.string.start_procedure), mRacingProcedureType.toString(), null, false, false, runnableProcedure));
|
||||
if (RacingProcedureType.RRS26.equals(mRacingProcedureType)) {
|
||||
// LineStart
|
||||
RRS26RacingProcedure procedure = getRaceState().getTypedRacingProcedure();
|
||||
mItems.add(new SelectionItem(getString(R.string.start_procedure), mRacingProcedure.getType().toString(), null, false, false, runnableProcedure));
|
||||
if (mRacingProcedure instanceof ConfigurableStartModeFlagRacingProcedure) {
|
||||
final ConfigurableStartModeFlagRacingProcedure procedure = getRaceState().getTypedRacingProcedure();
|
||||
Flags flag = procedure.getStartModeFlag();
|
||||
Runnable runnableMode = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
openFragment(LineStartModeFragment.newInstance(START_MODE_PRESETUP));
|
||||
openFragment(StartModeFragment.newInstance(START_MODE_PRESETUP));
|
||||
}
|
||||
};
|
||||
Drawable drawable = FlagsResources.getFlagDrawable(getActivity(), flag.name(), mFlagSize);
|
||||
mItems.add(new SelectionItem(getString(R.string.start_mode), flag.name(), drawable, false, false, runnableMode));
|
||||
} else if (RacingProcedureType.GateStart.equals(mRacingProcedureType)) {
|
||||
// GateStart
|
||||
} else if (mRacingProcedure instanceof GateStartRacingProcedure) {
|
||||
GateStartRacingProcedure procedure = getRaceState().getTypedRacingProcedure();
|
||||
if (procedure != null) {
|
||||
Runnable runnablePathfinder = new Runnable() {
|
||||
@@ -187,8 +185,7 @@ public class MainScheduleFragment extends BaseFragment implements View.OnClickLi
|
||||
};
|
||||
mItems.add(new SelectionItem(getString(R.string.gate_start_timing), RaceHelper.getGateTiming(getActivity(), procedure, getRace().getRaceGroup()), null, false, false, runnableTiming));
|
||||
}
|
||||
} else if (RacingProcedureType.ESS.equals(mRacingProcedureType)) {
|
||||
// Extreme Sailing Series
|
||||
} else if (mRacingProcedure instanceof ESSRacingProcedure) {
|
||||
ESSRacingProcedure procedure = getRaceState().getTypedRacingProcedure();
|
||||
if (procedure != null) {
|
||||
boolean checked = getArguments().getBoolean(RACE_GROUP, getRaceState().isAdditionalScoringInformationEnabled(AdditionalScoringInformationType.MAX_POINTS_DECREASE_MAX_SCORE));
|
||||
@@ -253,16 +250,16 @@ public class MainScheduleFragment extends BaseFragment implements View.OnClickLi
|
||||
}
|
||||
|
||||
private void startRace() {
|
||||
RRS26RacingProcedure rrs26Procedure = null;
|
||||
ConfigurableStartModeFlagRacingProcedure lineStartRacingProcedure = null;
|
||||
|
||||
Flags flag = null;
|
||||
if (RacingProcedureType.RRS26.equals(getRaceState().getRacingProcedure().getType())) {
|
||||
rrs26Procedure = getRaceState().getTypedRacingProcedure();
|
||||
flag = rrs26Procedure.getStartModeFlag();
|
||||
if (getRaceState().getRacingProcedure() instanceof ConfigurableStartModeFlagRacingProcedure) {
|
||||
lineStartRacingProcedure = getRaceState().getTypedRacingProcedure();
|
||||
flag = lineStartRacingProcedure.getStartModeFlag();
|
||||
}
|
||||
TimePoint now = MillisecondsTimePoint.now();
|
||||
getRaceState().setRacingProcedure(now, mRacingProcedureType);
|
||||
if (RacingProcedureType.ESS.equals(mRacingProcedureType) && mItemRaceGroup != null) {
|
||||
getRaceState().setRacingProcedure(now, mRacingProcedure.getType());
|
||||
if (mRacingProcedure instanceof ESSRacingProcedure && mItemRaceGroup != null) {
|
||||
getRaceState().setAdditionalScoringInformationEnabled(MillisecondsTimePoint.now(), /*enable*/ mItemRaceGroup.isChecked(),
|
||||
AdditionalScoringInformationType.MAX_POINTS_DECREASE_MAX_SCORE);
|
||||
}
|
||||
@@ -271,8 +268,8 @@ public class MainScheduleFragment extends BaseFragment implements View.OnClickLi
|
||||
} else {
|
||||
getRaceState().forceNewDependentStartTime(now, mStartTimeDiff, mRaceId);
|
||||
}
|
||||
if (rrs26Procedure != null) {
|
||||
rrs26Procedure.setStartModeFlag(MillisecondsTimePoint.now(), flag);
|
||||
if (lineStartRacingProcedure != null) {
|
||||
lineStartRacingProcedure.setStartModeFlag(MillisecondsTimePoint.now(), flag);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ import android.widget.AdapterView;
|
||||
import android.widget.ListView;
|
||||
|
||||
import com.sap.sailing.android.shared.util.AppUtils;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.rrs26.RRS26RacingProcedure;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.line.ConfigurableStartModeFlagRacingProcedure;
|
||||
import com.sap.sailing.domain.common.racelog.Flags;
|
||||
import com.sap.sailing.racecommittee.app.AppConstants;
|
||||
import com.sap.sailing.racecommittee.app.R;
|
||||
@@ -24,14 +24,14 @@ import com.sap.sailing.racecommittee.app.ui.layouts.HeaderLayout;
|
||||
import com.sap.sailing.racecommittee.app.ui.utils.FlagsResources;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
|
||||
public class LineStartModeFragment extends BaseFragment {
|
||||
public class StartModeFragment extends BaseFragment {
|
||||
|
||||
private ListView mListView;
|
||||
private RRS26RacingProcedure mProcedure;
|
||||
private ConfigurableStartModeFlagRacingProcedure mLineStartProcedure;
|
||||
private int mFlagSize;
|
||||
|
||||
public static LineStartModeFragment newInstance(@START_MODE_VALUES int startMode) {
|
||||
LineStartModeFragment fragment = new LineStartModeFragment();
|
||||
public static StartModeFragment newInstance(@START_MODE_VALUES int startMode) {
|
||||
StartModeFragment fragment = new StartModeFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putInt(START_MODE, startMode);
|
||||
fragment.setArguments(args);
|
||||
@@ -58,7 +58,7 @@ public class LineStartModeFragment extends BaseFragment {
|
||||
}
|
||||
}
|
||||
|
||||
mProcedure = getRaceState().getTypedRacingProcedure();
|
||||
mLineStartProcedure = getRaceState().getTypedRacingProcedure();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -87,36 +87,39 @@ public class LineStartModeFragment extends BaseFragment {
|
||||
super.onResume();
|
||||
|
||||
ArrayList<StartModeItem> startModes = new ArrayList<>();
|
||||
List<Flags> flags = mProcedure.getConfiguration().getStartModeFlags();
|
||||
int position = 0;
|
||||
int selected = -1;
|
||||
for (Flags flag : flags) {
|
||||
StartModeItem startMode = new StartModeItem(flag);
|
||||
startMode.setImage(FlagsResources.getFlagDrawable(getActivity(), startMode.getFlagName(), mFlagSize));
|
||||
startModes.add(startMode);
|
||||
}
|
||||
Collections.sort(startModes, new StartModeComparator());
|
||||
for (StartModeItem startModeItem : startModes) {
|
||||
if (startModeItem.getFlag().equals(mProcedure.getStartModeFlag())) {
|
||||
selected = position;
|
||||
List<Flags> flags = mLineStartProcedure.getConfiguration().getStartModeFlags();
|
||||
if (flags != null) {
|
||||
int position = 0;
|
||||
int selected = -1;
|
||||
for (Flags flag : flags) {
|
||||
StartModeItem startMode = new StartModeItem(flag);
|
||||
startMode.setImage(FlagsResources.getFlagDrawable(getActivity(), startMode.getFlagName(), mFlagSize));
|
||||
startModes.add(startMode);
|
||||
}
|
||||
position++;
|
||||
}
|
||||
final CheckedItemAdapter adapter = new CheckedItemAdapter(getActivity(), startModes);
|
||||
adapter.setCheckedPosition(selected);
|
||||
mListView.setAdapter(adapter);
|
||||
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
adapter.setCheckedPosition(position);
|
||||
StartModeItem item = (StartModeItem) adapter.getItem(position);
|
||||
if (item != null) {
|
||||
onClick(item);
|
||||
Collections.sort(startModes, new StartModeComparator());
|
||||
for (StartModeItem startModeItem : startModes) {
|
||||
Flags flag = mLineStartProcedure.getStartModeFlag();
|
||||
if (startModeItem.getFlag().equals(flag)) {
|
||||
selected = position;
|
||||
}
|
||||
position++;
|
||||
}
|
||||
});
|
||||
final CheckedItemAdapter adapter = new CheckedItemAdapter(getActivity(), startModes);
|
||||
adapter.setCheckedPosition(selected);
|
||||
mListView.setAdapter(adapter);
|
||||
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
adapter.setCheckedPosition(position);
|
||||
StartModeItem item = (StartModeItem) adapter.getItem(position);
|
||||
if (item != null) {
|
||||
onClick(item);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
sendIntent(AppConstants.INTENT_ACTION_TIME_HIDE);
|
||||
sendIntent(AppConstants.INTENT_ACTION_TIME_HIDE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -128,10 +131,11 @@ public class LineStartModeFragment extends BaseFragment {
|
||||
|
||||
public void onClick(StartModeItem startMode) {
|
||||
boolean sameFlag = false;
|
||||
if (startMode.getFlag() == mProcedure.getStartModeFlag()) {
|
||||
Flags flag = mLineStartProcedure.getStartModeFlag();
|
||||
mLineStartProcedure.setStartModeFlag(MillisecondsTimePoint.now(), startMode.getFlag());
|
||||
if (startMode.getFlag().equals(flag)) {
|
||||
sameFlag = true;
|
||||
}
|
||||
mProcedure.setStartModeFlag(MillisecondsTimePoint.now(), startMode.getFlag());
|
||||
if (getArguments() != null && getArguments().getInt(START_MODE, START_MODE_PRESETUP) == START_MODE_PRESETUP) {
|
||||
openMainScheduleFragment();
|
||||
} else {
|
||||
@@ -105,6 +105,11 @@ public class FlagsResources {
|
||||
outline = outline.replace("XX", "01");
|
||||
break;
|
||||
|
||||
case OSCAR:
|
||||
flag = "flag_oscar_" + size + "dp";
|
||||
outline = outline.replace("XX", "01");
|
||||
break;
|
||||
|
||||
case PAPA:
|
||||
flag = "flag_papa_" + size + "dp";
|
||||
outline = outline.replace("XX", "01");
|
||||
|
||||