Support accessibility shortcut secondary action (7/n)

Implements sharedPreference to keep the user preferred shortcut for each
service.

Bug: 142530063
Bug: 142531156
Test: make RunSettingsRoboTests ROBOTEST_FILTER=ToggleFeaturePreferenceFragmentTest
Test: make RunSettingsRoboTests2
Change-Id: I2a7c54ddc32764f6d88f2efed87982d469acc183
This commit is contained in:
menghanli
2020-01-09 14:27:47 +08:00
parent b642f3cb10
commit 334dc4f20b
9 changed files with 461 additions and 249 deletions

View File

@@ -24,6 +24,7 @@ import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.text.Html;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
@@ -38,6 +39,7 @@ import com.android.settings.widget.ToggleSwitch;
import java.util.ArrayList;
import java.util.List;
import java.util.StringJoiner;
public abstract class ToggleFeaturePreferenceFragment extends SettingsPreferenceFragment {
@@ -227,4 +229,49 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference
mImageGetterCacheView.setImageDrawable(null);
return drawable;
}
static final class AccessibilityUserShortcutType {
private static final char COMPONENT_NAME_SEPARATOR = ':';
private static final TextUtils.SimpleStringSplitter sStringColonSplitter =
new TextUtils.SimpleStringSplitter(COMPONENT_NAME_SEPARATOR);
private String mComponentName;
private int mUserShortcutType;
AccessibilityUserShortcutType(String componentName, int userShortcutType) {
this.mComponentName = componentName;
this.mUserShortcutType = userShortcutType;
}
AccessibilityUserShortcutType(String flattenedString) {
sStringColonSplitter.setString(flattenedString);
if (sStringColonSplitter.hasNext()) {
this.mComponentName = sStringColonSplitter.next();
this.mUserShortcutType = Integer.parseInt(sStringColonSplitter.next());
}
}
String getComponentName() {
return mComponentName;
}
void setComponentName(String componentName) {
this.mComponentName = componentName;
}
int getUserShortcutType() {
return mUserShortcutType;
}
void setUserShortcutType(int userShortcutType) {
this.mUserShortcutType = userShortcutType;
}
String flattenToString() {
final StringJoiner joiner = new StringJoiner(String.valueOf(COMPONENT_NAME_SEPARATOR));
joiner.add(mComponentName);
joiner.add(String.valueOf(mUserShortcutType));
return joiner.toString();
}
}
}