X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Factivity%2FProfileThemedActivity.java;h=07aae23c7d53ed64087da59d0aadd0a516703ff9;hb=8098a8b37a4331b9faf6cf50a51a0d7aa9677421;hp=8cfeea0fa0c39189be713682051b3ad4d8eaafde;hpb=58d086fc6becaf923ad5dfc0d48752bb7498e5d3;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/activity/ProfileThemedActivity.java b/app/src/main/java/net/ktnx/mobileledger/ui/activity/ProfileThemedActivity.java index 8cfeea0f..07aae23c 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/activity/ProfileThemedActivity.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/activity/ProfileThemedActivity.java @@ -1,5 +1,5 @@ /* - * Copyright © 2019 Damyan Ivanov. + * Copyright © 2021 Damyan Ivanov. * This file is part of MoLe. * MoLe is free software: you can distribute it and/or modify it * under the term of the GNU General Public License as published by @@ -25,14 +25,26 @@ import androidx.annotation.Nullable; import net.ktnx.mobileledger.model.Data; import net.ktnx.mobileledger.model.MobileLedgerProfile; import net.ktnx.mobileledger.utils.Colors; -import net.ktnx.mobileledger.utils.MLDB; +import net.ktnx.mobileledger.utils.Logger; @SuppressLint("Registered") public class ProfileThemedActivity extends CrashReportingActivity { - static final int waitSlice = 200; protected MobileLedgerProfile mProfile; + private boolean themeSetUp = false; + private boolean mIgnoreProfileChange; protected void setupProfileColors() { - Colors.setupTheme(this, mProfile); + final int themeHue = (mProfile == null) ? -1 : mProfile.getThemeHue(); + + Colors.setupTheme(this, themeHue); + + if (themeSetUp) { + Logger.debug("prf-thm-act", + "setupProfileColors(): theme already set up, recreating activity"); + this.recreate(); + } + themeSetUp = true; + + Colors.profileThemeId = Data.retrieveCurrentThemeIdFromDb(); } @Override protected void onStart() { @@ -41,25 +53,21 @@ public class ProfileThemedActivity extends CrashReportingActivity { } protected void onCreate(@Nullable Bundle savedInstanceState) { initProfile(); - super.onCreate(savedInstanceState); - setupProfileColors(); - Data.profile.observe(this, mobileLedgerProfile -> { - mProfile = mobileLedgerProfile; - setupProfileColors(); + mIgnoreProfileChange = true; + Data.observeProfile(this, profile -> { + if (!mIgnoreProfileChange) { + mProfile = profile; + setupProfileColors(); + } + + mIgnoreProfileChange = false; }); + + super.onCreate(savedInstanceState); } protected void initProfile() { - mProfile = Data.profile.getValue(); - if (mProfile == null) { - String profileUUID = MLDB.getOption(MLDB.OPT_PROFILE_UUID, null); - MobileLedgerProfile startupProfile; - - - startupProfile = Data.getProfile(profileUUID); - Data.setCurrentProfile(startupProfile); - mProfile = startupProfile; - } + mProfile = Data.initProfile(); } }