Skip to content

Commit 440e395

Browse files
committed
Dynamic theme 4.6.0
Dynamic utils 4.6.1. Dynamic locale 2.5.0. Dynamic toasts 4.3.0. Dynamic preferences 2.4.0. Add support for product flavors.
1 parent 3f5ff9f commit 440e395

File tree

12 files changed

+92
-29
lines changed

12 files changed

+92
-29
lines changed

build.gradle

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,16 @@ buildscript {
2121
'targetSdk' : 35,
2222
'buildTools' : '35.0.0',
2323
'multidex' : '2.0.1',
24-
'dynamic' : '4.5.1',
24+
'dynamic' : '4.6.1',
2525
'fragment' : '1.7.0',
2626
'flexbox' : '3.0.0',
2727
'kotlin' : '1.9.24',
28-
'locale' : '2.4.0',
28+
'locale' : '2.5.0',
2929
'material' : '1.12.0',
30-
'preferences' : '2.3.1',
30+
'preferences' : '2.4.0',
3131
'swiperefresh': '1.1.0',
32-
'theme' : '4.5.1',
33-
'toasts' : '4.2.1',
32+
'theme' : '4.6.0',
33+
'toasts' : '4.3.0',
3434
'work' : '2.8.1'
3535
]
3636

dynamic-support/src/main/java/com/pranavpandey/android/dynamic/support/DynamicApplication.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2018-2022 Pranav Pandey
2+
* Copyright 2018-2024 Pranav Pandey
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -36,6 +36,7 @@
3636
import com.pranavpandey.android.dynamic.locale.DynamicLocaleUtils;
3737
import com.pranavpandey.android.dynamic.preferences.DynamicPreferences;
3838
import com.pranavpandey.android.dynamic.support.listener.DynamicListener;
39+
import com.pranavpandey.android.dynamic.util.product.DynamicProductFlavor;
3940
import com.pranavpandey.android.dynamic.support.listener.DynamicResolver;
4041
import com.pranavpandey.android.dynamic.support.model.DynamicAppTheme;
4142
import com.pranavpandey.android.dynamic.support.theme.DynamicTheme;
@@ -44,6 +45,7 @@
4445
import com.pranavpandey.android.dynamic.theme.Theme;
4546
import com.pranavpandey.android.dynamic.util.DynamicSdkUtils;
4647
import com.pranavpandey.android.dynamic.util.loader.DynamicLoader;
48+
import com.pranavpandey.android.dynamic.util.product.DynamicFlavor;
4749

4850
import java.util.Locale;
4951

