From 95d3551931330268e88f870b623a074fb67069e8 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Tue, 3 Dec 2019 18:12:37 +0100 Subject: [PATCH] Make switching language working again --- .../nightscout/androidaps/MainActivity.java | 13 ---- .../activities/AgreementActivity.java | 44 ------------- .../androidaps/activities/NoSplashActivity.kt | 13 ---- .../activities/NoSplashAppCompatActivity.kt | 6 ++ .../activities/PreferencesActivity.java | 7 ++ .../activities/TDDStatsActivity.java | 2 +- .../activities/LogSettingActivity.kt | 4 +- .../tidepool/events/EventTidepoolStatus.kt | 4 +- .../activities/DanaRHistoryActivity.java | 4 +- .../activities/DanaRUserOptionsActivity.java | 5 +- .../dialog/MedtronicHistoryActivity.java | 4 +- .../androidaps/utils/LocaleHelper.kt | 43 +++++++++--- .../main/res/layout/activity_agreement.xml | 65 ------------------- 13 files changed, 57 insertions(+), 157 deletions(-) delete mode 100644 app/src/main/java/info/nightscout/androidaps/activities/AgreementActivity.java delete mode 100644 app/src/main/java/info/nightscout/androidaps/activities/NoSplashActivity.kt delete mode 100644 app/src/main/res/layout/activity_agreement.xml diff --git a/app/src/main/java/info/nightscout/androidaps/MainActivity.java b/app/src/main/java/info/nightscout/androidaps/MainActivity.java index e44a55aee7..c383d039ed 100644 --- a/app/src/main/java/info/nightscout/androidaps/MainActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/MainActivity.java @@ -37,7 +37,6 @@ import com.joanzapata.iconify.fonts.FontAwesomeModule; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import info.nightscout.androidaps.activities.AgreementActivity; import info.nightscout.androidaps.activities.HistoryBrowseActivity; import info.nightscout.androidaps.activities.NoSplashAppCompatActivity; import info.nightscout.androidaps.activities.PreferencesActivity; @@ -141,8 +140,6 @@ public class MainActivity extends NoSplashAppCompatActivity { if (!SP.getBoolean(R.string.key_setupwizard_processed, false) || !SP.contains(R.string.key_units)) { Intent intent = new Intent(this, SetupWizardActivity.class); startActivity(intent); - } else { - checkEula(); } AndroidPermission.notifyForStoragePermission(this); @@ -234,16 +231,6 @@ public class MainActivity extends NoSplashAppCompatActivity { } } - private void checkEula() { - //SP.removeBoolean(R.string.key_i_understand); - boolean IUnderstand = SP.getBoolean(R.string.key_i_understand, false); - if (!IUnderstand) { - Intent intent = new Intent(getApplicationContext(), AgreementActivity.class); - startActivity(intent); - finish(); - } - } - private void doMigrations() { // guarantee that the unreachable threshold is at least 30 and of type String diff --git a/app/src/main/java/info/nightscout/androidaps/activities/AgreementActivity.java b/app/src/main/java/info/nightscout/androidaps/activities/AgreementActivity.java deleted file mode 100644 index d3792bbad5..0000000000 --- a/app/src/main/java/info/nightscout/androidaps/activities/AgreementActivity.java +++ /dev/null @@ -1,44 +0,0 @@ -package info.nightscout.androidaps.activities; - -import android.app.Activity; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.Button; -import android.widget.CheckBox; - -import info.nightscout.androidaps.MainActivity; -import info.nightscout.androidaps.R; -import info.nightscout.androidaps.utils.SP; - -public class AgreementActivity extends NoSplashActivity { - boolean IUnderstand; - CheckBox agreeCheckBox; - Button saveButton; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_agreement); - IUnderstand = SP.getBoolean(R.string.key_i_understand, false); - setContentView(R.layout.activity_agreement); - agreeCheckBox = (CheckBox)findViewById(R.id.agreementCheckBox); - agreeCheckBox.setChecked(IUnderstand); - saveButton = (Button)findViewById(R.id.agreementSaveButton); - addListenerOnButton(); - } - - public void addListenerOnButton() { - saveButton.setOnClickListener(new View.OnClickListener() { - public void onClick(View v) { - - SP.putBoolean(R.string.key_i_understand, agreeCheckBox.isChecked()); - - Intent intent = new Intent(getApplicationContext(), MainActivity.class); - startActivity(intent); - finish(); - } - - }); - } -} diff --git a/app/src/main/java/info/nightscout/androidaps/activities/NoSplashActivity.kt b/app/src/main/java/info/nightscout/androidaps/activities/NoSplashActivity.kt deleted file mode 100644 index 0b7af2bd1d..0000000000 --- a/app/src/main/java/info/nightscout/androidaps/activities/NoSplashActivity.kt +++ /dev/null @@ -1,13 +0,0 @@ -package info.nightscout.androidaps.activities - -import android.app.Activity -import android.os.Bundle - -import info.nightscout.androidaps.R - -open class NoSplashActivity : Activity() { - public override fun onCreate(savedInstanceState: Bundle?) { - setTheme(R.style.AppTheme_NoActionBar) - super.onCreate(savedInstanceState) - } -} diff --git a/app/src/main/java/info/nightscout/androidaps/activities/NoSplashAppCompatActivity.kt b/app/src/main/java/info/nightscout/androidaps/activities/NoSplashAppCompatActivity.kt index e4c8027cd5..3f59cd56ef 100644 --- a/app/src/main/java/info/nightscout/androidaps/activities/NoSplashAppCompatActivity.kt +++ b/app/src/main/java/info/nightscout/androidaps/activities/NoSplashAppCompatActivity.kt @@ -1,12 +1,18 @@ package info.nightscout.androidaps.activities +import android.content.Context import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import info.nightscout.androidaps.R +import info.nightscout.androidaps.utils.LocaleHelper open class NoSplashAppCompatActivity : AppCompatActivity() { public override fun onCreate(savedInstanceState: Bundle?) { setTheme(R.style.AppTheme_NoActionBar) super.onCreate(savedInstanceState) } + + public override fun attachBaseContext(newBase: Context) { + super.attachBaseContext(LocaleHelper.wrap(newBase)) + } } diff --git a/app/src/main/java/info/nightscout/androidaps/activities/PreferencesActivity.java b/app/src/main/java/info/nightscout/androidaps/activities/PreferencesActivity.java index 65699bcc77..282fec47c9 100644 --- a/app/src/main/java/info/nightscout/androidaps/activities/PreferencesActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/activities/PreferencesActivity.java @@ -1,5 +1,6 @@ package info.nightscout.androidaps.activities; +import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.EditTextPreference; @@ -47,6 +48,7 @@ import info.nightscout.androidaps.plugins.sensitivity.SensitivityOref0Plugin; import info.nightscout.androidaps.plugins.sensitivity.SensitivityOref1Plugin; import info.nightscout.androidaps.plugins.sensitivity.SensitivityWeightedAveragePlugin; import info.nightscout.androidaps.plugins.source.SourceDexcomPlugin; +import info.nightscout.androidaps.utils.LocaleHelper; import info.nightscout.androidaps.utils.OKDialog; import info.nightscout.androidaps.utils.SP; import info.nightscout.androidaps.utils.SafeParse; @@ -66,6 +68,11 @@ public class PreferencesActivity extends PreferenceActivity implements SharedPre PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this); } + @Override + public void attachBaseContext(Context newBase) { + super.attachBaseContext(LocaleHelper.INSTANCE.wrap(newBase)); + } + @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { RxBus.INSTANCE.send(new EventPreferenceChange(key)); diff --git a/app/src/main/java/info/nightscout/androidaps/activities/TDDStatsActivity.java b/app/src/main/java/info/nightscout/androidaps/activities/TDDStatsActivity.java index 24cdceada6..03fb034c5c 100644 --- a/app/src/main/java/info/nightscout/androidaps/activities/TDDStatsActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/activities/TDDStatsActivity.java @@ -54,7 +54,7 @@ import info.nightscout.androidaps.utils.SafeParse; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; -public class TDDStatsActivity extends NoSplashActivity { +public class TDDStatsActivity extends NoSplashAppCompatActivity { private static Logger log = LoggerFactory.getLogger(TDDStatsActivity.class); private CompositeDisposable disposable = new CompositeDisposable(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/activities/LogSettingActivity.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/activities/LogSettingActivity.kt index f47bb03513..d9ed0c590c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/activities/LogSettingActivity.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/activities/LogSettingActivity.kt @@ -6,11 +6,11 @@ import android.widget.CheckBox import android.widget.LinearLayout import android.widget.TextView import info.nightscout.androidaps.R -import info.nightscout.androidaps.activities.NoSplashActivity +import info.nightscout.androidaps.activities.NoSplashAppCompatActivity import info.nightscout.androidaps.logging.L import kotlinx.android.synthetic.main.activity_logsetting.* -class LogSettingActivity : NoSplashActivity() { +class LogSettingActivity : NoSplashAppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/events/EventTidepoolStatus.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/events/EventTidepoolStatus.kt index e7854f8ff2..f9e2b724cb 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/events/EventTidepoolStatus.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/events/EventTidepoolStatus.kt @@ -3,9 +3,9 @@ package info.nightscout.androidaps.plugins.general.tidepool.events import info.nightscout.androidaps.events.Event import info.nightscout.androidaps.logging.L import info.nightscout.androidaps.utils.DateUtil -import info.nightscout.androidaps.utils.LocaleHelper import org.slf4j.LoggerFactory import java.text.SimpleDateFormat +import java.util.* class EventTidepoolStatus(val status: String) : Event() { private val log = LoggerFactory.getLogger(L.TIDEPOOL) @@ -17,7 +17,7 @@ class EventTidepoolStatus(val status: String) : Event() { log.debug("New status: $status") } - private var timeFormat = SimpleDateFormat("HH:mm:ss", LocaleHelper.currentLocale()) + private var timeFormat = SimpleDateFormat("HH:mm:ss", Locale.getDefault()) fun toPreparedHtml(): StringBuilder { val stringBuilder = StringBuilder() diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRHistoryActivity.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRHistoryActivity.java index ae25d781af..97f029bd8c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRHistoryActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRHistoryActivity.java @@ -24,7 +24,7 @@ import java.util.List; import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; -import info.nightscout.androidaps.activities.NoSplashActivity; +import info.nightscout.androidaps.activities.NoSplashAppCompatActivity; import info.nightscout.androidaps.data.Profile; import info.nightscout.androidaps.db.DanaRHistoryRecord; import info.nightscout.androidaps.events.EventPumpStatusChanged; @@ -44,7 +44,7 @@ import info.nightscout.androidaps.utils.FabricPrivacy; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; -public class DanaRHistoryActivity extends NoSplashActivity { +public class DanaRHistoryActivity extends NoSplashAppCompatActivity { private static Logger log = LoggerFactory.getLogger(L.PUMP); private CompositeDisposable disposable = new CompositeDisposable(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRUserOptionsActivity.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRUserOptionsActivity.java index f1181bb7cb..0346b5320e 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRUserOptionsActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRUserOptionsActivity.java @@ -12,9 +12,8 @@ import org.slf4j.LoggerFactory; import java.text.DecimalFormat; import info.nightscout.androidaps.Constants; -import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; -import info.nightscout.androidaps.activities.NoSplashActivity; +import info.nightscout.androidaps.activities.NoSplashAppCompatActivity; import info.nightscout.androidaps.events.EventInitializationChanged; import info.nightscout.androidaps.interfaces.PluginType; import info.nightscout.androidaps.logging.L; @@ -33,7 +32,7 @@ import io.reactivex.disposables.CompositeDisposable; * Created by Rumen Georgiev on 5/31/2018. */ -public class DanaRUserOptionsActivity extends NoSplashActivity { +public class DanaRUserOptionsActivity extends NoSplashAppCompatActivity { private static Logger log = LoggerFactory.getLogger(L.PUMP); private CompositeDisposable disposable = new CompositeDisposable(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/dialog/MedtronicHistoryActivity.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/dialog/MedtronicHistoryActivity.java index 2d1a3a871e..7641e5c4cb 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/dialog/MedtronicHistoryActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/dialog/MedtronicHistoryActivity.java @@ -20,13 +20,13 @@ import java.util.ArrayList; import java.util.List; import info.nightscout.androidaps.R; -import info.nightscout.androidaps.activities.NoSplashActivity; +import info.nightscout.androidaps.activities.NoSplashAppCompatActivity; import info.nightscout.androidaps.logging.L; import info.nightscout.androidaps.plugins.pump.medtronic.MedtronicPumpPlugin; import info.nightscout.androidaps.plugins.pump.medtronic.comm.history.pump.PumpHistoryEntry; import info.nightscout.androidaps.plugins.pump.medtronic.comm.history.pump.PumpHistoryEntryGroup; -public class MedtronicHistoryActivity extends NoSplashActivity { +public class MedtronicHistoryActivity extends NoSplashAppCompatActivity { private static Logger LOG = LoggerFactory.getLogger(L.PUMP); diff --git a/app/src/main/java/info/nightscout/androidaps/utils/LocaleHelper.kt b/app/src/main/java/info/nightscout/androidaps/utils/LocaleHelper.kt index 6052c5699a..447d076d93 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/LocaleHelper.kt +++ b/app/src/main/java/info/nightscout/androidaps/utils/LocaleHelper.kt @@ -1,21 +1,19 @@ package info.nightscout.androidaps.utils import android.content.Context +import android.content.ContextWrapper +import android.os.Build +import android.os.LocaleList import info.nightscout.androidaps.R import java.util.* -object LocaleHelper { - fun update(context: Context) = - updateResources(context, currentLanguage()) +object LocaleHelper { fun currentLanguage(): String = SP.getString(R.string.key_language, Locale.getDefault().language) - fun currentLocale(): Locale = - Locale(SP.getString(R.string.key_language, Locale.getDefault().language)) - - @Suppress("DEPRECATION") - private fun updateResources(context: Context, language: String) { + private fun currentLocale(): Locale { + val language = currentLanguage() var locale = Locale(language) if (language.contains("_")) { // language with country like pt_BR defined in arrays.xml @@ -23,10 +21,35 @@ object LocaleHelper { val country = language.substring(3, 5) locale = Locale(lang, country) } + return locale + } + @Suppress("DEPRECATION") + fun update(context: Context) { + val locale = currentLocale() Locale.setDefault(locale) val resources = context.resources - resources.configuration.setLocale(locale) - resources.updateConfiguration(resources.configuration, resources.displayMetrics) + val configuration = resources.configuration + context.createConfigurationContext(configuration) + configuration.setLocale(locale) + configuration.locale = locale + resources.updateConfiguration(configuration, resources.displayMetrics) + } + + fun wrap(ctx: Context): ContextWrapper { + val res = ctx.resources + val configuration = res.configuration + val newLocale = currentLocale() + val context = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + configuration.setLocale(newLocale) + val localeList = LocaleList(newLocale) + LocaleList.setDefault(localeList) + configuration.locales = localeList + ctx.createConfigurationContext(configuration) + } else { + configuration.setLocale(newLocale) + ctx.createConfigurationContext(configuration) + } + return ContextWrapper(context) } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_agreement.xml b/app/src/main/res/layout/activity_agreement.xml deleted file mode 100644 index 5c98f937ed..0000000000 --- a/app/src/main/res/layout/activity_agreement.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - -