Merge branch 'ubilabs--tracking_app--bug_2731' into ubilabs--tracking_app--develop

This commit is contained in:
Bennet Brunsen
2015-12-03 12:15:25 +01:00
18 changed files with 300 additions and 42 deletions
@@ -43,6 +43,7 @@
<color name="sap_green">#8AB54E</color>
<color name="sap_red">#E94A1B</color>
<color name="sap_yellow">#EEAA29</color>
<color name="sap_blue">#008FCC</color>
<color name="gray">#333333</color>
<color name="colorPrimary">@color/gray</color>
</resources>
@@ -36,7 +36,7 @@
<activity
android:name=".ui.activities.StartActivity"
android:label="@string/app_name"
android:screenOrientation="unspecified">
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
@@ -62,16 +62,24 @@
</activity>
<activity
android:name=".ui.activities.LeaderboardWebViewActivity"
android:label="@string/title_activity_webview"
android:screenOrientation="unspecified">
android:label="@string/title_activity_leaderboard"
android:screenOrientation="portrait">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".ui.activities.LeaderboardWebViewActivity"/>
</activity>
<activity
android:name=".ui.activities.EventActivity"
android:label="@string/title_activity_event"
android:screenOrientation="portrait">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".ui.activities.EventActivity"/>
</activity>
<activity
android:name=".ui.activities.RegattaActivity"
android:label="@string/title_activity_regatta"
android:screenOrientation="unspecified">
android:screenOrientation="portrait">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".ui.activities.StartActivity"/>
@@ -79,14 +87,14 @@
<activity
android:name=".ui.activities.TrackingActivity"
android:label="@string/title_activity_tracking"
android:screenOrientation="unspecified">
android:screenOrientation="portrait">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".ui.activities.StartActivity"/>
</activity>
<activity
android:name=".ui.activities.SettingsActivity"
android:screenOrientation="unspecified"/>
android:screenOrientation="portrait"/>
<service
android:name=".services.TrackingService"
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/sap_blue"/>
<corners
android:bottomLeftRadius="5dip"
android:bottomRightRadius="5dip"
android:topLeftRadius="5dip"
android:topRightRadius="5dip"/>
</shape>
@@ -126,8 +126,9 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/competitor_info_layout"
android:layout_toRightOf="@+id/add_photo"
android:layout_toEndOf="@+id/add_photo"
android:layout_marginRight="10dp"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:background="@drawable/background_transparent_box"
android:orientation="horizontal"
android:padding="0dp">
@@ -151,6 +152,7 @@
android:orientation="vertical"
android:scrollbars="vertical"
android:background="@color/black"
android:fillViewport="true"
android:layout_weight="1">
<RelativeLayout
@@ -201,7 +203,7 @@
<LinearLayout
android:id="@+id/three_boxes_regatta_starts"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/regatta_starts_in"
android:baselineAligned="false"
android:gravity="center"
@@ -303,6 +305,26 @@
</LinearLayout>
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="@dimen/regatta_button_height"
android:layout_alignParentBottom="true"
android:paddingBottom="5dp">
<com.sap.sailing.android.tracking.app.customviews.OpenSansButton
android:id="@+id/show_event_button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="@dimen/regatta_button_margin"
android:layout_marginLeft="@dimen/regatta_button_side_margin"
android:layout_marginRight="@dimen/regatta_button_side_margin"
android:padding="@dimen/regatta_button_padding"
android:text="@string/show_event"
android:background="@drawable/rounded_btn_blue"
tools:text="Show Event"/>
</RelativeLayout>
</RelativeLayout>
</ScrollView>
</LinearLayout>
@@ -319,9 +341,9 @@
<RelativeLayout
android:id="@+id/start_tracking_box"
android:layout_width="fill_parent"
android:layout_height="60dp"
android:layout_height="@dimen/regatta_button_height"
android:layout_above="@id/bottomLayout"
android:background="@color/gray">
android:background="@color/black">
<View
android:id="@+id/white_bar"
@@ -342,12 +364,12 @@
android:id="@+id/show_leaderboards_button"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="10dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_margin="@dimen/regatta_button_margin"
android:layout_marginLeft="@dimen/regatta_button_side_margin"
android:layout_marginRight="@dimen/regatta_button_side_margin"
android:layout_weight="0.50"
android:background="@drawable/rounded_btn_yellow"
android:padding="5dp"
android:padding="@dimen/regatta_button_padding"
android:text="@string/show_leaderboard"
android:textAllCaps="true"
android:textStyle="bold"/>
@@ -356,12 +378,12 @@
android:id="@+id/start_tracking"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="10dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_margin="@dimen/regatta_button_margin"
android:layout_marginLeft="@dimen/regatta_button_side_margin"
android:layout_marginRight="@dimen/regatta_button_side_margin"
android:layout_weight="0.50"
android:background="@drawable/rounded_btn_green"
android:padding="5dp"
android:padding="@dimen/regatta_button_padding"
android:text="@string/start_tracking"
android:textAllCaps="true"
android:textStyle="bold"/>
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<WebView
android:id="@+id/web_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
@@ -312,9 +312,9 @@
<RelativeLayout
android:id="@+id/start_tracking_box"
android:layout_width="fill_parent"
android:layout_height="100dp"
android:layout_height="200dp"
android:layout_above="@id/bottomLayout"
android:background="@color/gray">
android:background="@color/black">
<View
android:id="@+id/white_bar"
@@ -326,39 +326,63 @@
android:background="@color/white_transparent"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/event_buttons"
android:layout_width="match_parent"
android:layout_height="@dimen/regatta_button_height"
android:layout_below="@id/white_bar"
android:orientation="horizontal">
<com.sap.sailing.android.tracking.app.customviews.OpenSansButton
android:id="@+id/show_event_button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="@dimen/regatta_button_margin"
android:layout_marginLeft="@dimen/regatta_button_side_margin"
android:layout_marginRight="@dimen/regatta_button_side_margin"
android:padding="@dimen/regatta_button_padding"
android:layout_weight="1"
android:text="@string/show_event"
android:background="@drawable/rounded_btn_blue"
android:textAllCaps="true"
android:textStyle="bold"
tools:text="Show Event"/>
<com.sap.sailing.android.shared.ui.customviews.OpenSansButton
android:id="@+id/show_leaderboards_button"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="10dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_weight="0.50"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="@dimen/regatta_button_margin"
android:layout_marginLeft="@dimen/regatta_button_side_margin"
android:layout_marginRight="@dimen/regatta_button_side_margin"
android:layout_weight="1"
android:background="@drawable/rounded_btn_yellow"
android:padding="10dp"
android:padding="@dimen/regatta_button_padding"
android:text="@string/show_leaderboard"
android:textAllCaps="true"
android:textStyle="bold"/>
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="@dimen/regatta_button_height"
android:layout_below="@+id/event_buttons">
<com.sap.sailing.android.shared.ui.customviews.OpenSansButton
android:id="@+id/start_tracking"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="10dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_weight="0.50"
android:layout_height="match_parent"
android:layout_margin="@dimen/regatta_button_margin"
android:layout_marginLeft="@dimen/regatta_button_side_margin"
android:layout_marginRight="@dimen/regatta_button_side_margin"
android:background="@drawable/rounded_btn_green"
android:padding="10dp"
android:padding="@dimen/regatta_button_padding"
android:text="@string/start_tracking"
android:textAllCaps="true"
android:textStyle="bold"/>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
@@ -17,7 +17,8 @@
<string name="tracker_started">SAP Sailing Tracker gestartet</string>
<string name="tracker_stopped">SAP Sailing Tracker gestoppt</string>
<string name="title_activity_regatta">Regatta</string>
<string name="title_activity_webview">Leaderboard</string>
<string name="title_activity_leaderboard">Leaderboard</string>
<string name="title_activity_event">Event</string>
<string name="title_activity_start">GPS Tracker einstellen</string>
<string name="title_activity_tracking">Tracking</string>
<string name="please_confirm">Bitte bestätigen</string>
@@ -64,6 +65,7 @@
<string name="speed_over_ground">Speed over Ground</string>
<string name="none">Keine</string>
<string name="show_leaderboard">Leaderboard</string>
<string name="show_event">Zum Event</string>
<string name="desc_regatta_user_image">Benutzerdefiniertes Bild für Regatta</string>
<string name="desc_add_photo_button">Foto hinzufügen Button</string>
<string name="error_while_receiving_server_data">Fehler beim Empfang vom Server</string>
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Values for regatta buttons-->
<dimen name="regatta_button_height">60dp</dimen>
<dimen name="regatta_button_padding">5dp</dimen>
</resources>
@@ -4,6 +4,7 @@
<string name="preference_server_checkin_path" translatable="false">/sailingserver/api/v1/leaderboards/{leaderboard-name}/device_mappings/start</string>
<string name="preference_server_checkout_path" translatable="false">/sailingserver/api/v1/leaderboards/{leaderboard-name}/device_mappings/end</string>
<string name="preference_server_event_path" translatable="false">/sailingserver/api/v1/events/{event_id}</string>
<string name="preference_server_event_url" translatable="false">/gwt/Home.html?navigationTab=Regattas#EventPlace:eventId=%s</string>
<string name="preference_server_leaderboard_path" translatable="false">/sailingserver/api/v1/leaderboards/{leaderboard_name}</string>
<string name="preference_server_competitor_path" translatable="false">/sailingserver/api/v1/competitors/{competitor_id}</string>
<string name="preference_server_team_info_path" translatable="false">/sailingserver/api/v1/competitors/{competitor_id}/team</string>
@@ -4,4 +4,10 @@
<dimen name="activity_horizontal_margin">16dp</dimen>
<!-- <dimen name="activity_vertical_margin">16dp</dimen> -->
<!-- Values for regatta buttons-->
<dimen name="regatta_button_height">90dp</dimen>
<dimen name="regatta_button_side_margin">4dp</dimen>
<dimen name="regatta_button_margin">10dp</dimen>
<dimen name="regatta_button_padding">10dp</dimen>
</resources>
@@ -12,7 +12,8 @@
<string name="tracker_started">SAP Sailing Tracker started</string>
<string name="tracker_stopped">SAP Sailing Tracker stopped</string>
<string name="title_activity_regatta">Regatta</string>
<string name="title_activity_webview">Leader board</string>
<string name="title_activity_leaderboard">Leader board</string>
<string name="title_activity_event">Event</string>
<string name="title_activity_start">Setup GPS-Tracker</string>
<string name="title_activity_tracking">Tracking</string>
<string name="please_confirm">Please confirm</string>
@@ -47,6 +48,7 @@
<string name="speed_over_ground">Speed over Ground</string>
<string name="none">None</string>
<string name="show_leaderboard">Leader board</string>
<string name="show_event">Event</string>
<string name="error_while_receiving_server_data">Error while receiving server data</string>
<string name="info_already_checked_in_this_qr_code">Already checked in to this regatta</string>
<string name="warning">Warning</string>
@@ -0,0 +1,22 @@
package com.sap.sailing.android.tracking.app.ui.activities;
import android.os.Bundle;
import com.sap.sailing.android.tracking.app.R;
import com.sap.sailing.android.tracking.app.ui.fragments.EventFragment;
import com.sap.sailing.android.tracking.app.valueobjects.EventInfo;
public class EventActivity extends BaseActivity {
public final static String EVENT = "event.info";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EventInfo eventInfo = getIntent().getParcelableExtra(EVENT);
setContentView(R.layout.activity_event);
replaceFragment(R.id.container, EventFragment.newInstance(eventInfo));
}
}
@@ -37,7 +37,7 @@ public class LeaderboardWebViewActivity extends BaseActivity {
getSupportActionBar().setHomeButtonEnabled(true);
toolbar.setNavigationIcon(R.drawable.sap_logo_64_sq);
toolbar.setPadding(20, 0, 0, 0);
getSupportActionBar().setTitle(getString(R.string.title_activity_webview));
getSupportActionBar().setTitle(getString(R.string.title_activity_leaderboard));
}
replaceFragment(R.id.content_frame, new LeaderboardFragment());
@@ -0,0 +1,61 @@
package com.sap.sailing.android.tracking.app.ui.fragments;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import com.sap.sailing.android.tracking.app.R;
import com.sap.sailing.android.tracking.app.utils.AppPreferences;
import com.sap.sailing.android.tracking.app.valueobjects.EventInfo;
public class EventFragment extends BaseFragment {
private static final String EVENT_INFO = "event.info";
private WebView mWebView;
public static EventFragment newInstance(EventInfo eventInfo) {
Bundle args = new Bundle();
args.putParcelable(EVENT_INFO, eventInfo);
EventFragment fragment = new EventFragment();
fragment.setArguments(args);
return fragment;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_event, container, false);
mWebView = (WebView) view.findViewById(R.id.web_view);
return view;
}
@Override
public void onResume() {
super.onResume();
EventInfo eventInfo = getArguments().getParcelable(EVENT_INFO);
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mWebView.setWebViewClient(new WebViewClient() {
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(getActivity(), description, Toast.LENGTH_SHORT).show();
}
});
String url = getEventURL(eventInfo);
mWebView.loadUrl(url);
}
private String getEventURL(EventInfo eventInfo) {
AppPreferences preferences = new AppPreferences(getActivity());
return eventInfo.server + preferences.getServerEventUrl(eventInfo.id);
}
}
@@ -31,6 +31,7 @@ import android.widget.TextView;
import com.sap.sailing.android.shared.logging.ExLog;
import com.sap.sailing.android.tracking.app.BuildConfig;
import com.sap.sailing.android.tracking.app.R;
import com.sap.sailing.android.tracking.app.ui.activities.EventActivity;
import com.sap.sailing.android.tracking.app.ui.activities.LeaderboardWebViewActivity;
import com.sap.sailing.android.tracking.app.ui.activities.RegattaActivity;
import com.sap.sailing.android.tracking.app.ui.activities.TrackingActivity;
@@ -62,6 +63,9 @@ public class RegattaFragment extends BaseFragment implements OnClickListener {
Button showLeaderboardButton = (Button) view.findViewById(R.id.show_leaderboards_button);
showLeaderboardButton.setOnClickListener(this);
Button showEventButton = (Button) view.findViewById(R.id.show_event_button);
showEventButton.setOnClickListener(this);
Button changePhotoButton = (Button) view.findViewById(R.id.change_photo_button);
changePhotoButton.setOnClickListener(this);
@@ -159,6 +163,9 @@ public class RegattaFragment extends BaseFragment implements OnClickListener {
case R.id.show_leaderboards_button:
startLeaderboardActivity();
break;
case R.id.show_event_button:
startEventActivity();
break;
case R.id.start_tracking:
if (showingThankYouNote) {
RegattaActivity regattaActivity = (RegattaActivity) getActivity();
@@ -323,7 +330,14 @@ public class RegattaFragment extends BaseFragment implements OnClickListener {
intent.putExtra(LeaderboardWebViewActivity.LEADERBOARD_EXTRA_EVENT_ID, activity.event.id);
intent.putExtra(LeaderboardWebViewActivity.LEADERBOARD_EXTRA_LEADERBOARD_NAME, activity.leaderboard.name);
getActivity().startActivity(intent);
startActivity(intent);
}
private void startEventActivity() {
RegattaActivity activity = (RegattaActivity) getActivity();
Intent intent = new Intent(getActivity(), EventActivity.class);
intent.putExtra(EventActivity.EVENT, activity.event);
startActivity(intent);
}
private void startTrackingActivity() {
@@ -40,6 +40,10 @@ public class AppPreferences extends BaseAppPreferences {
return context.getString(R.string.preference_server_event_path, "/events").replace("{event_id}", eventId);
}
public String getServerEventUrl(String eventId) {
return context.getString(R.string.preference_server_event_url, eventId);
}
public String getServerLeaderboardPath(String leaderboardName) {
return context.getString(R.string.preference_server_leaderboard_path, "/leaderboards").replace(
"{leaderboard_name}", leaderboardName);
@@ -1,6 +1,9 @@
package com.sap.sailing.android.tracking.app.valueobjects;
public class EventInfo {
import android.os.Parcel;
import android.os.Parcelable;
public class EventInfo implements Parcelable{
public String id;
public String name;
@@ -13,10 +16,59 @@ public class EventInfo {
public String checkinDigest;
public String server;
public EventInfo() {
}
public EventInfo(Parcel in) {
id = in.readString();
name = in.readString();
leaderboardName = in.readString();
competitorId = in.readString();
imageUrl = in.readString();
startMillis = in.readLong();
endMillis = in.readLong();
rowId = in.readInt();
checkinDigest = in.readString();
server = in.readString();
}
public static final Creator<EventInfo> CREATOR = new Creator<EventInfo>() {
@Override
public EventInfo createFromParcel(Parcel in) {
return new EventInfo(in);
}
@Override
public EventInfo[] newArray(int size) {
return new EventInfo[size];
}
};
@Override
public String toString() {
return "eventName: " + name + ", leaderboardName: " + leaderboardName + ", competitorId: " + competitorId
+ ", eventImageUrl: " + imageUrl + ", eventStartMillis: " + startMillis + ", eventEndMillis: "
+ endMillis + ", eventRowId: " + ", checkinDigest: " + checkinDigest + rowId + ", server: " + server;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(id);
dest.writeString(name);
dest.writeString(leaderboardName);
dest.writeString(competitorId);
dest.writeString(imageUrl);
dest.writeLong(startMillis);
dest.writeLong(endMillis);
dest.writeInt(rowId);
dest.writeString(checkinDigest);
dest.writeString(server);
}
}