1 /*
2  * Copyright (C) 2019 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.settings.privacy;
18 
19 import android.content.Context;
20 import android.os.UserHandle;
21 import android.os.UserManager;
22 
23 import androidx.annotation.NonNull;
24 
25 import com.android.settings.R;
26 import com.android.settings.core.TogglePreferenceController;
27 import com.android.settings.utils.ContentCaptureUtils;
28 
29 public final class EnableContentCapturePreferenceController extends TogglePreferenceController {
30 
EnableContentCapturePreferenceController(@onNull Context context, @NonNull String key)31     public EnableContentCapturePreferenceController(@NonNull Context context, @NonNull String key) {
32         super(context, key);
33     }
34 
35     @Override
isChecked()36     public boolean isChecked() {
37         return ContentCaptureUtils.isEnabledForUser(mContext);
38     }
39 
40     @Override
setChecked(boolean isChecked)41     public boolean setChecked(boolean isChecked) {
42         ContentCaptureUtils.setEnabledForUser(mContext, isChecked);
43         return true;
44     }
45 
46     @Override
getAvailabilityStatus()47     public int getAvailabilityStatus() {
48         if (!ContentCaptureUtils.isFeatureAvailable()
49                 || ContentCaptureUtils.getServiceSettingsComponentName() != null) {
50             return UNSUPPORTED_ON_DEVICE;
51         }
52         if (UserManager.get(mContext).hasUserRestrictionForUser(
53                 UserManager.DISALLOW_CONTENT_CAPTURE, UserHandle.of(UserHandle.myUserId()))) {
54             return DISABLED_FOR_USER;
55         }
56         return AVAILABLE;
57     }
58 
59     @Override
getSliceHighlightMenuRes()60     public int getSliceHighlightMenuRes() {
61         return R.string.menu_key_privacy;
62     }
63 }
64