mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-13 11:19:04 +01:00
Add support for showing auto-delete timers in minutes
This commit is contained in:
@@ -171,7 +171,7 @@ public class UiUtils {
|
||||
/**
|
||||
* Returns the given duration in a human-friendly format. For example,
|
||||
* "7 days" or "1 hour". Returns only the largest meaningful unit of time,
|
||||
* from days up to hours.
|
||||
* from days up to minutes.
|
||||
*/
|
||||
public static String formatDuration(Context ctx, long millis) {
|
||||
Resources r = ctx.getResources();
|
||||
@@ -182,11 +182,20 @@ public class UiUtils {
|
||||
r.getQuantityString(R.plurals.duration_days, days, days);
|
||||
if (rest < HOUR_IN_MILLIS / 2) return dayStr;
|
||||
else return dayStr + " " + formatDuration(ctx, rest);
|
||||
} else if (millis >= HOUR_IN_MILLIS) {
|
||||
int hours = (int) (millis / HOUR_IN_MILLIS);
|
||||
int rest = (int) (millis % HOUR_IN_MILLIS);
|
||||
String hourStr =
|
||||
r.getQuantityString(R.plurals.duration_hours, hours, hours);
|
||||
if (rest < MINUTE_IN_MILLIS / 2) return hourStr;
|
||||
else return hourStr + " " + formatDuration(ctx, rest);
|
||||
} else {
|
||||
int hours = (int) ((millis + HOUR_IN_MILLIS / 2) / HOUR_IN_MILLIS);
|
||||
// anything less than one hour is shown as one hour
|
||||
if (hours < 1) hours = 1;
|
||||
return r.getQuantityString(R.plurals.duration_hours, hours, hours);
|
||||
int minutes =
|
||||
(int) ((millis + MINUTE_IN_MILLIS / 2) / MINUTE_IN_MILLIS);
|
||||
// anything less than one minute is shown as one minute
|
||||
if (minutes < 1) minutes = 1;
|
||||
return r.getQuantityString(R.plurals.duration_minutes, minutes,
|
||||
minutes);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -174,6 +174,10 @@
|
||||
<string name="auto_delete_msg_you_disabled">Your messages will not disappear. %1$s</string>
|
||||
<!-- The second placeholder will show a duration like "7 days". The third placeholder at the end will add "Tap to learn more." -->
|
||||
<string name="auto_delete_msg_contact_enabled">%1$s\'s messages will disappear after %2$s. %3$s</string>
|
||||
<plurals name="duration_minutes">
|
||||
<item quantity="one">%d minute</item>
|
||||
<item quantity="other">%d minutes</item>
|
||||
</plurals>
|
||||
<plurals name="duration_hours">
|
||||
<item quantity="one">%d hour</item>
|
||||
<item quantity="other">%d hours</item>
|
||||
|
||||
@@ -12,12 +12,14 @@ import org.junit.Test;
|
||||
import static java.util.concurrent.TimeUnit.DAYS;
|
||||
import static java.util.concurrent.TimeUnit.HOURS;
|
||||
import static java.util.concurrent.TimeUnit.MINUTES;
|
||||
import static java.util.concurrent.TimeUnit.SECONDS;
|
||||
import static org.briarproject.briar.android.util.UiUtils.formatDuration;
|
||||
|
||||
public class UiUtilsFormatDurationTest extends BrambleMockTestCase {
|
||||
|
||||
private final Context ctx;
|
||||
private final Resources r;
|
||||
private final int strMinutes = R.plurals.duration_minutes;
|
||||
private final int strHours = R.plurals.duration_hours;
|
||||
private final int strDays = R.plurals.duration_days;
|
||||
|
||||
@@ -27,6 +29,12 @@ public class UiUtilsFormatDurationTest extends BrambleMockTestCase {
|
||||
r = context.mock(Resources.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOneMinute() {
|
||||
expectMinuteString(1);
|
||||
formatDuration(ctx, MINUTES.toMillis(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOneHour() {
|
||||
expectHourString(1);
|
||||
@@ -39,12 +47,44 @@ public class UiUtilsFormatDurationTest extends BrambleMockTestCase {
|
||||
formatDuration(ctx, DAYS.toMillis(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test10Seconds() {
|
||||
// capped to 1min
|
||||
expectMinuteString(1);
|
||||
formatDuration(ctx, SECONDS.toMillis(10));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test100Seconds() {
|
||||
expectMinuteString(2);
|
||||
formatDuration(ctx, SECONDS.toMillis(100));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test2Minutes() {
|
||||
expectMinuteString(2);
|
||||
formatDuration(ctx, MINUTES.toMillis(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test10Minutes() {
|
||||
expectHourString(1);
|
||||
expectMinuteString(10);
|
||||
formatDuration(ctx, MINUTES.toMillis(10));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test130Minutes() {
|
||||
expectHourString(2);
|
||||
expectMinuteString(10);
|
||||
formatDuration(ctx, MINUTES.toMillis(130));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test13Hours() {
|
||||
expectHourString(13);
|
||||
formatDuration(ctx, HOURS.toMillis(13));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSevenDays() {
|
||||
expectDayString(7);
|
||||
@@ -67,7 +107,7 @@ public class UiUtilsFormatDurationTest extends BrambleMockTestCase {
|
||||
@Test
|
||||
public void testSevenDays40Minutes() {
|
||||
expectDayString(7);
|
||||
expectHourString(1);
|
||||
expectMinuteString(40);
|
||||
formatDuration(ctx, DAYS.toMillis(7) + MINUTES.toMillis(40));
|
||||
}
|
||||
|
||||
@@ -92,6 +132,23 @@ public class UiUtilsFormatDurationTest extends BrambleMockTestCase {
|
||||
formatDuration(ctx, DAYS.toMillis(2) + HOURS.toMillis(13));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test7Days23Hours55Minutes() {
|
||||
expectDayString(7);
|
||||
expectHourString(23);
|
||||
expectMinuteString(55);
|
||||
formatDuration(ctx,
|
||||
DAYS.toMillis(7) + HOURS.toMillis(23) + MINUTES.toMillis(55));
|
||||
}
|
||||
|
||||
private void expectMinuteString(int minutes) {
|
||||
context.checking(new Expectations() {{
|
||||
oneOf(ctx).getResources();
|
||||
will(returnValue(r));
|
||||
oneOf(r).getQuantityString(strMinutes, minutes, minutes);
|
||||
}});
|
||||
}
|
||||
|
||||
private void expectHourString(int hours) {
|
||||
context.checking(new Expectations() {{
|
||||
oneOf(ctx).getResources();
|
||||
|
||||
Reference in New Issue
Block a user