Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 72def0de authored by Jason Monk's avatar Jason Monk
Browse files

Fix tuner-related crashes

 - Make the dialog a fragment
 - add a null check

Bug: 23341500
Bug: 25341011
Change-Id: I4d9991657c487ea3b5ced8cce2a5072c8adb2ee5
parent 68ce6dc1
Loading
Loading
Loading
Loading
+23 −12
Original line number Diff line number Diff line
@@ -16,9 +16,10 @@
package com.android.systemui.tuner;

import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.FragmentTransaction;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.Bundle;
@@ -33,7 +34,6 @@ import android.provider.Settings.System;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

import com.android.internal.logging.MetricsLogger;
import com.android.systemui.R;
import com.android.systemui.qs.QSPanel;
@@ -51,6 +51,8 @@ public class TunerFragment extends PreferenceFragment {

    public static final String SETTING_SEEN_TUNER_WARNING = "seen_tuner_warning";

    private static final String WARNING_TAG = "tuner_warning";

    private static final int MENU_REMOVE = Menu.FIRST + 1;

    private final SettingObserver mSettingObserver = new SettingObserver();
@@ -90,16 +92,9 @@ public class TunerFragment extends PreferenceFragment {
        mBatteryPct = (SwitchPreference) findPreference(KEY_BATTERY_PCT);
        if (Settings.Secure.getInt(getContext().getContentResolver(), SETTING_SEEN_TUNER_WARNING,
                0) == 0) {
            new AlertDialog.Builder(getContext())
                    .setTitle(R.string.tuner_warning_title)
                    .setMessage(R.string.tuner_warning)
                    .setPositiveButton(R.string.got_it, new OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Settings.Secure.putInt(getContext().getContentResolver(),
                                    SETTING_SEEN_TUNER_WARNING, 1);
            if (getFragmentManager().findFragmentByTag(WARNING_TAG) == null) {
                new TunerWarningFragment().show(getFragmentManager(), WARNING_TAG);
            }
                    }).show();
        }
        TunerService.get(getContext()).addTunable(mQsPaging, QSPanel.QS_THE_NEW_QS);
    }
@@ -187,4 +182,20 @@ public class TunerFragment extends PreferenceFragment {
            mQsTuner.setEnabled(newValue == null || Integer.parseInt(newValue) == 0);
        }
    };

    public static class TunerWarningFragment extends DialogFragment {
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            return new AlertDialog.Builder(getContext())
                    .setTitle(R.string.tuner_warning_title)
                    .setMessage(R.string.tuner_warning)
                    .setPositiveButton(R.string.got_it, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Settings.Secure.putInt(getContext().getContentResolver(),
                                    SETTING_SEEN_TUNER_WARNING, 1);
                        }
                    }).show();
        }
    }
}
+5 −1
Original line number Diff line number Diff line
@@ -116,8 +116,12 @@ public class TunerService extends SystemUI {

    public void reloadSetting(Uri uri) {
        String key = mListeningUris.get(uri);
        List<Tunable> tunables = mTunableLookup.get(key);
        if (tunables == null) {
            return;
        }
        String value = Settings.Secure.getStringForUser(mContentResolver, key, mCurrentUser);
        for (Tunable tunable : mTunableLookup.get(key)) {
        for (Tunable tunable : tunables) {
            tunable.onTuningChanged(key, value);
        }
    }