mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-30 15:57:11 +00:00
added gate start specific buttons (pathfinder and gatelineopeningtime) to ui. added pathfinder-event to domain. some other fixes. SORRY: serialization-test does not work.
This commit is contained in:
1 parent
dd4d93efed
commit
8e45e3a1b6
25 files changed
+446
-6
No files matched your search
@@ -114,6 +114,38 @@
|
||||
android:layout_weight="0.99"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="vertical" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/pathfinderLabel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_marginTop="2dp"
|
||||
android:text="@string/no_pathfinder_selected"
|
||||
android:textAppearance="@style/TextAppearance.Welter.TitleLabel"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/pathFinderButton"
|
||||
android:layout_width="200dp"
|
||||
android:layout_height="50dp"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:text="@string/set_pathfinder" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/lineOpeningTimeLabel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_marginTop="2dp"
|
||||
android:text="@string/no_line_opening_time_selected"
|
||||
android:textAppearance="@style/TextAppearance.Welter.TitleLabel"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/lineOpeningTimeButton"
|
||||
android:layout_width="200dp"
|
||||
android:layout_height="50dp"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:text="@string/set_line_opening_time" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/abortingFlagButton"
|
||||
|
||||
+1
@@ -45,4 +45,5 @@ public interface ManagedRace extends ManagedRaceIdentifier, Named, WithID {
|
||||
* @return list of competitors
|
||||
*/
|
||||
public Iterable<Competitor> getCompetitors();
|
||||
|
||||
}
|
||||
+6
@@ -7,6 +7,7 @@ import com.sap.sailing.domain.racelog.RaceLogFinishPositioningConfirmedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogFinishPositioningListChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogFlagEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogPassChangeEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogPathfinderEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
||||
import com.sap.sailing.racecommittee.app.domain.racelog.RaceLogChangedListener;
|
||||
@@ -53,4 +54,9 @@ public class RaceLogChangedVisitor implements RaceLogEventVisitor {
|
||||
listener.eventAdded(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogPathfinderEvent event) {
|
||||
listener.eventAdded(event);
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -25,7 +25,7 @@ import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.startphase.GateSt
|
||||
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 startPhasePapaUpInterval = 5 * 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
|
||||
|
||||
|
||||
+4
@@ -120,4 +120,8 @@ public interface RaceState extends StartProcedureRaceStateChangedListener {
|
||||
*/
|
||||
TimePoint getIndividualRecallDisplayedTime();
|
||||
|
||||
String getPathfinder();
|
||||
|
||||
void setPathfinder(String sailingId);
|
||||
|
||||
}
|
||||
+22
@@ -23,6 +23,7 @@ import com.sap.sailing.domain.racelog.analyzing.impl.FinishedTimeFinder;
|
||||
import com.sap.sailing.domain.racelog.analyzing.impl.FinishingTimeFinder;
|
||||
import com.sap.sailing.domain.racelog.analyzing.impl.IndividualRecallFinder;
|
||||
import com.sap.sailing.domain.racelog.analyzing.impl.LastPublishedCourseDesignFinder;
|
||||
import com.sap.sailing.domain.racelog.analyzing.impl.PathfinderFinder;
|
||||
import com.sap.sailing.domain.racelog.analyzing.impl.RaceStatusAnalyzer;
|
||||
import com.sap.sailing.domain.racelog.analyzing.impl.StartTimeFinder;
|
||||
import com.sap.sailing.racecommittee.app.domain.racelog.RaceLogChangedListener;
|
||||
@@ -48,6 +49,7 @@ public class RaceStateImpl implements RaceState, RaceLogChangedListener {
|
||||
private LastPublishedCourseDesignFinder lastCourseDesignFinder;
|
||||
private FinishPositioningListFinder finishPositioningListFinder;
|
||||
private IndividualRecallFinder individualRecallFinder;
|
||||
private PathfinderFinder pathfinderFinder;
|
||||
|
||||
public RaceStateImpl(PassAwareRaceLog raceLog, StartProcedure procedure) {
|
||||
this.raceLog = raceLog;
|
||||
@@ -267,4 +269,24 @@ public class RaceStateImpl implements RaceState, RaceLogChangedListener {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPathfinder() {
|
||||
return pathfinderFinder.getPathfinderId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPathfinder(String sailingId) {
|
||||
|
||||
/*RaceLogEvent event = RaceLogEventFactory.INSTANCE.createStartTimeEvent(eventTime, UUID.randomUUID(),
|
||||
Collections.<Competitor> emptyList(), raceLog.getCurrentPassId(), newStartTime);
|
||||
this.raceLog.add(event);*/
|
||||
|
||||
notifyListenersAboutPathFinderChange();
|
||||
}
|
||||
|
||||
private void notifyListenersAboutPathFinderChange() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
package com.sap.sailing.racecommittee.app.ui.fragments.dialogs;
|
||||
|
||||
import com.sap.sailing.racecommittee.app.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
|
||||
public class RaceChooseLineOpeningTimeDialog extends RaceDialogFragment {
|
||||
|
||||
public interface GateLineOpeningTimeSelectionListener {
|
||||
public void onLineOpeningTimeSelected();
|
||||
}
|
||||
|
||||
private GateLineOpeningTimeSelectionListener selectionListener;
|
||||
|
||||
private EditText lineOpeningTimeEditText;
|
||||
private Button chooseButton;
|
||||
|
||||
@Override
|
||||
public void onAttach(Activity activity) {
|
||||
super.onAttach(activity);
|
||||
selectionListener = (GateLineOpeningTimeSelectionListener) activity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
return inflater.inflate(R.layout.race_choose_line_opening_time_view, container);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
|
||||
getDialog().setTitle(getString(R.string.set_gate_line_opening_time_title));
|
||||
|
||||
lineOpeningTimeEditText = (EditText) getView().findViewById(R.id.lineOpeningTimeText);
|
||||
chooseButton = (Button) getDialog().findViewById(R.id.chooseLineOpeningTimeButton);
|
||||
|
||||
chooseButton.setOnClickListener(new OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
onChooseClicked(v);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected void onChooseClicked(View view) {
|
||||
int lineOpeningTime = convertToInteger(lineOpeningTimeEditText.getText().toString());
|
||||
//this.getRace().changeGateLineOpeningTime(lineOpeningTime);
|
||||
selectionListener.onLineOpeningTimeSelected();
|
||||
Log.i("RACE_SET_GATELINE_OPENING_TIME", String.valueOf(lineOpeningTime));
|
||||
dismiss();
|
||||
}
|
||||
|
||||
protected Integer convertToInteger(String text) {
|
||||
try {
|
||||
return Integer.parseInt(text);
|
||||
} catch (NumberFormatException ex) {
|
||||
throw new IllegalStateException("An NumberFormatException occured");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notifyTick() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
}
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
package com.sap.sailing.racecommittee.app.ui.fragments.dialogs;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
|
||||
import com.sap.sailing.racecommittee.app.R;
|
||||
|
||||
public class RaceChoosePathFinderDialog extends RaceDialogFragment {
|
||||
|
||||
public interface PathfinderSelectionListener {
|
||||
public void onPathfinderSelected();
|
||||
}
|
||||
|
||||
private PathfinderSelectionListener selectionListener;
|
||||
|
||||
private EditText sailingNationalityEditText;
|
||||
private EditText sailingNumberEditText;
|
||||
private Button chooseButton;
|
||||
|
||||
@Override
|
||||
public void onAttach(Activity activity) {
|
||||
super.onAttach(activity);
|
||||
//selectionListener = (PathfinderSelectionListener) activity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
return inflater.inflate(R.layout.race_choose_path_finder_view, container);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
|
||||
getDialog().setTitle(getString(R.string.set_pathfinder_title));
|
||||
|
||||
sailingNationalityEditText = (EditText) getView().findViewById(R.id.pathFinderNationality);
|
||||
sailingNumberEditText = (EditText) getView().findViewById(R.id.pathFinderNumber);
|
||||
chooseButton = (Button) getDialog().findViewById(R.id.choosePathFinderButton);
|
||||
|
||||
chooseButton.setOnClickListener(new OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
onChooseClicked(v);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected void onChooseClicked(View view) {
|
||||
String sailingId = sailingNationalityEditText.getText().toString() + " " + sailingNumberEditText.getText().toString();
|
||||
this.getRace().getState().setPathfinder(sailingId);
|
||||
selectionListener.onPathfinderSelected();
|
||||
Log.i("RACE_SET_PATHFINDER", sailingId);
|
||||
dismiss();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notifyTick() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+40
@@ -25,6 +25,8 @@ import com.sap.sailing.racecommittee.app.domain.startprocedure.impl.GateStartPha
|
||||
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.AbortModeSelectionDialog;
|
||||
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;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.RaceInfoListener;
|
||||
import com.sap.sailing.racecommittee.app.utils.TimeUtils;
|
||||
@@ -35,10 +37,14 @@ public class GateStartPhaseFragment extends RaceFragment implements GateStartPha
|
||||
|
||||
TextView raceCountdown;
|
||||
TextView nextFlagCountdown;
|
||||
TextView pathfinderLabel;
|
||||
TextView lineOpeningTimeLabel;
|
||||
ImageButton abortingFlagButton;
|
||||
ImageView displayedFlag;
|
||||
ImageView nextToBeDisplayedFlag;
|
||||
Button resetTimeButton;
|
||||
Button pathFinderButton;
|
||||
Button lineOpeningTimeButton;
|
||||
|
||||
@Override
|
||||
public void onAttach(Activity activity) {
|
||||
@@ -85,10 +91,44 @@ public class GateStartPhaseFragment extends RaceFragment implements GateStartPha
|
||||
infoListener.onResetTime();
|
||||
}
|
||||
});
|
||||
pathFinderButton = (Button) getView().findViewById(R.id.pathFinderButton);
|
||||
lineOpeningTimeButton = (Button) getView().findViewById(R.id.lineOpeningTimeButton);
|
||||
pathfinderLabel = (TextView) getView().findViewById(R.id.pathfinderLabel);
|
||||
lineOpeningTimeLabel = (TextView) getView().findViewById(R.id.lineOpeningTimeLabel);
|
||||
|
||||
pathFinderButton.setOnClickListener(new OnClickListener() {
|
||||
|
||||
public void onClick(View v) {
|
||||
showPathFinderDialog();
|
||||
}
|
||||
});
|
||||
|
||||
lineOpeningTimeButton.setOnClickListener(new OnClickListener() {
|
||||
|
||||
public void onClick(View v) {
|
||||
showLineOpeningTimeDialog();
|
||||
}
|
||||
});
|
||||
|
||||
setupUi();
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
private void setupUi() {
|
||||
RaceLog log = getRace().getState().getRaceLog();
|
||||
log.lockForRead();
|
||||
|
||||
Reference in new issue
Block a user