Merge "Fix no show quick settings tutorial after device rotates"
This commit is contained in:
@@ -28,12 +28,13 @@ import com.android.settings.core.TogglePreferenceController;
|
|||||||
import com.android.settingslib.PrimarySwitchPreference;
|
import com.android.settingslib.PrimarySwitchPreference;
|
||||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnCreate;
|
import com.android.settingslib.core.lifecycle.events.OnCreate;
|
||||||
|
import com.android.settingslib.core.lifecycle.events.OnDestroy;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState;
|
import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState;
|
||||||
|
|
||||||
/** PrimarySwitchPreferenceController that shows quick settings tooltip on first use. */
|
/** PrimarySwitchPreferenceController that shows quick settings tooltip on first use. */
|
||||||
public abstract class AccessibilityQuickSettingsPrimarySwitchPreferenceController
|
public abstract class AccessibilityQuickSettingsPrimarySwitchPreferenceController
|
||||||
extends TogglePreferenceController
|
extends TogglePreferenceController
|
||||||
implements LifecycleObserver, OnCreate, OnSaveInstanceState {
|
implements LifecycleObserver, OnCreate, OnDestroy, OnSaveInstanceState {
|
||||||
private static final String KEY_SAVED_QS_TOOLTIP_RESHOW = "qs_tooltip_reshow";
|
private static final String KEY_SAVED_QS_TOOLTIP_RESHOW = "qs_tooltip_reshow";
|
||||||
private final Handler mHandler;
|
private final Handler mHandler;
|
||||||
private PrimarySwitchPreference mPreference;
|
private PrimarySwitchPreference mPreference;
|
||||||
@@ -62,10 +63,16 @@ public abstract class AccessibilityQuickSettingsPrimarySwitchPreferenceControlle
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroy() {
|
||||||
|
mHandler.removeCallbacksAndMessages(null);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSaveInstanceState(Bundle outState) {
|
public void onSaveInstanceState(Bundle outState) {
|
||||||
if (mTooltipWindow != null) {
|
final boolean isTooltipWindowShowing = mTooltipWindow != null && mTooltipWindow.isShowing();
|
||||||
outState.putBoolean(KEY_SAVED_QS_TOOLTIP_RESHOW, mTooltipWindow.isShowing());
|
if (mNeedsQSTooltipReshow || isTooltipWindowShowing) {
|
||||||
|
outState.putBoolean(KEY_SAVED_QS_TOOLTIP_RESHOW, /* value= */ true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -20,6 +20,7 @@ import static com.android.settings.accessibility.AccessibilityDialogUtils.Dialog
|
|||||||
import static com.android.settings.accessibility.ToggleFeaturePreferenceFragment.KEY_GENERAL_CATEGORY;
|
import static com.android.settings.accessibility.ToggleFeaturePreferenceFragment.KEY_GENERAL_CATEGORY;
|
||||||
import static com.android.settings.accessibility.ToggleFeaturePreferenceFragment.KEY_SAVED_QS_TOOLTIP_TYPE;
|
import static com.android.settings.accessibility.ToggleFeaturePreferenceFragment.KEY_SAVED_QS_TOOLTIP_TYPE;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
@@ -150,7 +151,12 @@ public abstract class AccessibilityShortcutPreferenceFragment extends DashboardF
|
|||||||
|
|
||||||
// Reshow tooltip when activity recreate, such as rotate device.
|
// Reshow tooltip when activity recreate, such as rotate device.
|
||||||
if (mNeedsQSTooltipReshow) {
|
if (mNeedsQSTooltipReshow) {
|
||||||
getView().post(this::showQuickSettingsTooltipIfNeeded);
|
view.post(() -> {
|
||||||
|
final Activity activity = getActivity();
|
||||||
|
if (activity != null && !activity.isFinishing()) {
|
||||||
|
showQuickSettingsTooltipIfNeeded();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -180,8 +186,9 @@ public abstract class AccessibilityShortcutPreferenceFragment extends DashboardF
|
|||||||
if (value != NOT_SET) {
|
if (value != NOT_SET) {
|
||||||
outState.putInt(KEY_SAVED_USER_SHORTCUT_TYPE, value);
|
outState.putInt(KEY_SAVED_USER_SHORTCUT_TYPE, value);
|
||||||
}
|
}
|
||||||
if (mTooltipWindow != null) {
|
final boolean isTooltipWindowShowing = mTooltipWindow != null && mTooltipWindow.isShowing();
|
||||||
outState.putBoolean(KEY_SAVED_QS_TOOLTIP_RESHOW, mTooltipWindow.isShowing());
|
if (mNeedsQSTooltipReshow || isTooltipWindowShowing) {
|
||||||
|
outState.putBoolean(KEY_SAVED_QS_TOOLTIP_RESHOW, /* value= */ true);
|
||||||
outState.putInt(KEY_SAVED_QS_TOOLTIP_TYPE, mNeedsQSTooltipType);
|
outState.putInt(KEY_SAVED_QS_TOOLTIP_TYPE, mNeedsQSTooltipType);
|
||||||
}
|
}
|
||||||
super.onSaveInstanceState(outState);
|
super.onSaveInstanceState(outState);
|
||||||
|
@@ -18,6 +18,7 @@ package com.android.settings.accessibility;
|
|||||||
|
|
||||||
import static com.android.settings.accessibility.AccessibilityDialogUtils.DialogEnums;
|
import static com.android.settings.accessibility.AccessibilityDialogUtils.DialogEnums;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
@@ -232,13 +233,18 @@ public abstract class ToggleFeaturePreferenceFragment extends DashboardFragment
|
|||||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||||
super.onViewCreated(view, savedInstanceState);
|
super.onViewCreated(view, savedInstanceState);
|
||||||
|
|
||||||
final SettingsActivity activity = (SettingsActivity) getActivity();
|
final SettingsActivity settingsActivity = (SettingsActivity) getActivity();
|
||||||
final SettingsMainSwitchBar switchBar = activity.getSwitchBar();
|
final SettingsMainSwitchBar switchBar = settingsActivity.getSwitchBar();
|
||||||
switchBar.hide();
|
switchBar.hide();
|
||||||
|
|
||||||
// Reshow tooltip when activity recreate, such as rotate device.
|
// Reshow tooltip when activity recreate, such as rotate device.
|
||||||
if (mNeedsQSTooltipReshow) {
|
if (mNeedsQSTooltipReshow) {
|
||||||
getView().post(this::showQuickSettingsTooltipIfNeeded);
|
view.post(() -> {
|
||||||
|
final Activity activity = getActivity();
|
||||||
|
if (activity != null && !activity.isFinishing()) {
|
||||||
|
showQuickSettingsTooltipIfNeeded();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
writeDefaultShortcutTargetServiceToSettingsIfNeeded(getPrefContext());
|
writeDefaultShortcutTargetServiceToSettingsIfNeeded(getPrefContext());
|
||||||
@@ -275,8 +281,9 @@ public abstract class ToggleFeaturePreferenceFragment extends DashboardFragment
|
|||||||
if (value != NOT_SET) {
|
if (value != NOT_SET) {
|
||||||
outState.putInt(KEY_SAVED_USER_SHORTCUT_TYPE, value);
|
outState.putInt(KEY_SAVED_USER_SHORTCUT_TYPE, value);
|
||||||
}
|
}
|
||||||
if (mTooltipWindow != null) {
|
final boolean isTooltipWindowShowing = mTooltipWindow != null && mTooltipWindow.isShowing();
|
||||||
outState.putBoolean(KEY_SAVED_QS_TOOLTIP_RESHOW, mTooltipWindow.isShowing());
|
if (mNeedsQSTooltipReshow || isTooltipWindowShowing) {
|
||||||
|
outState.putBoolean(KEY_SAVED_QS_TOOLTIP_RESHOW, /* value= */ true);
|
||||||
outState.putInt(KEY_SAVED_QS_TOOLTIP_TYPE, mNeedsQSTooltipType);
|
outState.putInt(KEY_SAVED_QS_TOOLTIP_TYPE, mNeedsQSTooltipType);
|
||||||
}
|
}
|
||||||
super.onSaveInstanceState(outState);
|
super.onSaveInstanceState(outState);
|
||||||
|
@@ -153,12 +153,10 @@ public class AccessibilityQuickSettingsPrimarySwitchPreferenceControllerTest {
|
|||||||
@Test
|
@Test
|
||||||
@Config(shadows = ShadowFragment.class)
|
@Config(shadows = ShadowFragment.class)
|
||||||
public void restoreValueFromSavedInstanceState_showTooltipView() {
|
public void restoreValueFromSavedInstanceState_showTooltipView() {
|
||||||
mController.displayPreference(mScreen);
|
|
||||||
mController.setChecked(true);
|
|
||||||
final Bundle savedInstanceState = new Bundle();
|
final Bundle savedInstanceState = new Bundle();
|
||||||
savedInstanceState.putBoolean(KEY_SAVED_QS_TOOLTIP_RESHOW, /* value= */ true);
|
savedInstanceState.putBoolean(KEY_SAVED_QS_TOOLTIP_RESHOW, /* value= */ true);
|
||||||
|
mController.onCreate(savedInstanceState);
|
||||||
|
|
||||||
mFragment.onCreate(savedInstanceState);
|
|
||||||
mController.displayPreference(mScreen);
|
mController.displayPreference(mScreen);
|
||||||
|
|
||||||
assertThat(getLatestPopupWindow().isShowing()).isTrue();
|
assertThat(getLatestPopupWindow().isShowing()).isTrue();
|
||||||
|
Reference in New Issue
Block a user