Merge "Add "Work profile" section to Languages and input settings"
This commit is contained in:
committed by
Android (Google) Code Review
commit
8167b65871
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
* Copyright (C) 2019 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.core;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.android.settings.Utils;
|
||||
|
||||
/**
|
||||
* Abstract class to provide additional logic to deal with optional {@link Preference} entries that
|
||||
* are used only when work profile is enabled.
|
||||
*
|
||||
* <p>TODO(b/123376083): Consider merging this into {@link BasePreferenceController}.</p>
|
||||
*/
|
||||
public abstract class WorkProfilePreferenceController extends BasePreferenceController {
|
||||
@Nullable
|
||||
private final UserHandle mWorkProfileUser;
|
||||
|
||||
/**
|
||||
* Constructor of {@link WorkProfilePreferenceController}. Called by
|
||||
* {@link BasePreferenceController#createInstance(Context, String)} through reflection.
|
||||
*
|
||||
* @param context {@link Context} to instantiate this controller.
|
||||
* @param preferenceKey Preference key to be associated with the {@link Preference}.
|
||||
*/
|
||||
public WorkProfilePreferenceController(Context context, String preferenceKey) {
|
||||
super(context, preferenceKey);
|
||||
mWorkProfileUser = Utils.getManagedProfile(UserManager.get(context));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Non-{@code null} {@link UserHandle} when a work profile is enabled.
|
||||
* Otherwise {@code null}.
|
||||
*/
|
||||
@Nullable
|
||||
protected UserHandle getWorkProfileUser() {
|
||||
return mWorkProfileUser;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called back from {@link #handlePreferenceTreeClick(Preference)} to associate source metrics
|
||||
* category.
|
||||
*
|
||||
* @return One of {@link android.app.settings.SettingsEnums}.
|
||||
*/
|
||||
protected abstract int getSourceMetricsCategory();
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>When you override this method, do not forget to check {@link #getWorkProfileUser()} to
|
||||
* see if work profile user actually exists or not.</p>
|
||||
*/
|
||||
@AvailabilityStatus
|
||||
@Override
|
||||
public int getAvailabilityStatus() {
|
||||
return mWorkProfileUser != null ? AVAILABLE : DISABLED_FOR_USER;
|
||||
}
|
||||
|
||||
/**
|
||||
* Launches the specified fragment for the work profile user if the associated
|
||||
* {@link Preference} is clicked. Otherwise just forward it to the super class.
|
||||
*
|
||||
* @param preference the preference being clicked.
|
||||
* @return {@code true} if handled.
|
||||
*/
|
||||
public boolean handlePreferenceTreeClick(Preference preference) {
|
||||
if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) {
|
||||
return super.handlePreferenceTreeClick(preference);
|
||||
}
|
||||
new SubSettingLauncher(preference.getContext())
|
||||
.setDestination(preference.getFragment())
|
||||
.setSourceMetricsCategory(getSourceMetricsCategory())
|
||||
.setArguments(preference.getExtras())
|
||||
.setUserHandle(mWorkProfileUser)
|
||||
.launch();
|
||||
return true;
|
||||
}
|
||||
}
|
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright (C) 2019 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.inputmethod;
|
||||
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.Context;
|
||||
import android.view.inputmethod.InputMethodSystemProperty;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.WorkProfilePreferenceController;
|
||||
|
||||
/**
|
||||
* Preference controller for "Spell checker for work".
|
||||
*
|
||||
* @see SpellCheckerPreferenceController
|
||||
*/
|
||||
public final class SpellCheckerForWorkPreferenceController extends WorkProfilePreferenceController {
|
||||
|
||||
public SpellCheckerForWorkPreferenceController(Context context, String preferenceKey) {
|
||||
super(context, preferenceKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getSourceMetricsCategory() {
|
||||
return SettingsEnums.SETTINGS_LANGUAGE_CATEGORY;
|
||||
}
|
||||
|
||||
@AvailabilityStatus
|
||||
@Override
|
||||
public int getAvailabilityStatus() {
|
||||
if (!mContext.getResources().getBoolean(R.bool.config_show_spellcheckers_settings)
|
||||
|| !InputMethodSystemProperty.PER_PROFILE_IME_ENABLED) {
|
||||
return UNSUPPORTED_ON_DEVICE;
|
||||
}
|
||||
return super.getAvailabilityStatus();
|
||||
}
|
||||
}
|
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright (C) 2019 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.inputmethod;
|
||||
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.Context;
|
||||
import android.view.inputmethod.InputMethodSystemProperty;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.WorkProfilePreferenceController;
|
||||
|
||||
public final class VirtualKeyboardForWorkPreferenceController
|
||||
extends WorkProfilePreferenceController {
|
||||
|
||||
public VirtualKeyboardForWorkPreferenceController(Context context,
|
||||
String preferenceKey) {
|
||||
super(context, preferenceKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getSourceMetricsCategory() {
|
||||
return SettingsEnums.SETTINGS_LANGUAGE_CATEGORY;
|
||||
}
|
||||
|
||||
@AvailabilityStatus
|
||||
@Override
|
||||
public int getAvailabilityStatus() {
|
||||
if (!mContext.getResources().getBoolean(R.bool.config_show_virtual_keyboard_pref)
|
||||
|| !InputMethodSystemProperty.PER_PROFILE_IME_ENABLED) {
|
||||
return UNSUPPORTED_ON_DEVICE;
|
||||
}
|
||||
return super.getAvailabilityStatus();
|
||||
}
|
||||
}
|
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright (C) 2019 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.language;
|
||||
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.Context;
|
||||
import android.view.inputmethod.InputMethodSystemProperty;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.WorkProfilePreferenceController;
|
||||
|
||||
/**
|
||||
* Preference controller for "UserDictionary for work".
|
||||
*
|
||||
* @see UserDictionaryPreferenceController
|
||||
*/
|
||||
public final class UserDictionaryForWorkPreferenceController
|
||||
extends WorkProfilePreferenceController {
|
||||
|
||||
public UserDictionaryForWorkPreferenceController(Context context, String preferenceKey) {
|
||||
super(context, preferenceKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getSourceMetricsCategory() {
|
||||
return SettingsEnums.SETTINGS_LANGUAGE_CATEGORY;
|
||||
}
|
||||
|
||||
@AvailabilityStatus
|
||||
@Override
|
||||
public int getAvailabilityStatus() {
|
||||
if (!InputMethodSystemProperty.PER_PROFILE_IME_ENABLED) {
|
||||
return UNSUPPORTED_ON_DEVICE;
|
||||
}
|
||||
return super.getAvailabilityStatus();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user