mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-09 13:50:57 +00:00
Merge branch 'racecommittee_integrated' of ssh://sapsailing.com/home/trac/git into racecommittee_integrated
This commit is contained in:
commit
c73b152c64
9 files changed
+78
-23
No files matched your search
Binary file not shown.
|
After Width: | Height: | Size: 31 KiB |
@@ -16,7 +16,7 @@
|
||||
</div>
|
||||
<div id='contentWrapper'>
|
||||
<div id='keyVisual'>
|
||||
<img alt='Sailer' src='images/key-visual.png' />
|
||||
<img alt='Sailer' src='images/key-visual.jpg' />
|
||||
<div id='infoBox'>
|
||||
<h1 id='pageHeadline'>SAP Sailing Analytics</h1>
|
||||
<p>
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
<PreferenceCategory android:title="@string/settings_category_general" >
|
||||
|
||||
<EditTextPreference
|
||||
android:key="courseAreasPref"
|
||||
android:name="@string/settings_general_manageareas_header"
|
||||
android:defaultValue="@string/settings_general_manageareas_default"
|
||||
android:key="courseAreasPref"
|
||||
android:summary="@string/settings_general_manageareas_description"
|
||||
android:title="@string/settings_general_manageareas_header" />
|
||||
</PreferenceCategory>
|
||||
@@ -19,6 +19,19 @@
|
||||
android:summary="Check the box if the Golf flag should be automatically removed in a gate start race"
|
||||
android:title="Remove Golf Automatically" />
|
||||
-->
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="overrideDefaultStartProcedureType"
|
||||
android:defaultValue="false"
|
||||
android:summary="Check the box if races should use the start procedure type defined below as a default"
|
||||
android:title="Override default start procedure type" />
|
||||
|
||||
<ListPreference
|
||||
android:key="defaultStartProcedureType"
|
||||
android:title="Default start procedure type"
|
||||
android:summary="Races will use selected start procedure type as a default. For this option to be active override checkbox has to be enabled."
|
||||
/>
|
||||
|
||||
<EditTextPreference
|
||||
android:defaultValue="30"
|
||||
android:inputType="numberDecimal"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="settings_advanced_service_default">http://localhost:8888</string>
|
||||
<string name="settings_advanced_service_default">http://192.168.56.1:8888</string>
|
||||
|
||||
<string name="intentActionRegisterRace">com.sap.sailing.racecommittee.app.action.registerRace</string>
|
||||
<!-- <string name="intentActionSaveIntent">com.sap.sailing.racecommittee.app.action.saveIntent</string> -->
|
||||
|
||||
+9
-2
@@ -147,7 +147,9 @@ public class EventSendingService extends Service implements EventSendingListener
|
||||
}
|
||||
|
||||
private void handleSendEvents(Intent intent) {
|
||||
ExLog.i(TAG, String.format("Trying to send an event..."));
|
||||
if (!isConnected()) {
|
||||
ExLog.i(TAG, String.format("Send aborted because there is no connection."));
|
||||
persistenceManager.persistIntent(intent);
|
||||
ConnectivityChangedReceiver.enable(this);
|
||||
} else {
|
||||
@@ -156,16 +158,21 @@ public class EventSendingService extends Service implements EventSendingListener
|
||||
}
|
||||
|
||||
private void handleDelayedEvents() {
|
||||
ExLog.i(TAG, String.format("Trying to resend stored events..."));
|
||||
|
||||
isHandlerSet = false;
|
||||
if (!isConnected())
|
||||
if (!isConnected()) {
|
||||
ExLog.i(TAG, String.format("Resend aborted because there is no connection."));
|
||||
return;
|
||||
}
|
||||
|
||||
sendDelayedEvents();
|
||||
}
|
||||
|
||||
private void sendDelayedEvents() {
|
||||
List<Intent> delayedIntents = persistenceManager.restoreEvents();
|
||||
ExLog.i(TAG, String.format("Trying to resend %d waiting events", delayedIntents.size()));
|
||||
ExLog.i(TAG, String.format("Resending %d events...", delayedIntents.size()));
|
||||
|
||||
for (Intent intent : delayedIntents)
|
||||
sendEvent(intent);
|
||||
}
|
||||
|
||||
+4
-1
@@ -1,5 +1,7 @@
|
||||
package com.sap.sailing.racecommittee.app.ui.activities;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
@@ -130,8 +132,9 @@ public abstract class BaseActivity extends Activity {
|
||||
int errorCount = this.sendingService.getDelayedIntentsCount();
|
||||
if (errorCount > 0) {
|
||||
menuItemLive.setIcon(R.drawable.ic_menu_share_red);
|
||||
Date lastSuccessfulSend = this.sendingService.getLastSuccessfulSend();
|
||||
sendingServiceStatus = String.format("Currently %d events waiting to be sent.\nLast successful sent was at %s",
|
||||
errorCount, this.sendingService.getLastSuccessfulSend());
|
||||
errorCount, lastSuccessfulSend == null ? "never" : lastSuccessfulSend);
|
||||
} else {
|
||||
menuItemLive.setIcon(R.drawable.ic_menu_share_holo_light);
|
||||
sendingServiceStatus = String.format("Currently no event waiting to be sent.", errorCount);
|
||||
|
||||
+4
-2
@@ -177,8 +177,10 @@ public class RacingActivity extends TwoPaneActivity implements RaceInfoListener,
|
||||
dialog.cancel();
|
||||
}
|
||||
});
|
||||
AlertDialog alert = builder.create();
|
||||
alert.show();
|
||||
if (!isFinishing()) {
|
||||
AlertDialog alert = builder.create();
|
||||
alert.show();
|
||||
}
|
||||
}
|
||||
|
||||
public void onRaceItemClicked(ManagedRace managedRace) {
|
||||
|
||||
+18
@@ -1,8 +1,13 @@
|
||||
package com.sap.sailing.racecommittee.app.ui.activities;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.preference.ListPreference;
|
||||
import android.preference.PreferenceActivity;
|
||||
|
||||
import com.sap.sailing.domain.common.racelog.StartProcedureType;
|
||||
import com.sap.sailing.racecommittee.app.R;
|
||||
|
||||
/**
|
||||
@@ -15,5 +20,18 @@ public class SettingsActivity extends PreferenceActivity {
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
addPreferencesFromResource(R.layout.settings_view);
|
||||
|
||||
ListPreference startProcedurePreference = (ListPreference) findPreference("defaultStartProcedureType");
|
||||
|
||||
List<CharSequence> entries = new ArrayList<CharSequence>();
|
||||
List<CharSequence> entryValues = new ArrayList<CharSequence>();
|
||||
for (StartProcedureType type : StartProcedureType.values()) {
|
||||
entries.add(type.toString());
|
||||
entryValues.add(type.name());
|
||||
}
|
||||
|
||||
startProcedurePreference.setEntries(entries.toArray(new CharSequence[0]));
|
||||
startProcedurePreference.setEntryValues(entryValues.toArray(new CharSequence[0]));
|
||||
}
|
||||
|
||||
}
|
||||
+27
-15
@@ -5,6 +5,7 @@ import java.util.Date;
|
||||
|
||||
import android.app.FragmentManager;
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
@@ -58,7 +59,7 @@ public class SetStartTimeRaceFragment extends RaceFragment {
|
||||
isReset = getArguments().getBoolean(AppConstants.RESET_TIME_FRAGMENT_IS_RESET);
|
||||
|
||||
spinnerStartProcedure = (Spinner) getView().findViewById(R.id.race_reset_time_spinner_procedure);
|
||||
setupSpinner();
|
||||
setupStartProcedureSpinner();
|
||||
pickerTime = (TimePicker) getView().findViewById(R.id.race_reset_time_picker_time);
|
||||
setupTimePicker();
|
||||
btSetDate = (Button) getView().findViewById(R.id.race_reset_time_btn_date);
|
||||
@@ -87,13 +88,13 @@ public class SetStartTimeRaceFragment extends RaceFragment {
|
||||
showAPModeDialog();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
textInfoText = (TextView) getView().findViewById(R.id.race_reset_time_text_infotext);
|
||||
}
|
||||
|
||||
private void setupTimePicker() {
|
||||
pickerTime.setIs24HourView(true);
|
||||
|
||||
|
||||
// In 10 minutes from now, but always a 5-minute-mark.
|
||||
Calendar now = Calendar.getInstance();
|
||||
now.add(Calendar.MINUTE, 10);
|
||||
@@ -103,12 +104,12 @@ public class SetStartTimeRaceFragment extends RaceFragment {
|
||||
if (minutes >= 60) {
|
||||
hours++;
|
||||
}
|
||||
|
||||
|
||||
pickerTime.setCurrentHour(hours);
|
||||
pickerTime.setCurrentMinute(minutes);
|
||||
}
|
||||
|
||||
private void setupSpinner() {
|
||||
private void setupStartProcedureSpinner() {
|
||||
ArrayAdapter<StartProcedureType> adapter = new ArrayAdapter<StartProcedureType>(getActivity(),
|
||||
android.R.layout.simple_spinner_dropdown_item, StartProcedureType.values());
|
||||
spinnerStartProcedure.setAdapter(adapter);
|
||||
@@ -122,7 +123,16 @@ public class SetStartTimeRaceFragment extends RaceFragment {
|
||||
public void onNothingSelected(AdapterView<?> adapterView) {
|
||||
}
|
||||
});
|
||||
StartProcedureType type = getRace().getState().getStartProcedureType();
|
||||
|
||||
StartProcedureType type = StartProcedureType.ESS;
|
||||
boolean overrideStartProcedureType = PreferenceManager.getDefaultSharedPreferences(getActivity()).getBoolean(
|
||||
"overrideDefaultStartProcedureType", false);
|
||||
if (overrideStartProcedureType) {
|
||||
type = StartProcedureType.valueOf(PreferenceManager.getDefaultSharedPreferences(getActivity()).getString(
|
||||
"defaultStartProcedureType", StartProcedureType.ESS.name()));
|
||||
} else {
|
||||
type = getRace().getState().getStartProcedureType();
|
||||
}
|
||||
spinnerStartProcedure.setSelection(adapter.getPosition(type));
|
||||
}
|
||||
|
||||
@@ -132,19 +142,19 @@ public class SetStartTimeRaceFragment extends RaceFragment {
|
||||
ExLog.i(SetStartTimeRaceFragment.class.getName(),
|
||||
String.format("Fragment %s is now shown", SetStartTimeRaceFragment.class.getName()));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void notifyTick() {
|
||||
super.notifyTick();
|
||||
|
||||
|
||||
textInfoText.setText(String.format("Start %s", getTimeStringToStart()));
|
||||
}
|
||||
|
||||
private Date getStartTime() {
|
||||
Calendar newStartTimeCal = Calendar.getInstance();
|
||||
//newStartTimeCal.set(Calendar.YEAR, 0);
|
||||
//newStartTimeCal.set(Calendar.MONTH, 0);
|
||||
//newStartTimeCal.set(Calendar.DAY_OF_MONTH, 0);
|
||||
// newStartTimeCal.set(Calendar.YEAR, 0);
|
||||
// newStartTimeCal.set(Calendar.MONTH, 0);
|
||||
// newStartTimeCal.set(Calendar.DAY_OF_MONTH, 0);
|
||||
newStartTimeCal.set(Calendar.HOUR_OF_DAY, pickerTime.getCurrentHour());
|
||||
newStartTimeCal.set(Calendar.MINUTE, pickerTime.getCurrentMinute());
|
||||
newStartTimeCal.set(Calendar.SECOND, 0);
|
||||
@@ -156,7 +166,7 @@ public class SetStartTimeRaceFragment extends RaceFragment {
|
||||
private String getTimeStringToStart() {
|
||||
Date startTime = getStartTime();
|
||||
Date now = new Date();
|
||||
|
||||
|
||||
long differenceInSeconds = (startTime.getTime() - now.getTime()) / 1000;
|
||||
boolean isInPast = Math.signum(differenceInSeconds) < 0;
|
||||
if (isInPast) {
|
||||
@@ -165,8 +175,10 @@ public class SetStartTimeRaceFragment extends RaceFragment {
|
||||
|
||||
long diff[] = new long[] { 0, 0, 0, 0 };
|
||||
/* sec */diff[3] = (differenceInSeconds >= 60 ? differenceInSeconds % 60 : differenceInSeconds);
|
||||
/* min */diff[2] = (differenceInSeconds = (differenceInSeconds / 60)) >= 60 ? differenceInSeconds % 60 : differenceInSeconds;
|
||||
/* hours */diff[1] = (differenceInSeconds = (differenceInSeconds / 60)) >= 24 ? differenceInSeconds % 24 : differenceInSeconds;
|
||||
/* min */diff[2] = (differenceInSeconds = (differenceInSeconds / 60)) >= 60 ? differenceInSeconds % 60
|
||||
: differenceInSeconds;
|
||||
/* hours */diff[1] = (differenceInSeconds = (differenceInSeconds / 60)) >= 24 ? differenceInSeconds % 24
|
||||
: differenceInSeconds;
|
||||
/* days */diff[0] = (differenceInSeconds = (differenceInSeconds / 24));
|
||||
|
||||
String timeText = "";
|
||||
@@ -180,7 +192,7 @@ public class SetStartTimeRaceFragment extends RaceFragment {
|
||||
timeText += String.format("%d minute%s, ", diff[2], diff[2] > 1 ? "s" : "");
|
||||
}
|
||||
timeText += String.format("%d second%s", diff[3], diff[3] > 1 ? "s" : "");
|
||||
|
||||
|
||||
return isInPast ? String.format("%s %s", timeText, "ago") : String.format("%s %s", "in", timeText);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user