Loading res/values/strings.xml +22 −3 Original line number Diff line number Diff line Loading @@ -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> ‎<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> Loading @@ -383,6 +382,26 @@ <xliff:g id="H">%1$03d</xliff:g> ‎<xliff:g id="M">%2$02d</xliff:g> ‎<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> <!-- 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> ‎<xliff:g id="M">%2$d</xliff:g> ‎<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> ‎<xliff:g id="M">%2$02d</xliff:g> ‎<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> ‎<xliff:g id="H">%1$d</xliff:g> ‎<xliff:g id="M">%2$02d</xliff:g> ‎<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> ‎<xliff:g id="H">%1$02d</xliff:g> ‎<xliff:g id="M">%2$02d</xliff:g> ‎<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> ‎<xliff:g id="H">%1$03d</xliff:g> ‎<xliff:g id="M">%2$02d</xliff:g> ‎<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> Loading src/com/android/deskclock/stopwatch/Stopwatches.java +32 −23 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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; Loading @@ -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); } /*** Loading @@ -127,5 +137,4 @@ public class Stopwatches { String timeStr = String.format(format, hours, minutes, seconds, hundreds, decimalSeparator); return timeStr; } } Loading
res/values/strings.xml +22 −3 Original line number Diff line number Diff line Loading @@ -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> ‎<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> Loading @@ -383,6 +382,26 @@ <xliff:g id="H">%1$03d</xliff:g> ‎<xliff:g id="M">%2$02d</xliff:g> ‎<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> <!-- 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> ‎<xliff:g id="M">%2$d</xliff:g> ‎<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> ‎<xliff:g id="M">%2$02d</xliff:g> ‎<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> ‎<xliff:g id="H">%1$d</xliff:g> ‎<xliff:g id="M">%2$02d</xliff:g> ‎<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> ‎<xliff:g id="H">%1$02d</xliff:g> ‎<xliff:g id="M">%2$02d</xliff:g> ‎<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> ‎<xliff:g id="H">%1$03d</xliff:g> ‎<xliff:g id="M">%2$02d</xliff:g> ‎<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> Loading
src/com/android/deskclock/stopwatch/Stopwatches.java +32 −23 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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; Loading @@ -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); } /*** Loading @@ -127,5 +137,4 @@ public class Stopwatches { String timeStr = String.format(format, hours, minutes, seconds, hundreds, decimalSeparator); return timeStr; } }