Merge branch 'racecommittee_app' of ssh://sapsailing.com/home/trac/git into racecommittee_app

This commit is contained in:
Armin Zamani committed 2013-06-14 11:25:08 +02:00
commit 7109b8d7ea
6 files changed
+184 -164

No files matched your search

@@ -57,7 +57,7 @@ public interface StartProcedure {
void handleStartProcedureSpecificEvent(TimePoint eventTime, Integer eventId);
List<Class<? extends RaceDialogFragment>> checkForUserActionRequiredActions(MillisecondsTimePoint newStartTime, UserRequiredActionPerformedListener listener);
Class<? extends RaceDialogFragment> checkForUserActionRequiredActions(MillisecondsTimePoint newStartTime, UserRequiredActionPerformedListener listener);
Class<? extends RaceDialogFragment> getCourseDesignDialog();
@@ -401,8 +401,8 @@ public class ExtremeSailingSeriesStartProcedure implements StartProcedure {
}
@Override
public List<Class<? extends RaceDialogFragment>> checkForUserActionRequiredActions(MillisecondsTimePoint newStartTime, UserRequiredActionPerformedListener listener) {
return new ArrayList<Class<? extends RaceDialogFragment>>();
public Class<? extends RaceDialogFragment> checkForUserActionRequiredActions(MillisecondsTimePoint newStartTime, UserRequiredActionPerformedListener listener) {
return null;
}
@Override
@@ -32,36 +32,37 @@ import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.GateStartRunningR
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.startphase.GateStartPhaseFragment;
public class GateStartProcedure implements StartProcedure {
private final static long startPhaseClassOverGolfUpIntervall = 8 * 60 * 1000; // minutes * seconds * milliseconds
private final static long startPhasePapaUpInterval = 4 * 60 * 1000; // minutes * seconds * milliseconds
private final static long startPhasePapaDownInterval = 1 * 60 * 1000; // minutes * seconds * milliseconds
private final static long startPhaseClassOverGolfDownInterval = 0 * 60 * 1000; // minutes * seconds * milliseconds
public final static long startPhaseGolfDownStandardInterval = 4 * 60 * 1000; // minutes * seconds * milliseconds
public final static long startPhaseGolfDownStandardIntervalConstantSummand = 3 * 60 * 1000; // minutes * seconds * milliseconds
public final static long startPhaseGolfDownStandardIntervalConstantSummand = 3 * 60 * 1000; // minutes * seconds *
// milliseconds
// list of start procedure specific event id's
private static final Integer GOLF_REMOVAL_EVENT_ID = 1;
private List<Long> startProcedureEventIntervals;
private RaceLog raceLog;
private StartProcedureListener raceStateChangedListener;
private GateStartPhaseEventListener startPhaseEventListener;
private GateStartRunningRaceEventListener runningRaceEventListener;
private UserRequiredActionPerformedListener userRequiredActionPerformedListener;
private String pathFinder = null;
private String pathFinder = null;
private Long gateLineOpeningTime = startPhaseGolfDownStandardInterval;
private boolean isPathFinderSet = false;
private boolean isGateLineOpeningTimeChosen = false;
public GateStartProcedure(RaceLog raceLog) {
this.raceLog = raceLog;
startProcedureEventIntervals = new ArrayList<Long>();
raceStateChangedListener = null;
startPhaseEventListener = null;
runningRaceEventListener = null;
startProcedureEventIntervals.add(startPhaseClassOverGolfUpIntervall);
startProcedureEventIntervals.add(startPhasePapaUpInterval);
startProcedureEventIntervals.add(startPhasePapaDownInterval);
@@ -76,7 +77,7 @@ public class GateStartProcedure implements StartProcedure {
@Override
public List<TimePoint> getAutomaticEventFireTimePoints(TimePoint startTime) {
List<TimePoint> triggerTimePoints = new ArrayList<TimePoint>();
for (Long interval : startProcedureEventIntervals) {
triggerTimePoints.add(startTime.minus(interval));
}
@@ -86,7 +87,7 @@ public class GateStartProcedure implements StartProcedure {
@Override
public void dispatchFiredEventTimePoint(TimePoint startTime, TimePoint eventTime) {
long interval = startTime.asMillis() - eventTime.asMillis();
if (interval == startPhaseClassOverGolfUpIntervall) {
handleClassOverGolfUp(eventTime);
} else if (interval == startPhasePapaUpInterval) {
@@ -100,25 +101,27 @@ public class GateStartProcedure implements StartProcedure {
private void handleClassOverGolfUp(TimePoint eventTime) {
TimePoint startPhaseTimePoint = eventTime;
if (raceStateChangedListener != null) {
raceStateChangedListener.onRaceStartphaseEntered(startPhaseTimePoint);
}
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createFlagEvent(startPhaseTimePoint, UUID.randomUUID(), Collections.<Competitor>emptyList(),
raceLog.getCurrentPassId(), Flags.CLASS, Flags.GOLF, /*isDisplayed*/true);
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createFlagEvent(startPhaseTimePoint, UUID.randomUUID(),
Collections.<Competitor> emptyList(), raceLog.getCurrentPassId(), Flags.CLASS, Flags.GOLF, /* isDisplayed */
true);
raceLog.add(event);
if (startPhaseEventListener != null) {
startPhaseEventListener.onClassOverGolfUp();
}
}
private void handlePapaUp(TimePoint eventTime) {
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createFlagEvent(eventTime, UUID.randomUUID(), Collections.<Competitor>emptyList(),
raceLog.getCurrentPassId(), Flags.PAPA, Flags.NONE, /*isDisplayed*/true);
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createFlagEvent(eventTime, UUID.randomUUID(),
Collections.<Competitor> emptyList(), raceLog.getCurrentPassId(), Flags.PAPA, Flags.NONE, /* isDisplayed */
true);
raceLog.add(event);
if (startPhaseEventListener != null) {
startPhaseEventListener.onPapaUp();
}
@@ -126,11 +129,12 @@ public class GateStartProcedure implements StartProcedure {
private void handlePapaDown(TimePoint eventTime) {
TimePoint papaDownTimepoint = eventTime;
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createFlagEvent(papaDownTimepoint, UUID.randomUUID(), Collections.<Competitor>emptyList(),
raceLog.getCurrentPassId(), Flags.PAPA, Flags.NONE, /*isDisplayed*/false);
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createFlagEvent(papaDownTimepoint, UUID.randomUUID(),
Collections.<Competitor> emptyList(), raceLog.getCurrentPassId(), Flags.PAPA, Flags.NONE, /* isDisplayed */
false);
raceLog.add(event);
if (startPhaseEventListener != null) {
startPhaseEventListener.onPapaDown();
}
@@ -138,32 +142,28 @@ public class GateStartProcedure implements StartProcedure {
private void handleClassOverGolfDown(TimePoint eventTime) {
TimePoint essOneDownTimePoint = eventTime;
RaceLogEvent essOneDownEvent = RaceLogEventFactory.INSTANCE.createFlagEvent(essOneDownTimePoint, UUID.randomUUID(), Collections.<Competitor>emptyList(),
raceLog.getCurrentPassId(), Flags.CLASS, Flags.GOLF, /*isDisplayed*/false);
RaceLogEvent essOneDownEvent = RaceLogEventFactory.INSTANCE.createFlagEvent(essOneDownTimePoint,
UUID.randomUUID(), Collections.<Competitor> emptyList(), raceLog.getCurrentPassId(), Flags.CLASS,
Flags.GOLF, /* isDisplayed */false);
raceLog.add(essOneDownEvent);
if (startPhaseEventListener != null) {
startPhaseEventListener.onClassOverGolfDown();
}
if (raceStateChangedListener != null) {
raceStateChangedListener.onRaceStarted(eventTime);
}
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createFlagEvent(eventTime, UUID.randomUUID(),
Collections.<Competitor> emptyList(), raceLog.getCurrentPassId(), Flags.GOLF, Flags.NONE, /* isDisplayed */
false);
raceLog.add(event);
TimePoint golfRemovalFireTimePoint = eventTime.plus(startPhaseGolfDownStandardIntervalConstantSummand+this.getGateLineOpeningTime());
TimePoint golfRemovalFireTimePoint = eventTime.plus(startPhaseGolfDownStandardIntervalConstantSummand
+ this.getGateLineOpeningTime());
if (raceStateChangedListener != null) {
raceStateChangedListener.onStartProcedureSpecificEvent(golfRemovalFireTimePoint,
GOLF_REMOVAL_EVENT_ID);
raceStateChangedListener.onStartProcedureSpecificEvent(golfRemovalFireTimePoint, GOLF_REMOVAL_EVENT_ID);
}
}
@Override
public void setStartProcedureListener(StartProcedureListener raceStateChangedListener) {
this.raceStateChangedListener = raceStateChangedListener;
@@ -181,21 +181,22 @@ public class GateStartProcedure implements StartProcedure {
} else {
resultTime = now;
}
return resultTime;
}
@Override
public void setFinishing(TimePoint eventTime) {
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createFlagEvent(eventTime, UUID.randomUUID(), Collections.<Competitor>emptyList(),
raceLog.getCurrentPassId(), Flags.BLUE, Flags.NONE, /*isDisplayed*/true);
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createFlagEvent(eventTime, UUID.randomUUID(),
Collections.<Competitor> emptyList(), raceLog.getCurrentPassId(), Flags.BLUE, Flags.NONE, /* isDisplayed */
true);
raceLog.add(event);
if (raceStateChangedListener != null) {
raceStateChangedListener.onRaceFinishing(eventTime);
}
}
@Override
public void dispatchAutomaticRaceEndEvent(TimePoint automaticRaceEnd) {
@@ -203,10 +204,11 @@ public class GateStartProcedure implements StartProcedure {
@Override
public void setFinished(TimePoint eventTime) {
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createFlagEvent(eventTime, UUID.randomUUID(), Collections.<Competitor>emptyList(),
raceLog.getCurrentPassId(), Flags.BLUE, Flags.NONE, /*isDisplayed*/false);
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createFlagEvent(eventTime, UUID.randomUUID(),
Collections.<Competitor> emptyList(), raceLog.getCurrentPassId(), Flags.BLUE, Flags.NONE, /* isDisplayed */
false);
raceLog.add(event);
if (raceStateChangedListener != null) {
raceStateChangedListener.onRaceFinished(eventTime);
}
@@ -225,11 +227,12 @@ public class GateStartProcedure implements StartProcedure {
}
}
private void handleAPUp(TimePoint eventTime, Flags lowerFlag) {
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createFlagEvent(eventTime, UUID.randomUUID(), Collections.<Competitor>emptyList(),
raceLog.getCurrentPassId(), Flags.AP, lowerFlag, /*isDisplayed*/true);
private void handleAPUp(TimePoint eventTime, Flags lowerFlag) {
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createFlagEvent(eventTime, UUID.randomUUID(),
Collections.<Competitor> emptyList(), raceLog.getCurrentPassId(), Flags.AP, lowerFlag, /* isDisplayed */
true);
raceLog.add(event);
if (raceStateChangedListener != null) {
raceStateChangedListener.onRaceAborted(eventTime);
}
@@ -249,10 +252,11 @@ public class GateStartProcedure implements StartProcedure {
}
private void handleNovemberUp(TimePoint eventTime, Flags lowerFlag) {
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createFlagEvent(eventTime, UUID.randomUUID(), Collections.<Competitor>emptyList(),
raceLog.getCurrentPassId(), Flags.NOVEMBER, lowerFlag, /*isDisplayed*/true);
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createFlagEvent(eventTime, UUID.randomUUID(),
Collections.<Competitor> emptyList(), raceLog.getCurrentPassId(), Flags.NOVEMBER, lowerFlag, /* isDisplayed */
true);
raceLog.add(event);
if (raceStateChangedListener != null) {
raceStateChangedListener.onRaceAborted(eventTime);
}
@@ -260,10 +264,11 @@ public class GateStartProcedure implements StartProcedure {
@Override
public void setGeneralRecall(TimePoint eventTime) {
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createFlagEvent(eventTime, UUID.randomUUID(), Collections.<Competitor>emptyList(),
raceLog.getCurrentPassId(), Flags.FIRSTSUBSTITUTE, Flags.NONE, /*isDisplayed*/true);
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createFlagEvent(eventTime, UUID.randomUUID(),
Collections.<Competitor> emptyList(), raceLog.getCurrentPassId(), Flags.FIRSTSUBSTITUTE, Flags.NONE, /* isDisplayed */
true);
raceLog.add(event);
if (raceStateChangedListener != null) {
raceStateChangedListener.onRaceAborted(eventTime);
}
@@ -273,7 +278,7 @@ public class GateStartProcedure implements StartProcedure {
public Class<? extends RaceFragment> getStartphaseFragment() {
return GateStartPhaseFragment.class;
}
@Override
public Class<? extends RaceFragment> getRunningRaceFragment() {
return GateStartRunningRaceFragment.class;
@@ -283,7 +288,7 @@ public class GateStartProcedure implements StartProcedure {
public void setStartPhaseEventListener(StartPhaseEventListener listener) {
startPhaseEventListener = (GateStartPhaseEventListener) listener;
}
@Override
public void setRunningRaceEventListener(RunningRaceEventListener listener) {
runningRaceEventListener = (GateStartRunningRaceEventListener) listener;
@@ -295,30 +300,39 @@ public class GateStartProcedure implements StartProcedure {
List<Object> milisecondsList = new ArrayList<Object>();
if (millisecondsTillStart < startPhasePapaDownInterval) {
milisecondsList.add(millisecondsTillStart);
result = new Pair<String, List<Object>>(context.getResources().getString(R.string.race_startphase_gate_class_over_golf_removed), milisecondsList);
result = new Pair<String, List<Object>>(context.getResources().getString(
R.string.race_startphase_gate_class_over_golf_removed), milisecondsList);
} else if (millisecondsTillStart < startPhasePapaUpInterval) {
milisecondsList.add(millisecondsTillStart - startPhasePapaDownInterval);
result = new Pair<String, List<Object>>(context.getResources().getString(R.string.race_startphase_gate_papa_removed), milisecondsList);
result = new Pair<String, List<Object>>(context.getResources().getString(
R.string.race_startphase_gate_papa_removed), milisecondsList);
} else if (millisecondsTillStart < startPhaseClassOverGolfUpIntervall) {
milisecondsList.add(millisecondsTillStart - startPhasePapaUpInterval);
result = new Pair<String, List<Object>>(context.getResources().getString(R.string.race_startphase_gate_papa_display), milisecondsList);
result = new Pair<String, List<Object>>(context.getResources().getString(
R.string.race_startphase_gate_papa_display), milisecondsList);
} else {
milisecondsList.add(millisecondsTillStart - startPhaseClassOverGolfUpIntervall);
result = new Pair<String, List<Object>>(context.getResources().getString(R.string.race_startphase_gate_class_over_golf_display), milisecondsList);
result = new Pair<String, List<Object>>(context.getResources().getString(
R.string.race_startphase_gate_class_over_golf_display), milisecondsList);
}
return result;
}
public void setGolfRemoval(TimePoint eventTime) {
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createFlagEvent(eventTime, UUID.randomUUID(), Collections.<Competitor>emptyList(),
raceLog.getCurrentPassId(), Flags.GOLF, Flags.NONE, /*isDisplayed*/false);
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createFlagEvent(eventTime, UUID.randomUUID(),
Collections.<Competitor> emptyList(), raceLog.getCurrentPassId(), Flags.GOLF, Flags.NONE, /* isDisplayed */
false);
raceLog.add(event);
if (runningRaceEventListener != null) {
runningRaceEventListener.onGolfDown();
}
}
public void setGateLineOpeningTime(Long gateLineOpeningTimeInMiliseconds){
public void setGateLineOpeningTime(Long gateLineOpeningTimeInMiliseconds) {
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createGateLineOpeningTimeEvent(MillisecondsTimePoint.now(),
raceLog.getCurrentPassId(), gateLineOpeningTimeInMiliseconds);
raceLog.add(event);
this.gateLineOpeningTime = gateLineOpeningTimeInMiliseconds;
this.isGateLineOpeningTimeChosen = true;
if (startPhaseEventListener != null) {
@@ -328,7 +342,12 @@ public class GateStartProcedure implements StartProcedure {
userRequiredActionPerformedListener.onUserRequiredActionPerformed();
}
}
public void setPathfinder(String sailingId){
public void setPathfinder(String sailingId) {
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createPathfinderEvent(MillisecondsTimePoint.now(),
raceLog.getCurrentPassId(), sailingId);
raceLog.add(event);
this.pathFinder = sailingId;
this.isPathFinderSet = true;
if (startPhaseEventListener != null) {
@@ -354,7 +373,7 @@ public class GateStartProcedure implements StartProcedure {
public Long getGateLineOpeningTime() {
return gateLineOpeningTime;
}
public boolean isPathFinderSet() {
return isPathFinderSet;
}
@@ -362,7 +381,7 @@ public class GateStartProcedure implements StartProcedure {
public boolean isGateLineOpeningTimeChosen() {
return isGateLineOpeningTimeChosen;
}
@Override
public Class<? extends RaceFragment> getFinishingRaceFragment() {
return FinishingRaceFragment.class;
@@ -372,23 +391,21 @@ public class GateStartProcedure implements StartProcedure {
public Class<? extends RaceFragment> getFinishedRaceFragment() {
return FinishedRaceFragment.class;
}
@Override
public List<Class<? extends RaceDialogFragment>> checkForUserActionRequiredActions(MillisecondsTimePoint newStartTime, UserRequiredActionPerformedListener listener) {
List<Class<? extends RaceDialogFragment>> actionList = new ArrayList<Class<? extends RaceDialogFragment>>();
if (MillisecondsTimePoint.now().after(newStartTime)
&& !isPathFinderSet) {
actionList.add(RaceChoosePathFinderDialog.class);
public Class<? extends RaceDialogFragment> checkForUserActionRequiredActions(
MillisecondsTimePoint newStartTime, UserRequiredActionPerformedListener listener) {
if (MillisecondsTimePoint.now().after(newStartTime) && !isPathFinderSet) {
this.userRequiredActionPerformedListener = listener;
return RaceChoosePathFinderDialog.class;
}
if (MillisecondsTimePoint.now().after(newStartTime)
&& !isGateLineOpeningTimeChosen) {
actionList.add(RaceChooseGateLineOpeningTimeDialog.class);
if (MillisecondsTimePoint.now().after(newStartTime) && !isGateLineOpeningTimeChosen) {
this.userRequiredActionPerformedListener = listener;
return RaceChooseGateLineOpeningTimeDialog.class;
}
return actionList;
return null;
}
@Override
public Class<? extends RaceDialogFragment> getCourseDesignDialog() {
return ClassicCourseDesignDialogFragment.class;
@@ -403,15 +403,14 @@ public class RRS26StartProcedure implements StartProcedure, StartModeChoosableSt
}
@Override
public List<Class<? extends RaceDialogFragment>> checkForUserActionRequiredActions(
public Class<? extends RaceDialogFragment> checkForUserActionRequiredActions(
MillisecondsTimePoint newStartTime, UserRequiredActionPerformedListener listener) {
List<Class<? extends RaceDialogFragment>> actionList = new ArrayList<Class<? extends RaceDialogFragment>>();
if (MillisecondsTimePoint.now().after(newStartTime.minus(startPhaseStartModeUpInterval))
&& !startModeFlagChosen) {
actionList.add(RaceChooseStartModeDialog.class);
this.userRequiredActionPerformedListener = listener;
return RaceChooseStartModeDialog.class;
}
return actionList;
return null;
}
@Override
@@ -15,9 +15,10 @@ import android.widget.TextView;
import com.sap.sailing.domain.base.impl.MillisecondsTimePoint;
import com.sap.sailing.domain.common.racelog.Flags;
import com.sap.sailing.domain.racelog.RaceLogFlagEvent;
import com.sap.sailing.domain.racelog.analyzing.impl.GateLineOpeningTimeFinder;
import com.sap.sailing.domain.racelog.analyzing.impl.LastFlagsFinder;
import com.sap.sailing.domain.racelog.analyzing.impl.PathfinderFinder;
import com.sap.sailing.racecommittee.app.R;
import com.sap.sailing.racecommittee.app.domain.startprocedure.impl.GateStartProcedure;
import com.sap.sailing.racecommittee.app.domain.startprocedure.impl.GateStartRunningRaceEventListener;
import com.sap.sailing.racecommittee.app.logging.ExLog;
import com.sap.sailing.racecommittee.app.ui.fragments.RaceFragment;
@@ -27,61 +28,60 @@ import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.RaceChoosePathFind
import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.RaceDialogFragment;
public class GateStartRunningRaceFragment extends RaceFragment implements GateStartRunningRaceEventListener {
private TextView countUpTextView;
private ImageView displayedFlag;
private ImageView flagToBeDisplayed;
ImageButton abortingFlagButton;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.gate_start_race_running_view, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
countUpTextView = (TextView) getView().findViewById(R.id.raceCountUp);
ImageButton blueFlagButton = (ImageButton) getView().findViewById(R.id.blueFlagButton);
blueFlagButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
showDisplayBlueFlagDialog();
}
});
abortingFlagButton = (ImageButton) getView().findViewById(R.id.abortingFlagButton);
abortingFlagButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
showChooseAPNovemberDialog();
}
});
ImageButton generalRecallFlagButton = (ImageButton) getView().findViewById(R.id.firstSubstituteButton);
generalRecallFlagButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
showDisplayGeneralRecallDialog();
}
});
displayedFlag = (ImageView) getView().findViewById(R.id.currentlyDisplayedFlag);
flagToBeDisplayed = (ImageView) getView().findViewById(R.id.flagToBeDisplayed);
setupUi();
getRace().getState().getStartProcedure().setRunningRaceEventListener(this);
if(getRace().getState().getStartProcedure() instanceof GateStartProcedure){
if(!((GateStartProcedure) getRace().getState().getStartProcedure()).isPathFinderSet()){
showPathFinderDialog();
}
if(!((GateStartProcedure) getRace().getState().getStartProcedure()).isGateLineOpeningTimeChosen()){
showGateLineOpeningTimeDialog();
}
PathfinderFinder pathFinderFinder = new PathfinderFinder(this.getRace().getRaceLog());
if (pathFinderFinder.analyze()==null) {
showPathFinderDialog();
}
GateLineOpeningTimeFinder gateLineOpeningTimeFinder = new GateLineOpeningTimeFinder(this.getRace().getRaceLog());
if (gateLineOpeningTimeFinder.analyze()==null) {
showGateLineOpeningTimeDialog();
}
}
private void setupUi() {
@@ -95,32 +95,36 @@ public class GateStartRunningRaceFragment extends RaceFragment implements GateSt
}
private void displayGolfFlag(boolean golfFlagDisplayed) {
if(golfFlagDisplayed){
displayedFlag.setVisibility(View.VISIBLE);
flagToBeDisplayed.setVisibility(View.GONE);
}else{
if (golfFlagDisplayed) {
displayedFlag.setVisibility(View.VISIBLE);
flagToBeDisplayed.setVisibility(View.GONE);
} else {
displayedFlag.setVisibility(View.GONE);
flagToBeDisplayed.setVisibility(View.VISIBLE);
}
}
private void showDisplayGeneralRecallDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(getActivity().getResources().getString(R.string.confirmation_first_substitute_display))
.setCancelable(true)
.setPositiveButton(getActivity().getResources().getString(R.string.yes), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
ExLog.i(ExLog.RACE_RUNNING_GENERAL_RECALL_YES, getRace().getId().toString(), getActivity());
getRace().getState().getStartProcedure().setGeneralRecall(MillisecondsTimePoint.now());
}
})
.setNegativeButton(getActivity().getResources().getString(R.string.no), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
ExLog.i(ExLog.RACE_RUNNING_GENERAL_RECALL_NO, getRace().getId().toString(), getActivity());
dialog.cancel();
}
});
.setCancelable(true)
.setPositiveButton(getActivity().getResources().getString(R.string.yes),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
ExLog.i(ExLog.RACE_RUNNING_GENERAL_RECALL_YES, getRace().getId().toString(),
getActivity());
getRace().getState().getStartProcedure().setGeneralRecall(MillisecondsTimePoint.now());
}
})
.setNegativeButton(getActivity().getResources().getString(R.string.no),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
ExLog.i(ExLog.RACE_RUNNING_GENERAL_RECALL_NO, getRace().getId().toString(),
getActivity());
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
@@ -128,41 +132,44 @@ public class GateStartRunningRaceFragment extends RaceFragment implements GateSt
private void showDisplayBlueFlagDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(getActivity().getResources().getString(R.string.confirmation_blue_flag_display))
.setCancelable(true)
.setPositiveButton(getActivity().getResources().getString(R.string.yes), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
ExLog.i(ExLog.FLAG_BLUE_SET, getRace().getId().toString(), getActivity());
getRace().getState().getStartProcedure().setFinishing(MillisecondsTimePoint.now());
}
})
.setNegativeButton(getActivity().getResources().getString(R.string.no), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
ExLog.i(ExLog.FLAG_BLUE_SET_NO, getRace().getId().toString(), getActivity());
dialog.cancel();
}
});
.setCancelable(true)
.setPositiveButton(getActivity().getResources().getString(R.string.yes),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
ExLog.i(ExLog.FLAG_BLUE_SET, getRace().getId().toString(), getActivity());
getRace().getState().getStartProcedure().setFinishing(MillisecondsTimePoint.now());
}
})
.setNegativeButton(getActivity().getResources().getString(R.string.no),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
ExLog.i(ExLog.FLAG_BLUE_SET_NO, getRace().getId().toString(), getActivity());
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
@Override
public void onStart() {
super.onStart();
ExLog.i(GateStartRunningRaceFragment.class.getName(), String.format("Fragment %s is now shown", GateStartRunningRaceFragment.class.getName()));
ExLog.i(GateStartRunningRaceFragment.class.getName(),
String.format("Fragment %s is now shown", GateStartRunningRaceFragment.class.getName()));
}
public void notifyTick() {
if (getRace().getState().getStartTime() == null)
return;
long millisSinceStart = System.currentTimeMillis() - getRace().getState().getStartTime().asMillis();
setStarttimeCountupLabel(millisSinceStart);
//TODO: implement count down label text when individual recall is displayed
// TODO: implement count down label text when individual recall is displayed
}
private void setStarttimeCountupLabel(long millisecondsSinceStart) {
countUpTextView.setText(String.format(getString(R.string.race_running_since_template), prettyTimeString(millisecondsSinceStart), getRace().getName()));
countUpTextView.setText(String.format(getString(R.string.race_running_since_template),
prettyTimeString(millisecondsSinceStart), getRace().getName()));
}
protected CharSequence prettyTimeString(long time) {
@@ -192,7 +199,7 @@ public class GateStartRunningRaceFragment extends RaceFragment implements GateSt
public void onGolfDown() {
displayGolfFlag(false);
}
private void showPathFinderDialog() {
FragmentManager fragmentManager = getFragmentManager();
RaceDialogFragment fragment = new RaceChoosePathFinderDialog();
@@ -2,7 +2,6 @@ package com.sap.sailing.racecommittee.app.ui.fragments.raceinfo;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.FragmentManager;
@@ -52,7 +51,7 @@ public class SetStartTimeRaceFragment extends RaceFragment implements UserRequir
protected Button btSetTime;
protected Button btPostpone;
protected TextView textInfoText;
protected DatePickerFragment datePicker;
@Override
@@ -64,7 +63,7 @@ public class SetStartTimeRaceFragment extends RaceFragment implements UserRequir
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
isReset = getArguments().getBoolean(AppConstants.RESET_TIME_FRAGMENT_IS_RESET);
datePicker = new DatePickerFragment();
setupDatePicker();
@@ -109,7 +108,7 @@ public class SetStartTimeRaceFragment extends RaceFragment implements UserRequir
Calendar startDate = Calendar.getInstance();
startDate.set(year, month, day);
Calendar today = Calendar.getInstance();
if (startDate.get(Calendar.YEAR) == today.get(Calendar.YEAR)
&& startDate.get(Calendar.DAY_OF_YEAR) == today.get(Calendar.DAY_OF_YEAR)) {
btSetDate.setText("Today");
@@ -240,30 +239,28 @@ public class SetStartTimeRaceFragment extends RaceFragment implements UserRequir
private void setStartTime(Date newStartTime) {
getRace().getState().createNewStartProcedure(selectedStartProcedureType);
List<Class<? extends RaceDialogFragment>> actionList = getRace().getState().getStartProcedure()
Class<? extends RaceDialogFragment> action = getRace().getState().getStartProcedure()
.checkForUserActionRequiredActions(new MillisecondsTimePoint(newStartTime), this);
if (actionList.isEmpty()) {
if (action == null) {
getRace().getState().setStartTime(new MillisecondsTimePoint(newStartTime));
} else {
for (Class<? extends RaceDialogFragment> actionFragment : actionList) {
FragmentManager fragmentManager = getFragmentManager();
FragmentManager fragmentManager = getFragmentManager();
RaceDialogFragment fragment;
try {
fragment = actionFragment.newInstance();
Bundle args = getRecentArguments();
fragment.setArguments(args);
fragment.show(fragmentManager, "userActionRequiredDialog");
} catch (java.lang.InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
RaceDialogFragment fragment;
try {
fragment = action.newInstance();
Bundle args = getRecentArguments();
fragment.setArguments(args);
fragment.show(fragmentManager, "userActionRequiredDialog");
} catch (java.lang.InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}