mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-21 15:19:53 +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,
|
* Returns the given duration in a human-friendly format. For example,
|
||||||
* "7 days" or "1 hour". Returns only the largest meaningful unit of time,
|
* "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) {
|
public static String formatDuration(Context ctx, long millis) {
|
||||||
Resources r = ctx.getResources();
|
Resources r = ctx.getResources();
|
||||||
@@ -182,11 +182,20 @@ public class UiUtils {
|
|||||||
r.getQuantityString(R.plurals.duration_days, days, days);
|
r.getQuantityString(R.plurals.duration_days, days, days);
|
||||||
if (rest < HOUR_IN_MILLIS / 2) return dayStr;
|
if (rest < HOUR_IN_MILLIS / 2) return dayStr;
|
||||||
else return dayStr + " " + formatDuration(ctx, rest);
|
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 {
|
} else {
|
||||||
int hours = (int) ((millis + HOUR_IN_MILLIS / 2) / HOUR_IN_MILLIS);
|
int minutes =
|
||||||
// anything less than one hour is shown as one hour
|
(int) ((millis + MINUTE_IN_MILLIS / 2) / MINUTE_IN_MILLIS);
|
||||||
if (hours < 1) hours = 1;
|
// anything less than one minute is shown as one minute
|
||||||
return r.getQuantityString(R.plurals.duration_hours, hours, hours);
|
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>
|
<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." -->
|
<!-- 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>
|
<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">
|
<plurals name="duration_hours">
|
||||||
<item quantity="one">%d hour</item>
|
<item quantity="one">%d hour</item>
|
||||||
<item quantity="other">%d hours</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.DAYS;
|
||||||
import static java.util.concurrent.TimeUnit.HOURS;
|
import static java.util.concurrent.TimeUnit.HOURS;
|
||||||
import static java.util.concurrent.TimeUnit.MINUTES;
|
import static java.util.concurrent.TimeUnit.MINUTES;
|
||||||
|
import static java.util.concurrent.TimeUnit.SECONDS;
|
||||||
import static org.briarproject.briar.android.util.UiUtils.formatDuration;
|
import static org.briarproject.briar.android.util.UiUtils.formatDuration;
|
||||||
|
|
||||||
public class UiUtilsFormatDurationTest extends BrambleMockTestCase {
|
public class UiUtilsFormatDurationTest extends BrambleMockTestCase {
|
||||||
|
|
||||||
private final Context ctx;
|
private final Context ctx;
|
||||||
private final Resources r;
|
private final Resources r;
|
||||||
|
private final int strMinutes = R.plurals.duration_minutes;
|
||||||
private final int strHours = R.plurals.duration_hours;
|
private final int strHours = R.plurals.duration_hours;
|
||||||
private final int strDays = R.plurals.duration_days;
|
private final int strDays = R.plurals.duration_days;
|
||||||
|
|
||||||
@@ -27,6 +29,12 @@ public class UiUtilsFormatDurationTest extends BrambleMockTestCase {
|
|||||||
r = context.mock(Resources.class);
|
r = context.mock(Resources.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testOneMinute() {
|
||||||
|
expectMinuteString(1);
|
||||||
|
formatDuration(ctx, MINUTES.toMillis(1));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOneHour() {
|
public void testOneHour() {
|
||||||
expectHourString(1);
|
expectHourString(1);
|
||||||
@@ -39,12 +47,44 @@ public class UiUtilsFormatDurationTest extends BrambleMockTestCase {
|
|||||||
formatDuration(ctx, DAYS.toMillis(1));
|
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
|
@Test
|
||||||
public void test10Minutes() {
|
public void test10Minutes() {
|
||||||
expectHourString(1);
|
expectMinuteString(10);
|
||||||
formatDuration(ctx, MINUTES.toMillis(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
|
@Test
|
||||||
public void testSevenDays() {
|
public void testSevenDays() {
|
||||||
expectDayString(7);
|
expectDayString(7);
|
||||||
@@ -67,7 +107,7 @@ public class UiUtilsFormatDurationTest extends BrambleMockTestCase {
|
|||||||
@Test
|
@Test
|
||||||
public void testSevenDays40Minutes() {
|
public void testSevenDays40Minutes() {
|
||||||
expectDayString(7);
|
expectDayString(7);
|
||||||
expectHourString(1);
|
expectMinuteString(40);
|
||||||
formatDuration(ctx, DAYS.toMillis(7) + MINUTES.toMillis(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));
|
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) {
|
private void expectHourString(int hours) {
|
||||||
context.checking(new Expectations() {{
|
context.checking(new Expectations() {{
|
||||||
oneOf(ctx).getResources();
|
oneOf(ctx).getResources();
|
||||||
|
|||||||
Reference in New Issue
Block a user