Commit e9b62b71 authored by Thomas's avatar Thomas
Browse files

Ask restart when theme is changed

parent f66fda96
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -16,15 +16,18 @@ package app.fedilab.android.activities

import android.os.Bundle
import android.view.MenuItem
import androidx.appcompat.app.AlertDialog
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.navigateUp
import androidx.navigation.ui.setupActionBarWithNavController
import app.fedilab.android.R
import app.fedilab.android.databinding.ActivitySettingsBinding
import app.fedilab.android.helper.Helper
import app.fedilab.android.helper.ThemeHelper
import app.fedilab.android.ui.fragment.settings.FragmentThemingSettings

class SettingsActivity : BaseActivity() {
class SettingsActivity : BaseActivity(), FragmentThemingSettings.ActionTheming {
    private lateinit var binding: ActivitySettingsBinding
    private lateinit var appBarConfiguration: AppBarConfiguration

@@ -34,7 +37,6 @@ class SettingsActivity : BaseActivity() {

        binding = ActivitySettingsBinding.inflate(layoutInflater)
        setContentView(binding.root)

        val navController = findNavController(R.id.fragment_container)
        appBarConfiguration = AppBarConfiguration.Builder().build()
        setupActionBarWithNavController(navController, appBarConfiguration)
@@ -53,4 +55,16 @@ class SettingsActivity : BaseActivity() {
        }
        return super.onOptionsItemSelected(item)
    }

    override fun restart() {
        val restartBuilder = AlertDialog.Builder(this, Helper.dialogStyle())
        restartBuilder.setTitle(getString(R.string.restart_the_app))
        restartBuilder.setMessage(getString(R.string.restart_the_app_theme))
        restartBuilder.setNegativeButton(R.string.no) { dialog, which -> dialog.dismiss() }
        restartBuilder.setPositiveButton(R.string.restart) { dialog, which ->
            dialog.dismiss()
            Helper.restart(this)
        }
        restartBuilder.create().show()
    }
}
+13 −0
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ import java.util.List;

import app.fedilab.android.R;
import app.fedilab.android.activities.ComposeActivity;
import app.fedilab.android.activities.SettingsActivity;
import app.fedilab.android.databinding.PopupStatusThemeBinding;
import app.fedilab.android.helper.Helper;
import app.fedilab.android.helper.ThemeHelper;
@@ -75,6 +76,8 @@ public class FragmentThemingSettings extends PreferenceFragmentCompat implements
    private List<LinkedHashMap<String, String>> listOfThemes;
    private SharedPreferences appPref;
    private SharedPreferences cyneaPref;
    public ActionTheming actionTheming;
    private boolean shouldRestart;

    @Override
    public void onCreatePreferences(Bundle bundle, String s) {
@@ -82,6 +85,8 @@ public class FragmentThemingSettings extends PreferenceFragmentCompat implements
        appPref = PreferenceManager.getDefaultSharedPreferences(requireActivity());
        createPref();
        listOfThemes = ThemeHelper.getContributorsTheme(requireActivity());
        shouldRestart = false;
        actionTheming = (SettingsActivity) requireActivity();
    }


@@ -101,6 +106,9 @@ public class FragmentThemingSettings extends PreferenceFragmentCompat implements
            getPreferenceScreen().getSharedPreferences()
                    .unregisterOnSharedPreferenceChangeListener(this);
        }
        if (shouldRestart && actionTheming != null) {
            actionTheming.restart();
        }
    }

    @Override
@@ -109,9 +117,14 @@ public class FragmentThemingSettings extends PreferenceFragmentCompat implements
        if (key.equals("use_custom_theme")) {
            createPref();
        }
        shouldRestart = true;
        Helper.recreateMainActivity(requireActivity());
    }

    public interface ActionTheming {
        void restart();
    }


    @SuppressWarnings("deprecation")
    @SuppressLint("ApplySharedPref")
+1 −0
Original line number Diff line number Diff line
@@ -1599,4 +1599,5 @@
    <string name="state">State</string>
    <string name="restart_the_app">Restart the app?</string>
    <string name="restart">Restart</string>
    <string name="restart_the_app_theme">You should restart the application to apply changes.</string>
</resources>