From 2434943c9bf3cf97f60958d6b6f3006ebcba83a7 Mon Sep 17 00:00:00 2001 From: Abdullah Al-Faqeir Date: Tue, 19 Mar 2024 05:42:46 +0300 Subject: [PATCH 01/16] feat(android): via app compat delegate set default night mode feat(android): via app compat delegate get default night mode feat(android): via app compat delegate check if compat vector from resources enabled feat(android): via app compat delegate set compat vector from recourses enabled or not. feat(android): via app compat delegate set application locales. feat(android): via app compat delegate get application locales. --- .../android/AppCompatDelegateModule.java | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 android/modules/android/src/java/ti/modules/titanium/android/AppCompatDelegateModule.java diff --git a/android/modules/android/src/java/ti/modules/titanium/android/AppCompatDelegateModule.java b/android/modules/android/src/java/ti/modules/titanium/android/AppCompatDelegateModule.java new file mode 100644 index 00000000000..beffabd6ad4 --- /dev/null +++ b/android/modules/android/src/java/ti/modules/titanium/android/AppCompatDelegateModule.java @@ -0,0 +1,92 @@ +package ti.modules.titanium.android; + +import android.annotation.TargetApi; + +import androidx.core.os.LocaleListCompat; + +import org.appcelerator.kroll.KrollDict; +import org.appcelerator.kroll.KrollModule; +import org.appcelerator.kroll.annotations.Kroll; + +import java.util.Iterator; +import java.util.Locale; + +@Kroll.module(parentModule = AndroidModule.class) +public class AppCompatDelegateModule extends KrollModule +{ + private static final String TAG = "TiAndroid"; + + @Kroll.method + public void setDefaultNightMode(@Kroll.argument int mode) + { + androidx.appcompat.app.AppCompatDelegate.setDefaultNightMode(mode); + } + + @Kroll.method + public int getDefaultNightMode() + { + return androidx.appcompat.app.AppCompatDelegate.getDefaultNightMode(); + } + + @Kroll.method + public boolean isCompatVectorFromResourcesEnabled() + { + return androidx.appcompat.app.AppCompatDelegate.isCompatVectorFromResourcesEnabled(); + } + + @Kroll.method + public void setCompatVectorFromResourcesEnabled(@Kroll.argument boolean enabled) + { + androidx.appcompat.app.AppCompatDelegate.setCompatVectorFromResourcesEnabled(enabled); + } + + @TargetApi(33) + @Kroll.method + public void setApplicationLocales(String locales) + { + LocaleListCompat appLocale = LocaleListCompat.forLanguageTags(locales); + androidx.appcompat.app.AppCompatDelegate.setApplicationLocales(appLocale); + } + + @TargetApi(33) + @Kroll.method + public KrollDict[] getApplicationLocales() + { + LocaleListCompat localeListCompat = androidx.appcompat.app.AppCompatDelegate.getApplicationLocales(); + int size = localeListCompat.size(); + KrollDict[] locales = new KrollDict[size]; + for (int i = 0; i < size; i++) { + Locale locale = localeListCompat.get(i); + if (locale != null) { + KrollDict localeObj = new KrollDict(); + localeObj.put("country", locale.getCountry()); + localeObj.put("iso3_country", locale.getISO3Country()); + localeObj.put("display_country", locale.getDisplayCountry()); + localeObj.put("language", locale.getLanguage()); + localeObj.put("iso3_language", locale.getISO3Language()); + localeObj.put("display_language", locale.getDisplayLanguage()); + localeObj.put("variant", locale.getVariant()); + localeObj.put("display_variant", locale.getDisplayVariant()); + localeObj.put("script", locale.getScript()); + localeObj.put("display_script", locale.getDisplayScript()); + localeObj.put("display_name", locale.getDisplayName()); + localeObj.put("language_tag", locale.toLanguageTag()); + Character[] extensionKeys = new Character[locale.getExtensionKeys().size()]; + String[] extensions = new String[locale.getExtensionKeys().size()]; + Iterator extensionKeysSize = locale.getExtensionKeys().iterator(); + int l = 0; + while (extensionKeysSize.hasNext()) { + extensionKeys[l] = extensionKeysSize.next(); + extensions[l] = locale.getExtension(extensionKeys[l]); + l++; + } + localeObj.put("extension_keys", extensionKeys); + localeObj.put("extensions", extensions); + locales[i] = localeObj; + } else { + locales[i] = null; + } + } + return locales; + } +} From 27221977ccc3affacbe6e25818a4a82e05b85d41 Mon Sep 17 00:00:00 2001 From: Abdullah Al-Faqeir Date: Tue, 19 Mar 2024 18:15:46 +0300 Subject: [PATCH 02/16] feat(android): ti locale new property applicationLocales --- .../android/AppCompatDelegateModule.java | 92 ------------------- .../modules/titanium/locale/LocaleModule.java | 57 ++++++++++++ tests/Resources/ti.locale.test.js | 17 ++++ 3 files changed, 74 insertions(+), 92 deletions(-) delete mode 100644 android/modules/android/src/java/ti/modules/titanium/android/AppCompatDelegateModule.java diff --git a/android/modules/android/src/java/ti/modules/titanium/android/AppCompatDelegateModule.java b/android/modules/android/src/java/ti/modules/titanium/android/AppCompatDelegateModule.java deleted file mode 100644 index beffabd6ad4..00000000000 --- a/android/modules/android/src/java/ti/modules/titanium/android/AppCompatDelegateModule.java +++ /dev/null @@ -1,92 +0,0 @@ -package ti.modules.titanium.android; - -import android.annotation.TargetApi; - -import androidx.core.os.LocaleListCompat; - -import org.appcelerator.kroll.KrollDict; -import org.appcelerator.kroll.KrollModule; -import org.appcelerator.kroll.annotations.Kroll; - -import java.util.Iterator; -import java.util.Locale; - -@Kroll.module(parentModule = AndroidModule.class) -public class AppCompatDelegateModule extends KrollModule -{ - private static final String TAG = "TiAndroid"; - - @Kroll.method - public void setDefaultNightMode(@Kroll.argument int mode) - { - androidx.appcompat.app.AppCompatDelegate.setDefaultNightMode(mode); - } - - @Kroll.method - public int getDefaultNightMode() - { - return androidx.appcompat.app.AppCompatDelegate.getDefaultNightMode(); - } - - @Kroll.method - public boolean isCompatVectorFromResourcesEnabled() - { - return androidx.appcompat.app.AppCompatDelegate.isCompatVectorFromResourcesEnabled(); - } - - @Kroll.method - public void setCompatVectorFromResourcesEnabled(@Kroll.argument boolean enabled) - { - androidx.appcompat.app.AppCompatDelegate.setCompatVectorFromResourcesEnabled(enabled); - } - - @TargetApi(33) - @Kroll.method - public void setApplicationLocales(String locales) - { - LocaleListCompat appLocale = LocaleListCompat.forLanguageTags(locales); - androidx.appcompat.app.AppCompatDelegate.setApplicationLocales(appLocale); - } - - @TargetApi(33) - @Kroll.method - public KrollDict[] getApplicationLocales() - { - LocaleListCompat localeListCompat = androidx.appcompat.app.AppCompatDelegate.getApplicationLocales(); - int size = localeListCompat.size(); - KrollDict[] locales = new KrollDict[size]; - for (int i = 0; i < size; i++) { - Locale locale = localeListCompat.get(i); - if (locale != null) { - KrollDict localeObj = new KrollDict(); - localeObj.put("country", locale.getCountry()); - localeObj.put("iso3_country", locale.getISO3Country()); - localeObj.put("display_country", locale.getDisplayCountry()); - localeObj.put("language", locale.getLanguage()); - localeObj.put("iso3_language", locale.getISO3Language()); - localeObj.put("display_language", locale.getDisplayLanguage()); - localeObj.put("variant", locale.getVariant()); - localeObj.put("display_variant", locale.getDisplayVariant()); - localeObj.put("script", locale.getScript()); - localeObj.put("display_script", locale.getDisplayScript()); - localeObj.put("display_name", locale.getDisplayName()); - localeObj.put("language_tag", locale.toLanguageTag()); - Character[] extensionKeys = new Character[locale.getExtensionKeys().size()]; - String[] extensions = new String[locale.getExtensionKeys().size()]; - Iterator extensionKeysSize = locale.getExtensionKeys().iterator(); - int l = 0; - while (extensionKeysSize.hasNext()) { - extensionKeys[l] = extensionKeysSize.next(); - extensions[l] = locale.getExtension(extensionKeys[l]); - l++; - } - localeObj.put("extension_keys", extensionKeys); - localeObj.put("extensions", extensions); - locales[i] = localeObj; - } else { - locales[i] = null; - } - } - return locales; - } -} diff --git a/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java b/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java index d76653ce3dc..7396229723d 100644 --- a/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java +++ b/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java @@ -10,8 +10,10 @@ import java.text.DateFormat; import java.text.NumberFormat; import java.util.ArrayList; +import java.util.Iterator; import java.util.Locale; +import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.KrollModule; import org.appcelerator.kroll.annotations.Kroll; import org.appcelerator.kroll.common.Log; @@ -21,8 +23,11 @@ import org.appcelerator.titanium.util.TiPlatformHelper; import org.appcelerator.titanium.util.TiRHelper; +import android.annotation.TargetApi; import android.telephony.PhoneNumberUtils; +import androidx.core.os.LocaleListCompat; + @Kroll.module public class LocaleModule extends KrollModule { @@ -51,6 +56,58 @@ public String getCurrentLocale() return TiPlatformHelper.getInstance().getLocale(); } + @TargetApi(33) + @Kroll.method + @Kroll.setProperty + public void setApplicationLocales(String locales) + { + LocaleListCompat appLocale = LocaleListCompat.forLanguageTags(locales); + androidx.appcompat.app.AppCompatDelegate.setApplicationLocales(appLocale); + } + + @TargetApi(33) + @Kroll.method + @Kroll.getProperty + public KrollDict[] getApplicationLocales() + { + LocaleListCompat localeListCompat = androidx.appcompat.app.AppCompatDelegate.getApplicationLocales(); + int size = localeListCompat.size(); + KrollDict[] locales = new KrollDict[size]; + for (int i = 0; i < size; i++) { + Locale locale = localeListCompat.get(i); + if (locale != null) { + KrollDict localeObj = new KrollDict(); + localeObj.put("country", locale.getCountry()); + localeObj.put("iso3_country", locale.getISO3Country()); + localeObj.put("display_country", locale.getDisplayCountry()); + localeObj.put("language", locale.getLanguage()); + localeObj.put("iso3_language", locale.getISO3Language()); + localeObj.put("display_language", locale.getDisplayLanguage()); + localeObj.put("variant", locale.getVariant()); + localeObj.put("display_variant", locale.getDisplayVariant()); + localeObj.put("script", locale.getScript()); + localeObj.put("display_script", locale.getDisplayScript()); + localeObj.put("display_name", locale.getDisplayName()); + localeObj.put("language_tag", locale.toLanguageTag()); + Character[] extensionKeys = new Character[locale.getExtensionKeys().size()]; + String[] extensions = new String[locale.getExtensionKeys().size()]; + Iterator extensionKeysSize = locale.getExtensionKeys().iterator(); + int l = 0; + while (extensionKeysSize.hasNext()) { + extensionKeys[l] = extensionKeysSize.next(); + extensions[l] = locale.getExtension(extensionKeys[l]); + l++; + } + localeObj.put("extension_keys", extensionKeys); + localeObj.put("extensions", extensions); + locales[i] = localeObj; + } else { + locales[i] = null; + } + } + return locales; + } + @Kroll.method public String getCurrencyCode(String localeString) { diff --git a/tests/Resources/ti.locale.test.js b/tests/Resources/ti.locale.test.js index f36f35a2b17..e4f5d850bf6 100644 --- a/tests/Resources/ti.locale.test.js +++ b/tests/Resources/ti.locale.test.js @@ -44,6 +44,12 @@ describe('Titanium.Locale', () => { }); }); + describe.android('.applicationLocales', () => { + it('is a Array', () => { + should(Ti.Locale).have.a.property('applicationLocales').which.is.an.Array(); + }); + }); + describe('.currentLanguage', () => { it('is a String', () => { should(Ti.Locale).have.a.readOnlyProperty('currentLanguage').which.is.a.String(); @@ -278,6 +284,17 @@ describe('Titanium.Locale', () => { }); }); + describe.android('#set applicationLocales(String)', () => { + it('has a setter', () => { + should(Ti.Locale).have.a.setter('applicationLocales'); + }); + + it('changes .applicationLocales', () => { + Ti.Locale.applicationLocales = 'ar'; + should(Ti.Locale.applicationLocales[0].language).eql('ar'); + }); + }); + describe('#set language(String)', () => { it('has a setter', () => { should(Ti.Locale).have.a.setter('language'); From c1db1e87a6f3b14aece494c8a28c6c3fe4638f21 Mon Sep 17 00:00:00 2001 From: Abdullah Al-Faqeir Date: Wed, 20 Mar 2024 12:13:50 +0300 Subject: [PATCH 03/16] Update android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java Co-authored-by: Michael Gangolf --- .../src/java/ti/modules/titanium/locale/LocaleModule.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java b/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java index 7396229723d..f19d074a3fb 100644 --- a/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java +++ b/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java @@ -23,7 +23,7 @@ import org.appcelerator.titanium.util.TiPlatformHelper; import org.appcelerator.titanium.util.TiRHelper; -import android.annotation.TargetApi; +import android.os.Build; import android.telephony.PhoneNumberUtils; import androidx.core.os.LocaleListCompat; From 9158cda22597e9250267b68f86a8825a0af5d058 Mon Sep 17 00:00:00 2001 From: Abdullah Al-Faqeir Date: Wed, 20 Mar 2024 12:14:03 +0300 Subject: [PATCH 04/16] Update android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java Co-authored-by: Michael Gangolf --- .../locale/src/java/ti/modules/titanium/locale/LocaleModule.java | 1 + 1 file changed, 1 insertion(+) diff --git a/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java b/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java index f19d074a3fb..21f24fd198a 100644 --- a/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java +++ b/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java @@ -26,6 +26,7 @@ import android.os.Build; import android.telephony.PhoneNumberUtils; +import androidx.appcompat.app.AppCompatDelegate; import androidx.core.os.LocaleListCompat; @Kroll.module From 85e48b1ffe83006f45931b385303ae331a585547 Mon Sep 17 00:00:00 2001 From: Abdullah Al-Faqeir Date: Wed, 20 Mar 2024 12:14:17 +0300 Subject: [PATCH 05/16] Update android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java Co-authored-by: Michael Gangolf --- .../locale/src/java/ti/modules/titanium/locale/LocaleModule.java | 1 + 1 file changed, 1 insertion(+) diff --git a/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java b/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java index 21f24fd198a..283301b78c1 100644 --- a/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java +++ b/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java @@ -26,6 +26,7 @@ import android.os.Build; import android.telephony.PhoneNumberUtils; +import androidx.appcompat.app.AppCompatDelegate; import androidx.appcompat.app.AppCompatDelegate; import androidx.core.os.LocaleListCompat; From 94d91bba35a225e06bc64601b06215fde6a94157 Mon Sep 17 00:00:00 2001 From: Abdullah Al-Faqeir Date: Wed, 20 Mar 2024 12:14:27 +0300 Subject: [PATCH 06/16] Update android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java Co-authored-by: Michael Gangolf --- .../locale/src/java/ti/modules/titanium/locale/LocaleModule.java | 1 + 1 file changed, 1 insertion(+) diff --git a/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java b/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java index 283301b78c1..659162bc66e 100644 --- a/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java +++ b/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java @@ -26,6 +26,7 @@ import android.os.Build; import android.telephony.PhoneNumberUtils; +import androidx.appcompat.app.AppCompatDelegate; import androidx.appcompat.app.AppCompatDelegate; import androidx.appcompat.app.AppCompatDelegate; import androidx.core.os.LocaleListCompat; From 556a7218af60a3fdcb258fa6bfb42d1abecf56dd Mon Sep 17 00:00:00 2001 From: Abdullah Al-Faqeir Date: Wed, 20 Mar 2024 12:14:42 +0300 Subject: [PATCH 07/16] Update android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java Co-authored-by: Michael Gangolf --- .../locale/src/java/ti/modules/titanium/locale/LocaleModule.java | 1 + 1 file changed, 1 insertion(+) diff --git a/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java b/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java index 659162bc66e..42bfb06c4cc 100644 --- a/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java +++ b/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java @@ -29,6 +29,7 @@ import androidx.appcompat.app.AppCompatDelegate; import androidx.appcompat.app.AppCompatDelegate; import androidx.appcompat.app.AppCompatDelegate; +import androidx.appcompat.app.AppCompatDelegate; import androidx.core.os.LocaleListCompat; @Kroll.module From 940e54f5d45c3d598981874bbe6910899cf40262 Mon Sep 17 00:00:00 2001 From: Abdullah Al-Faqeir Date: Wed, 20 Mar 2024 12:14:55 +0300 Subject: [PATCH 08/16] Update android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java Co-authored-by: Michael Gangolf --- .../java/ti/modules/titanium/locale/LocaleModule.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java b/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java index 42bfb06c4cc..60d29a0a42a 100644 --- a/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java +++ b/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java @@ -60,13 +60,15 @@ public String getCurrentLocale() return TiPlatformHelper.getInstance().getLocale(); } - @TargetApi(33) - @Kroll.method @Kroll.setProperty public void setApplicationLocales(String locales) { - LocaleListCompat appLocale = LocaleListCompat.forLanguageTags(locales); - androidx.appcompat.app.AppCompatDelegate.setApplicationLocales(appLocale); + if (Build.VERSION.SDK_INT >= 33) { + LocaleListCompat appLocale = LocaleListCompat.forLanguageTags(locales); + AppCompatDelegate.setApplicationLocales(appLocale); + } else { + Log.w(TAG, "Only available for Android 33 and later"); + } } @TargetApi(33) From 2f3b590e600f0ccc5f2118bd5aeda1ee56db0a14 Mon Sep 17 00:00:00 2001 From: Abdullah Al-Faqeir Date: Wed, 20 Mar 2024 12:15:16 +0300 Subject: [PATCH 09/16] Update android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java Co-authored-by: Michael Gangolf --- .../java/ti/modules/titanium/locale/LocaleModule.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java b/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java index 60d29a0a42a..874e508422e 100644 --- a/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java +++ b/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java @@ -71,12 +71,15 @@ public void setApplicationLocales(String locales) } } - @TargetApi(33) - @Kroll.method @Kroll.getProperty public KrollDict[] getApplicationLocales() { - LocaleListCompat localeListCompat = androidx.appcompat.app.AppCompatDelegate.getApplicationLocales(); + if (Build.VERSION.SDK_INT < 33) { + Log.w(TAG, "Only available for Android 33 and later"); + return null; + } + + LocaleListCompat localeListCompat = AppCompatDelegate.getApplicationLocales(); int size = localeListCompat.size(); KrollDict[] locales = new KrollDict[size]; for (int i = 0; i < size; i++) { From d5e1379a26f10edb217c968e4314cb0aed3e3502 Mon Sep 17 00:00:00 2001 From: Abdullah Al-Faqeir Date: Wed, 20 Mar 2024 12:15:26 +0300 Subject: [PATCH 10/16] Update android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java Co-authored-by: Michael Gangolf --- .../locale/src/java/ti/modules/titanium/locale/LocaleModule.java | 1 + 1 file changed, 1 insertion(+) diff --git a/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java b/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java index 874e508422e..81243b74d26 100644 --- a/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java +++ b/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java @@ -30,6 +30,7 @@ import androidx.appcompat.app.AppCompatDelegate; import androidx.appcompat.app.AppCompatDelegate; import androidx.appcompat.app.AppCompatDelegate; +import androidx.appcompat.app.AppCompatDelegate; import androidx.core.os.LocaleListCompat; @Kroll.module From e6707e170b7cc226da5c5b1b161d181bc746c184 Mon Sep 17 00:00:00 2001 From: Abdullah Al-Faqeir Date: Wed, 20 Mar 2024 12:18:07 +0300 Subject: [PATCH 11/16] Update tests/Resources/ti.locale.test.js Co-authored-by: Michael Gangolf --- tests/Resources/ti.locale.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Resources/ti.locale.test.js b/tests/Resources/ti.locale.test.js index e4f5d850bf6..d62d8bc40c2 100644 --- a/tests/Resources/ti.locale.test.js +++ b/tests/Resources/ti.locale.test.js @@ -45,7 +45,7 @@ describe('Titanium.Locale', () => { }); describe.android('.applicationLocales', () => { - it('is a Array', () => { + it('is a Array', () => { should(Ti.Locale).have.a.property('applicationLocales').which.is.an.Array(); }); }); From dcde5d7d8cf5215c2cd1bc0b8fad63944befbeb2 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Wed, 20 Mar 2024 10:18:44 +0100 Subject: [PATCH 12/16] Update android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java --- .../src/java/ti/modules/titanium/locale/LocaleModule.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java b/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java index 81243b74d26..46acfc7fe64 100644 --- a/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java +++ b/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java @@ -26,10 +26,6 @@ import android.os.Build; import android.telephony.PhoneNumberUtils; -import androidx.appcompat.app.AppCompatDelegate; -import androidx.appcompat.app.AppCompatDelegate; -import androidx.appcompat.app.AppCompatDelegate; -import androidx.appcompat.app.AppCompatDelegate; import androidx.appcompat.app.AppCompatDelegate; import androidx.core.os.LocaleListCompat; From 6468f89a8f2c0e12f0aed7c8896f0a6b01db8d8b Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Wed, 20 Mar 2024 11:10:32 +0100 Subject: [PATCH 13/16] Update android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java --- .../src/java/ti/modules/titanium/locale/LocaleModule.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java b/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java index 46acfc7fe64..26e45239744 100644 --- a/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java +++ b/android/modules/locale/src/java/ti/modules/titanium/locale/LocaleModule.java @@ -58,7 +58,7 @@ public String getCurrentLocale() } @Kroll.setProperty - public void setApplicationLocales(String locales) + public void setApplicationLocale(String locales) { if (Build.VERSION.SDK_INT >= 33) { LocaleListCompat appLocale = LocaleListCompat.forLanguageTags(locales); From 7f17e50ef27e71602efcc0db9222fdf425f0b4f8 Mon Sep 17 00:00:00 2001 From: Abdullah Al-Faqeir Date: Thu, 21 Mar 2024 09:33:06 +0300 Subject: [PATCH 14/16] Update Locale.yml for PR #14008 Added documentation for applicationLocale and applicationLocales which are only available on Android level 33 and up. --- apidoc/Titanium/Locale/Locale.yml | 37 +++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/apidoc/Titanium/Locale/Locale.yml b/apidoc/Titanium/Locale/Locale.yml index f59a62a8ad2..1b0a1e72a0d 100644 --- a/apidoc/Titanium/Locale/Locale.yml +++ b/apidoc/Titanium/Locale/Locale.yml @@ -217,7 +217,44 @@ properties: platforms: [android, iphone, ipad, macos] type: String permission: read-only + + - name: applicationLocale + summary: Set the UI locale for the app. + description: | + Set the UI current active locale for the app. + When changed, it automatically causes the activity to be restarted. + platforms: [android] + since: "12.4.0" + type: String + examples: + - title: Setting the UI locale of the app + example: | + ``` javascript + // This sets the application UI locale. + Ti.Locale.applicationLocale = 'en-US'; + // or + Ti.Locale.applicationLocale = 'de'; + ``` + - name: applicationLocales + permission: read-only + summary: Gets the UI locales for the app. + description: | + Returns an array of objects with the current app UI locales. + Note: This is only available on Android 33 and up. + platforms: [android] + since: "12.4.0" + type: Array + examples: + - title: Getting UI locale(s) of the app + example: | + ``` javascript + // This returns an array of objects for each locale defined for the application's UI. + let appLocales = Ti.Locale.applicationLocales; + console.log(appLocales[0].language) + console.log(appLocales); + ``` + - name: currentLanguage summary: Language of the current system locale, as an ISO 2-letter code. description: | From 81a4f65bdb7f6268f02cd91d947a84de06063937 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Thu, 21 Mar 2024 09:57:20 +0100 Subject: [PATCH 15/16] Update apidoc/Titanium/Locale/Locale.yml --- apidoc/Titanium/Locale/Locale.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/apidoc/Titanium/Locale/Locale.yml b/apidoc/Titanium/Locale/Locale.yml index 1b0a1e72a0d..71188644e7d 100644 --- a/apidoc/Titanium/Locale/Locale.yml +++ b/apidoc/Titanium/Locale/Locale.yml @@ -223,6 +223,7 @@ properties: description: | Set the UI current active locale for the app. When changed, it automatically causes the activity to be restarted. + Note: This is only available on Android 33 and up. platforms: [android] since: "12.4.0" type: String From 56b4b9a38124c0cbcbd15a7898b5f7e017b0e64f Mon Sep 17 00:00:00 2001 From: Abdullah Al-Faqeir Date: Thu, 21 Mar 2024 18:59:53 +0300 Subject: [PATCH 16/16] fix(android): add .idea to .gitignore, chore(android): let there be gradle 8. --- android/.gitignore | 2 +- android/.idea/codeStyles/Project.xml | 3 + .../inspectionProfiles/Project_Default.xml | 20 +- android/app/build.gradle | 30 +-- android/build.gradle | 14 +- android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 3 +- android/kroll-apt/build.gradle | 16 +- .../generator/KrollJSONGenerator.java | 32 +-- android/settings.gradle | 4 +- android/templates/build/root.build.gradle | 8 +- android/templates/build/ti.constants.gradle | 11 +- .../templates/module/generated/build.gradle | 10 +- android/titanium/AndroidManifest.xml | 27 +-- android/titanium/build.gradle | 215 ++++++++++-------- android/untar.gradle | 10 +- 16 files changed, 228 insertions(+), 180 deletions(-) diff --git a/android/.gitignore b/android/.gitignore index 56cacb3ced2..2abc0401625 100644 --- a/android/.gitignore +++ b/android/.gitignore @@ -2,7 +2,7 @@ .cxx/ .externalNativeBuild/ .gradle/ -.idea/* +.idea/ !/.idea/codeStyles/ !/.idea/inspectionProfiles/ .project/ diff --git a/android/.idea/codeStyles/Project.xml b/android/.idea/codeStyles/Project.xml index 8d13c04b12c..36d210ea229 100644 --- a/android/.idea/codeStyles/Project.xml +++ b/android/.idea/codeStyles/Project.xml @@ -9,6 +9,9 @@ + +