From e87ce5a2f1a4420863293ebdb68cd4c1522de9e7 Mon Sep 17 00:00:00 2001 From: Adeel Zafar Date: Thu, 21 Feb 2019 06:11:56 +0500 Subject: [PATCH] Fixed Specific Dates With Keywords Use LocalDate to get current date and yesterday's date. Then compare these dates with history's dates. Use strings values "Today" and "Yesterday" wherever required. Used Java 8's classes LocalDate which works for API 26 and onwards. Add JakeWharton's ABPThreeTen For BackwardCompatibility before API 26 Hence, I had to increase the minSdk to 15 as it doesn't works with 14 Added 'Today' and 'Yesterday' instead of specific dates in History --- app/build.gradle | 4 +++- .../org/kiwix/kiwixmobile/KiwixApplication.java | 2 ++ .../kiwix/kiwixmobile/history/HistoryAdapter.java | 15 ++++++++++++++- app/src/main/res/values/strings.xml | 2 ++ kiwixlib/build.gradle | 2 +- 5 files changed, 22 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index ea80b4836..b759dfede 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -37,6 +37,8 @@ repositories { String[] archs = ['arm64-v8a', 'armeabi', 'mips', 'mips64', 'x86', 'x86_64'] dependencies { + // use jdk8 java.time backport, as long app < Build.VERSION_CODES.O + implementation("com.jakewharton.threetenabp:threetenabp:1.1.1") // Get kiwixlib online if it is not populated locally if (file("../kiwixlib/src/main").list().length == 1) { implementation 'org.kiwix.kiwixlib:kiwixlib:1.0.11' @@ -170,7 +172,7 @@ android { testServer new TestDroidUpload(); defaultConfig { - minSdkVersion 14 + minSdkVersion 15 targetSdkVersion 28 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" // See https://github.com/linkedin/dexmaker/issues/65 for why we need the following line. diff --git a/app/src/main/java/org/kiwix/kiwixmobile/KiwixApplication.java b/app/src/main/java/org/kiwix/kiwixmobile/KiwixApplication.java index 2d9f90a96..a8e91cfde 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/KiwixApplication.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/KiwixApplication.java @@ -32,6 +32,7 @@ import java.io.IOException; import javax.inject.Inject; import org.kiwix.kiwixmobile.di.components.ApplicationComponent; import org.kiwix.kiwixmobile.di.components.DaggerApplicationComponent; +import com.jakewharton.threetenabp.AndroidThreeTen; import org.kiwix.kiwixmobile.di.modules.ApplicationModule; public class KiwixApplication extends MultiDexApplication implements HasActivityInjector { @@ -71,6 +72,7 @@ public class KiwixApplication extends MultiDexApplication implements HasActivity @Override public void onCreate() { super.onCreate(); + AndroidThreeTen.init(this); if (isExternalStorageWritable()) { File appDirectory = new File(Environment.getExternalStorageDirectory() + "/Kiwix"); logFile = new File(appDirectory, "logcat.txt"); diff --git a/app/src/main/java/org/kiwix/kiwixmobile/history/HistoryAdapter.java b/app/src/main/java/org/kiwix/kiwixmobile/history/HistoryAdapter.java index 4d8ade7b1..49a35ed9c 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/history/HistoryAdapter.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/history/HistoryAdapter.java @@ -10,9 +10,11 @@ import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; import butterknife.BindView; import butterknife.ButterKnife; +import org.threeten.bp.LocalDate; import java.util.List; import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.data.local.entity.History; +import org.threeten.bp.format.DateTimeFormatter; import static org.kiwix.kiwixmobile.library.LibraryAdapter.createBitmapFromEncodedString; @@ -60,7 +62,18 @@ class HistoryAdapter extends RecyclerView.Adapter { item.itemView.setOnLongClickListener(v -> itemClickListener.onItemLongClick(item.favicon, history)); } else { - ((Category) holder).date.setText(historyList.get(position + 1).getDate()); + String date = historyList.get(position + 1).getDate(); + String todaysDate, yesterdayDate; + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM d, yyyy"); + todaysDate = LocalDate.now().format(formatter); + yesterdayDate = LocalDate.now().minusDays(1).format(formatter); + if (todaysDate.contentEquals(date)) { + ((Category) holder).date.setText(R.string.time_today); + } else if (yesterdayDate.contentEquals(date)) { + ((Category) holder).date.setText(R.string.time_yesterday); + } else { + ((Category) holder).date.setText(date); + } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e37d416b7..9e3995720 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -158,6 +158,8 @@ min s left + Today + Yesterday Enable bottom toolbar Display a toolbar with quick actions at the bottom of the screen Automatically switch between day and night mode. diff --git a/kiwixlib/build.gradle b/kiwixlib/build.gradle index e4291b86f..d61c875eb 100644 --- a/kiwixlib/build.gradle +++ b/kiwixlib/build.gradle @@ -4,7 +4,7 @@ android { compileSdkVersion 28 defaultConfig { - minSdkVersion 14 + minSdkVersion 15 targetSdkVersion 28 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" }