diff options
author | yuemingw <yuemingw@google.com> | 2018-10-24 13:02:05 +0100 |
---|---|---|
committer | yuemingw <yuemingw@google.com> | 2018-12-10 19:39:29 +0000 |
commit | a35990b63396851c273aebac09e21329a2324def (patch) | |
tree | b7c4efb7dcd1926272950ddeba9abcfa3c4d7cfd /src/com/android/settings/accounts | |
parent | 09b130529cf11cf6d556e801a37812f276260269 (diff) | |
download | packages_apps_Settings-a35990b63396851c273aebac09e21329a2324def.tar.gz packages_apps_Settings-a35990b63396851c273aebac09e21329a2324def.tar.bz2 packages_apps_Settings-a35990b63396851c273aebac09e21329a2324def.zip |
Add Cross profile calendar Settings UI.
Bug: 117976974
Test: make ROBOTEST_FILTER=CrossProfileCalendarPreferenceControllerTest -j40 RunSettingsRoboTests
Change-Id: Ieb4dcfb8091e2c63f4372af220695297c7bb116d
Diffstat (limited to 'src/com/android/settings/accounts')
-rw-r--r-- | src/com/android/settings/accounts/CrossProfileCalendarPreferenceController.java | 79 | ||||
-rw-r--r-- | src/com/android/settings/accounts/ManagedProfileSettings.java | 26 |
2 files changed, 105 insertions, 0 deletions
diff --git a/src/com/android/settings/accounts/CrossProfileCalendarPreferenceController.java b/src/com/android/settings/accounts/CrossProfileCalendarPreferenceController.java new file mode 100644 index 0000000000..38c95dcc7a --- /dev/null +++ b/src/com/android/settings/accounts/CrossProfileCalendarPreferenceController.java @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package com.android.settings.accounts; + +import static android.provider.Settings.Secure.CROSS_PROFILE_CALENDAR_ENABLED; + +import android.content.Context; +import android.os.UserHandle; +import android.provider.Settings; + +import com.android.settings.core.BasePreferenceController; +import com.android.settings.core.TogglePreferenceController; +import com.android.settings.slices.SliceData; +import com.android.settingslib.RestrictedLockUtils; +import com.android.settingslib.RestrictedLockUtilsInternal; +import com.android.settingslib.RestrictedSwitchPreference; + +import androidx.preference.Preference; + +public class CrossProfileCalendarPreferenceController extends TogglePreferenceController { + + private UserHandle mManagedUser; + + public CrossProfileCalendarPreferenceController(Context context, String key) { + super(context, key); + } + + public void setManagedUser(UserHandle managedUser) { + mManagedUser = managedUser; + } + + @Override + public int getAvailabilityStatus() { + return (mManagedUser != null) ? AVAILABLE : DISABLED_FOR_USER; + } + + @Override + public void updateState(Preference preference) { + super.updateState(preference); + if (preference instanceof RestrictedSwitchPreference && mManagedUser != null) { + final RestrictedSwitchPreference pref = (RestrictedSwitchPreference) preference; + final RestrictedLockUtils.EnforcedAdmin enforcedAdmin = + RestrictedLockUtilsInternal.getCrossProfileCalendarEnforcingAdmin( + mContext, mManagedUser.getIdentifier()); + pref.setDisabledByAdmin(enforcedAdmin); + } + } + + @Override + public boolean isChecked() { + if (mManagedUser == null) { + return false; + } + return Settings.Secure.getIntForUser(mContext.getContentResolver(), + CROSS_PROFILE_CALENDAR_ENABLED, /* default= */ 0, + mManagedUser.getIdentifier()) == 1; + } + + @Override + public boolean setChecked(boolean isChecked) { + if (mManagedUser == null) { + return false; + } + final int value = isChecked ? 1 : 0; + return Settings.Secure.putIntForUser(mContext.getContentResolver(), + CROSS_PROFILE_CALENDAR_ENABLED, value, mManagedUser.getIdentifier()); + } +}
\ No newline at end of file diff --git a/src/com/android/settings/accounts/ManagedProfileSettings.java b/src/com/android/settings/accounts/ManagedProfileSettings.java index 07e5845898..dccd7f6749 100644 --- a/src/com/android/settings/accounts/ManagedProfileSettings.java +++ b/src/com/android/settings/accounts/ManagedProfileSettings.java @@ -23,17 +23,25 @@ import android.content.IntentFilter; import android.os.Bundle; import android.os.UserHandle; import android.os.UserManager; +import android.provider.SearchIndexableResource; import android.util.Log; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.dashboard.DashboardFragment; +import com.android.settings.search.BaseSearchIndexProvider; +import com.android.settings.search.Indexable; +import com.android.settingslib.search.SearchIndexable; + +import java.util.ArrayList; +import java.util.List; /** * Setting page for managed profile. * FIXME: It currently assumes there is only one managed profile. */ +@SearchIndexable public class ManagedProfileSettings extends DashboardFragment { private UserManager mUserManager; @@ -63,6 +71,7 @@ public class ManagedProfileSettings extends DashboardFragment { } use(WorkModePreferenceController.class).setManagedUser(mManagedUser); use(ContactSearchPreferenceController.class).setManagedUser(mManagedUser); + use(CrossProfileCalendarPreferenceController.class).setManagedUser(mManagedUser); } @Override @@ -99,6 +108,23 @@ public class ManagedProfileSettings extends DashboardFragment { return MetricsProto.MetricsEvent.ACCOUNTS_WORK_PROFILE_SETTINGS; } + public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = + new BaseSearchIndexProvider() { + @Override + public List<SearchIndexableResource> getXmlResourcesToIndex(Context context, + boolean enabled) { + final ArrayList<SearchIndexableResource> result = new ArrayList<>(); + final SearchIndexableResource sir = new SearchIndexableResource(context); + sir.xmlResId = R.xml.managed_profile_settings; + result.add(sir); + return result; + } + @Override + protected boolean isPageSearchEnabled(Context context) { + return false; + } + }; + private class ManagedProfileBroadcastReceiver extends BroadcastReceiver { @Override |