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

This commit is contained in:
Armin Zamani committed 2013-05-01 13:33:14 +02:00
commit c73b152c64
9 files changed
+78 -23

No files matched your search

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

+1 -1
View File
@@ -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> -->
@@ -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);
}
@@ -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);
@@ -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) {
@@ -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]));
}
}
@@ -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);
}