diff --git a/briar-android/src/org/briarproject/android/contact/ContactListAdapter.java b/briar-android/src/org/briarproject/android/contact/ContactListAdapter.java index 8c57c3cbf1e0d753cf0ed36c2aadce87a64ff65f..95e892a970fbd0c797ef52bf5cafef18348ca867 100644 --- a/briar-android/src/org/briarproject/android/contact/ContactListAdapter.java +++ b/briar-android/src/org/briarproject/android/contact/ContactListAdapter.java @@ -2,7 +2,6 @@ package org.briarproject.android.contact; import android.content.Context; import android.support.v4.view.ViewCompat; -import android.text.format.DateUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -10,6 +9,7 @@ import android.widget.ImageView; import android.widget.TextView; import org.briarproject.R; +import org.briarproject.android.util.AndroidUtils; import org.briarproject.util.StringUtils; public class ContactListAdapter @@ -46,10 +46,8 @@ public class ContactListAdapter if (item.isEmpty()) { ui.date.setText(R.string.no_private_messages); } else { - // TODO show this as X units ago long timestamp = item.getTimestamp(); - ui.date.setText( - DateUtils.getRelativeTimeSpanString(ctx, timestamp)); + ui.date.setText(AndroidUtils.formatDate(ctx, timestamp)); } // online/offline diff --git a/briar-android/src/org/briarproject/android/contact/ConversationAdapter.java b/briar-android/src/org/briarproject/android/contact/ConversationAdapter.java index 414feaca988b36b9933976e277df29e96ea9f964..cc67ec7772ff5571543607187d26594852759c45 100644 --- a/briar-android/src/org/briarproject/android/contact/ConversationAdapter.java +++ b/briar-android/src/org/briarproject/android/contact/ConversationAdapter.java @@ -4,7 +4,6 @@ import android.content.Context; import android.content.Intent; import android.support.v7.util.SortedList; import android.support.v7.widget.RecyclerView; -import android.text.format.DateUtils; import android.util.SparseArray; import android.view.LayoutInflater; import android.view.View; @@ -15,6 +14,7 @@ import android.widget.TextView; import org.briarproject.R; import org.briarproject.android.forum.AvailableForumsActivity; +import org.briarproject.android.util.AndroidUtils; import org.briarproject.api.clients.SessionId; import org.briarproject.api.forum.ForumInvitationMessage; import org.briarproject.api.introduction.IntroductionRequest; @@ -170,7 +170,7 @@ class ConversationAdapter extends RecyclerView.Adapter { } long timestamp = header.getTimestamp(); - ui.date.setText(DateUtils.getRelativeTimeSpanString(ctx, timestamp)); + ui.date.setText(AndroidUtils.formatDate(ctx, timestamp)); } private void bindIntroduction(IntroductionHolder ui, @@ -184,8 +184,8 @@ class ConversationAdapter extends RecyclerView.Adapter { } else { ui.messageLayout.setVisibility(View.VISIBLE); ui.message.body.setText(StringUtils.trim(message)); - ui.message.date.setText( - DateUtils.getRelativeTimeSpanString(ctx, item.getTime())); + ui.message.date + .setText(AndroidUtils.formatDate(ctx, item.getTime())); } // Outgoing Introduction Request @@ -255,15 +255,13 @@ class ConversationAdapter extends RecyclerView.Adapter { } }); } - ui.date.setText( - DateUtils.getRelativeTimeSpanString(ctx, item.getTime())); + ui.date.setText(AndroidUtils.formatDate(ctx, item.getTime())); } private void bindNotice(NoticeHolder ui, ConversationNoticeItem item) { ui.text.setText(item.getText()); - ui.date.setText( - DateUtils.getRelativeTimeSpanString(ctx, item.getTime())); + ui.date.setText(AndroidUtils.formatDate(ctx, item.getTime())); if (item instanceof ConversationNoticeOutItem) { ConversationNoticeOutItem n = (ConversationNoticeOutItem) item; @@ -288,8 +286,8 @@ class ConversationAdapter extends RecyclerView.Adapter { } else { ui.messageLayout.setVisibility(View.VISIBLE); ui.message.body.setText(StringUtils.trim(message)); - ui.message.date.setText( - DateUtils.getRelativeTimeSpanString(ctx, item.getTime())); + ui.message.date + .setText(AndroidUtils.formatDate(ctx, item.getTime())); } // Outgoing Invitation @@ -332,8 +330,7 @@ class ConversationAdapter extends RecyclerView.Adapter { ui.showForumsButton.setVisibility(View.GONE); } } - ui.date.setText( - DateUtils.getRelativeTimeSpanString(ctx, item.getTime())); + ui.date.setText(AndroidUtils.formatDate(ctx, item.getTime())); } @Override diff --git a/briar-android/src/org/briarproject/android/forum/ForumActivity.java b/briar-android/src/org/briarproject/android/forum/ForumActivity.java index 8133edef3ac914fba40926f26ff04dd1a6e38386..2657715b2d036169a1ba4b1b3c2ae1dda97f6247 100644 --- a/briar-android/src/org/briarproject/android/forum/ForumActivity.java +++ b/briar-android/src/org/briarproject/android/forum/ForumActivity.java @@ -18,7 +18,6 @@ import android.support.v4.content.ContextCompat; import android.support.v7.app.AlertDialog; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; -import android.text.format.DateUtils; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -35,6 +34,7 @@ import org.briarproject.android.ActivityComponent; import org.briarproject.android.BriarActivity; import org.briarproject.android.api.AndroidNotificationManager; import org.briarproject.android.controller.handler.UiResultHandler; +import org.briarproject.android.util.AndroidUtils; import org.briarproject.android.util.BriarRecyclerView; import org.briarproject.android.util.TrustIndicatorView; import org.briarproject.api.sync.GroupId; @@ -633,9 +633,8 @@ public class ForumActivity extends BriarActivity implements ui.lvlText.setVisibility(GONE); } ui.authorText.setText(data.getAuthor()); - ui.dateText.setText(DateUtils - .getRelativeTimeSpanString(ForumActivity.this, - data.getTimestamp())); + ui.dateText.setText(AndroidUtils + .formatDate(ForumActivity.this, data.getTimestamp())); ui.trust.setTrustLevel(data.getStatus()); int replies = getReplyCount(data); diff --git a/briar-android/src/org/briarproject/android/forum/ForumListAdapter.java b/briar-android/src/org/briarproject/android/forum/ForumListAdapter.java index 34f27ebcf8b8d9bdffc12273bf008abdb7a94340..17fd01346b17fbedbcf58567a430987c9c77d209 100644 --- a/briar-android/src/org/briarproject/android/forum/ForumListAdapter.java +++ b/briar-android/src/org/briarproject/android/forum/ForumListAdapter.java @@ -6,13 +6,13 @@ import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; import android.support.v7.util.SortedList; import android.support.v7.widget.RecyclerView; -import android.text.format.DateUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import org.briarproject.R; +import org.briarproject.android.util.AndroidUtils; import org.briarproject.android.util.TextAvatarView; import org.briarproject.api.forum.Forum; import org.briarproject.api.sync.GroupId; @@ -123,8 +123,7 @@ class ForumListAdapter extends ui.date.setVisibility(GONE); } else { long timestamp = item.getTimestamp(); - ui.date.setText( - DateUtils.getRelativeTimeSpanString(ctx, timestamp)); + ui.date.setText(AndroidUtils.formatDate(ctx, timestamp)); ui.date.setVisibility(VISIBLE); } diff --git a/briar-android/src/org/briarproject/android/util/AndroidUtils.java b/briar-android/src/org/briarproject/android/util/AndroidUtils.java index f3b33196cb7a9c5bbabf456472dcc37be9c34184..af9cc2ae05019165d74a0df10f6fe17d4039a8d4 100644 --- a/briar-android/src/org/briarproject/android/util/AndroidUtils.java +++ b/briar-android/src/org/briarproject/android/util/AndroidUtils.java @@ -6,6 +6,7 @@ import android.content.Context; import android.os.Build; import android.provider.Settings; import android.support.design.widget.TextInputLayout; +import android.text.format.DateUtils; import org.briarproject.util.FileUtils; import org.briarproject.util.StringUtils; @@ -18,6 +19,13 @@ import java.util.Collections; import java.util.List; import static android.content.Context.MODE_PRIVATE; +import static android.text.format.DateUtils.DAY_IN_MILLIS; +import static android.text.format.DateUtils.FORMAT_ABBREV_MONTH; +import static android.text.format.DateUtils.FORMAT_ABBREV_RELATIVE; +import static android.text.format.DateUtils.FORMAT_ABBREV_TIME; +import static android.text.format.DateUtils.FORMAT_SHOW_DATE; +import static android.text.format.DateUtils.MINUTE_IN_MILLIS; +import static android.text.format.DateUtils.WEEK_IN_MILLIS; public class AndroidUtils { @@ -81,4 +89,22 @@ public class AndroidUtils { public static File getReportDir(Context ctx) { return ctx.getDir(STORED_REPORTS, MODE_PRIVATE); } + + public static String formatDate(Context ctx, long time) { + long minResolution = MINUTE_IN_MILLIS; + int flags = FORMAT_ABBREV_RELATIVE | + FORMAT_SHOW_DATE | FORMAT_ABBREV_TIME | FORMAT_ABBREV_MONTH; + + // also show time when older than a day, but newer than a week + long diff = System.currentTimeMillis() - time; + if (diff >= DAY_IN_MILLIS && diff < WEEK_IN_MILLIS) { + return DateUtils.getRelativeDateTimeString(ctx, time, minResolution, + WEEK_IN_MILLIS, flags).toString(); + } + // otherwise just show "...ago" or date string + return DateUtils + .getRelativeTimeSpanString(time, System.currentTimeMillis(), + minResolution, flags).toString(); + } + }