@@ -52,7 +54,7 @@
5254
* and to perform theme change operations.
5355
*/
5456
public abstract class DynamicApplication extends Application
55-
implements androidx.work.Configuration.Provider, DynamicLocale,
57+
implements androidx.work.Configuration.Provider, DynamicProductFlavor, DynamicLocale,
5658
DynamicListener, SharedPreferences.OnSharedPreferenceChangeListener {
5759

5860
/**
@@ -196,6 +198,11 @@ public float getFontScale() {
196198
: DynamicTheme.getInstance().getDefault(false).getFontScaleRelative();
197199
}
198200

201+
@Override
202+
public @DynamicFlavor String getProductFlavor() {
203+
return DynamicFlavor.DEFAULT;
204+
}
205+
199206
@Override
200207
public @NonNull Context getContext() {
201208
return mContext != null ? mContext : getBaseContext() != null

dynamic-support/src/main/java/com/pranavpandey/android/dynamic/support/activity/DynamicSystemActivity.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2018-2022 Pranav Pandey
2+
* Copyright 2018-2024 Pranav Pandey
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -66,6 +66,7 @@
6666
import com.pranavpandey.android.dynamic.support.R;
6767
import com.pranavpandey.android.dynamic.support.intent.DynamicIntent;
6868
import com.pranavpandey.android.dynamic.support.listener.DynamicListener;
69+
import com.pranavpandey.android.dynamic.util.product.DynamicProductFlavor;
6970
import com.pranavpandey.android.dynamic.support.listener.DynamicTransitionListener;
7071
import com.pranavpandey.android.dynamic.support.motion.DynamicMotion;
7172
import com.pranavpandey.android.dynamic.support.theme.DynamicTheme;
@@ -84,6 +85,7 @@
8485
import com.pranavpandey.android.dynamic.util.DynamicSdkUtils;
8586
import com.pranavpandey.android.dynamic.util.DynamicViewUtils;
8687
import com.pranavpandey.android.dynamic.util.DynamicWindowUtils;
88+
import com.pranavpandey.android.dynamic.util.product.DynamicFlavor;
8789

8890
import java.io.Serializable;
8991
import java.util.HashMap;
@@ -100,7 +102,7 @@
100102
*/
101103
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
102104
public abstract class DynamicSystemActivity extends AppCompatActivity
103-
implements DynamicLocale, DynamicListener, DynamicTransitionListener,
105+
implements DynamicProductFlavor, DynamicLocale, DynamicListener, DynamicTransitionListener,
104106
SharedPreferences.OnSharedPreferenceChangeListener {
105107

106108
/**
@@ -1645,6 +1647,11 @@ public void onDestroy() {
16451647
super.onDestroy();
16461648
}
16471649

1650+
@Override
1651+
public @DynamicFlavor String getProductFlavor() {
1652+
return DynamicTheme.getInstance().getProductFlavor();
1653+
}
1654+
16481655
@Override
16491656
public @NonNull Context getContext() {
16501657
return mContext != null ? mContext : getBaseContext();
@@ -1782,6 +1789,7 @@ protected void updateTaskDescription(@ColorInt int color) {
17821789
}
17831790
}
17841791

1792+
@SuppressLint("MissingSuperCall")
17851793
@Override
17861794
public void onBackPressed() {
17871795
finishActivity();

dynamic-support/src/main/java/com/pranavpandey/android/dynamic/support/dialog/fragment/DynamicDialogFragment.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2018-2022 Pranav Pandey
2+
* Copyright 2018-2024 Pranav Pandey
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -41,8 +41,11 @@
4141
import com.pranavpandey.android.dynamic.support.Dynamic;
4242
import com.pranavpandey.android.dynamic.support.activity.DynamicSystemActivity;
4343
import com.pranavpandey.android.dynamic.support.dialog.DynamicDialog;
44+
import com.pranavpandey.android.dynamic.util.product.DynamicProductFlavor;
45+
import com.pranavpandey.android.dynamic.support.theme.DynamicTheme;
4446
import com.pranavpandey.android.dynamic.support.util.DynamicResourceUtils;
4547
import com.pranavpandey.android.dynamic.util.DynamicSdkUtils;
48+
import com.pranavpandey.android.dynamic.util.product.DynamicFlavor;
4649

4750
/**
4851
* Base dialog fragment to provide all the functionality of {@link DynamicDialog} inside a
@@ -52,7 +55,7 @@
5255
* @see #onCustomiseDialog(DynamicDialog, View, Bundle)
5356
*/
5457
public class DynamicDialogFragment extends AppCompatDialogFragment
55-
implements SharedPreferences.OnSharedPreferenceChangeListener {
58+
implements DynamicProductFlavor, SharedPreferences.OnSharedPreferenceChangeListener {
5659

5760
/**
5861
* Default button color. it will be used internally if there is no button color is applied.
@@ -233,6 +236,11 @@ public boolean onKey(DialogInterface dialogInterface,
233236
protected void onCustomiseDialog(@NonNull DynamicDialog alertDialog,
234237
@Nullable View view, @Nullable Bundle savedInstanceState) { }
235238

239+
@Override
240+
public @DynamicFlavor String getProductFlavor() {
241+
return DynamicTheme.getInstance().getProductFlavor();
242+
}
243+
236244
/**
237245
* Returns whether to register a shared preferences listener for this fragment.
238246
*

dynamic-support/src/main/java/com/pranavpandey/android/dynamic/support/fragment/DynamicFragment.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2018-2022 Pranav Pandey
2+
* Copyright 2018-2024 Pranav Pandey
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -53,21 +53,24 @@
5353
import com.pranavpandey.android.dynamic.support.activity.DynamicStateActivity;
5454
import com.pranavpandey.android.dynamic.support.activity.DynamicSystemActivity;
5555
import com.pranavpandey.android.dynamic.support.listener.DynamicLifecycle;
56+
import com.pranavpandey.android.dynamic.util.product.DynamicProductFlavor;
5657
import com.pranavpandey.android.dynamic.support.listener.DynamicSearchListener;
5758
import com.pranavpandey.android.dynamic.support.listener.DynamicTransitionListener;
5859
import com.pranavpandey.android.dynamic.support.motion.DynamicMotion;
60+
import com.pranavpandey.android.dynamic.support.theme.DynamicTheme;
5961
import com.pranavpandey.android.dynamic.support.util.DynamicMenuUtils;
6062
import com.pranavpandey.android.dynamic.support.util.DynamicResourceUtils;
6163
import com.pranavpandey.android.dynamic.util.DynamicSdkUtils;
64+
import com.pranavpandey.android.dynamic.util.product.DynamicFlavor;
6265

6366
/**
6467
* Base fragment class to provide basic functionality and to work with the {@link DynamicActivity}.
6568
* <p>Extend this fragment to add more functionality according to the requirements.
6669
*/
6770
@SuppressWarnings("deprecation")
6871
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
69-
public class DynamicFragment extends Fragment implements DynamicLifecycle,
70-
DynamicTransitionListener, DynamicSearchListener, MenuProvider,
72+
public class DynamicFragment extends Fragment implements DynamicProductFlavor,
73+
DynamicLifecycle, DynamicTransitionListener, DynamicSearchListener, MenuProvider,
7174
SharedPreferences.OnSharedPreferenceChangeListener {
7275

7376
/**
@@ -584,6 +587,11 @@ public void onSaveInstanceState(@NonNull Bundle outState) {
584587
mSearchViewExpanded);
585588
}
586589

590+
@Override
591+
public @DynamicFlavor String getProductFlavor() {
592+
return DynamicTheme.getInstance().getProductFlavor();
593+
}
594+
587595
/**
588596
* Get the current saved instance state for this fragment.
589597
*

dynamic-support/src/main/java/com/pranavpandey/android/dynamic/support/listener/DynamicListener.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2018-2022 Pranav Pandey
2+
* Copyright 2018-2024 Pranav Pandey
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -32,11 +32,12 @@
3232
import com.pranavpandey.android.dynamic.theme.AppTheme;
3333
import com.pranavpandey.android.dynamic.theme.DynamicColors;
3434
import com.pranavpandey.android.dynamic.theme.Theme;
35+
import com.pranavpandey.android.dynamic.util.product.DynamicProductFlavor;
3536

3637
/**
3738
* An interface to listen the dynamic change events.
3839
*/
39-
public interface DynamicListener {
40+
public interface DynamicListener extends DynamicProductFlavor {
4041

4142
/**
4243
* Returns the context used by this listener.

dynamic-support/src/main/java/com/pranavpandey/android/dynamic/support/popup/base/DynamicPopup.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2018-2022 Pranav Pandey
2+
* Copyright 2018-2024 Pranav Pandey
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -39,12 +39,14 @@
3939

4040
import com.pranavpandey.android.dynamic.support.Dynamic;
4141
import com.pranavpandey.android.dynamic.support.R;
42+
import com.pranavpandey.android.dynamic.util.product.DynamicProductFlavor;
4243
import com.pranavpandey.android.dynamic.support.motion.DynamicMotion;
4344
import com.pranavpandey.android.dynamic.support.theme.DynamicTheme;
4445
import com.pranavpandey.android.dynamic.support.util.DynamicResourceUtils;
4546
import com.pranavpandey.android.dynamic.util.DynamicSdkUtils;
4647
import com.pranavpandey.android.dynamic.util.DynamicViewUtils;
4748
import com.pranavpandey.android.dynamic.util.DynamicWindowUtils;
49+
import com.pranavpandey.android.dynamic.util.product.DynamicFlavor;
4850

4951
import java.lang.annotation.Retention;
5052
import java.lang.annotation.RetentionPolicy;
@@ -53,7 +55,7 @@
5355
* Base {@link PopupWindow} to provide the basic functionality to its descendants.
5456
* <p>Extend this class to create popup windows according to the requirements.
5557
*/
56-
public abstract class DynamicPopup {
58+
public abstract class DynamicPopup implements DynamicProductFlavor {
5759

5860
/**
5961
* Interface to hold the view types supported by the popup.
@@ -419,4 +421,9 @@ public void dismiss() {
419421
getPopupWindow().dismiss();
420422
}
421423
}
424+
425+
@Override
426+
public @DynamicFlavor String getProductFlavor() {
427+
return DynamicTheme.getInstance().getProductFlavor();
428+
}
422429
}

dynamic-support/src/main/java/com/pranavpandey/android/dynamic/support/preview/activity/DynamicPreviewActivity.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,8 +238,8 @@ public void onPreviewClick() {
238238
DynamicLinkUtils.viewUrl(DynamicPreviewActivity.this,
239239
getPreview().getInfo());
240240
} else {
241-
DynamicLinkUtils.share(DynamicPreviewActivity.this,
242-
(String) getTitle(), getPreview().getInfo(), null);
241+
DynamicLinkUtils.share(DynamicPreviewActivity.this, (String) getTitle(),
242+
getPreview().getInfo(), null, getProductFlavor());
243243
}
244244
}
245245

dynamic-support/src/main/java/com/pranavpandey/android/dynamic/support/setting/theme/ThemeReceiverPreference.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.pranavpandey.android.dynamic.support.R;
2929
import com.pranavpandey.android.dynamic.support.permission.DynamicPermissions;
3030
import com.pranavpandey.android.dynamic.support.setting.base.DynamicSpinnerPreference;
31+
import com.pranavpandey.android.dynamic.support.theme.DynamicTheme;
3132
import com.pranavpandey.android.dynamic.theme.ThemeContract;
3233
import com.pranavpandey.android.dynamic.util.DynamicLinkUtils;
3334
import com.pranavpandey.android.dynamic.util.DynamicPackageUtils;
@@ -55,6 +56,9 @@ public ThemeReceiverPreference(@NonNull Context context,
5556
protected void onInflate() {
5657
super.onInflate();
5758

59+
setDescription(String.format(getContext().getString(R.string.ads_theme_presets_desc_app),
60+
getContext().getString(R.string.ads_theme_presets_app)), false);
61+
5862
setActionButton(getContext().getString(R.string.ads_perm_info_required),
5963
new View.OnClickListener() {
6064
@Override
@@ -64,8 +68,8 @@ public void onClick(View v) {
6468
DynamicPermissions.getInstance().isGranted(
6569
ThemeContract.Preset.RECEIVER_PERMISSIONS, true);
6670
} else {
67-
DynamicLinkUtils.viewInGooglePlay(getContext(),
68-
ThemeContract.Preset.AUTHORITY);
71+
DynamicLinkUtils.viewApp(getContext(), ThemeContract.Preset.AUTHORITY,
72+
DynamicTheme.getInstance().getProductFlavor());
6973
}
7074
}
7175
});
@@ -81,7 +85,7 @@ protected void onUpdate() {
8185
Dynamic.setVisibility(getActionView(), DynamicPermissions.getInstance().isGranted(
8286
ThemeContract.Preset.RECEIVER_PERMISSIONS, false) ? GONE :VISIBLE);
8387
} else {
84-
Dynamic.setText(getActionView(), R.string.ads_info_google_play);
88+
Dynamic.setText(getActionView(), R.string.ads_download);
8589
Dynamic.setVisibility(getDescriptionView(), VISIBLE);
8690
Dynamic.setVisibility(getActionView(), VISIBLE);
8791
}

dynamic-support/src/main/java/com/pranavpandey/android/dynamic/support/theme/DynamicTheme.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2018-2022 Pranav Pandey
2+
* Copyright 2018-2024 Pranav Pandey
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -54,6 +54,7 @@
5454
import com.pranavpandey.android.dynamic.support.Dynamic;
5555
import com.pranavpandey.android.dynamic.support.R;
5656
import com.pranavpandey.android.dynamic.support.listener.DynamicListener;
57+
import com.pranavpandey.android.dynamic.util.product.DynamicProductFlavor;
5758
import com.pranavpandey.android.dynamic.support.listener.DynamicResolver;
5859
import com.pranavpandey.android.dynamic.support.model.DynamicAppTheme;
5960
import com.pranavpandey.android.dynamic.support.model.DynamicRemoteTheme;
@@ -74,6 +75,7 @@
7475
import com.pranavpandey.android.dynamic.util.DynamicTaskUtils;
7576
import com.pranavpandey.android.dynamic.util.DynamicUnitUtils;
7677
import com.pranavpandey.android.dynamic.util.concurrent.DynamicResult;
78+
import com.pranavpandey.android.dynamic.util.product.DynamicFlavor;
7779

7880
import java.lang.annotation.Retention;
7981
import java.lang.annotation.RetentionPolicy;
@@ -91,7 +93,7 @@
9193
* heavily dependent on this class to generate colors dynamically.
9294
*/
9395
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
94-
public class DynamicTheme implements DynamicListener, DynamicResolver {
96+
public class DynamicTheme implements DynamicProductFlavor, DynamicListener, DynamicResolver {
9597

9698
/**
9799
* Constant values for the theme styles version.
@@ -1635,6 +1637,11 @@ public void clearDynamicListeners() {
16351637
getDynamicThemes().clear();
16361638
}
16371639

1640+
@Override
1641+
public @DynamicFlavor String getProductFlavor() {
1642+
return getHandler().getProductFlavor();
1643+
}
1644+
16381645
@Override
16391646
public @NonNull Context getContext() {
16401647
return getHandler().getContext();

0 commit comments

Comments
 (0)