use for RRS26 and SWC Racing Procedure the LineStart base class

This commit is contained in:
Peter Siegmund committed 2016-11-16 09:07:34 +01:00
1 parent d9a95b8a31
commit 5ba4b43e12
3 files changed
+29 -73

No files matched your search

@@ -30,8 +30,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.StartModeFragment;
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;
@@ -474,8 +474,7 @@ public class SetupPanelFragment extends BasePanelFragment {
break;
case PanelButton.LEVEL_TOGGLED:
replaceFragment(StartModeFragment
.newInstance(StartModeFragment.START_MODE_PLANNED, getRaceState().getTypedRacingProcedure().getType().toString()));
replaceFragment(StartModeFragment.newInstance(StartModeFragment.START_MODE_PLANNED));
break;
default:
@@ -19,13 +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.line.RRS26RacingProcedure;
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.line.SWCRacingProcedure;
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.line.LineStartRacingProcedure;
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;
@@ -60,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;
@@ -147,41 +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
final RRS26RacingProcedure procedure = getRaceState().getTypedRacingProcedure();
mItems.add(new SelectionItem(getString(R.string.start_procedure), mRacingProcedure.getType().toString(), null, false, false, runnableProcedure));
if (mRacingProcedure instanceof LineStartRacingProcedure) {
final LineStartRacingProcedure procedure = getRaceState().getTypedRacingProcedure();
Flags flag = procedure.getStartModeFlag();
Runnable runnableMode = new Runnable() {
@Override
public void run() {
openFragment(StartModeFragment.newInstance(START_MODE_PRESETUP, mRacingProcedureType.toString()));
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.SWC.equals(mRacingProcedureType)) {
// Sailing World Cup Start
final SWCRacingProcedure procedure = getRaceState().getTypedRacingProcedure();
Flags flag = procedure.getStartModeFlag();
Runnable runnableMode = new Runnable() {
@Override
public void run() {
openFragment(StartModeFragment.newInstance(START_MODE_PRESETUP, mRacingProcedureType.toString()));
}
};
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() {
@@ -200,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));
@@ -266,16 +250,16 @@ public class MainScheduleFragment extends BaseFragment implements View.OnClickLi
}
private void startRace() {
RRS26RacingProcedure rrs26Procedure = null;
LineStartRacingProcedure lineStartRacingProcedure = null;
Flags flag = null;
if (RacingProcedureType.RRS26.equals(getRaceState().getRacingProcedure().getType())) {
rrs26Procedure = getRaceState().getTypedRacingProcedure();
flag = rrs26Procedure.getStartModeFlag();
if (getRaceState().getRacingProcedure() instanceof LineStartRacingProcedure) {
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);
}
@@ -284,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,10 +14,8 @@ 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.line.RRS26RacingProcedure;
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.line.SWCRacingProcedure;
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.line.LineStartRacingProcedure;
import com.sap.sailing.domain.common.racelog.Flags;
import com.sap.sailing.domain.common.racelog.RacingProcedureType;
import com.sap.sailing.racecommittee.app.AppConstants;
import com.sap.sailing.racecommittee.app.R;
import com.sap.sailing.racecommittee.app.ui.adapters.checked.CheckedItemAdapter;
@@ -28,18 +26,14 @@ import com.sap.sse.common.impl.MillisecondsTimePoint;
public class StartModeFragment extends BaseFragment {
private static final String PROCEDURE = "procedure";
private ListView mListView;
private RRS26RacingProcedure mRRS26Procedure = null;
private SWCRacingProcedure mSWCProcedure = null;
private LineStartRacingProcedure mLineStartProcedure;
private int mFlagSize;
public static StartModeFragment newInstance(@START_MODE_VALUES int startMode, String procedure) {
public static StartModeFragment newInstance(@START_MODE_VALUES int startMode) {
StartModeFragment fragment = new StartModeFragment();
Bundle args = new Bundle();
args.putInt(START_MODE, startMode);
args.putString(PROCEDURE, procedure);
fragment.setArguments(args);
return fragment;
}
@@ -64,12 +58,7 @@ public class StartModeFragment extends BaseFragment {
}
}
String procedure = getArguments().getString(PROCEDURE, "");
if (procedure.equals(RacingProcedureType.RRS26.toString())) {
mRRS26Procedure = getRaceState().getTypedRacingProcedure();
} else if (procedure.equals(RacingProcedureType.SWC.toString())) {
mSWCProcedure = getRaceState().getTypedRacingProcedure();
}
mLineStartProcedure = getRaceState().getTypedRacingProcedure();
}
@Override
@@ -98,12 +87,7 @@ public class StartModeFragment extends BaseFragment {
super.onResume();
ArrayList<StartModeItem> startModes = new ArrayList<>();
List<Flags> flags = null;
if (mRRS26Procedure != null) {
flags = mRRS26Procedure.getConfiguration().getStartModeFlags();
} else if (mSWCProcedure != null) {
flags = mSWCProcedure.getConfiguration().getStartModeFlags();
}
List<Flags> flags = mLineStartProcedure.getConfiguration().getStartModeFlags();
if (flags != null) {
int position = 0;
int selected = -1;
@@ -114,12 +98,7 @@ public class StartModeFragment extends BaseFragment {
}
Collections.sort(startModes, new StartModeComparator());
for (StartModeItem startModeItem : startModes) {
Flags flag = null;
if (mRRS26Procedure != null) {
flag = mRRS26Procedure.getStartModeFlag();
} else if (mSWCProcedure != null) {
flag = mSWCProcedure.getStartModeFlag();
}
Flags flag = mLineStartProcedure.getStartModeFlag();
if (startModeItem.getFlag().equals(flag)) {
selected = position;
}
@@ -152,14 +131,8 @@ public class StartModeFragment extends BaseFragment {
public void onClick(StartModeItem startMode) {
boolean sameFlag = false;
Flags flag = null;
if (mRRS26Procedure != null) {
flag = mRRS26Procedure.getStartModeFlag();
mRRS26Procedure.setStartModeFlag(MillisecondsTimePoint.now(), startMode.getFlag());
} else if (mSWCProcedure != null) {
flag = mSWCProcedure.getStartModeFlag();
mSWCProcedure.setStartModeFlag(MillisecondsTimePoint.now(), startMode.getFlag());
}
Flags flag = mLineStartProcedure.getStartModeFlag();
mLineStartProcedure.setStartModeFlag(MillisecondsTimePoint.now(), startMode.getFlag());
if (startMode.getFlag().equals(flag)) {
sameFlag = true;
}