Skip to content

Commit 94b9afb

Browse files
slavickmarc-medley
andauthored
v28 (#258)
* Upgrade gradle to latest version * Upgrade firebase dependencies * Increase minSdkVersion from 21 to 26 to get access to java.time * Replace com.darwinsys:hirondelle-date4j with java.time * Refactor to use LocalDate instead of LocalDateTime * Remove date4j license mentions * Fix "can be replaced with 'List.sort()'" warnings * Fix code warning * Fix warnings caused by increasing minSdkVersion to 26 * Enable automatic per-app language preference support by following https://developer.android.com/guide/topics/resources/app-languages#auto-localeconfig * Remove unused imports * Remove default zone id args * Deduplicate DateTimeFormatters and remove default locale args * Update firebase-crashlytics * Change format from "day of year" to "day of month" * Upgrade to latest gradle * Remove getMonthNum in favor of getMonthValue * Fix build.gradle warnings * Improve performance of getDaysAfter by removing unnecessary type conversions * Calculate streaks during restore * Use date long instead of string * Simplify recalculateStreak * Update versionCode and versionName * Replace deprecated `androidx.viewpager.widget.ViewPager` with `androidx.viewpager2.widget.ViewPager2` * Replace deprecated function call * Undo changes to fragment_tweaks.xml * Remove deprecated ProgressDialogs from history activities. Not replacing these as they only ever flashed briefly. * Replace ProgressDialog with ProgressBar * Simplify day change detection algorithm * Add loading indicator when changing time scale * Call recreate to fix rendering issue after backing up data * Upgrade firebase dependencies * Upgrade dependencies * Fix warnings * Update to sdk 35 * Add android:fitsSystemWindows="true" to AppBarLayouts * Add android:clipToPadding="false" to RecyclerViews * Add DailyDozenActivity to encapsulate edge-to-edge UI handling * Fix status bar display * Translation update v06. Adds Hungarian_hu translation. (#262) * Update: v06 translations. Adds Hungarian_hu. * [FIX] Applies primary level Hungarian quotation marks „ (U+201E) ” (U+201D). * Adds Lychees video topic. * Hungarian update "CHECKED_Hungarian_hu.app.v06.DoubleCheck.tsv.txt" - nutritionfactsorg/daily-dozen-localization#53 (comment) * Fix broken video links caused by removing strings from food_info_type_* string arrays --------- Co-authored-by: --marc <[email protected]>
1 parent d70853e commit 94b9afb

File tree

82 files changed

+2243
-1224
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+2243
-1224
lines changed

app/build.gradle

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ configurations {
2020
}
2121

2222
android {
23+
androidResources {
24+
generateLocaleConfig = true
25+
}
2326
buildFeatures {
2427
buildConfig = true
2528
viewBinding = true
@@ -30,13 +33,13 @@ android {
3033
}
3134
defaultConfig {
3235
applicationId "org.nutritionfacts.dailydozen"
33-
minSdkVersion 21
36+
minSdkVersion 26
3437
multiDexEnabled true
35-
compileSdk 34
36-
targetSdkVersion 34
38+
compileSdk 35
39+
targetSdkVersion 35
3740
vectorDrawables.useSupportLibrary = true
38-
versionCode 91
39-
versionName "27"
41+
versionCode 92
42+
versionName "28"
4043
}
4144
buildTypes {
4245
debug {
@@ -50,7 +53,7 @@ android {
5053
}
5154
}
5255

53-
flavorDimensions "store"
56+
flavorDimensions = ["store"]
5457
productFlavors {
5558
play {
5659
dimension "store"
@@ -63,18 +66,18 @@ android {
6366
}
6467

6568
dependencies {
66-
implementation 'com.google.firebase:firebase-analytics:22.1.0'
67-
implementation 'com.google.firebase:firebase-crashlytics:19.1.0'
68-
implementation 'androidx.appcompat:appcompat:1.7.0'
69+
implementation 'com.google.firebase:firebase-analytics:22.5.0'
70+
implementation 'com.google.firebase:firebase-crashlytics:19.4.4'
71+
implementation 'androidx.appcompat:appcompat:1.7.1'
6972
implementation 'androidx.cardview:cardview:1.0.0'
73+
implementation 'androidx.viewpager2:viewpager2:1.1.0'
7074
implementation 'com.google.android.material:material:1.12.0'
7175
implementation fileTree(include: ['*.jar'], dir: 'libs')
72-
implementation 'com.darwinsys:hirondelle-date4j:1.5.1'
7376
implementation 'com.github.prolificinteractive:material-calendarview:2.0.1'
7477
implementation('com.joanzapata.iconify:android-iconify-fontawesome:2.2.2') { exclude group: "com.android.support" }
7578
implementation('com.github.PhilJay:MPAndroidChart:v2.2.5') { exclude group: "com.android.support" }
7679
implementation('org.greenrobot:eventbus:3.3.1') { exclude group: "com.android.support" }
77-
implementation 'com.google.code.gson:gson:2.10.1'
80+
implementation 'com.google.code.gson:gson:2.13.1'
7881
implementation 'com.jakewharton.timber:timber:5.0.1'
7982
implementation "io.noties.markwon:core:4.6.2"
8083
}

app/src/main/java/likeanimation/CircleView.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ public class CircleView extends View {
1515
private static final int START_COLOR = 0xFFFF5722;
1616
private static final int END_COLOR = 0xFFFFC107;
1717

18-
private ArgbEvaluator argbEvaluator = new ArgbEvaluator();
18+
private final ArgbEvaluator argbEvaluator = new ArgbEvaluator();
1919

20-
private Paint circlePaint = new Paint();
21-
private Paint maskPaint = new Paint();
20+
private final Paint circlePaint = new Paint();
21+
private final Paint maskPaint = new Paint();
2222

2323
private Bitmap tempBitmap;
2424
private Canvas tempCanvas;

app/src/main/java/likeanimation/DotsView.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public class DotsView extends View {
3434
private float currentDotSize2 = 0;
3535
private float currentRadius2 = 0;
3636

37-
private ArgbEvaluator argbEvaluator = new ArgbEvaluator();
37+
private final ArgbEvaluator argbEvaluator = new ArgbEvaluator();
3838

3939
public DotsView(Context context) {
4040
super(context);

app/src/main/java/likeanimation/LikeButtonView.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,9 @@ public LikeButtonView(Context context, AttributeSet attrs, int defStyleAttr, int
5353
private void init() {
5454
LayoutInflater.from(getContext()).inflate(R.layout.view_like_button, this, true);
5555

56-
ivStar = (TextView) findViewById(R.id.ivStar);
57-
vDotsView = (DotsView) findViewById(R.id.vDotsView);
58-
vCircle = (CircleView) findViewById(R.id.vCircle);
56+
ivStar = findViewById(R.id.ivStar);
57+
vDotsView = findViewById(R.id.vDotsView);
58+
vCircle = findViewById(R.id.vCircle);
5959

6060
setOnClickListener(this);
6161
}

app/src/main/java/org/nutritionfacts/dailydozen/activity/AboutActivity.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,13 @@
1010
import android.widget.TextView;
1111

1212
import androidx.appcompat.app.ActionBar;
13-
import androidx.appcompat.app.AppCompatActivity;
1413

1514
import org.nutritionfacts.dailydozen.BuildConfig;
1615
import org.nutritionfacts.dailydozen.Common;
1716
import org.nutritionfacts.dailydozen.R;
1817
import org.nutritionfacts.dailydozen.databinding.ActivityAboutBinding;
1918

20-
public class AboutActivity extends AppCompatActivity {
19+
public class AboutActivity extends DailyDozenActivity {
2120
private ActivityAboutBinding binding;
2221

2322
@Override
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package org.nutritionfacts.dailydozen.activity;
2+
3+
import android.os.Bundle;
4+
import android.view.ViewGroup;
5+
6+
import androidx.appcompat.app.AppCompatActivity;
7+
import androidx.core.graphics.Insets;
8+
import androidx.core.view.ViewCompat;
9+
import androidx.core.view.WindowInsetsCompat;
10+
11+
public class DailyDozenActivity extends AppCompatActivity {
12+
@Override
13+
protected void onCreate(Bundle savedInstanceState) {
14+
super.onCreate(savedInstanceState);
15+
applyWindowInsets(findViewById(android.R.id.content));
16+
}
17+
18+
protected void applyWindowInsets(ViewGroup viewGroup) {
19+
ViewCompat.setOnApplyWindowInsetsListener(viewGroup,
20+
(v, windowInsets) -> {
21+
Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars());
22+
v.setPadding(insets.left, insets.top, insets.right, insets.bottom);
23+
24+
// Return CONSUMED if you don't want the window insets to keep passing
25+
// down to descendant views.
26+
return WindowInsetsCompat.CONSUMED;
27+
});
28+
}
29+
}

app/src/main/java/org/nutritionfacts/dailydozen/activity/DailyReminderSettingsActivity.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
import androidx.annotation.NonNull;
99
import androidx.annotation.Nullable;
10-
import androidx.appcompat.app.AppCompatActivity;
1110
import androidx.recyclerview.widget.LinearLayoutManager;
1211

1312
import org.greenrobot.eventbus.Subscribe;
@@ -21,7 +20,7 @@
2120
import org.nutritionfacts.dailydozen.util.DateUtil;
2221
import org.nutritionfacts.dailydozen.util.NotificationUtil;
2322

24-
public class DailyReminderSettingsActivity extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener {
23+
public class DailyReminderSettingsActivity extends DailyDozenActivity implements TimePickerDialog.OnTimeSetListener {
2524
private ActivityNotificationSettingsBinding binding;
2625

2726
protected DailyReminderAdapter reminderAdapter;

app/src/main/java/org/nutritionfacts/dailydozen/activity/DebugActivity.java

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
package org.nutritionfacts.dailydozen.activity;
22

3-
import android.app.ProgressDialog;
43
import android.os.Bundle;
54
import android.view.View;
65
import android.widget.AdapterView;
76
import android.widget.ArrayAdapter;
87

98
import androidx.annotation.NonNull;
109
import androidx.appcompat.app.AlertDialog;
11-
import androidx.appcompat.app.AppCompatActivity;
1210

1311
import org.nutritionfacts.dailydozen.Common;
1412
import org.nutritionfacts.dailydozen.R;
@@ -22,11 +20,9 @@
2220

2321
import timber.log.Timber;
2422

25-
public class DebugActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener, ProgressListener {
23+
public class DebugActivity extends DailyDozenActivity implements AdapterView.OnItemSelectedListener, ProgressListener {
2624
private ActivityDebugBinding binding;
2725

28-
private ProgressDialog progressDialog;
29-
3026
private int historyToGenerate;
3127

3228
@Override
@@ -144,29 +140,19 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis
144140

145141
@Override
146142
public void showProgressBar(int titleId) {
147-
progressDialog = new ProgressDialog(this);
148-
progressDialog.setIndeterminate(false);
149-
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
150-
progressDialog.setTitle(titleId);
151-
progressDialog.show();
143+
binding.debugProgressBarContainer.setVisibility(View.VISIBLE);
144+
binding.debugProgressText.setText(titleId);
145+
binding.debugProgressBar.setProgress(0);
152146
}
153147

154148
@Override
155149
public void updateProgressBar(int current, int total) {
156-
progressDialog.setProgress(current);
157-
progressDialog.setMax(total);
150+
binding.debugProgressBar.setProgress(current);
151+
binding.debugProgressBar.setMax(total);
158152
}
159153

160154
@Override
161155
public void hideProgressBar() {
162-
try {
163-
if (progressDialog != null && progressDialog.isShowing()) {
164-
progressDialog.dismiss();
165-
}
166-
} catch (Exception e) {
167-
Timber.e("hideProgressBar: Exception while trying to dismiss progress dialog");
168-
} finally {
169-
progressDialog = null;
170-
}
156+
binding.debugProgressBarContainer.setVisibility(View.GONE);
171157
}
172158
}

app/src/main/java/org/nutritionfacts/dailydozen/activity/FaqActivity.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,13 @@
33
import android.os.Bundle;
44

55
import androidx.annotation.Nullable;
6-
import androidx.appcompat.app.AppCompatActivity;
76

87
import org.nutritionfacts.dailydozen.R;
98
import org.nutritionfacts.dailydozen.databinding.ActivityFaqBinding;
109

1110
import io.noties.markwon.Markwon;
1211

13-
public class FaqActivity extends AppCompatActivity {
12+
public class FaqActivity extends DailyDozenActivity {
1413
private ActivityFaqBinding binding;
1514

1615
@Override

app/src/main/java/org/nutritionfacts/dailydozen/activity/HistoryActivity.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.nutritionfacts.dailydozen.util.CalendarHistoryDecorator;
2121
import org.nutritionfacts.dailydozen.util.DateUtil;
2222

23+
import java.time.LocalDate;
2324
import java.util.ArrayList;
2425
import java.util.Calendar;
2526
import java.util.HashSet;
@@ -29,16 +30,14 @@
2930
import java.util.concurrent.ExecutorService;
3031
import java.util.concurrent.Executors;
3132

32-
import hirondelle.date4j.DateTime;
33-
3433
public class HistoryActivity extends InfoActivity {
3534
private ActivityHistoryBinding binding;
3635

3736
private boolean isFoodHistory = false;
3837

3938
private final Set<String> loadedMonths = new HashSet<>();
40-
private List<DateTime> fullServingsDates;
41-
private List<DateTime> partialServingsDates;
39+
private List<LocalDate> fullServingsDates;
40+
private List<LocalDate> partialServingsDates;
4241

4342
@SuppressWarnings("unchecked")
4443
@Override
@@ -50,8 +49,8 @@ protected void onCreate(Bundle savedInstanceState) {
5049
fullServingsDates = new ArrayList<>();
5150
partialServingsDates = new ArrayList<>();
5251
if (savedInstanceState != null) {
53-
fullServingsDates = (ArrayList<DateTime>) savedInstanceState.getSerializable(Args.DATES_WITH_FULL_SERVINGS);
54-
partialServingsDates = (ArrayList<DateTime>) savedInstanceState.getSerializable(Args.DATES_WITH_PARTIAL_SERVINGS);
52+
fullServingsDates = (ArrayList<LocalDate>) savedInstanceState.getSerializable(Args.DATES_WITH_FULL_SERVINGS);
53+
partialServingsDates = (ArrayList<LocalDate>) savedInstanceState.getSerializable(Args.DATES_WITH_PARTIAL_SERVINGS);
5554
}
5655

5756
displayHistory();
@@ -116,9 +115,9 @@ private void displayEntriesForVisibleMonths(final Calendar cal, final long id) {
116115

117116
for (Map.Entry<Day, Boolean> serving : servings.entrySet()) {
118117
if (serving.getValue()) {
119-
fullServingsDates.add(serving.getKey().getDateTime());
118+
fullServingsDates.add(serving.getKey().getDate());
120119
} else {
121-
partialServingsDates.add(serving.getKey().getDateTime());
120+
partialServingsDates.add(serving.getKey().getDate());
122121
}
123122
}
124123
}

0 commit comments

Comments
 (0)