Add link functionality in message of magnification triple-tap dialog

Bug: 210593079
Test: make RunSettingsRoboTests ROBOTEST_FILTER=ShortcutPreferenceTest
Test: make RunSettingsRoboTests ROBOTEST_FILTER=MagnificationModePreferenceControllerTest
Change-Id: Id69b0b717410b5c5c44a818c36688bb7331c73ae
This commit is contained in:
jasonwshsu
2022-03-16 19:06:51 +08:00
parent 3b96a2c57e
commit 4bfe215e4c
5 changed files with 67 additions and 4 deletions

View File

@@ -25,11 +25,13 @@ import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.provider.Settings;
import android.text.method.LinkMovementMethod;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
@@ -42,6 +44,7 @@ import com.android.settings.DialogCreatable;
import com.android.settings.R;
import com.android.settings.accessibility.MagnificationCapabilities.MagnificationMode;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.utils.AnnotationSpan;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnCreate;
import com.android.settingslib.core.lifecycle.events.OnResume;
@@ -70,6 +73,7 @@ public class MagnificationModePreferenceController extends BasePreferenceControl
@MagnificationMode
private int mModeCache = MagnificationMode.NONE;
private Preference mModePreference;
private ShortcutPreference mLinkPreference;
@VisibleForTesting
ListView mMagnificationModesListView;
@@ -117,6 +121,8 @@ public class MagnificationModePreferenceController extends BasePreferenceControl
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
mModePreference = screen.findPreference(getPreferenceKey());
mLinkPreference = screen.findPreference(
ToggleFeaturePreferenceFragment.KEY_SHORTCUT_PREFERENCE);
mModePreference.setOnPreferenceClickListener(preference -> {
mModeCache = MagnificationCapabilities.getCapabilities(mContext);
mDialogHelper.showDialog(DIALOG_MAGNIFICATION_MODE);
@@ -248,9 +254,33 @@ public class MagnificationModePreferenceController extends BasePreferenceControl
final CharSequence negativeBtnText = mContext.getString(
R.string.accessibility_magnification_triple_tap_warning_negative_button);
return AccessibilityDialogUtils.createCustomDialog(mContext, title, contentView,
final Dialog dialog = AccessibilityDialogUtils.createCustomDialog(mContext, title,
contentView,
positiveBtnText, this::onMagnificationTripleTapWarningDialogPositiveButtonClicked,
negativeBtnText, this::onMagnificationTripleTapWarningDialogNegativeButtonClicked);
updateLinkInTripleTapWarningDialog(dialog, contentView);
return dialog;
}
private void updateLinkInTripleTapWarningDialog(Dialog dialog, View contentView) {
final TextView messageView = contentView.findViewById(R.id.message);
// TODO(b/225682559): Need to remove performClick() after refactoring accessibility dialog.
final View.OnClickListener linkListener = view -> {
mLinkPreference.performClick();
dialog.dismiss();
};
final AnnotationSpan.LinkInfo linkInfo = new AnnotationSpan.LinkInfo(
AnnotationSpan.LinkInfo.DEFAULT_ANNOTATION, linkListener);
final CharSequence textWithLink = AnnotationSpan.linkify(mContext.getText(
R.string.accessibility_magnification_triple_tap_warning_message), linkInfo);
if (messageView != null) {
messageView.setText(textWithLink);
messageView.setMovementMethod(LinkMovementMethod.getInstance());
}
dialog.setContentView(contentView);
}
@VisibleForTesting

View File

@@ -64,6 +64,11 @@ public class ShortcutPreference extends Preference {
setLayoutResource(R.layout.accessibility_shortcut_secondary_action);
setWidgetLayoutResource(R.layout.preference_widget_primary_switch);
setIconSpaceReserved(false);
// Treat onSettingsClicked as this preference's click.
setOnPreferenceClickListener(preference -> {
callOnSettingsClicked();
return true;
});
}
@Override

View File

@@ -102,7 +102,7 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference
protected static final String KEY_USE_SERVICE_PREFERENCE = "use_service";
public static final String KEY_GENERAL_CATEGORY = "general_categories";
protected static final String KEY_HTML_DESCRIPTION_PREFERENCE = "html_description";
private static final String KEY_SHORTCUT_PREFERENCE = "shortcut_preference";
public static final String KEY_SHORTCUT_PREFERENCE = "shortcut_preference";
protected static final String KEY_SAVED_USER_SHORTCUT_TYPE = "shortcut_type";
protected static final String KEY_SAVED_QS_TOOLTIP_RESHOW = "qs_tooltip_reshow";
protected static final String KEY_SAVED_QS_TOOLTIP_TYPE = "qs_tooltip_type";