added forced dialogs for pathfinder and gatelineopening time in the app, if the race is started into the past to ensure that we collect all relevant information.

This commit is contained in:
Fabian Tschirschnitz committed 2013-04-24 22:33:07 +02:00
1 parent f36de39205
commit 7b0ccf74de
3 files changed
+41 -7

No files matched your search

@@ -180,7 +180,9 @@ public class RaceStateImpl implements RaceState, RaceLogChangedListener {
public void onRaceStarted(TimePoint eventTime) {
RaceLogEvent statusEvent = RaceLogEventFactory.INSTANCE.createRaceStatusEvent(eventTime, raceLog.getCurrentPassId(), RaceLogRaceStatus.RUNNING);
this.raceLog.add(statusEvent);
notifyListenersAboutGateLineOpeningTimeTrigger();
if(getGateLineOpeningTime()!=null){
notifyListenersAboutGateLineOpeningTimeTrigger();
}
}
@Override
@@ -308,6 +310,9 @@ public class RaceStateImpl implements RaceState, RaceLogChangedListener {
this.raceLog.add(event);
notifyListenersAboutGateLineOpeningTimeChanged();
if(eventTime.after(getStartTime()) && getStatus().equals(RaceLogRaceStatus.RUNNING)){
notifyListenersAboutGateLineOpeningTimeTrigger();
}
}
private void notifyListenersAboutGateLineOpeningTimeChanged() {
@@ -319,6 +324,7 @@ public class RaceStateImpl implements RaceState, RaceLogChangedListener {
private void notifyListenersAboutGateLineOpeningTimeTrigger() {
for (RaceStateChangedListener listener : stateChangedListeners) {
Long gateLineOpeningTime = GateStartProcedure.startPhaseGolfDownStandardInterval;
//this should not happen
if(this.getGateLineOpeningTime()!=null){
gateLineOpeningTime = this.getGateLineOpeningTime();
}
@@ -1,6 +1,7 @@
package com.sap.sailing.racecommittee.app.ui.fragments.dialogs;
import com.sap.sailing.racecommittee.app.R;
import com.sap.sailing.racecommittee.app.domain.startprocedure.impl.GateStartProcedure;
import android.app.Activity;
import android.os.Bundle;
@@ -11,6 +12,7 @@ import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class RaceChooseLineOpeningTimeDialog extends RaceDialogFragment {
@@ -38,6 +40,7 @@ public class RaceChooseLineOpeningTimeDialog extends RaceDialogFragment {
getDialog().setTitle(getString(R.string.set_gate_line_opening_time_title));
lineOpeningTimeEditText = (EditText) getView().findViewById(R.id.lineOpeningTimeText);
lineOpeningTimeEditText.setText(String.valueOf((GateStartProcedure.startPhaseGolfDownStandardInterval/(60*1000))));
chooseButton = (Button) getDialog().findViewById(R.id.chooseLineOpeningTimeButton);
chooseButton.setOnClickListener(new OnClickListener() {
@@ -48,18 +51,18 @@ public class RaceChooseLineOpeningTimeDialog extends RaceDialogFragment {
}
protected void onChooseClicked(View view) {
int lineOpeningTime = convertToInteger(lineOpeningTimeEditText.getText().toString());
try{
Integer lineOpeningTime = convertToInteger(lineOpeningTimeEditText.getText().toString());
this.getRace().getState().setGateLineOpeningTime(Long.valueOf(60 * 1000 * lineOpeningTime));
Log.i("RACE_SET_GATELINE_OPENING_TIME", String.valueOf(lineOpeningTime));
dismiss();
} catch(NumberFormatException nfe){
Toast.makeText(getActivity(), "Please enter a valid number of minutes", Toast.LENGTH_LONG).show();
}
}
protected Integer convertToInteger(String text) {
try {
protected Integer convertToInteger(String text) throws NumberFormatException{
return Integer.parseInt(text);
} catch (NumberFormatException ex) {
throw new IllegalStateException("An NumberFormatException occured");
}
}
@Override
@@ -20,6 +20,8 @@ import com.sap.sailing.racecommittee.app.domain.startprocedure.impl.GateStartRun
import com.sap.sailing.racecommittee.app.logging.ExLog;
import com.sap.sailing.racecommittee.app.ui.fragments.RaceFragment;
import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.AbortTypeSelectionDialog;
import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.RaceChooseLineOpeningTimeDialog;
import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.RaceChoosePathFinderDialog;
import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.RaceDialogFragment;
public class GateStartRunningRaceFragment extends RaceFragment implements GateStartRunningRaceEventListener {
@@ -72,6 +74,13 @@ public class GateStartRunningRaceFragment extends RaceFragment implements GateSt
displayGolfFlag(!golfFlagTakenDown);
getRace().getState().getStartProcedure().setRunningRaceEventListener(this);
if(getRace().getState().getPathfinder()==null){
showPathFinderDialog();
}
if(getRace().getState().getGateLineOpeningTime()==null){
showLineOpeningTimeDialog();
}
}
private void displayGolfFlag(boolean golfFlagDisplayed) {
@@ -172,5 +181,21 @@ public class GateStartRunningRaceFragment extends RaceFragment implements GateSt
public void onGolfDown() {
displayGolfFlag(false);
}
private void showPathFinderDialog() {
FragmentManager fragmentManager = getFragmentManager();
RaceDialogFragment fragment = new RaceChoosePathFinderDialog();
Bundle args = getParameterBundle();
fragment.setArguments(args);
fragment.show(fragmentManager, null);
}
private void showLineOpeningTimeDialog() {
FragmentManager fragmentManager = getFragmentManager();
RaceDialogFragment fragment = new RaceChooseLineOpeningTimeDialog();
Bundle args = getParameterBundle();
fragment.setArguments(args);
fragment.show(fragmentManager, null);
}
}