add chronometer to each app widget item

This commit is contained in:
Jimmy Shih
2012-10-08 17:25:27 -07:00
parent 4792ff6d3e
commit 7d5d462a2a
7 changed files with 147 additions and 92 deletions
+6
View File
@@ -48,6 +48,9 @@ limitations under the License.
<TextView <TextView
android:id="@+id/track_widget_item1_unit" android:id="@+id/track_widget_item1_unit"
style="@style/TrackWidgetUnit" /> style="@style/TrackWidgetUnit" />
<Chronometer
android:id="@+id/track_widget_item1_chronometer"
style="@style/TrackWidgetValue" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
@@ -78,6 +81,9 @@ limitations under the License.
<TextView <TextView
android:id="@+id/track_widget_item2_unit" android:id="@+id/track_widget_item2_unit"
style="@style/TrackWidgetUnit" /> style="@style/TrackWidgetUnit" />
<Chronometer
android:id="@+id/track_widget_item2_chronometer"
style="@style/TrackWidgetValue" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
+12
View File
@@ -37,6 +37,9 @@ limitations under the License.
<TextView <TextView
android:id="@+id/track_widget_item1_unit" android:id="@+id/track_widget_item1_unit"
style="@style/TrackWidgetUnit" /> style="@style/TrackWidgetUnit" />
<Chronometer
android:id="@+id/track_widget_item1_chronometer"
style="@style/TrackWidgetValue" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<!-- vertical separator --> <!-- vertical separator -->
@@ -62,6 +65,9 @@ limitations under the License.
<TextView <TextView
android:id="@+id/track_widget_item3_unit" android:id="@+id/track_widget_item3_unit"
style="@style/TrackWidgetUnit" /> style="@style/TrackWidgetUnit" />
<Chronometer
android:id="@+id/track_widget_item3_chronometer"
style="@style/TrackWidgetValue" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
@@ -92,6 +98,9 @@ limitations under the License.
<TextView <TextView
android:id="@+id/track_widget_item2_unit" android:id="@+id/track_widget_item2_unit"
style="@style/TrackWidgetUnit" /> style="@style/TrackWidgetUnit" />
<Chronometer
android:id="@+id/track_widget_item2_chronometer"
style="@style/TrackWidgetValue" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<!-- vertical separator --> <!-- vertical separator -->
@@ -117,6 +126,9 @@ limitations under the License.
<TextView <TextView
android:id="@+id/track_widget_item4_unit" android:id="@+id/track_widget_item4_unit"
style="@style/TrackWidgetUnit" /> style="@style/TrackWidgetUnit" />
<Chronometer
android:id="@+id/track_widget_item4_chronometer"
style="@style/TrackWidgetValue" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
+12
View File
@@ -37,6 +37,9 @@ limitations under the License.
<TextView <TextView
android:id="@+id/track_widget_item1_unit" android:id="@+id/track_widget_item1_unit"
style="@style/TrackWidgetUnit4x3" /> style="@style/TrackWidgetUnit4x3" />
<Chronometer
android:id="@+id/track_widget_item1_chronometer"
style="@style/TrackWidgetValue4x3" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<!-- vertical separator --> <!-- vertical separator -->
@@ -60,6 +63,9 @@ limitations under the License.
<TextView <TextView
android:id="@+id/track_widget_item3_unit" android:id="@+id/track_widget_item3_unit"
style="@style/TrackWidgetUnit4x3" /> style="@style/TrackWidgetUnit4x3" />
<Chronometer
android:id="@+id/track_widget_item3_chronometer"
style="@style/TrackWidgetValue4x3" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
@@ -90,6 +96,9 @@ limitations under the License.
<TextView <TextView
android:id="@+id/track_widget_item2_unit" android:id="@+id/track_widget_item2_unit"
style="@style/TrackWidgetUnit4x3" /> style="@style/TrackWidgetUnit4x3" />
<Chronometer
android:id="@+id/track_widget_item2_chronometer"
style="@style/TrackWidgetValue4x3" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<!-- vertical separator --> <!-- vertical separator -->
@@ -113,6 +122,9 @@ limitations under the License.
<TextView <TextView
android:id="@+id/track_widget_item4_unit" android:id="@+id/track_widget_item4_unit"
style="@style/TrackWidgetUnit4x3" /> style="@style/TrackWidgetUnit4x3" />
<Chronometer
android:id="@+id/track_widget_item4_chronometer"
style="@style/TrackWidgetValue4x3" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
+12
View File
@@ -37,6 +37,9 @@ limitations under the License.
<TextView <TextView
android:id="@+id/track_widget_item1_unit" android:id="@+id/track_widget_item1_unit"
style="@style/TrackWidgetUnit4x4" /> style="@style/TrackWidgetUnit4x4" />
<Chronometer
android:id="@+id/track_widget_item1_chronometer"
style="@style/TrackWidgetValue4x4" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
@@ -67,6 +70,9 @@ limitations under the License.
<TextView <TextView
android:id="@+id/track_widget_item3_unit" android:id="@+id/track_widget_item3_unit"
style="@style/TrackWidgetUnit4x4" /> style="@style/TrackWidgetUnit4x4" />
<Chronometer
android:id="@+id/track_widget_item3_chronometer"
style="@style/TrackWidgetValue4x4" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
@@ -96,6 +102,9 @@ limitations under the License.
<TextView <TextView
android:id="@+id/track_widget_item2_unit" android:id="@+id/track_widget_item2_unit"
style="@style/TrackWidgetUnit4x3" /> style="@style/TrackWidgetUnit4x3" />
<Chronometer
android:id="@+id/track_widget_item2_chronometer"
style="@style/TrackWidgetValue4x3" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<!-- vertical separator --> <!-- vertical separator -->
@@ -121,6 +130,9 @@ limitations under the License.
<TextView <TextView
android:id="@+id/track_widget_item4_unit" android:id="@+id/track_widget_item4_unit"
style="@style/TrackWidgetUnit4x3" /> style="@style/TrackWidgetUnit4x3" />
<Chronometer
android:id="@+id/track_widget_item4_chronometer"
style="@style/TrackWidgetValue4x3" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
+9 -6
View File
@@ -22,21 +22,24 @@ limitations under the License.
<TableLayout <TableLayout
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:padding="8dp" > android:padding="8dp"
android:stretchColumns="0" >
<TableRow style="@style/TrackWidgetConfigRow" > <TableRow style="@style/TrackWidgetConfigRow" >
<Spinner <Spinner
android:id="@+id/track_widget_config_item1" android:id="@+id/track_widget_config_item1"
style="@style/TrackWidgetConfigSpinner" /> style="@style/TrackWidgetConfigSpinner" />
<LinearLayout style="@style/TrackWidgetConfigSpacer" />
<Spinner
android:id="@+id/track_widget_config_item3"
style="@style/TrackWidgetConfigSpinner" />
</TableRow> </TableRow>
<TableRow style="@style/TrackWidgetConfigRow" > <TableRow style="@style/TrackWidgetConfigRow" >
<Spinner <Spinner
android:id="@+id/track_widget_config_item2" android:id="@+id/track_widget_config_item2"
style="@style/TrackWidgetConfigSpinner" /> style="@style/TrackWidgetConfigSpinner" />
<LinearLayout style="@style/TrackWidgetConfigSpacer" /> </TableRow>
<TableRow style="@style/TrackWidgetConfigRow" >
<Spinner
android:id="@+id/track_widget_config_item3"
style="@style/TrackWidgetConfigSpinner" />
</TableRow>
<TableRow style="@style/TrackWidgetConfigRow" >
<Spinner <Spinner
android:id="@+id/track_widget_config_item4" android:id="@+id/track_widget_config_item4"
style="@style/TrackWidgetConfigSpinner" /> style="@style/TrackWidgetConfigSpinner" />
+4 -13
View File
@@ -231,23 +231,14 @@ limitations under the License.
</style> </style>
<!-- track widget config row --> <!-- track widget config row -->
<style name="TrackWidgetConfigRow"> <style name="TrackWidgetConfigRow">
<item name="android:layout_height">wrap_content</item> <item name="android:paddingBottom">20dp</item>
<item name="android:layout_width">wrap_content</item> <item name="android:paddingTop">20dp</item>
<item name="android:paddingBottom">16dp</item>
<item name="android:paddingTop">16dp</item>
</style>
<!-- track widget config spacer -->
<style name="TrackWidgetConfigSpacer">
<item name="android:layout_height">fill_parent</item>
<item name="android:layout_weight">2</item>
<item name="android:layout_width">0dp</item>
</style> </style>
<!-- track widget config spiner --> <!-- track widget config spiner -->
<style name="TrackWidgetConfigSpinner"> <style name="TrackWidgetConfigSpinner">
<item name="android:gravity">left</item> <item name="android:layout_gravity">center_horizontal</item>
<item name="android:layout_height">wrap_content</item> <item name="android:layout_height">wrap_content</item>
<item name="android:layout_weight">9</item> <item name="android:layout_width">fill_parent</item>
<item name="android:layout_width">0dp</item>
</style> </style>
<!-- Track widget frame --> <!-- Track widget frame -->
<style name="TrackWidgetFrame"> <style name="TrackWidgetFrame">
@@ -35,6 +35,7 @@ import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.os.SystemClock;
import android.support.v4.app.TaskStackBuilder; import android.support.v4.app.TaskStackBuilder;
import android.util.SparseIntArray; import android.util.SparseIntArray;
import android.view.View; import android.view.View;
@@ -58,6 +59,19 @@ public class TrackWidgetProvider extends AppWidgetProvider {
private static final SparseIntArray HEIGHT_SIZE = new SparseIntArray(); private static final SparseIntArray HEIGHT_SIZE = new SparseIntArray();
private static final int DEFAULT_SIZE = 2; private static final int DEFAULT_SIZE = 2;
private static final int[] ITEM1_IDS = { R.id.track_widget_item1_label,
R.id.track_widget_item1_value, R.id.track_widget_item1_unit,
R.id.track_widget_item1_chronometer };
private static final int[] ITEM2_IDS = { R.id.track_widget_item2_label,
R.id.track_widget_item2_value, R.id.track_widget_item2_unit,
R.id.track_widget_item2_chronometer };
private static final int[] ITEM3_IDS = { R.id.track_widget_item3_label,
R.id.track_widget_item3_value, R.id.track_widget_item3_unit,
R.id.track_widget_item3_chronometer };
private static final int[] ITEM4_IDS = { R.id.track_widget_item4_label,
R.id.track_widget_item4_value, R.id.track_widget_item4_unit,
R.id.track_widget_item4_chronometer };
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent); super.onReceive(context, intent);
@@ -68,7 +82,6 @@ public class TrackWidgetProvider extends AppWidgetProvider {
|| context.getString(R.string.track_stopped_broadcast_action).equals(action) || context.getString(R.string.track_stopped_broadcast_action).equals(action)
|| context.getString(R.string.track_update_broadcast_action).equals(action)) { || context.getString(R.string.track_update_broadcast_action).equals(action)) {
long trackId = intent.getLongExtra(context.getString(R.string.track_id_broadcast_extra), -1L); long trackId = intent.getLongExtra(context.getString(R.string.track_id_broadcast_extra), -1L);
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
int[] appWidgetIds = appWidgetManager.getAppWidgetIds( int[] appWidgetIds = appWidgetManager.getAppWidgetIds(
new ComponentName(context, TrackWidgetProvider.class)); new ComponentName(context, TrackWidgetProvider.class));
@@ -149,8 +162,8 @@ public class TrackWidgetProvider extends AppWidgetProvider {
// Get the preferences // Get the preferences
long recordingTrackId = PreferencesUtils.getLong(context, R.string.recording_track_id_key); long recordingTrackId = PreferencesUtils.getLong(context, R.string.recording_track_id_key);
boolean isRecording = recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT; boolean isRecording = recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT;
boolean recordingTrackPaused = PreferencesUtils.getBoolean(context, boolean isPaused = PreferencesUtils.getBoolean(context, R.string.recording_track_paused_key,
R.string.recording_track_paused_key, PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT); PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT);
boolean metricUnits = PreferencesUtils.getBoolean( boolean metricUnits = PreferencesUtils.getBoolean(
context, R.string.metric_units_key, PreferencesUtils.METRIC_UNITS_DEFAULT); context, R.string.metric_units_key, PreferencesUtils.METRIC_UNITS_DEFAULT);
boolean reportSpeed = PreferencesUtils.getBoolean( boolean reportSpeed = PreferencesUtils.getBoolean(
@@ -170,23 +183,23 @@ public class TrackWidgetProvider extends AppWidgetProvider {
TripStatistics tripStatistics = track == null ? null : track.getTripStatistics(); TripStatistics tripStatistics = track == null ? null : track.getTripStatistics();
updateStatisticsContainer(context, remoteViews, track); updateStatisticsContainer(context, remoteViews, track);
setItem(context, remoteViews, R.id.track_widget_item1_label, R.id.track_widget_item1_value, setItem(context, remoteViews, ITEM1_IDS, item1, tripStatistics, isRecording, isPaused,
R.id.track_widget_item1_unit, item1, tripStatistics, metricUnits, reportSpeed); metricUnits, reportSpeed);
setItem(context, remoteViews, R.id.track_widget_item2_label, R.id.track_widget_item2_value, setItem(context, remoteViews, ITEM2_IDS, item2, tripStatistics, isRecording, isPaused,
R.id.track_widget_item2_unit, item2, tripStatistics, metricUnits, reportSpeed); metricUnits, reportSpeed);
updateRecordButton(context, remoteViews, isRecording, recordingTrackPaused); updateRecordButton(context, remoteViews, isRecording, isPaused);
updateStopButton(context, remoteViews, isRecording); updateStopButton(context, remoteViews, isRecording);
if (heightSize > 1) { if (heightSize > 1) {
int item3 = PreferencesUtils.getInt( int item3 = PreferencesUtils.getInt(
context, R.string.track_widget_item3, PreferencesUtils.TRACK_WIDGET_ITEM3_DEFAULT); context, R.string.track_widget_item3, PreferencesUtils.TRACK_WIDGET_ITEM3_DEFAULT);
int item4 = PreferencesUtils.getInt( int item4 = PreferencesUtils.getInt(
context, R.string.track_widget_item4, PreferencesUtils.TRACK_WIDGET_ITEM4_DEFAULT); context, R.string.track_widget_item4, PreferencesUtils.TRACK_WIDGET_ITEM4_DEFAULT);
setItem(context, remoteViews, R.id.track_widget_item3_label, R.id.track_widget_item3_value, setItem(context, remoteViews, ITEM3_IDS, item3, tripStatistics, isRecording, isPaused,
R.id.track_widget_item3_unit, item3, tripStatistics, metricUnits, reportSpeed); metricUnits, reportSpeed);
setItem(context, remoteViews, R.id.track_widget_item4_label, R.id.track_widget_item4_value, setItem(context, remoteViews, ITEM4_IDS, item4, tripStatistics, isRecording, isPaused,
R.id.track_widget_item4_unit, item4, tripStatistics, metricUnits, reportSpeed); metricUnits, reportSpeed);
updateRecordStatus(context, remoteViews, isRecording, recordingTrackPaused); updateRecordStatus(context, remoteViews, isRecording, isPaused);
} }
return remoteViews; return remoteViews;
} }
@@ -196,37 +209,42 @@ public class TrackWidgetProvider extends AppWidgetProvider {
* *
* @param context the context * @param context the context
* @param remoteViews the remote view * @param remoteViews the remote view
* @param labelId the label id * @param ids the item's ids
* @param valueId the value id * @param value the item value
* @param unitId the unit id
* @param itemValue the item value
* @param tripStatistics the trip statistics * @param tripStatistics the trip statistics
* @param metricUnits true to use metric units * @param metricUnits true to use metric units
* @param reportSpeed try to report speed * @param reportSpeed try to report speed
*/ */
private static void setItem(Context context, RemoteViews remoteViews, int labelId, int valueId, private static void setItem(Context context, RemoteViews remoteViews, int[] ids, int value,
int unitId, int itemValue, TripStatistics tripStatistics, boolean metricUnits, TripStatistics tripStatistics, boolean isRecording, boolean isPaused, boolean metricUnits,
boolean reportSpeed) { boolean reportSpeed) {
switch (itemValue) { switch (value) {
case 0:
updateTotalDistance(context, remoteViews, ids, tripStatistics, metricUnits);
break;
case 1: case 1:
updateTotalTime(context, remoteViews, labelId, valueId, unitId, tripStatistics); updateTotalTime(context, remoteViews, ids, tripStatistics, isRecording, isPaused);
break; break;
case 2: case 2:
updateAverageSpeed(context, remoteViews, labelId, valueId, unitId, tripStatistics, updateAverageSpeed(context, remoteViews, ids, tripStatistics, metricUnits, reportSpeed);
metricUnits, reportSpeed);
break; break;
case 3: case 3:
updateMovingTime(context, remoteViews, labelId, valueId, unitId, tripStatistics); updateMovingTime(context, remoteViews, ids, tripStatistics);
break; break;
case 4: case 4:
updateAverageMovingSpeed(context, remoteViews, labelId, valueId, unitId, tripStatistics, updateAverageMovingSpeed(
metricUnits, reportSpeed); context, remoteViews, ids, tripStatistics, metricUnits, reportSpeed);
break; break;
case 0:
default: default:
updateTotalDistance( updateTotalDistance(context, remoteViews, ids, tripStatistics, metricUnits);
context, remoteViews, labelId, valueId, unitId, tripStatistics, metricUnits);
break; break;
}
if (value != 1) {
remoteViews.setViewVisibility(ids[1], View.VISIBLE);
remoteViews.setViewVisibility(ids[2], View.VISIBLE);
remoteViews.setViewVisibility(ids[3], View.GONE);
remoteViews.setChronometer(ids[3], SystemClock.elapsedRealtime(), null, false);
} }
} }
@@ -257,19 +275,17 @@ public class TrackWidgetProvider extends AppWidgetProvider {
* *
* @param context the context * @param context the context
* @param remoteViews the remote views * @param remoteViews the remote views
* @param labelId the label id * @param ids the item's ids
* @param valueId the value id
* @param unitId the unit id
* @param tripStatistics the trip statistics * @param tripStatistics the trip statistics
* @param metricUnits true to use metric units * @param metricUnits true to use metric units
*/ */
private static void updateTotalDistance(Context context, RemoteViews remoteViews, int labelId, private static void updateTotalDistance(Context context, RemoteViews remoteViews, int[] ids,
int valueId, int unitId, TripStatistics tripStatistics, boolean metricUnits) { TripStatistics tripStatistics, boolean metricUnits) {
double totalDistance = tripStatistics == null ? Double.NaN : tripStatistics.getTotalDistance(); double totalDistance = tripStatistics == null ? Double.NaN : tripStatistics.getTotalDistance();
String[] totalDistanceParts = StringUtils.getDistanceParts(context, totalDistance, metricUnits); String[] totalDistanceParts = StringUtils.getDistanceParts(context, totalDistance, metricUnits);
remoteViews.setTextViewText(labelId, context.getString(R.string.stats_total_distance)); remoteViews.setTextViewText(ids[0], context.getString(R.string.stats_total_distance));
remoteViews.setTextViewText(valueId, totalDistanceParts[0]); remoteViews.setTextViewText(ids[1], totalDistanceParts[0]);
remoteViews.setTextViewText(unitId, totalDistanceParts[1]); remoteViews.setTextViewText(ids[2], totalDistanceParts[1]);
} }
/** /**
@@ -277,18 +293,29 @@ public class TrackWidgetProvider extends AppWidgetProvider {
* *
* @param context the context * @param context the context
* @param remoteViews the remote views * @param remoteViews the remote views
* @param labelId the label id * @param ids the item's ids
* @param valueId the value id
* @param unitId the unit id
* @param tripStatistics the trip statistics * @param tripStatistics the trip statistics
*/ */
private static void updateTotalTime(Context context, RemoteViews remoteViews, int labelId, private static void updateTotalTime(Context context, RemoteViews remoteViews, int[] ids,
int valueId, int unitId, TripStatistics tripStatistics) { TripStatistics tripStatistics, boolean isRecording, boolean isPaused) {
String totalTime = tripStatistics == null ? context.getString(R.string.value_unknown) if (isRecording && !isPaused && tripStatistics != null) {
: StringUtils.formatElapsedTime(tripStatistics.getTotalTime()); long time = tripStatistics.getTotalTime() + System.currentTimeMillis()
remoteViews.setTextViewText(labelId, context.getString(R.string.stats_total_time)); - tripStatistics.getStopTime();
remoteViews.setTextViewText(valueId, totalTime); remoteViews.setChronometer(ids[3], SystemClock.elapsedRealtime() - time, null, true);
remoteViews.setViewVisibility(unitId, View.GONE); remoteViews.setViewVisibility(ids[1], View.GONE);
remoteViews.setViewVisibility(ids[2], View.GONE);
remoteViews.setViewVisibility(ids[3], View.VISIBLE);
} else {
remoteViews.setChronometer(ids[3], SystemClock.elapsedRealtime(), null, false);
remoteViews.setViewVisibility(ids[1], View.VISIBLE);
remoteViews.setViewVisibility(ids[2], View.GONE);
remoteViews.setViewVisibility(ids[3], View.GONE);
String totalTime = tripStatistics == null ? context.getString(R.string.value_unknown)
: StringUtils.formatElapsedTime(tripStatistics.getTotalTime());
remoteViews.setTextViewText(ids[0], context.getString(R.string.stats_total_time));
remoteViews.setTextViewText(ids[1], totalTime);
}
} }
/** /**
@@ -296,24 +323,21 @@ public class TrackWidgetProvider extends AppWidgetProvider {
* *
* @param context the context * @param context the context
* @param remoteViews the remote views * @param remoteViews the remote views
* @param labelId the label id * @param ids the item's ids
* @param valueId the value id
* @param unitId the unit id
* @param tripStatistics the trip statistics * @param tripStatistics the trip statistics
* @param metricUnits true to use metric units * @param metricUnits true to use metric units
* @param reportSpeed true to report speed * @param reportSpeed true to report speed
*/ */
private static void updateAverageSpeed(Context context, RemoteViews remoteViews, int labelId, private static void updateAverageSpeed(Context context, RemoteViews remoteViews, int[] ids,
int valueId, int unitId, TripStatistics tripStatistics, boolean metricUnits, TripStatistics tripStatistics, boolean metricUnits, boolean reportSpeed) {
boolean reportSpeed) {
String averageSpeedLabel = context.getString( String averageSpeedLabel = context.getString(
reportSpeed ? R.string.stats_average_speed : R.string.stats_average_pace); reportSpeed ? R.string.stats_average_speed : R.string.stats_average_pace);
remoteViews.setTextViewText(labelId, averageSpeedLabel); remoteViews.setTextViewText(ids[0], averageSpeedLabel);
Double speed = tripStatistics == null ? Double.NaN : tripStatistics.getAverageSpeed(); Double speed = tripStatistics == null ? Double.NaN : tripStatistics.getAverageSpeed();
String[] speedParts = StringUtils.getSpeedParts(context, speed, metricUnits, reportSpeed); String[] speedParts = StringUtils.getSpeedParts(context, speed, metricUnits, reportSpeed);
remoteViews.setTextViewText(valueId, speedParts[0]); remoteViews.setTextViewText(ids[1], speedParts[0]);
remoteViews.setTextViewText(unitId, speedParts[1]); remoteViews.setTextViewText(ids[2], speedParts[1]);
} }
/** /**
@@ -321,18 +345,16 @@ public class TrackWidgetProvider extends AppWidgetProvider {
* *
* @param context the context * @param context the context
* @param remoteViews the remote views * @param remoteViews the remote views
* @param labelId the label id * @param ids the item's ids
* @param valueId the value id
* @param unitId the unit id
* @param tripStatistics the trip statistics * @param tripStatistics the trip statistics
*/ */
private static void updateMovingTime(Context context, RemoteViews remoteViews, int labelId, private static void updateMovingTime(
int valueId, int unitId, TripStatistics tripStatistics) { Context context, RemoteViews remoteViews, int[] ids, TripStatistics tripStatistics) {
String movingTime = tripStatistics == null ? context.getString(R.string.value_unknown) String movingTime = tripStatistics == null ? context.getString(R.string.value_unknown)
: StringUtils.formatElapsedTime(tripStatistics.getMovingTime()); : StringUtils.formatElapsedTime(tripStatistics.getMovingTime());
remoteViews.setTextViewText(labelId, context.getString(R.string.stats_moving_time)); remoteViews.setTextViewText(ids[0], context.getString(R.string.stats_moving_time));
remoteViews.setTextViewText(valueId, movingTime); remoteViews.setTextViewText(ids[1], movingTime);
remoteViews.setViewVisibility(unitId, View.GONE); remoteViews.setViewVisibility(ids[2], View.GONE);
} }
/** /**
@@ -340,24 +362,21 @@ public class TrackWidgetProvider extends AppWidgetProvider {
* *
* @param context the context * @param context the context
* @param remoteViews the remote views * @param remoteViews the remote views
* @param labelId the label id * @param ids the item's ids
* @param valueId the value id
* @param unitId the unit id
* @param tripStatistics the trip statistics * @param tripStatistics the trip statistics
* @param metricUnits true to use metric units * @param metricUnits true to use metric units
* @param reportSpeed true to report speed * @param reportSpeed true to report speed
*/ */
private static void updateAverageMovingSpeed(Context context, RemoteViews remoteViews, private static void updateAverageMovingSpeed(Context context, RemoteViews remoteViews, int[] ids,
int labelId, int valueId, int unitId, TripStatistics tripStatistics, boolean metricUnits, TripStatistics tripStatistics, boolean metricUnits, boolean reportSpeed) {
boolean reportSpeed) {
String averageMovingSpeedLabel = context.getString( String averageMovingSpeedLabel = context.getString(
reportSpeed ? R.string.stats_average_moving_speed : R.string.stats_average_moving_pace); reportSpeed ? R.string.stats_average_moving_speed : R.string.stats_average_moving_pace);
remoteViews.setTextViewText(labelId, averageMovingSpeedLabel); remoteViews.setTextViewText(ids[0], averageMovingSpeedLabel);
Double speed = tripStatistics == null ? Double.NaN : tripStatistics.getAverageMovingSpeed(); Double speed = tripStatistics == null ? Double.NaN : tripStatistics.getAverageMovingSpeed();
String[] speedParts = StringUtils.getSpeedParts(context, speed, metricUnits, reportSpeed); String[] speedParts = StringUtils.getSpeedParts(context, speed, metricUnits, reportSpeed);
remoteViews.setTextViewText(valueId, speedParts[0]); remoteViews.setTextViewText(ids[1], speedParts[0]);
remoteViews.setTextViewText(unitId, speedParts[1]); remoteViews.setTextViewText(ids[2], speedParts[1]);
} }
/** /**