Merge remote-tracking branch 'server/ubilabs--rcapp--develop' into yes2015

This commit is contained in:
Axel Uhl committed 2015-05-22 13:40:43 +02:00
commit ae56ff9e47
12 files changed
+278 -181

No files matched your search

@@ -320,7 +320,7 @@
<string name="race_start_time_in">-#TIME#</string>
<string name="race_start_time_ago">#TIME#</string>
<string name="tomorrow">Morgen</string>
<string name="race_begin_finish_header">Beginn der Z</string>
<string name="race_begin_finish_header">Beginn des Zieleinlaufs</string>
<string name="race_begin_finish_current">Aktuelle Zeit verwenden</string>
<string name="race_begin_finish_custom">Angegebene Zeit verwenden</string>
<string name="wind_sensor"><![CDATA[um #AT# / von #FROM#° / #SPEED# kn]]></string>
@@ -402,4 +402,9 @@
<string name="error_wrong_degree_value_title">Fehler</string>
<string name="error_wrong_degree_value_message">Bitte geben Sie einen Wert zwischen 0 und 360 an.</string>
<string name="author_type_officer_start">Startschiff-Wettfahrtleiter</string>
<string name="author_type_officer_finish">Zielschiff-Wettfahrtleiter</string>
<string name="author_type_shore_control">Regattaleitung an Land</string>
<string name="author_viewer">Demo-Modus</string>
</resources>
@@ -424,4 +424,9 @@
<string name="error_wrong_degree_value_title">Error</string>
<string name="error_wrong_degree_value_message">Please provide a value between 0 and 360</string>
<string name="author_type_officer_start">Race Officer on Start Vessel</string>
<string name="author_type_officer_finish">Race Officer on Finish Vessel</string>
<string name="author_type_shore_control">Shore Control</string>
<string name="author_viewer">Viewer</string>
</resources>
@@ -18,6 +18,11 @@ public class AppConstants {
public final static String FLAG_KEY = "raceFlag";
public final static String EXTRAS_WIND_FIX = "windfix";
public final static String AUTHOR_TYPE_OFFICER_START = "Race Officer on Start Vessel";
public final static String AUTHOR_TYPE_OFFICER_FINISH = "Race Officer on Finish Vessel";
public final static String AUTHOR_TYPE_SHORE_CONTROL = "Shore Control";
public final static String AUTHOR_TYPE_VIEWER = "Viewer";
public final static String DARK_THEME = "dark";
public final static String LIGHT_THEME = "light";
@@ -5,10 +5,8 @@ import android.app.Fragment;
import android.app.FragmentTransaction;
import android.content.*;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
@@ -83,7 +81,7 @@ public class RacingActivity extends SessionActivity implements RaceInfoListener,
public void run() {
loadRaces(mCourseArea);
loadNavDrawer(mCourseArea, mEvent);
loadNavDrawer(mCourseArea);
if (mSelectedRace == null) {
loadWelcomeFragment();
}
@@ -122,16 +120,14 @@ public class RacingActivity extends SessionActivity implements RaceInfoListener,
setSupportProgressBarIndeterminateVisibility(true);
ExLog.i(this, TAG, "Issuing loading of courses from data manager");
getLoaderManager()
.initLoader(CourseLoaderId, null, dataManager.createCourseAreasLoader(event, new CourseLoadClient()));
getLoaderManager().initLoader(CourseLoaderId, null, dataManager.createCourseAreasLoader(event, new CourseLoadClient()));
}
private void loadRaces(final CourseArea courseArea) {
setSupportProgressBarIndeterminateVisibility(true);
ExLog.i(this, TAG, "Issuing loading of managed races from data manager");
getLoaderManager().initLoader(RacesLoaderId, null,
dataManager.createRacesLoader(courseArea.getId(), new RaceLoadClient(courseArea)));
getLoaderManager().initLoader(RacesLoaderId, null, dataManager.createRacesLoader(courseArea.getId(), new RaceLoadClient(courseArea)));
}
private void loadEvents() {
@@ -148,8 +144,8 @@ public class RacingActivity extends SessionActivity implements RaceInfoListener,
getFragmentManager().beginTransaction()
// .setCustomAnimations(R.animator.slide_in, R.animator.slide_out)
.replace(R.id.racing_view_container, windFragment)
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).addToBackStack(null).commit();
.replace(R.id.racing_view_container, windFragment).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).addToBackStack(null)
.commit();
}
}
@@ -241,7 +237,7 @@ public class RacingActivity extends SessionActivity implements RaceInfoListener,
ExLog.i(this, this.getClass().toString(), "courseArea == null :(");
Toast.makeText(this, getString(R.string.racing_course_area_missing), Toast.LENGTH_LONG).show();
}
loadNavDrawer(mCourseArea, event);
loadNavDrawer(mCourseArea);
loadWelcomeFragment();
}
}
@@ -266,14 +262,12 @@ public class RacingActivity extends SessionActivity implements RaceInfoListener,
LocalBroadcastManager.getInstance(this).unregisterReceiver(mReceiver);
}
private void loadNavDrawer(CourseArea courseArea, EventBase event) {
mRaceList.setUp((DrawerLayout) findViewById(R.id.drawer_layout), courseArea.getName(), event.getName(),
preferences.getAuthor().getName());
private void loadNavDrawer(CourseArea courseArea) {
mRaceList.setUp((DrawerLayout) findViewById(R.id.drawer_layout), courseArea.getName(), preferences.getAuthor().getName());
}
private void loadWelcomeFragment() {
getFragmentManager().beginTransaction().replace(R.id.racing_view_container, WelcomeFragment.newInstance())
.commit();
getFragmentManager().beginTransaction().replace(R.id.racing_view_container, WelcomeFragment.newInstance()).commit();
}
public TimePoint getStartTime() {
@@ -374,8 +368,7 @@ public class RacingActivity extends SessionActivity implements RaceInfoListener,
TextView windValue = (TextView) findViewById(R.id.wind_value);
if (windFix != null) {
if (windValue != null) {
windValue.setText(String.format(getString(R.string.wind_info), windFix.getKnots(),
windFix.getBearing().reverse().toString()));
windValue.setText(String.format(getString(R.string.wind_info), windFix.getKnots(), windFix.getBearing().reverse().toString()));
}
if (mSelectedRace != null) {
mSelectedRace.getState().setWindFix(MillisecondsTimePoint.now(), windFix);
@@ -462,8 +455,7 @@ public class RacingActivity extends SessionActivity implements RaceInfoListener,
@Override
public void onClick(DialogInterface dialog, int which) {
ExLog.i(RacingActivity.this, LogEvent.RACE_RESET_YES, mSelectedRace.getId().toString());
ExLog.w(RacingActivity.this, TAG,
String.format("Race %s is selected for reset.", mSelectedRace.getId()));
ExLog.w(RacingActivity.this, TAG, String.format("Race %s is selected for reset.", mSelectedRace.getId()));
mSelectedRace.getState().setAdvancePass(MillisecondsTimePoint.now());
onRaceItemClicked(mSelectedRace);
}
@@ -504,8 +496,7 @@ public class RacingActivity extends SessionActivity implements RaceInfoListener,
TintImageView overflow = (TintImageView) outViews.get(0);
overflow.setMinimumWidth((int) getResources().getDimension(R.dimen.bigger_over_flow_width));
overflow.setMinimumHeight((int) getResources().getDimension(R.dimen.bigger_over_flow_height));
Bitmap bitmap = BitmapHelper
.decodeSampledBitmapFromResource(getResources(), R.drawable.overflow_icon_32dp, 6, 8);
Bitmap bitmap = BitmapHelper.decodeSampledBitmapFromResource(getResources(), R.drawable.overflow_icon_32dp, 6, 8);
overflow.setImageDrawable(new BitmapDrawable(getResources(), bitmap));
// Remove listener on layout
removeOnGlobalLayoutListener(decorView, this);
@@ -536,16 +527,14 @@ public class RacingActivity extends SessionActivity implements RaceInfoListener,
public void onLoadFailed(Exception ex) {
setSupportProgressBarIndeterminateVisibility(false);
AlertDialog.Builder builder = new AlertDialog.Builder(RacingActivity.this, R.style.AppTheme_AlertDialog);
builder.setMessage(String.format(getString(R.string.generic_load_failure), ex.getMessage()))
.setTitle(getString(R.string.loading_failure)).setIcon(R.drawable.ic_warning_grey600_36dp)
.setCancelable(true)
builder.setMessage(String.format(getString(R.string.generic_load_failure), ex.getMessage())).setTitle(getString(R.string.loading_failure))
.setIcon(R.drawable.ic_warning_grey600_36dp).setCancelable(true)
.setPositiveButton(getString(R.string.retry), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
setSupportProgressBarIndeterminateVisibility(true);
ExLog.i(RacingActivity.this, TAG, "Issuing a reload of managed races");
getLoaderManager().restartLoader(RacesLoaderId, null,
dataManager.createRacesLoader(courseArea.getId(), RaceLoadClient.this));
getLoaderManager().restartLoader(RacesLoaderId, null, dataManager.createRacesLoader(courseArea.getId(), RaceLoadClient.this));
dialog.cancel();
}
}).setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() {
@@ -567,8 +556,7 @@ public class RacingActivity extends SessionActivity implements RaceInfoListener,
registerOnService(data);
mRaceList.setupOn(data);
Toast.makeText(RacingActivity.this, String.format(getString(R.string.racing_load_success), data.size()),
Toast.LENGTH_SHORT).show();
Toast.makeText(RacingActivity.this, String.format(getString(R.string.racing_load_success), data.size()), Toast.LENGTH_SHORT).show();
}
setSupportProgressBarIndeterminateVisibility(false);
@@ -581,9 +569,8 @@ public class RacingActivity extends SessionActivity implements RaceInfoListener,
public void onLoadFailed(Exception ex) {
setSupportProgressBarIndeterminateVisibility(false);
AlertDialog.Builder builder = new AlertDialog.Builder(RacingActivity.this, R.style.AppTheme_AlertDialog);
builder.setMessage(String.format(getString(R.string.generic_load_failure), ex.getMessage()))
.setTitle(getString(R.string.loading_failure)).setIcon(R.drawable.ic_warning_grey600_36dp)
.setCancelable(true)
builder.setMessage(String.format(getString(R.string.generic_load_failure), ex.getMessage())).setTitle(getString(R.string.loading_failure))
.setIcon(R.drawable.ic_warning_grey600_36dp).setCancelable(true)
.setPositiveButton(getString(R.string.retry), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
setSupportProgressBarIndeterminateVisibility(true);
@@ -1,7 +1,6 @@
package com.sap.sailing.racecommittee.app.ui.fragments;
import android.app.Activity;
import android.app.Fragment;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -18,6 +17,7 @@ import com.sap.sailing.racecommittee.app.AppConstants;
import com.sap.sailing.racecommittee.app.R;
import com.sap.sailing.racecommittee.app.ui.activities.LoginActivity;
import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.LoggableDialogFragment;
import com.sap.sailing.racecommittee.app.utils.StringHelper;
public class LoginListViews extends LoggableDialogFragment implements View.OnClickListener {
@@ -37,7 +37,7 @@ public class LoginListViews extends LoggableDialogFragment implements View.OnCli
public LoginListViews() {
listener = new IntentListener();
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
@@ -113,59 +113,59 @@ public class LoginListViews extends LoggableDialogFragment implements View.OnCli
public void onClick(View view) {
final int[] pos = new int[2];
switch (view.getId()) {
case R.id.event_header:
if (event_selected != null) {
event_selected.setText(null);
case R.id.event_header:
if (event_selected != null) {
event_selected.setText(null);
}
if (event_listView != null && event_listView.getLayoutParams() != null) {
if (event_listView.getLayoutParams().height == 0) {
event_listView.getLocationOnScreen(pos);
event_listView.getLayoutParams().height = getScreenHeight() - pos[1];
} else {
closeEvent();
}
if (event_listView != null && event_listView.getLayoutParams() != null) {
if (event_listView.getLayoutParams().height == 0) {
event_listView.getLocationOnScreen(pos);
event_listView.getLayoutParams().height = getScreenHeight() - pos[1];
} else {
closeEvent();
}
event_listView.requestLayout();
}
closeArea();
closePosition();
break;
event_listView.requestLayout();
}
closeArea();
closePosition();
break;
case R.id.area_header:
closeEvent();
if (area_selected != null) {
area_selected.setText(null);
case R.id.area_header:
closeEvent();
if (area_selected != null) {
area_selected.setText(null);
}
if (area_listView != null && area_listView.getLayoutParams() != null) {
if (area_listView.getLayoutParams().height == 0) {
area_listView.getLocationOnScreen(pos);
area_listView.getLayoutParams().height = getScreenHeight() - pos[1];
} else {
closeArea();
}
if (area_listView != null && area_listView.getLayoutParams() != null) {
if (area_listView.getLayoutParams().height == 0) {
area_listView.getLocationOnScreen(pos);
area_listView.getLayoutParams().height = getScreenHeight() - pos[1];
} else {
closeArea();
}
area_listView.requestLayout();
}
closePosition();
break;
area_listView.requestLayout();
}
closePosition();
break;
case R.id.position_header:
closeEvent();
closeArea();
if (position_selected != null) {
position_selected.setText(null);
case R.id.position_header:
closeEvent();
closeArea();
if (position_selected != null) {
position_selected.setText(null);
}
if (position_listView != null && position_listView.getLayoutParams() != null) {
if (position_listView.getLayoutParams().height == 0) {
position_listView.getLocationOnScreen(pos);
position_listView.getLayoutParams().height = getScreenHeight() - pos[1];
} else {
closePosition();
}
if (position_listView != null && position_listView.getLayoutParams() != null) {
if (position_listView.getLayoutParams().height == 0) {
position_listView.getLocationOnScreen(pos);
position_listView.getLayoutParams().height = getScreenHeight() - pos[1];
} else {
closePosition();
}
position_listView.requestLayout();
}
break;
position_listView.requestLayout();
}
break;
default:
break;
default:
break;
}
showButton();
@@ -203,7 +203,7 @@ public class LoginListViews extends LoggableDialogFragment implements View.OnCli
position_listView.getLayoutParams().height = 0;
position_listView.requestLayout();
if (activity != null) {
position_selected.setText(activity.getPositionName());
position_selected.setText(StringHelper.on(activity).getAuthor(activity.getPositionName()));
}
}
}
@@ -45,6 +45,7 @@ import com.sap.sailing.racecommittee.app.ui.comparators.NaturalNamedComparator;
import com.sap.sailing.racecommittee.app.ui.comparators.RaceListDataTypeComparator;
import com.sap.sailing.racecommittee.app.ui.comparators.RegattaSeriesFleetComparator;
import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.ProtestTimeDialogFragment;
import com.sap.sailing.racecommittee.app.utils.StringHelper;
import com.sap.sailing.racecommittee.app.utils.ThemeHelper;
import com.sap.sailing.racecommittee.app.utils.TickListener;
import com.sap.sailing.racecommittee.app.utils.TickSingleton;
@@ -52,8 +53,7 @@ import com.sap.sailing.racecommittee.app.utils.TickSingleton;
import java.io.Serializable;
import java.util.*;
public class RaceListFragment extends LoggableFragment implements OnItemClickListener,
OnItemSelectedListener, TickListener, OnScrollListener {
public class RaceListFragment extends LoggableFragment implements OnItemClickListener, OnItemSelectedListener, TickListener, OnScrollListener {
private final static String TAG = RaceListFragment.class.getName();
private final static String LAYOUT = "layout";
@@ -89,6 +89,7 @@ public class RaceListFragment extends LoggableFragment implements OnItemClickLis
filterChanged();
}
};
public RaceListFragment() {
mFilterMode = FilterMode.ACTIVE;
mSelectedRace = null;
@@ -105,6 +106,19 @@ public class RaceListFragment extends LoggableFragment implements OnItemClickLis
return fragment;
}
public static void showProtest(Context context, ManagedRace race) {
Intent intent = new Intent(AppConstants.INTENT_ACTION_SHOW_PROTEST);
String extra = race.getRaceGroup().getName();
if (!race.getSeries().getName().equals(AppConstants.DEFAULT)) {
extra += " - " + race.getSeries().getName();
}
if (!race.getFleet().getName().equals(AppConstants.DEFAULT)) {
extra += " - " + race.getFleet().getName();
}
intent.putExtra(AppConstants.INTENT_ACTION_EXTRA, extra);
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
}
private void dataChanged(ReadonlyRaceState changedState) {
List<RaceListDataType> adapterItems = mAdapter.getItems();
for (RaceListDataType adapterItem : adapterItems) {
@@ -153,23 +167,23 @@ public class RaceListFragment extends LoggableFragment implements OnItemClickLis
drawable = getResources().getDrawable(id);
}
switch (getFilterMode()) {
case ALL:
mAll.setTextColor(colorOrange);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
mAll.setBackground(drawable);
} else {
mAll.setBackgroundDrawable(drawable);
}
break;
case ALL:
mAll.setTextColor(colorOrange);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
mAll.setBackground(drawable);
} else {
mAll.setBackgroundDrawable(drawable);
}
break;
default:
mCurrent.setTextColor(colorOrange);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
mCurrent.setBackground(drawable);
} else {
mCurrent.setBackgroundDrawable(drawable);
}
break;
default:
mCurrent.setTextColor(colorOrange);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
mCurrent.setBackground(drawable);
} else {
mCurrent.setBackgroundDrawable(drawable);
}
break;
}
}
}
@@ -325,13 +339,13 @@ public class RaceListFragment extends LoggableFragment implements OnItemClickLis
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
case SCROLL_STATE_FLING:
case SCROLL_STATE_TOUCH_SCROLL:
mUpdateList = false;
break;
case SCROLL_STATE_FLING:
case SCROLL_STATE_TOUCH_SCROLL:
mUpdateList = false;
break;
default:
mUpdateList = true;
default:
mUpdateList = true;
}
}
@@ -352,30 +366,17 @@ public class RaceListFragment extends LoggableFragment implements OnItemClickLis
super.onStop();
}
public static void showProtest(Context context, ManagedRace race) {
Intent intent = new Intent(AppConstants.INTENT_ACTION_SHOW_PROTEST);
String extra = race.getRaceGroup().getName();
if (!race.getSeries().getName().equals(AppConstants.DEFAULT)) {
extra += " - " + race.getSeries().getName();
}
if (!race.getFleet().getName().equals(AppConstants.DEFAULT)) {
extra += " - " + race.getFleet().getName();
}
intent.putExtra(AppConstants.INTENT_ACTION_EXTRA, extra);
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
}
private void registerOnAllRaces() {
for (ManagedRace managedRace : mManagedRacesById.values()) {
managedRace.getState().addChangedListener(stateListener);
}
}
public void setUp(DrawerLayout drawerLayout, String course, String event, String author) {
public void setUp(DrawerLayout drawerLayout, String course, String author) {
mDrawerLayout = drawerLayout;
mDrawerLayout.setStatusBarBackgroundColor(ThemeHelper.getColor(getActivity(), R.attr.colorPrimaryDark));
mDrawerToggle = new ActionBarDrawerToggle(getActivity(), mDrawerLayout, (Toolbar) getActivity().findViewById(
R.id.toolbar), R.string.nav_drawer_open, R.string.nav_drawer_close) {
mDrawerToggle = new ActionBarDrawerToggle(getActivity(), mDrawerLayout, (Toolbar) getActivity()
.findViewById(R.id.toolbar), R.string.nav_drawer_open, R.string.nav_drawer_close) {
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
@@ -408,7 +409,7 @@ public class RaceListFragment extends LoggableFragment implements OnItemClickLis
}
if (mData != null) {
mData.setText(author);
mData.setText(StringHelper.on(getActivity()).getAuthor(author));
}
}
@@ -446,14 +447,13 @@ public class RaceListFragment extends LoggableFragment implements OnItemClickLis
}
public void setupOn(Collection<ManagedRace> races) {
ExLog.i(getActivity(), TAG,
String.format("Setting up %s with %d races.", this.getClass().getSimpleName(), races.size()));
ExLog.i(getActivity(), TAG, String.format("Setting up %s with %d races.", this.getClass().getSimpleName(), races.size()));
unregisterOnAllRaces();
mManagedRacesById.clear();
for (ManagedRace managedRace: races) {
for (ManagedRace managedRace : races) {
mManagedRacesById.put(managedRace.getId(), managedRace);
}
registerOnAllRaces();
@@ -3,11 +3,11 @@ package com.sap.sailing.racecommittee.app.ui.fragments.dialogs;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import com.sap.sailing.android.shared.logging.ExLog;
import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor;
import com.sap.sailing.domain.abstractlog.impl.LogEventAuthorImpl;
import com.sap.sailing.racecommittee.app.AppConstants;
import com.sap.sailing.racecommittee.app.R;
import com.sap.sailing.racecommittee.app.logging.LogEvent;
@@ -53,35 +53,33 @@ public class LoginDialog extends ActivityAttachedDialogFragment {
@Override
protected AlertDialog.Builder createDialog(AlertDialog.Builder builder) {
return builder
.setTitle(getString(R.string.login))
.setIcon(R.drawable.ic_assignment_ind_grey600_36dp)
.setSingleChoiceItems(loginTypeDescriptions, -1, new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
switch (which) {
// see loginTypeDescriptions for the indices of the login types
case 0:
selectedLoginType = LoginType.OFFICER;
author = new LogEventAuthorImpl("Race Officer on Start Vessel", 0);
break;
case 1:
selectedLoginType = LoginType.OFFICER;
author = new LogEventAuthorImpl("Race Officer on Finish Vessel", 1);
break;
case 2:
selectedLoginType = LoginType.OFFICER;
author = new LogEventAuthorImpl("Shore Control", 2);
break;
case 3:
selectedLoginType = LoginType.VIEWER;
author = new LogEventAuthorImpl("Viewer", 3);
break;
default:
selectedLoginType = LoginType.NONE;
break;
}
return builder.setTitle(getString(R.string.login)).setIcon(R.drawable.ic_assignment_ind_grey600_36dp)
.setSingleChoiceItems(loginTypeDescriptions, -1, new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
switch (which) {
// see loginTypeDescriptions for the indices of the login types
case 0:
selectedLoginType = LoginType.OFFICER;
author = new LogEventAuthorImpl(AppConstants.AUTHOR_TYPE_OFFICER_START, 0);
break;
case 1:
selectedLoginType = LoginType.OFFICER;
author = new LogEventAuthorImpl(AppConstants.AUTHOR_TYPE_OFFICER_FINISH, 1);
break;
case 2:
selectedLoginType = LoginType.OFFICER;
author = new LogEventAuthorImpl(AppConstants.AUTHOR_TYPE_SHORE_CONTROL, 2);
break;
case 3:
selectedLoginType = LoginType.VIEWER;
author = new LogEventAuthorImpl(AppConstants.AUTHOR_TYPE_VIEWER, 3);
break;
default:
selectedLoginType = LoginType.NONE;
break;
}
});
}
});
}
@Override
@@ -6,10 +6,12 @@ import android.support.v7.app.AlertDialog;
import android.util.SparseBooleanArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.ViewParent;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TimePicker;
import com.sap.sailing.domain.abstractlog.race.analyzing.impl.FinishedTimeFinder;
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
@@ -18,6 +20,7 @@ import com.sap.sailing.racecommittee.app.data.DataManager;
import com.sap.sailing.racecommittee.app.data.ReadonlyDataManager;
import com.sap.sailing.racecommittee.app.domain.ManagedRace;
import com.sap.sailing.racecommittee.app.domain.impl.RaceGroupSeriesFleet;
import com.sap.sailing.racecommittee.app.utils.ScreenHelper;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.impl.MillisecondsTimePoint;
@@ -103,6 +106,15 @@ public class ProtestTimeDialogFragment extends AttachedDialogFragment {
setupRacesList(racesList);
timePicker = (TimePicker) view.findViewById(R.id.protest_time_time_time_picker);
setupTimePicker(timePicker);
ViewGroup.LayoutParams layoutParams = racesList.getLayoutParams();
layoutParams.height = 49 * races.size();
int screenHeight = (int)(ScreenHelper.on(getActivity()).getScreenHeight() * 0.65);
if (layoutParams.height > screenHeight) {
layoutParams.height = screenHeight;
}
view.setLayoutParams(layoutParams);
return view;
}
@@ -9,6 +9,7 @@ import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import com.sap.sailing.domain.abstractlog.impl.LogEventAuthorImpl;
import com.sap.sailing.racecommittee.app.AppConstants;
import com.sap.sailing.racecommittee.app.AppPreferences;
import com.sap.sailing.racecommittee.app.R;
import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.LoginDialog.LoginType;
@@ -42,8 +43,7 @@ public class PositionListFragment extends LoggableListFragment {
this.preferences = AppPreferences.on(getActivity().getApplicationContext());
final ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity().getBaseContext(),
R.layout.login_list_item, R.id.list_item, values);
final ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity().getBaseContext(), R.layout.login_list_item, R.id.list_item, values);
setListAdapter(adapter);
getListView().setDivider(null);
@@ -68,30 +68,30 @@ public class PositionListFragment extends LoggableListFragment {
LoginType selectedLoginType;
switch (position) {
// see loginTypeDescriptions for the indices of the login types
case 0:
selectedLoginType = LoginType.OFFICER;
preferences.setSendingActive(true);
author = new LogEventAuthorImpl("Race Officer on Start Vessel", 0);
break;
case 1:
selectedLoginType = LoginType.OFFICER;
preferences.setSendingActive(true);
author = new LogEventAuthorImpl("Race Officer on Finish Vessel", 1);
break;
case 2:
selectedLoginType = LoginType.OFFICER;
preferences.setSendingActive(true);
author = new LogEventAuthorImpl("Shore Control", 2);
break;
case 3:
selectedLoginType = LoginType.VIEWER;
preferences.setSendingActive(false);
author = new LogEventAuthorImpl("Viewer", 3);
break;
default:
selectedLoginType = LoginType.NONE;
break;
// see loginTypeDescriptions for the indices of the login types
case 0:
selectedLoginType = LoginType.OFFICER;
preferences.setSendingActive(true);
author = new LogEventAuthorImpl(AppConstants.AUTHOR_TYPE_OFFICER_START, 0);
break;
case 1:
selectedLoginType = LoginType.OFFICER;
preferences.setSendingActive(true);
author = new LogEventAuthorImpl(AppConstants.AUTHOR_TYPE_OFFICER_FINISH, 1);
break;
case 2:
selectedLoginType = LoginType.OFFICER;
preferences.setSendingActive(true);
author = new LogEventAuthorImpl(AppConstants.AUTHOR_TYPE_SHORE_CONTROL, 2);
break;
case 3:
selectedLoginType = LoginType.VIEWER;
preferences.setSendingActive(false);
author = new LogEventAuthorImpl(AppConstants.AUTHOR_TYPE_VIEWER, 3);
break;
default:
selectedLoginType = LoginType.NONE;
break;
}
preferences.setAuthor(author);
if (host != null) {
@@ -177,6 +177,23 @@ public abstract class BaseRaceInfoRaceFragment<ProcedureType extends RacingProce
private class RaceStateChangedListener extends BaseRaceStateChangedListener {
@Override
public void onStatusChanged(ReadonlyRaceState state) {
super.onStatusChanged(state);
switch (state.getStatus()) {
case UNSCHEDULED:
RacingActivity activity = (RacingActivity) getActivity();
if (activity != null) {
activity.onRaceItemClicked(getRace());
}
break;
default:
break;
}
}
@Override
public void onFinishedTimeChanged(ReadonlyRaceState state) {
super.onFinishedTimeChanged(state);
@@ -0,0 +1,36 @@
package com.sap.sailing.racecommittee.app.utils;
import android.content.Context;
import android.graphics.Point;
import android.view.Display;
import android.view.WindowManager;
public class ScreenHelper {
private Context mContext;
private ScreenHelper(Context context) {
mContext = context;
}
public static ScreenHelper on(Context context) {
ScreenHelper helper = new ScreenHelper(context);
return helper;
}
private Point getScreenSize() {
WindowManager manager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
Display display = manager.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
return size;
}
public int getScreenHeight() {
return getScreenSize().y;
}
public int getScreenWidth() {
return getScreenSize().x;
}
}
@@ -0,0 +1,32 @@
package com.sap.sailing.racecommittee.app.utils;
import android.content.Context;
import com.sap.sailing.racecommittee.app.AppConstants;
import com.sap.sailing.racecommittee.app.R;
public class StringHelper {
private Context mContext;
private StringHelper(Context context) {
mContext = context;
}
public static StringHelper on(Context context) {
StringHelper helper = new StringHelper(context);
return helper;
}
public String getAuthor(String author) {
if (AppConstants.AUTHOR_TYPE_OFFICER_START.equals(author)) {
author = mContext.getString(R.string.author_type_officer_start);
} else if (AppConstants.AUTHOR_TYPE_OFFICER_FINISH.equals(author)) {
author = mContext.getString(R.string.author_type_officer_finish);
} else if (AppConstants.AUTHOR_TYPE_SHORE_CONTROL.equals(author)) {
author = mContext.getString(R.string.author_type_shore_control);
} else if (AppConstants.AUTHOR_TYPE_VIEWER.equals(author)) {
author = mContext.getString(R.string.author_viewer);
}
return author;
}
}