mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-30 01:16:40 +00:00
added RaceFactor to race setup
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
@@ -10,6 +10,15 @@
|
||||
android:baselineAligned="false"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<com.sap.sailing.racecommittee.app.ui.views.PanelButton
|
||||
android:id="@+id/button_factor"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
app:buttonHeader="@string/race_factor"
|
||||
app:buttonType="typeValue"
|
||||
app:linePosition="right" />
|
||||
|
||||
<com.sap.sailing.racecommittee.app.ui.views.PanelButton
|
||||
android:id="@+id/button_course"
|
||||
android:layout_width="0dp"
|
||||
@@ -17,7 +26,7 @@
|
||||
android:layout_weight="1"
|
||||
app:buttonHeader="@string/course"
|
||||
app:buttonType="typeValue"
|
||||
app:linePosition="right"/>
|
||||
app:linePosition="right" />
|
||||
|
||||
<com.sap.sailing.racecommittee.app.ui.views.PanelButton
|
||||
android:id="@+id/button_wind"
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
@@ -16,7 +15,7 @@
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
app:buttonHeader="@string/start_procedure"
|
||||
app:buttonType="typeValue"/>
|
||||
app:buttonType="typeValue" />
|
||||
|
||||
<com.sap.sailing.racecommittee.app.ui.views.PanelButton
|
||||
android:id="@+id/button_mode"
|
||||
@@ -51,6 +50,14 @@
|
||||
app:buttonSwitch=""
|
||||
app:buttonType="typeSwitch" />
|
||||
|
||||
<com.sap.sailing.racecommittee.app.ui.views.PanelButton
|
||||
android:id="@+id/button_factor"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
app:buttonHeader="@string/race_factor"
|
||||
app:buttonType="typeValue" />
|
||||
|
||||
<com.sap.sailing.racecommittee.app.ui.views.PanelButton
|
||||
android:id="@+id/button_course"
|
||||
android:layout_width="match_parent"
|
||||
@@ -66,7 +73,6 @@
|
||||
android:layout_weight="1"
|
||||
app:buttonHeader="@string/wind"
|
||||
app:buttonType="typeValue" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/sap_gray_black_30">
|
||||
|
||||
<com.sap.sailing.racecommittee.app.ui.layouts.HeaderLayout
|
||||
android:id="@+id/header"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:headerText="@string/gate_start_pathfinder" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/path_finder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_gravity="center_vertical">
|
||||
|
||||
<Button
|
||||
android:id="@+id/set_path_finder"
|
||||
style="?attr/button"
|
||||
android:layout_width="@dimen/default_button_width"
|
||||
android:layout_height="@dimen/default_button_height"
|
||||
android:layout_centerInParent="true"
|
||||
android:layout_margin="@dimen/unscheduled_confirm_button_margin"
|
||||
android:enabled="false"
|
||||
android:text="@string/gate_start_set_pathfinder"
|
||||
android:textSize="@dimen/textSize_18" />
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_above="@id/path_finder"
|
||||
android:layout_below="@id/header">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_margin="@dimen/default_margin_twice">
|
||||
|
||||
<com.sap.sailing.racecommittee.app.ui.layouts.FloatLabelLayout
|
||||
android:layout_width="200dp"
|
||||
android:layout_height="wrap_content"
|
||||
app:floatLabelPaddingLeft="@dimen/float_label_padding"
|
||||
app:floatLabelTextAppearance="?attr/floatLabel">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/pathfinder_nat"
|
||||
style="?attr/editText"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:hint="@string/gate_start_nationality"
|
||||
android:inputType="textCapCharacters"
|
||||
android:textAppearance="?attr/textNormal"
|
||||
android:textColor="?attr/white" />
|
||||
</com.sap.sailing.racecommittee.app.ui.layouts.FloatLabelLayout>
|
||||
</RelativeLayout>
|
||||
</RelativeLayout>
|
||||
</RelativeLayout>
|
||||
@@ -434,6 +434,8 @@
|
||||
<string name="preference_allow_dependent_races_header">Relative Startzeit</string>
|
||||
<string name="preference_allow_dependent_races_description">Aktiviert relative Startzeiten zwischen Rennen</string>
|
||||
<string name="preference_dependent_races_offset_header">Standard Offset der relativen Startzeit (Minuten)</string>
|
||||
<string name="preference_allow_edit_race_factor_header">Rennfaktor ändern</string>
|
||||
<string name="preference_allow_edit_race_factor_description">Rennleiter können den Rennfaktor je Rennen ändern</string>
|
||||
<string name="error_finished_time">Die ausgewählte Zielzeit liegt vor der Zeit, der ersten Schiffeinfahrt. Bitte überprüfe die Uhrzeit.</string>
|
||||
<string name="error_finishing_time">Die ausgewählte Zeit is vor dem Rennstart. Bitte überprüfe die Uhrzeit.</string>
|
||||
<string name="error_time_in_future">Die ausgewählte Zeit liegt in der Zukunft. Bitte überprüfe die Uhrzeit.</string>
|
||||
@@ -496,5 +498,6 @@
|
||||
|
||||
<string name="preference_non_public_events_header">Zeige nicht öffentliche Events</string>
|
||||
<string name="preference_non_public_events_summary">Lade alle Events, auch die nicht öffentlichen.</string>
|
||||
<string name="race_factor">Faktor</string>
|
||||
|
||||
</resources>
|
||||
@@ -87,6 +87,8 @@
|
||||
<bool name="preference_allow_dependent_races_default">true</bool>
|
||||
<string name="preference_dependent_races_offset_key" translatable="false">dependentRacesOffset</string>
|
||||
<integer name="preference_dependent_races_offset_default">5</integer>
|
||||
<string name="preference_allow_edit_race_factor_key" translatable="false">raceFactor</string>
|
||||
<bool name="preference_allow_edit_race_factor_default">false</bool>
|
||||
|
||||
<string name="preference_allow_demo_key" translatable="false">allow_demo</string>
|
||||
<bool name="preference_allow_demo_default">false</bool>
|
||||
|
||||
@@ -456,6 +456,8 @@
|
||||
<string name="preference_allow_dependent_races_header">Relative Start Time (Minutes)</string>
|
||||
<string name="preference_allow_dependent_races_description">Enable Relative Start Time between Races</string>
|
||||
<string name="preference_dependent_races_offset_header">Default Relative Start Time Offset</string>
|
||||
<string name="preference_allow_edit_race_factor_header">Race factor change</string>
|
||||
<string name="preference_allow_edit_race_factor_description">Race managers can change the race factor per race</string>
|
||||
<string name="error_finished_time">The given finish time is earlier than the first finisher time. Please recheck the time.</string>
|
||||
<string name="error_finishing_time">The selected time is before the race start.</string>
|
||||
<string name="error_time_in_future">The given time is in future. Please recheck the time.</string>
|
||||
@@ -524,4 +526,5 @@
|
||||
|
||||
<string name="preference_non_public_events_header">Show Non Public Events</string>
|
||||
<string name="preference_non_public_events_summary">Load all events including the no public one.</string>
|
||||
<string name="race_factor">Factor</string>
|
||||
</resources>
|
||||
|
||||
@@ -7,33 +7,39 @@
|
||||
android:defaultValue="@string/preference_racing_procedure_override_default"
|
||||
android:key="@string/preference_racing_procedure_override_key"
|
||||
android:summary="@string/override_default_start_procedure_type_select_description"
|
||||
android:title="@string/override_default_start_procedure_type_select_header"/>
|
||||
android:title="@string/override_default_start_procedure_type_select_header" />
|
||||
|
||||
<ListPreference
|
||||
android:defaultValue="@string/preference_course_designer_override_default"
|
||||
android:key="@string/preference_course_designer_override_key"
|
||||
android:title="@string/override_default_course_designer_type_select_header"/>
|
||||
android:title="@string/override_default_course_designer_type_select_header" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="@bool/preference_allow_dependent_races_default"
|
||||
android:key="@string/preference_allow_dependent_races_key"
|
||||
android:summary="@string/preference_allow_dependent_races_description"
|
||||
android:title="@string/preference_allow_dependent_races_header"/>
|
||||
android:title="@string/preference_allow_dependent_races_header" />
|
||||
|
||||
<com.sap.sailing.racecommittee.app.ui.views.IntegerEditTextPreference
|
||||
android:defaultValue="@integer/preference_dependent_races_offset_default"
|
||||
android:key="@string/preference_dependent_races_offset_key"
|
||||
android:numeric="integer"
|
||||
android:title="@string/preference_dependent_races_offset_header"/>
|
||||
android:title="@string/preference_dependent_races_offset_header" />
|
||||
|
||||
<SwitchPreference
|
||||
android:defaultValue="@bool/preference_heading_with_declination_subtracted_default"
|
||||
android:key="@string/preference_heading_with_declination_subtracted_key"
|
||||
android:switchTextOn="@string/preference_heading_with_declination_subtracted_is_enabled"
|
||||
android:switchTextOff="@string/preference_heading_with_declination_subtracted_is_disabled"
|
||||
android:summaryOn="@string/preference_heading_with_declination_subtracted_summary_is_enabled"
|
||||
android:summaryOff="@string/preference_heading_with_declination_subtracted_summary_is_disabled"
|
||||
android:title="@string/preference_heading_with_declination_subtracted_enabled"/>
|
||||
android:summaryOn="@string/preference_heading_with_declination_subtracted_summary_is_enabled"
|
||||
android:switchTextOff="@string/preference_heading_with_declination_subtracted_is_disabled"
|
||||
android:switchTextOn="@string/preference_heading_with_declination_subtracted_is_enabled"
|
||||
android:title="@string/preference_heading_with_declination_subtracted_enabled" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="@bool/preference_allow_edit_race_factor_default"
|
||||
android:key="@string/preference_allow_edit_race_factor_key"
|
||||
android:summary="@string/preference_allow_edit_race_factor_description"
|
||||
android:title="@string/preference_allow_edit_race_factor_header" />
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory android:title="RRS26">
|
||||
@@ -42,19 +48,19 @@
|
||||
android:defaultValue="@string/preference_racing_procedure_classflag_default"
|
||||
android:key="@string/preference_racing_procedure_rrs26_classflag_key"
|
||||
android:summary="@string/empty"
|
||||
android:title="@string/preference_racing_procedure_classflag_header"/>
|
||||
android:title="@string/preference_racing_procedure_classflag_header" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="@bool/preference_racing_procedure_rrs26_hasxray_default"
|
||||
android:key="@string/preference_racing_procedure_rrs26_hasxray_key"
|
||||
android:summary="@string/preference_racing_procedure_hasxray_description"
|
||||
android:title="@string/preference_racing_procedure_hasxray_header"/>
|
||||
android:title="@string/preference_racing_procedure_hasxray_header" />
|
||||
|
||||
<com.sap.sailing.racecommittee.app.ui.views.FixedMultiSelectListPreference
|
||||
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_rrs26_startmode_flags_header" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
@@ -64,25 +70,25 @@
|
||||
android:defaultValue="@string/preference_racing_procedure_classflag_default"
|
||||
android:key="@string/preference_racing_procedure_gatestart_classflag_key"
|
||||
android:summary="@string/empty"
|
||||
android:title="@string/preference_racing_procedure_classflag_header"/>
|
||||
android:title="@string/preference_racing_procedure_classflag_header" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="@bool/preference_racing_procedure_gatestart_hasxray_default"
|
||||
android:key="@string/preference_racing_procedure_gatestart_hasxray_key"
|
||||
android:summary="@string/preference_racing_procedure_hasxray_description"
|
||||
android:title="@string/preference_racing_procedure_hasxray_header"/>
|
||||
android:title="@string/preference_racing_procedure_hasxray_header" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="@bool/preference_racing_procedure_gatestart_haspathfinder_default"
|
||||
android:key="@string/preference_racing_procedure_gatestart_haspathfinder_key"
|
||||
android:summary="@string/preference_racing_procedure_gatestart_haspathfinder_description"
|
||||
android:title="@string/preference_racing_procedure_gatestart_haspathfinder_header"/>
|
||||
android:title="@string/preference_racing_procedure_gatestart_haspathfinder_header" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="@bool/preference_racing_procedure_gatestart_hasadditionalgolfdowntime_default"
|
||||
android:key="@string/preference_racing_procedure_gatestart_hasadditionalgolfdowntime_key"
|
||||
android:summary="@string/preference_racing_procedure_gatestart_hasadditionalgolfdowntime_description"
|
||||
android:title="@string/preference_racing_procedure_gatestart_hasadditionalgolfdowntime_header"/>
|
||||
android:title="@string/preference_racing_procedure_gatestart_hasadditionalgolfdowntime_header" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
@@ -92,13 +98,13 @@
|
||||
android:defaultValue="@string/preference_racing_procedure_classflag_default"
|
||||
android:key="@string/preference_racing_procedure_ess_classflag_key"
|
||||
android:summary="@string/empty"
|
||||
android:title="@string/preference_racing_procedure_classflag_header"/>
|
||||
android:title="@string/preference_racing_procedure_classflag_header" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="@bool/preference_racing_procedure_ess_hasxray_default"
|
||||
android:key="@string/preference_racing_procedure_ess_hasxray_key"
|
||||
android:summary="@string/preference_racing_procedure_hasxray_description"
|
||||
android:title="@string/preference_racing_procedure_hasxray_header"/>
|
||||
android:title="@string/preference_racing_procedure_hasxray_header" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
@@ -108,13 +114,13 @@
|
||||
android:defaultValue="@string/preference_racing_procedure_classflag_default"
|
||||
android:key="@string/preference_racing_procedure_basic_classflag_key"
|
||||
android:summary="@string/empty"
|
||||
android:title="@string/preference_racing_procedure_classflag_header"/>
|
||||
android:title="@string/preference_racing_procedure_classflag_header" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="@bool/preference_racing_procedure_basic_hasxray_default"
|
||||
android:key="@string/preference_racing_procedure_basic_hasxray_key"
|
||||
android:summary="@string/preference_racing_procedure_hasxray_description"
|
||||
android:title="@string/preference_racing_procedure_hasxray_header"/>
|
||||
android:title="@string/preference_racing_procedure_hasxray_header" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
@@ -124,13 +130,13 @@
|
||||
android:defaultValue="@string/preference_racing_procedure_classflag_default"
|
||||
android:key="@string/preference_racing_procedure_league_classflag_key"
|
||||
android:summary="@string/empty"
|
||||
android:title="@string/preference_racing_procedure_classflag_header"/>
|
||||
android:title="@string/preference_racing_procedure_classflag_header" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="@bool/preference_racing_procedure_league_hasxray_default"
|
||||
android:key="@string/preference_racing_procedure_league_hasxray_key"
|
||||
android:summary="@string/preference_racing_procedure_hasxray_description"
|
||||
android:title="@string/preference_racing_procedure_hasxray_header"/>
|
||||
android:title="@string/preference_racing_procedure_hasxray_header" />
|
||||
|
||||
</PreferenceCategory>
|
||||
</PreferenceScreen>
|
||||
+1
@@ -41,6 +41,7 @@ public class AppConstants {
|
||||
public final static String INTENT_ACTION_TOGGLE_PROCEDURE_MORE_MODE = "more_mode";
|
||||
public final static String INTENT_ACTION_TOGGLE_PROCEDURE_MORE_PATHFINDER = "more_pathfinder";
|
||||
public final static String INTENT_ACTION_TOGGLE_PROCEDURE_MORE_TIMING = "more_timing";
|
||||
public final static String INTENT_ACTION_TOGGLE_FACTOR = "factor";
|
||||
public final static String INTENT_ACTION_TOGGLE_COURSE = "course";
|
||||
public final static String INTENT_ACTION_TOGGLE_WIND = "wind";
|
||||
public final static String INTENT_ACTION_TOGGLE_TIME = "time";
|
||||
|
||||
+101
-106
@@ -61,6 +61,7 @@ public class AppPreferences {
|
||||
public static AppPreferences on(Context context, String preferenceName) {
|
||||
return new AppPreferences(context, preferenceName);
|
||||
}
|
||||
|
||||
protected final Context context;
|
||||
|
||||
private OnSharedPreferenceChangeListener pollingActiveChangedListener = new OnSharedPreferenceChangeListener() {
|
||||
@@ -76,10 +77,12 @@ public class AppPreferences {
|
||||
private Set<PollingActiveChangedListener> pollingActiveChangedListeners = new HashSet<>();
|
||||
|
||||
protected final SharedPreferences preferences;
|
||||
|
||||
protected AppPreferences(Context context) {
|
||||
this.context = context.getApplicationContext();
|
||||
this.preferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
}
|
||||
|
||||
public AppPreferences(Context context, String preferenceName) {
|
||||
this.context = context.getApplicationContext();
|
||||
this.preferences = context.getSharedPreferences(preferenceName, Context.MODE_PRIVATE);
|
||||
@@ -134,8 +137,7 @@ public class AppPreferences {
|
||||
}
|
||||
|
||||
public RacingProcedureType getDefaultRacingProcedureType() {
|
||||
String defaultStartProcedureType = preferences.getString(
|
||||
key(R.string.preference_racing_procedure_override_key), "");
|
||||
String defaultStartProcedureType = preferences.getString(key(R.string.preference_racing_procedure_override_key), "");
|
||||
return RacingProcedureType.valueOf(defaultStartProcedureType);
|
||||
}
|
||||
|
||||
@@ -156,24 +158,24 @@ public class AppPreferences {
|
||||
return preferences.getBoolean(key(R.string.preference_racing_procedure_gatestart_haspathfinder_key), true);
|
||||
}
|
||||
|
||||
public LoginType getLoginType() {
|
||||
int type = preferences.getInt(HIDDEN_PREFERENCE_LOGIN_TYPE, -1);
|
||||
switch( type ){
|
||||
case 0:{
|
||||
return LoginType.NONE;
|
||||
}
|
||||
case 1:{
|
||||
return LoginType.VIEWER;
|
||||
}
|
||||
case 2:{
|
||||
return LoginType.OFFICER;
|
||||
}
|
||||
public LoginType getLoginType() {
|
||||
int type = preferences.getInt(HIDDEN_PREFERENCE_LOGIN_TYPE, -1);
|
||||
switch (type) {
|
||||
case 0: {
|
||||
return LoginType.NONE;
|
||||
}
|
||||
case 1: {
|
||||
return LoginType.VIEWER;
|
||||
}
|
||||
case 2: {
|
||||
return LoginType.OFFICER;
|
||||
}
|
||||
|
||||
default:{
|
||||
return LoginType.NONE;
|
||||
}
|
||||
}
|
||||
}
|
||||
default: {
|
||||
return LoginType.NONE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String getMailRecipient() {
|
||||
return preferences.getString(key(R.string.preference_mail_key), "");
|
||||
@@ -205,18 +207,18 @@ public class AppPreferences {
|
||||
|
||||
private String getRacingProcedureClassFlagKey(RacingProcedureType type) {
|
||||
switch (type) {
|
||||
case RRS26:
|
||||
return key(R.string.preference_racing_procedure_rrs26_classflag_key);
|
||||
case GateStart:
|
||||
return key(R.string.preference_racing_procedure_gatestart_classflag_key);
|
||||
case ESS:
|
||||
return key(R.string.preference_racing_procedure_ess_classflag_key);
|
||||
case BASIC:
|
||||
return key(R.string.preference_racing_procedure_basic_classflag_key);
|
||||
case LEAGUE:
|
||||
return key(R.string.preference_racing_procedure_league_classflag_key);
|
||||
default:
|
||||
throw new IllegalArgumentException("Unknown racing procedure type.");
|
||||
case RRS26:
|
||||
return key(R.string.preference_racing_procedure_rrs26_classflag_key);
|
||||
case GateStart:
|
||||
return key(R.string.preference_racing_procedure_gatestart_classflag_key);
|
||||
case ESS:
|
||||
return key(R.string.preference_racing_procedure_ess_classflag_key);
|
||||
case BASIC:
|
||||
return key(R.string.preference_racing_procedure_basic_classflag_key);
|
||||
case LEAGUE:
|
||||
return key(R.string.preference_racing_procedure_league_classflag_key);
|
||||
default:
|
||||
throw new IllegalArgumentException("Unknown racing procedure type.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -227,18 +229,18 @@ public class AppPreferences {
|
||||
|
||||
private String getRacingProcedureHasIndividualRecallKey(RacingProcedureType type) {
|
||||
switch (type) {
|
||||
case RRS26:
|
||||
return key(R.string.preference_racing_procedure_rrs26_hasxray_key);
|
||||
case GateStart:
|
||||
return key(R.string.preference_racing_procedure_gatestart_hasxray_key);
|
||||
case ESS:
|
||||
return key(R.string.preference_racing_procedure_ess_hasxray_key);
|
||||
case BASIC:
|
||||
return key(R.string.preference_racing_procedure_basic_hasxray_key);
|
||||
case LEAGUE:
|
||||
return key(R.string.preference_racing_procedure_league_hasxray_key);
|
||||
default:
|
||||
throw new IllegalArgumentException("Unknown racing procedure type.");
|
||||
case RRS26:
|
||||
return key(R.string.preference_racing_procedure_rrs26_hasxray_key);
|
||||
case GateStart:
|
||||
return key(R.string.preference_racing_procedure_gatestart_hasxray_key);
|
||||
case ESS:
|
||||
return key(R.string.preference_racing_procedure_ess_hasxray_key);
|
||||
case BASIC:
|
||||
return key(R.string.preference_racing_procedure_basic_hasxray_key);
|
||||
case LEAGUE:
|
||||
return key(R.string.preference_racing_procedure_league_hasxray_key);
|
||||
default:
|
||||
throw new IllegalArgumentException("Unknown racing procedure type.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -265,10 +267,10 @@ public class AppPreferences {
|
||||
return Double.longBitsToDouble(windSpeedAsLong);
|
||||
}
|
||||
|
||||
public LatLng getWindPosition(){
|
||||
double lat = Double.longBitsToDouble(preferences.getLong(HIDDEN_PREFERENCE_WIND_LAT, 0));
|
||||
double lng = Double.longBitsToDouble(preferences.getLong(HIDDEN_PREFERENCE_WIND_LNG, 0));
|
||||
return new LatLng(lat,lng);
|
||||
public LatLng getWindPosition() {
|
||||
double lat = Double.longBitsToDouble(preferences.getLong(HIDDEN_PREFERENCE_WIND_LAT, 0));
|
||||
double lng = Double.longBitsToDouble(preferences.getLong(HIDDEN_PREFERENCE_WIND_LNG, 0));
|
||||
return new LatLng(lat, lng);
|
||||
}
|
||||
|
||||
public boolean isPollingActive() {
|
||||
@@ -297,9 +299,7 @@ public class AppPreferences {
|
||||
}
|
||||
|
||||
public void setByNameCourseDesignerCourseNames(List<String> courseNames) {
|
||||
preferences
|
||||
.edit()
|
||||
.putStringSet(key(R.string.preference_course_designer_by_name_course_names_key), new HashSet<>(courseNames)).commit();
|
||||
preferences.edit().putStringSet(key(R.string.preference_course_designer_by_name_course_names_key), new HashSet<>(courseNames)).commit();
|
||||
}
|
||||
|
||||
public void setCourseLayout(CourseLayouts courseLayout) {
|
||||
@@ -316,51 +316,47 @@ public class AppPreferences {
|
||||
}
|
||||
|
||||
public void setGateStartHasAdditionalGolfDownTime(boolean hasAdditionalGolfDownTime) {
|
||||
preferences
|
||||
.edit()
|
||||
.putBoolean(key(R.string.preference_racing_procedure_gatestart_hasadditionalgolfdowntime_key), hasAdditionalGolfDownTime).commit();
|
||||
preferences.edit().putBoolean(key(R.string.preference_racing_procedure_gatestart_hasadditionalgolfdowntime_key), hasAdditionalGolfDownTime)
|
||||
.commit();
|
||||
}
|
||||
|
||||
public void setGateStartHasPathfinder(boolean hasPathfinder) {
|
||||
preferences.edit()
|
||||
.putBoolean(key(R.string.preference_racing_procedure_gatestart_haspathfinder_key), hasPathfinder)
|
||||
.commit();
|
||||
preferences.edit().putBoolean(key(R.string.preference_racing_procedure_gatestart_haspathfinder_key), hasPathfinder).commit();
|
||||
}
|
||||
|
||||
public void setLoginType(LoginType type) {
|
||||
ExLog.i(getContext(), this.getClass().toString(), "setLoginType: "+ type);
|
||||
public void setLoginType(LoginType type) {
|
||||
ExLog.i(getContext(), this.getClass().toString(), "setLoginType: " + type);
|
||||
|
||||
Editor setEdit = preferences.edit();
|
||||
|
||||
switch( type ){
|
||||
case NONE:{
|
||||
setEdit.putInt(HIDDEN_PREFERENCE_LOGIN_TYPE, 0);
|
||||
break;
|
||||
}
|
||||
case VIEWER:{
|
||||
setEdit.putInt(HIDDEN_PREFERENCE_LOGIN_TYPE, 1);
|
||||
break;
|
||||
}
|
||||
case OFFICER:{
|
||||
setEdit.putInt(HIDDEN_PREFERENCE_LOGIN_TYPE, 2);
|
||||
break;
|
||||
}
|
||||
switch (type) {
|
||||
case NONE: {
|
||||
setEdit.putInt(HIDDEN_PREFERENCE_LOGIN_TYPE, 0);
|
||||
break;
|
||||
}
|
||||
case VIEWER: {
|
||||
setEdit.putInt(HIDDEN_PREFERENCE_LOGIN_TYPE, 1);
|
||||
break;
|
||||
}
|
||||
case OFFICER: {
|
||||
setEdit.putInt(HIDDEN_PREFERENCE_LOGIN_TYPE, 2);
|
||||
break;
|
||||
}
|
||||
|
||||
default:{
|
||||
break;
|
||||
}
|
||||
}
|
||||
default: {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
setEdit.commit();
|
||||
}
|
||||
setEdit.commit();
|
||||
}
|
||||
|
||||
public void setMailRecipient(String mail) {
|
||||
preferences.edit().putString(key(R.string.preference_mail_key), mail).commit();
|
||||
}
|
||||
|
||||
public void setManagedCourseAreaNames(List<String> courseAreaNames) {
|
||||
preferences.edit()
|
||||
.putStringSet(key(R.string.preference_course_areas_key), new HashSet<>(courseAreaNames)).commit();
|
||||
preferences.edit().putStringSet(key(R.string.preference_course_areas_key), new HashSet<>(courseAreaNames)).commit();
|
||||
}
|
||||
|
||||
public void setNumberOfRounds(NumberOfRounds numberOfRounds) {
|
||||
@@ -383,15 +379,12 @@ public class AppPreferences {
|
||||
for (Flags flag : flags) {
|
||||
flagNames.add(flag.name());
|
||||
}
|
||||
preferences.edit().putStringSet(key(R.string.preference_racing_procedure_rrs26_startmode_flags_key), flagNames)
|
||||
.commit();
|
||||
preferences.edit().putStringSet(key(R.string.preference_racing_procedure_rrs26_startmode_flags_key), flagNames).commit();
|
||||
}
|
||||
|
||||
public void setSendingActive(boolean activate) {
|
||||
ExLog.i(getContext(), this.getClass().toString(), "setSendingActive: "+ activate);
|
||||
preferences.edit()
|
||||
.putBoolean(context.getResources().getString(R.string.preference_isSendingActive_key), activate)
|
||||
.commit();
|
||||
ExLog.i(getContext(), this.getClass().toString(), "setSendingActive: " + activate);
|
||||
preferences.edit().putBoolean(context.getResources().getString(R.string.preference_isSendingActive_key), activate).commit();
|
||||
}
|
||||
|
||||
public void setWindBearingFromDirection(double enteredWindBearing) {
|
||||
@@ -407,10 +400,7 @@ public class AppPreferences {
|
||||
public void setWindPosition(LatLng latLng) {
|
||||
long lat = Double.doubleToLongBits(latLng.latitude);
|
||||
long lng = Double.doubleToLongBits(latLng.longitude);
|
||||
preferences.edit()
|
||||
.putLong(HIDDEN_PREFERENCE_WIND_LAT, lat)
|
||||
.putLong(HIDDEN_PREFERENCE_WIND_LNG, lng)
|
||||
.commit();
|
||||
preferences.edit().putLong(HIDDEN_PREFERENCE_WIND_LAT, lat).putLong(HIDDEN_PREFERENCE_WIND_LNG, lng).commit();
|
||||
}
|
||||
|
||||
public void unregisterPollingActiveChangedListener(PollingActiveChangedListener listener) {
|
||||
@@ -421,33 +411,33 @@ public class AppPreferences {
|
||||
}
|
||||
|
||||
public boolean isDemoAllowed() {
|
||||
return preferences.getBoolean(context.getString(R.string.preference_allow_demo_key),
|
||||
context.getResources().getBoolean(R.bool.preference_allow_demo_default));
|
||||
return preferences.getBoolean(context.getString(R.string.preference_allow_demo_key), context.getResources()
|
||||
.getBoolean(R.bool.preference_allow_demo_default));
|
||||
}
|
||||
|
||||
public boolean wakelockEnabled() {
|
||||
return preferences.getBoolean(context.getString(R.string.preference_wakelock_key), context.getResources()
|
||||
.getBoolean(R.bool.preference_wakelock_default));
|
||||
return preferences
|
||||
.getBoolean(context.getString(R.string.preference_wakelock_key), context.getResources().getBoolean(R.bool.preference_wakelock_default));
|
||||
}
|
||||
|
||||
public boolean isOfflineMode() {
|
||||
return preferences.getBoolean(context.getString(R.string.preference_offline_key), context.getResources()
|
||||
.getBoolean(R.bool.preference_offline_default));
|
||||
return preferences
|
||||
.getBoolean(context.getString(R.string.preference_offline_key), context.getResources().getBoolean(R.bool.preference_offline_default));
|
||||
}
|
||||
|
||||
public boolean isDependentRacesAllowed() {
|
||||
return preferences.getBoolean(context.getString(R.string.preference_allow_dependent_races_key),
|
||||
context.getResources().getBoolean(R.bool.preference_allow_dependent_races_default));
|
||||
return preferences.getBoolean(context.getString(R.string.preference_allow_dependent_races_key), context.getResources()
|
||||
.getBoolean(R.bool.preference_allow_dependent_races_default));
|
||||
}
|
||||
|
||||
public int getDependentRacesOffset() {
|
||||
return preferences.getInt(context.getString(R.string.preference_dependent_races_offset_key),
|
||||
context.getResources().getInteger(R.integer.preference_dependent_races_offset_default));
|
||||
return preferences.getInt(context.getString(R.string.preference_dependent_races_offset_key), context.getResources()
|
||||
.getInteger(R.integer.preference_dependent_races_offset_default));
|
||||
}
|
||||
|
||||
public String getTheme() {
|
||||
return preferences.getString(context.getString(R.string.preference_theme_key), context.getResources()
|
||||
.getString(R.string.preference_theme_default));
|
||||
return preferences
|
||||
.getString(context.getString(R.string.preference_theme_key), context.getResources().getString(R.string.preference_theme_default));
|
||||
}
|
||||
|
||||
public void setAccessToken(String accessToken) {
|
||||
@@ -456,15 +446,20 @@ public class AppPreferences {
|
||||
|
||||
public String getAccessToken() {
|
||||
return preferences.getString(context.getString(R.string.preference_access_token_key), null);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isMagnetic() {
|
||||
return preferences.getBoolean(context.getString(R.string.preference_heading_with_declination_subtracted_key),
|
||||
context.getResources().getBoolean(R.bool.preference_heading_with_declination_subtracted_default));
|
||||
return preferences.getBoolean(context.getString(R.string.preference_heading_with_declination_subtracted_key), context.getResources()
|
||||
.getBoolean(R.bool.preference_heading_with_declination_subtracted_default));
|
||||
}
|
||||
|
||||
public boolean isRaceFactorChangeAllow() {
|
||||
return preferences.getBoolean(context.getString(R.string.preference_allow_edit_race_factor_key), context.getResources()
|
||||
.getBoolean(R.bool.preference_allow_edit_race_factor_default));
|
||||
}
|
||||
|
||||
public String showNonPublic() {
|
||||
return preferences.getBoolean(context.getString(R.string.preference_non_public_events_key),
|
||||
context.getResources().getBoolean(R.bool.preference_non_public_events_default)) ? "true" : "false";
|
||||
return preferences.getBoolean(context.getString(R.string.preference_non_public_events_key), context.getResources()
|
||||
.getBoolean(R.bool.preference_non_public_events_default)) ? "true" : "false";
|
||||
}
|
||||
}
|
||||
|
||||
+47
-3
@@ -28,6 +28,7 @@ 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.StartProcedureFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.WindFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.utils.FlagsResources;
|
||||
@@ -48,6 +49,7 @@ public class SetupPanelFragment extends BasePanelFragment {
|
||||
private PanelButton mButtonPathfinder;
|
||||
private PanelButton mButtonTiming;
|
||||
private PanelButton mButtonRaceGroup;
|
||||
private PanelButton mButtonFactor;
|
||||
private PanelButton mButtonCourse;
|
||||
private PanelButton mButtonWind;
|
||||
|
||||
@@ -102,6 +104,11 @@ public class SetupPanelFragment extends BasePanelFragment {
|
||||
mButtonRaceGroup.setListener(new ButtonRaceGroupListener());
|
||||
}
|
||||
|
||||
mButtonFactor = ViewHelper.get(layout, R.id.button_factor);
|
||||
if (mButtonFactor != null) {
|
||||
mButtonFactor.setListener(new ButtonFactorListener());
|
||||
}
|
||||
|
||||
mButtonCourse = ViewHelper.get(layout, R.id.button_course);
|
||||
if (mButtonCourse != null) {
|
||||
mButtonCourse.setListener(new ButtonCourseListener());
|
||||
@@ -162,6 +169,11 @@ public class SetupPanelFragment extends BasePanelFragment {
|
||||
mButtonRaceGroup.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
if (mButtonFactor != null) {
|
||||
mButtonFactor.setVisibility(preferences.isRaceFactorChangeAllow() ? View.VISIBLE : View.GONE);
|
||||
mButtonFactor.setPanelText("");
|
||||
}
|
||||
|
||||
if (getRaceState().getRacingProcedure() instanceof RRS26RacingProcedure) {
|
||||
if (mButtonMode != null) {
|
||||
RRS26RacingProcedure typedProcedure = getRaceState().getTypedRacingProcedure();
|
||||
@@ -332,11 +344,14 @@ public class SetupPanelFragment extends BasePanelFragment {
|
||||
resetFragment(mButtonTiming.isLocked(), getFrameId(getActivity(), R.id.race_edit, R.id.race_content, false), GateStartTimingFragment.class);
|
||||
mButtonTiming.setMarkerLevel(PanelButton.LEVEL_NORMAL);
|
||||
}
|
||||
if (mButtonFactor != null && !mButtonFactor.equals(view)) {
|
||||
resetFragment(mButtonFactor.isLocked(), getFrameId(getActivity(), R.id.race_edit, R.id.race_content, false), RaceFactorFragment.class);
|
||||
mButtonFactor.setMarkerLevel(PanelButton.LEVEL_NORMAL);
|
||||
}
|
||||
if (mButtonCourse != null && !mButtonCourse.equals(view)) {
|
||||
resetFragment(mButtonCourse.isLocked(), getFrameId(getActivity(), R.id.race_edit, R.id.race_content, false), CourseFragment.class);
|
||||
mButtonCourse.setMarkerLevel(PanelButton.LEVEL_NORMAL);
|
||||
}
|
||||
|
||||
if (mButtonWind != null && !mButtonWind.equals(view)) {
|
||||
resetFragment(mButtonWind.isLocked(), getFrameId(getActivity(), R.id.race_edit, R.id.race_content, false), WindFragment.class);
|
||||
mButtonWind.setMarkerLevel(PanelButton.LEVEL_NORMAL);
|
||||
@@ -423,7 +438,7 @@ public class SetupPanelFragment extends BasePanelFragment {
|
||||
|
||||
@Override
|
||||
public void onChangedSwitch(PanelButton view, boolean isChecked) {
|
||||
|
||||
// no-op
|
||||
}
|
||||
}
|
||||
|
||||
@@ -524,6 +539,33 @@ public class SetupPanelFragment extends BasePanelFragment {
|
||||
}
|
||||
}
|
||||
|
||||
private class ButtonFactorListener implements PanelButton.PanelButtonClick {
|
||||
private final String TAG = ButtonFactorListener.class.getName();
|
||||
|
||||
@Override
|
||||
public void onClick(PanelButton view) {
|
||||
sendIntent(AppConstants.INTENT_ACTION_TOGGLE, AppConstants.INTENT_ACTION_EXTRA, AppConstants.INTENT_ACTION_TOGGLE_FACTOR);
|
||||
switch (view.toggleMarker()) {
|
||||
case LEVEL_NORMAL:
|
||||
sendIntent(AppConstants.INTENT_ACTION_SHOW_MAIN_CONTENT);
|
||||
break;
|
||||
|
||||
case LEVEL_TOGGLED:
|
||||
// replaceFragment(RaceFactorFragment.newInstance(BaseFragment.START_MODE_PLANNED));
|
||||
break;
|
||||
|
||||
default:
|
||||
ExLog.i(getActivity(), TAG, "Unknown return value");
|
||||
}
|
||||
view.disableToggle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChangedSwitch(PanelButton view, boolean isChecked) {
|
||||
// no-op
|
||||
}
|
||||
}
|
||||
|
||||
private class ButtonCourseListener implements PanelButton.PanelButtonClick {
|
||||
private final String TAG = ButtonCourseListener.class.getName();
|
||||
|
||||
@@ -536,7 +578,7 @@ public class SetupPanelFragment extends BasePanelFragment {
|
||||
break;
|
||||
|
||||
case LEVEL_TOGGLED:
|
||||
replaceFragment(CourseFragment.newInstance(BaseFragment.START_MODE_PLANNED, getRace(), getActivity()));
|
||||
replaceFragment(CourseFragment.newInstance(BaseFragment.START_MODE_PLANNED, getRace()));
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -598,6 +640,8 @@ public class SetupPanelFragment extends BasePanelFragment {
|
||||
uncheckMarker(mButtonPathfinder);
|
||||
} else if (AppConstants.INTENT_ACTION_TOGGLE_PROCEDURE_MORE_TIMING.equals(data)) {
|
||||
uncheckMarker(mButtonTiming);
|
||||
} else if (AppConstants.INTENT_ACTION_TOGGLE_FACTOR.equals(data)) {
|
||||
uncheckMarker(mButtonFactor);
|
||||
} else if (AppConstants.INTENT_ACTION_TOGGLE_COURSE.equals(data)) {
|
||||
uncheckMarker(mButtonCourse);
|
||||
} else if (AppConstants.INTENT_ACTION_TOGGLE_WIND.equals(data)) {
|
||||
|
||||
+1
-2
@@ -1,6 +1,5 @@
|
||||
package com.sap.sailing.racecommittee.app.ui.fragments.raceinfo;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
|
||||
@@ -14,7 +13,7 @@ import com.sap.sailing.racecommittee.app.ui.layouts.HeaderLayout;
|
||||
|
||||
public abstract class CourseFragment extends BaseFragment {
|
||||
|
||||
public static RaceFragment newInstance(@START_MODE_VALUES int startMode, ManagedRace race, Context context) {
|
||||
public static RaceFragment newInstance(@START_MODE_VALUES int startMode, ManagedRace race) {
|
||||
CourseDesignerMode mode = race.getState().getConfiguration().getDefaultCourseDesignerMode();
|
||||
|
||||
RaceFragment fragment;
|
||||
|
||||
+15
-1
@@ -106,6 +106,7 @@ public class MainScheduleFragment extends BaseFragment implements View.OnClickLi
|
||||
|
||||
initStartTime();
|
||||
initStartMode();
|
||||
initFactor();
|
||||
initCourse();
|
||||
initWind();
|
||||
lastTick = MillisecondsTimePoint.now().minus(2000);
|
||||
@@ -120,11 +121,24 @@ public class MainScheduleFragment extends BaseFragment implements View.OnClickLi
|
||||
}
|
||||
}
|
||||
|
||||
private void initFactor() {
|
||||
if (preferences.isRaceFactorChangeAllow()) {
|
||||
Runnable runnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
openFragment(RaceFactorFragment.newInstance(START_MODE_PRESETUP));
|
||||
}
|
||||
};
|
||||
SelectionItem factorItem = new SelectionItem(getString(R.string.race_factor), null, null, false, false, runnable);
|
||||
mItems.add(factorItem);
|
||||
}
|
||||
}
|
||||
|
||||
private void initCourse() {
|
||||
Runnable runnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
openFragment(CourseFragment.newInstance(START_MODE_PRESETUP, getRace(), getActivity()));
|
||||
openFragment(CourseFragment.newInstance(START_MODE_PRESETUP, getRace()));
|
||||
}
|
||||
};
|
||||
SelectionItem courseItem = new SelectionItem(getString(R.string.course), null, null, false, false, runnable);
|
||||
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
package com.sap.sailing.racecommittee.app.ui.fragments.raceinfo;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.sap.sailing.android.shared.util.ViewHelper;
|
||||
import com.sap.sailing.racecommittee.app.R;
|
||||
import com.sap.sailing.racecommittee.app.ui.layouts.HeaderLayout;
|
||||
|
||||
public class RaceFactorFragment extends BaseFragment {
|
||||
|
||||
public static RaceFactorFragment newInstance(@START_MODE_VALUES int startMode) {
|
||||
RaceFactorFragment fragment = new RaceFactorFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putInt(START_MODE, startMode);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
final View layout = LayoutInflater.from(getActivity()).inflate(R.layout.race_schedule_procedure_pathfinder, container, false);
|
||||
|
||||
HeaderLayout header = ViewHelper.get(layout, R.id.header);
|
||||
if (header != null) {
|
||||
header.setHeaderOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
goHome();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return layout;
|
||||
}
|
||||
}
|
||||
+2
@@ -85,6 +85,8 @@ public class PanelButton extends FrameLayout implements View.OnClickListener, Di
|
||||
setLinePosition(a.getInt(R.styleable.PanelButton_linePosition, -1));
|
||||
|
||||
a.recycle();
|
||||
|
||||
setMarkerLevel(LEVEL_NORMAL);
|
||||
}
|
||||
|
||||
public void setListener(PanelButtonClick listener) {
|
||||
|
||||
Reference in New Issue
Block a user