mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-28 14:57:12 +00:00
Merge remote-tracking branch 'server/ubilabs--rcapp--develop' into yes2015
This commit is contained in:
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>
|
||||
+5
@@ -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";
|
||||
|
||||
|
||||
+18
-31
@@ -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);
|
||||
|
||||
+50
-50
@@ -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()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+44
-44
@@ -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();
|
||||
|
||||
+27
-29
@@ -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
|
||||
|
||||
+12
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
+26
-26
@@ -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) {
|
||||
|
||||
+17
@@ -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);
|
||||
|
||||
+36
@@ -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;
|
||||
}
|
||||
}
|
||||
+32
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user