3 import java.text.NumberFormat;
5 import tim.prune.I18nManager;
8 * Class to provide general display util methods
10 public abstract class DisplayUtils
12 /** Number formatter for one decimal place */
13 private static final NumberFormat FORMAT_ONE_DP = NumberFormat.getNumberInstance();
15 /** Static block to initialise the one d.p. formatter */
18 FORMAT_ONE_DP.setMaximumFractionDigits(1);
19 FORMAT_ONE_DP.setMinimumFractionDigits(1);
21 /** Flexible number formatter with different decimal places */
22 private static final NumberFormat FORMAT_FLEX = NumberFormat.getNumberInstance();
26 * Build a String to describe a time duration
27 * @param inNumSecs number of seconds
28 * @return time as a string, days, hours, mins, secs as appropriate
30 public static String buildDurationString(long inNumSecs)
32 if (inNumSecs <= 0L) return "";
33 if (inNumSecs < 60L) return "" + inNumSecs + I18nManager.getText("display.range.time.secs");
34 if (inNumSecs < 3600L) return "" + (inNumSecs / 60) + I18nManager.getText("display.range.time.mins")
35 + " " + (inNumSecs % 60) + I18nManager.getText("display.range.time.secs");
36 if (inNumSecs < 86400L) return "" + (inNumSecs / 60 / 60) + I18nManager.getText("display.range.time.hours")
37 + " " + ((inNumSecs / 60) % 60) + I18nManager.getText("display.range.time.mins");
38 if (inNumSecs < 432000L) return "" + (inNumSecs / 86400L) + I18nManager.getText("display.range.time.days")
39 + " " + (inNumSecs / 60 / 60) % 24 + I18nManager.getText("display.range.time.hours")
40 + " " + ((inNumSecs / 60) % 60) + I18nManager.getText("display.range.time.mins");
41 if (inNumSecs < 86400000L) return "" + (inNumSecs / 86400L) + I18nManager.getText("display.range.time.days");
46 * @param inNumber number to format
47 * @return formatted number to one decimal place
49 public static String formatOneDp(double inNumber)
51 return FORMAT_ONE_DP.format(inNumber);
55 * Format a number to a sensible precision
56 * @param inVal value to format
57 * @return formatted String using local format
59 public static String roundedNumber(double inVal)
61 // Set precision of formatter
65 else if (inVal < 10.0)
67 else if (inVal < 100.0)
70 FORMAT_FLEX.setMaximumFractionDigits(numDigits);
71 FORMAT_FLEX.setMinimumFractionDigits(numDigits);
72 return FORMAT_FLEX.format(inVal);
76 * Convert the given hour and minute values into a string H:MM
77 * @param inHour hour of day, 0-24
78 * @param inMinute minute, 0-59
79 * @return string, either H:MM or HH:MM
81 public static String makeTimeString(int inHour, int inMinute)
83 StringBuilder sb = new StringBuilder();
84 final int hour = (inHour >= 0 && inHour <= 24) ? inHour : 0;
89 final int minute = (inMinute >= 0 && inMinute <= 59) ? inMinute : 0;
90 if (minute <= 9) {sb.append('0');}