From 21e49d0852d60b3a6663f8081cd69dfbfdc394b1 Mon Sep 17 00:00:00 2001 From: RemiRigal Date: Sun, 14 Feb 2021 09:51:19 +0100 Subject: [PATCH] Add absolute/relative time format setting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added setting to toggle precise date as default display * Applied spotless * Improved time format setting with a ListPreference * Fixed default time format value in list preference Co-authored-by: Rémi Rigal --- .../gotify/messages/ListMessageAdapter.java | 47 ++++++++++++++----- .../gotify/messages/MessagesActivity.java | 11 +++-- app/src/main/res/values/arrays.xml | 14 ++++++ app/src/main/res/values/strings.xml | 2 + app/src/main/res/xml/root_preferences.xml | 7 +++ 5 files changed, 66 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/github/gotify/messages/ListMessageAdapter.java b/app/src/main/java/com/github/gotify/messages/ListMessageAdapter.java index 02aad06..fd3d97e 100644 --- a/app/src/main/java/com/github/gotify/messages/ListMessageAdapter.java +++ b/app/src/main/java/com/github/gotify/messages/ListMessageAdapter.java @@ -3,6 +3,8 @@ package com.github.gotify.messages; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; +import android.content.SharedPreferences; +import android.text.format.DateUtils; import android.text.util.Linkify; import android.view.LayoutInflater; import android.view.View; @@ -12,6 +14,7 @@ import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; +import androidx.preference.PreferenceManager; import androidx.recyclerview.widget.RecyclerView; import butterknife.BindView; import butterknife.ButterKnife; @@ -26,9 +29,10 @@ import io.noties.markwon.core.CorePlugin; import io.noties.markwon.ext.tables.TablePlugin; import io.noties.markwon.image.picasso.PicassoImagesPlugin; import io.noties.markwon.movement.MovementMethodPlugin; +import java.text.DateFormat; +import java.util.Date; import java.util.List; import org.threeten.bp.OffsetDateTime; -import org.threeten.bp.temporal.ChronoUnit; public class ListMessageAdapter extends RecyclerView.Adapter { @@ -39,6 +43,9 @@ public class ListMessageAdapter extends RecyclerView.Adapter getItems() { @@ -94,8 +105,10 @@ public class ListMessageAdapter extends RecyclerView.Adapter holder.switchPreciseDate()); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + String timeFormat = prefs.getString(TIME_FORMAT_PREFS_KEY, TIME_FORMAT_RELATIVE); + holder.setDateTime(message.message.getDate(), timeFormat.equals(TIME_FORMAT_RELATIVE)); + holder.date.setOnClickListener((ignored) -> holder.switchTimeFormat()); holder.delete.setOnClickListener( (ignored) -> delete.delete(holder.getAdapterPosition(), message.message, false)); @@ -128,35 +141,45 @@ public class ListMessageAdapter extends RecyclerView.Adapter targetReferences = new ArrayList<>(); @@ -150,7 +152,7 @@ public class MessagesActivity extends AppCompatActivity DividerItemDecoration dividerItemDecoration = new DividerItemDecoration( messagesView.getContext(), layoutManager.getOrientation()); - ListMessageAdapter adapter = + listMessageAdapter = new ListMessageAdapter( this, settings, picassoHandler.get(), emptyList(), this::scheduleDeletion); @@ -158,9 +160,10 @@ public class MessagesActivity extends AppCompatActivity messagesView.setHasFixedSize(true); messagesView.setLayoutManager(layoutManager); messagesView.addOnScrollListener(new MessageListOnScrollListener()); - messagesView.setAdapter(adapter); + messagesView.setAdapter(listMessageAdapter); - ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new SwipeToDeleteCallback(adapter)); + ItemTouchHelper itemTouchHelper = + new ItemTouchHelper(new SwipeToDeleteCallback(listMessageAdapter)); itemTouchHelper.attachToRecyclerView(messagesView); swipeRefreshLayout.setOnRefreshListener(this::onRefresh); @@ -357,6 +360,8 @@ public class MessagesActivity extends AppCompatActivity } } + listMessageAdapter.notifyDataSetChanged(); + navigationView.getMenu().findItem(selectedIndex).setChecked(true); super.onResume(); } diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 888606a..3a9d936 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -1,4 +1,5 @@ + @string/theme_light @string/theme_dark @@ -7,4 +8,17 @@ Light Dark System Default + + + @string/time_format_entry_absolute + @string/time_format_entry_relative + + Absolute time + Relative time + + @string/time_format_value_absolute + @string/time_format_value_relative + + time_format_absolute + time_format_relative diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5b07d3d..046f20b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -72,6 +72,8 @@ Appearance Theme theme + Time format + time_format Push message App: Priority: diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml index 0ff1dbe..ec2273d 100644 --- a/app/src/main/res/xml/root_preferences.xml +++ b/app/src/main/res/xml/root_preferences.xml @@ -8,6 +8,13 @@ android:entryValues="@array/mode" android:key="@string/setting_key_theme" android:title="@string/setting_theme" /> + +