Show None default app in stylus preference if no Notes holder.

This also fixes the role holder not updating when the
default role holder has changed.

Test: StylusDevicesControllerTest
Bug: 254834764
Change-Id: Iec7ed7698f18279da9a04918dcdf3e20e73609d1
This commit is contained in:
Vania Januar
2023-01-06 11:25:35 +00:00
parent c3f6c0d593
commit ce93c656aa
3 changed files with 35 additions and 22 deletions

View File

@@ -85,16 +85,24 @@ public class StylusDevicesController extends AbstractPreferenceController implem
}
@Nullable
private Preference createDefaultNotesPreference() {
private Preference createOrUpdateDefaultNotesPreference(@Nullable Preference preference) {
RoleManager rm = mContext.getSystemService(RoleManager.class);
if (rm == null) {
if (rm == null || !rm.isRoleAvailable(RoleManager.ROLE_NOTES)) {
return null;
}
Preference pref = preference == null ? new Preference(mContext) : preference;
pref.setKey(KEY_DEFAULT_NOTES);
pref.setTitle(mContext.getString(R.string.stylus_default_notes_app));
pref.setIcon(R.drawable.ic_article);
pref.setOnPreferenceClickListener(this);
pref.setEnabled(true);
List<String> roleHolders = rm.getRoleHoldersAsUser(RoleManager.ROLE_NOTES,
mContext.getUser());
if (roleHolders.isEmpty()) {
return null;
pref.setSummary(R.string.default_app_none);
return pref;
}
String packageName = roleHolders.get(0);
@@ -107,13 +115,6 @@ public class StylusDevicesController extends AbstractPreferenceController implem
} catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, "Notes role package not found.");
}
Preference pref = new Preference(mContext);
pref.setKey(KEY_DEFAULT_NOTES);
pref.setTitle(mContext.getString(R.string.stylus_default_notes_app));
pref.setIcon(R.drawable.ic_article);
pref.setOnPreferenceClickListener(this);
pref.setEnabled(true);
pref.setSummary(appName);
return pref;
}
@@ -187,12 +188,10 @@ public class StylusDevicesController extends AbstractPreferenceController implem
private void refresh() {
if (!isAvailable()) return;
Preference notesPref = mPreferencesContainer.findPreference(KEY_DEFAULT_NOTES);
if (notesPref == null) {
notesPref = createDefaultNotesPreference();
if (notesPref != null) {
mPreferencesContainer.addPreference(notesPref);
}
Preference currNotesPref = mPreferencesContainer.findPreference(KEY_DEFAULT_NOTES);
Preference notesPref = createOrUpdateDefaultNotesPreference(currNotesPref);
if (currNotesPref == null && notesPref != null) {
mPreferencesContainer.addPreference(notesPref);
}
Preference handwritingPref = mPreferencesContainer.findPreference(KEY_HANDWRITING);