Commit 325d754b authored by Isaac Katzenelson's avatar Isaac Katzenelson
Browse files

Fix formatting of shared laps info

Bug: 8555992
Change-Id: I1d211ace1db81f32e42dfe1e25637dc27251a9fa
parent fd8fbad2
......@@ -364,8 +364,7 @@
<string name="sw_share_laps">Lap times:</string>
<!-- Label to enumerate the number of laps in the notification the user has counted -->
<string name="sw_notification_lap_number">Lap <xliff:g id="number">%d</xliff:g></string>
<!-- Formatted stopwatch time
[CHAR LIMIT=1] for each abbreviation as in hours_label, etc. -->
<!-- Formatted stopwatch time -->
<string-array name="stopwatch_format_set" translatable="false">
<item> <!-- <10 minutes - example "1 02.03" -->
<xliff:g id="M">%2$d</xliff:g> &#x200E;<xliff:g id="S">%3$02d</xliff:g><xliff:g id="decimal_separator">%5$c</xliff:g><xliff:g id="D">%4$02d</xliff:g>
......@@ -382,7 +381,27 @@
<item> <!-- <1000 hours - example "123 04 05.06" -->
<xliff:g id="H">%1$03d</xliff:g> &#x200E;<xliff:g id="M">%2$02d</xliff:g> &#x200E;<xliff:g id="S">%3$02d</xliff:g><xliff:g id="decimal_separator">%5$c</xliff:g><xliff:g id="D">%4$02d</xliff:g>
</item>
</string-array>
</string-array>
<!-- Formatted stopwatch time for laps shared using the share button -->
<string-array name="shared_laps_format_set" translatable="false">
<item> <!-- <10 minutes - example "1 02.03" -->
<xliff:g id="lap">%6$d</xliff:g><xliff:g id="decimal_separator">%5$c</xliff:g> &#x200E;<xliff:g id="M">%2$d</xliff:g> &#x200E;<xliff:g id="S">%3$02d</xliff:g><xliff:g id="decimal_separator">%5$c</xliff:g><xliff:g id="D">%4$02d</xliff:g>
</item>
<item> <!-- <1 hour - example "12 03.04" -->
<xliff:g id="lap">%6$d</xliff:g><xliff:g id="decimal_separator">%5$c</xliff:g> &#x200E;<xliff:g id="M">%2$02d</xliff:g> &#x200E;<xliff:g id="S">%3$02d</xliff:g><xliff:g id="decimal_separator">%5$c</xliff:g><xliff:g id="D">%4$02d</xliff:g>
</item>
<item> <!-- <10 hours - example "1 02 03.04" -->
<xliff:g id="lap">%6$d</xliff:g><xliff:g id="decimal_separator">%5$c</xliff:g> &#x200E;<xliff:g id="H">%1$d</xliff:g> &#x200E;<xliff:g id="M">%2$02d</xliff:g> &#x200E;<xliff:g id="S">%3$02d</xliff:g><xliff:g id="decimal_separator">%5$c</xliff:g><xliff:g id="D">%4$02d</xliff:g>
</item>
<item> <!-- <100 hours - example "12 03 04.05" -->
<xliff:g id="lap">%6$d</xliff:g><xliff:g id="decimal_separator">%5$c</xliff:g> &#x200E;<xliff:g id="H">%1$02d</xliff:g> &#x200E;<xliff:g id="M">%2$02d</xliff:g> &#x200E;<xliff:g id="S">%3$02d</xliff:g><xliff:g id="decimal_separator">%5$c</xliff:g><xliff:g id="D">%4$02d</xliff:g>
</item>
<item> <!-- <1000 hours - example "123 04 05.06" -->
<xliff:g id="lap">%6$d</xliff:g><xliff:g id="decimal_separator">%5$c</xliff:g> &#x200E;<xliff:g id="H">%1$03d</xliff:g> &#x200E;<xliff:g id="M">%2$02d</xliff:g> &#x200E;<xliff:g id="S">%3$02d</xliff:g><xliff:g id="decimal_separator">%5$c</xliff:g><xliff:g id="D">%4$02d</xliff:g>
</item>
</string-array>
<!-- Label to enumerate the number of laps the user has counted -->
<string-array name="sw_lap_number_set" translatable="false">
<item># <xliff:g id="number">%d</xliff:g></item>
......
......@@ -49,6 +49,9 @@ public class Stopwatches {
public static final int STOPWATCH_STOPPED = 2;
public static final int MAX_LAPS = 99;
public static final int NO_LAP_NUMBER = -1;
private static String[] mFormats = null;
public static String getShareTitle(Context context) {
String [] mLabels = context.getResources().getStringArray(R.array.sw_share_strings);
......@@ -56,30 +59,43 @@ public class Stopwatches {
}
public static String buildShareResults(Context context, String time, long[] laps) {
String results = context.getString(R.string.sw_share_main, time + "\n");
StringBuilder b = new StringBuilder (context.getString(R.string.sw_share_main, time));
b.append("\n");
int lapsNum = laps == null? 0 : laps.length;
if (lapsNum == 0) {
return results;
return b.toString();
}
results += context.getString(R.string.sw_share_laps) + "\n";
b.append(context.getString(R.string.sw_share_laps));
b.append("\n");
for (int i = 1; i <= lapsNum; i ++) {
results += String.format("%d. %s\n", i, getTimeText(laps[lapsNum-i]));
b.append(getTimeText(context, laps[lapsNum-i], i));
b.append("\n");
}
return results;
return b.toString();
}
public static String buildShareResults(Context context, long time, long[] laps) {
return buildShareResults(context, getTimeText(time), laps);
return buildShareResults(context, getTimeText(context, time, NO_LAP_NUMBER), laps);
}
/***
* Sets the string of the time running on the stopwatch up to hundred of a second accuracy
* @param time - in hundreds of a second since the stopwatch started
*/
public static String getTimeText(long time) {
public static String getTimeText(Context context, long time, int lap) {
if (time < 0) {
time = 0;
}
if (lap != NO_LAP_NUMBER) {
mFormats = context.getResources().getStringArray(R.array.shared_laps_format_set);
} else {
mFormats = context.getResources().getStringArray(R.array.stopwatch_format_set);
}
char decimalSeparator = DecimalFormatSymbols.getInstance().getDecimalSeparator();
int formatIndex = 0;
long hundreds, seconds, minutes, hours;
seconds = time / 1000;
hundreds = (time - seconds * 1000) / 10;
......@@ -87,25 +103,19 @@ public class Stopwatches {
seconds = seconds - minutes * 60;
hours = minutes / 60;
minutes = minutes - hours * 60;
if (hours > 99) {
hours = 0;
}
// TODO: must build to account for localization
String timeStr;
if (hours >= 10) {
timeStr = String.format("%02dh %02dm %02ds .%02d", hours, minutes,
seconds, hundreds);
if (hours >= 100) {
formatIndex = 4;
} else if (hours >= 10) {
formatIndex = 3;
} else if (hours > 0) {
timeStr = String.format("%01dh %02dm %02ds .%02d", hours, minutes,
seconds, hundreds);
formatIndex = 2;
} else if (minutes >= 10) {
timeStr = String.format("%02dm %02ds .%02d", minutes, seconds,
hundreds);
formatIndex = 1;
} else {
timeStr = String.format("%02dm %02ds .%02d", minutes, seconds,
hundreds);
formatIndex = 0;
}
return timeStr;
return String.format(mFormats[formatIndex], hours, minutes,
seconds, hundreds, decimalSeparator, lap);
}
/***
......@@ -127,5 +137,4 @@ public class Stopwatches {
String timeStr = String.format(format, hours, minutes, seconds, hundreds, decimalSeparator);
return timeStr;
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment