blob: 7b5c5d0fa34d04220aee00f8838303b4d3cddbb0 [file] [log] [blame]
/*
* Copyright (C) 2020 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.car.settings.common;
import android.annotation.Nullable;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.UserHandle;
import android.provider.Settings;
import android.text.TextUtils;
import androidx.fragment.app.Fragment;
import com.android.car.settings.R;
import com.android.car.settings.accessibility.AccessibilitySettingsFragment;
import com.android.car.settings.accessibility.CaptionsSettingsFragment;
import com.android.car.settings.accounts.ChooseAccountFragment;
import com.android.car.settings.applications.ApplicationDetailsFragment;
import com.android.car.settings.applications.ApplicationsSettingsFragment;
import com.android.car.settings.applications.AppsFragment;
import com.android.car.settings.applications.assist.AssistantAndVoiceFragment;
import com.android.car.settings.applications.defaultapps.DefaultAutofillPickerFragment;
import com.android.car.settings.applications.specialaccess.ModifySystemSettingsFragment;
import com.android.car.settings.applications.specialaccess.NotificationAccessFragment;
import com.android.car.settings.applications.specialaccess.PremiumSmsAccessFragment;
import com.android.car.settings.applications.specialaccess.SpecialAccessSettingsFragment;
import com.android.car.settings.applications.specialaccess.UsageAccessFragment;
import com.android.car.settings.applications.specialaccess.WifiControlFragment;
import com.android.car.settings.bluetooth.BluetoothSettingsFragment;
import com.android.car.settings.datetime.DatetimeSettingsFragment;
import com.android.car.settings.display.DisplaySettingsFragment;
import com.android.car.settings.inputmethod.KeyboardFragment;
import com.android.car.settings.language.LanguagePickerFragment;
import com.android.car.settings.language.LanguagesAndInputFragment;
import com.android.car.settings.location.LocationSettingsFragment;
import com.android.car.settings.network.MobileNetworkFragment;
import com.android.car.settings.network.MobileNetworkListFragment;
import com.android.car.settings.network.NetworkAndInternetFragment;
import com.android.car.settings.notifications.NotificationsFragment;
import com.android.car.settings.privacy.PrivacySettingsFragment;
import com.android.car.settings.privacy.VehicleDataFragment;
import com.android.car.settings.profiles.ProfileDetailsFragment;
import com.android.car.settings.security.SecuritySettingsFragment;
import com.android.car.settings.sound.RingtonePickerFragment;
import com.android.car.settings.sound.SoundSettingsFragment;
import com.android.car.settings.storage.StorageSettingsFragment;
import com.android.car.settings.system.AboutSettingsFragment;
import com.android.car.settings.system.LegalInformationFragment;
import com.android.car.settings.system.ResetOptionsFragment;
import com.android.car.settings.system.SystemSettingsFragment;
import com.android.car.settings.tts.TextToSpeechOutputFragment;
import com.android.car.settings.units.UnitsSettingsFragment;
import com.android.car.settings.wifi.AddWifiFragment;
import com.android.car.settings.wifi.WifiSettingsFragment;
import com.android.car.settings.wifi.WifiTetherFragment;
import com.android.car.settings.wifi.preferences.WifiPreferencesFragment;
/**
* Top level settings class, containing static instances of CarSettings activities.
*/
public class CarSettingActivities {
private static final Logger LOG = new Logger(CarSettingActivities.class);
/**
* Homepage Activity.
*/
public static class HomepageActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
try {
return getSupportFragmentManager().getFragmentFactory().instantiate(
getClassLoader(), getString(R.string.config_homepage_fragment_class));
} catch (Fragment.InstantiationException e) {
LOG.e("Unable to instantiate homepage fragment", e);
return null;
}
}
@Override
protected boolean shouldFocusContentOnLaunch() {
// Focus should stay with the top-level menu for the HomepageActivity.
return false;
}
}
// Homepage sub-sections
/**
* Display Settings Activity.
*/
public static class DisplaySettingsActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new DisplaySettingsFragment();
}
}
/**
* Sound Settings Activity.
*/
public static class SoundSettingsActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new SoundSettingsFragment();
}
}
/**
* Ringtone Picker Activity.
*/
public static class RingtonePickerActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
Bundle args = getIntent().getExtras().deepCopy();
Fragment fragment = new RingtonePickerFragment();
fragment.setArguments(args);
return fragment;
}
}
/**
* Network and Internet Activity.
*/
public static class NetworkAndInternetActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new NetworkAndInternetFragment();
}
}
/**
* Bluetooth Settings Activity.
*/
public static class BluetoothSettingsActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new BluetoothSettingsFragment();
}
}
/**
* Units Settings Activity.
*/
public static class UnitsSettingsActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new UnitsSettingsFragment();
}
}
/**
* Location Settings Activity.
*/
public static class LocationSettingsActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new LocationSettingsFragment();
}
}
/**
* Apps Activity.
*/
public static class AppsActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new AppsFragment();
}
}
/**
* Notifications Activity.
*/
public static class NotificationsActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new NotificationsFragment();
}
}
/**
* Datetime Settings Activity.
*/
public static class DatetimeSettingsActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new DatetimeSettingsFragment();
}
}
/**
* Profile Details Activity.
*/
public static class ProfileDetailsActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return ProfileDetailsFragment.newInstance(UserHandle.myUserId());
}
}
/**
* Privacy Settings Activity.
*/
public static class PrivacySettingsActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new PrivacySettingsFragment();
}
}
/**
* Vehicle Data Activity.
*/
public static class VehicleDataActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new VehicleDataFragment();
}
}
/**
* Storage Settings Activity.
*/
public static class StorageSettingsActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new StorageSettingsFragment();
}
}
/**
* Security Settings Activity.
*/
public static class SecuritySettingsActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new SecuritySettingsFragment();
}
}
/**
* Assistant & voice Settings Activity.
*/
public static class AssistantAndVoiceSettingsActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new AssistantAndVoiceFragment();
}
}
/**
* System Settings Activity.
*/
public static class SystemSettingsActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new SystemSettingsFragment();
}
}
// Network & internet sub-sections
/**
* Wifi Settings Activity.
*/
public static class WifiSettingsActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new WifiSettingsFragment();
}
}
/**
* Wifi Hotspot and Tethering Activity.
*/
public static class WifiTetherActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new WifiTetherFragment();
}
}
/**
* Mobile Network Activity.
*/
public static class MobileNetworkActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return MobileNetworkFragment.newInstance(
getIntent().getIntExtra("network_sub_id", Integer.MIN_VALUE));
}
}
/**
* Mobile Network List Activity.
*/
public static class MobileNetworkListActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new MobileNetworkListFragment();
}
}
// Apps & Notifications sub-sections
/**
* Application Settings Activity.
*/
public static class ApplicationsSettingsActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new ApplicationsSettingsFragment();
}
}
/**
* Application Special Access Settings Activity.
*/
public static class SpecialAccessSettingsActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new SpecialAccessSettingsFragment();
}
}
// System sub-sections
/**
* Languages and Input Activity.
*/
public static class LanguagesAndInputActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new LanguagesAndInputFragment();
}
}
/**
* About Settings Activity.
*/
public static class AboutSettingsActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new AboutSettingsFragment();
}
}
/**
* Legal Information Activity.
*/
public static class LegalInformationActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new LegalInformationFragment();
}
}
/**
* Reset Options Activity.
*/
public static class ResetOptionsActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new ResetOptionsFragment();
}
}
// Wi-fi sub-sections
/**
* Add Wifi Network Activity.
*/
public static class AddWifiActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new AddWifiFragment();
}
}
/**
* Wifi Preferences Activity.
*/
public static class WifiPreferencesActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new WifiPreferencesFragment();
}
}
// App Info sub-sections
/**
* Application Details Activity.
* Intent required to include package string as Settings.EXTRA_APP_PACKAGE extra.
*/
public static class ApplicationsDetailsActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
Intent intent = getIntent();
String pkg = intent.getStringExtra(Settings.EXTRA_APP_PACKAGE);
if (TextUtils.isEmpty(pkg)) {
LOG.w("No package provided for application detailed intent");
Uri uri = intent.getData();
if (uri == null) {
LOG.w("No uri provided for application detailed intent");
return null;
}
pkg = uri.getSchemeSpecificPart();
}
return ApplicationDetailsFragment.getInstance(pkg);
}
}
// Special app access sub-section
/**
* App Modify System Settings Access Activity.
*/
public static class ModifySystemSettingsActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new ModifySystemSettingsFragment();
}
}
/**
* App Notification Access Activity.
*/
public static class NotificationAccessActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new NotificationAccessFragment();
}
}
/**
* App Premium SMS Access Activity.
*/
public static class PremiumSmsAccessActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new PremiumSmsAccessFragment();
}
}
/**
* App Usage Access Activity.
*/
public static class UsageAccessActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new UsageAccessFragment();
}
}
/**
* App Wifi Control Access Activity.
*/
public static class WifiControlActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new WifiControlFragment();
}
}
// Account sub-section
/**
* Choose Account Activity.
*/
public static class ChooseAccountActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new ChooseAccountFragment();
}
}
// Languages & input sub-section
/**
* Language Picker Activity.
*/
public static class LanguagePickerActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new LanguagePickerFragment();
}
}
/**
* Default Autofill Picker Activity.
*/
public static class DefaultAutofillPickerActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new DefaultAutofillPickerFragment();
}
}
/**
* Keyboard Activity.
*/
public static class KeyboardActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new KeyboardFragment();
}
}
/**
* Text to Speech Output Activity.
*/
public static class TextToSpeechOutputActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new TextToSpeechOutputFragment();
}
}
/**
* Accessibility Activity.
*/
public static class AccessibilityActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new AccessibilitySettingsFragment();
}
}
/**
* Captions Activity.
*/
public static class CaptionsActivity extends BaseCarSettingsActivity {
@Nullable
@Override
protected Fragment getInitialFragment() {
return new CaptionsSettingsFragment();
}
}
}