Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 83a71ca8 authored by Peiyong Lin's avatar Peiyong Lin
Browse files

Add Game settings support.

Add Game settings page under Apps so that users can access game related
features and toggle settings.

Bug: b/185822999
Test: make ROBOTEST_FILTER=GameSettingsPreferenceControllerTest RunSettingsRoboTests
Change-Id: I923ba70536b7f68b5330a508b8dabf27e33f4c55
parent 6590b368
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -13292,4 +13292,9 @@
    <string name="mic_toggle_title">Microphone access</string>
    <!-- Describes what is affected by the camera or mic toggle [CHAR LIMIT=NONE] -->
    <string name="sensor_toggle_description">For all apps and services</string>
    <!-- Title for Game settings entry. [CHAR_LIMIT=NONE] -->
    <string name="game_settings_title">Game settings</string>
    <!-- Summary for Game settings entry. [CHAR_LIMIT=NONE] -->
    <string name="game_settings_summary">Turn on Game Dashboard shortcut, etc</string>
</resources>
+8 −0
Original line number Diff line number Diff line
@@ -62,6 +62,14 @@
        <intent android:action="android.settings.MANAGE_DEFAULT_APPS_SETTINGS"/>
    </Preference>

    <Preference
        android:key="game_settings"
        android:title="@string/game_settings_title"
        android:summary="@string/game_settings_summary"
        android:order="-995"
        settings:controller="com.android.settings.applications.GameSettingsPreferenceController">
    </Preference>

    <PreferenceCategory
        android:key="dashboard_tile_placeholder"
        android:order="10"/>
+34 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 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.applications;

import android.content.Context;

/**
 * Provider for Game Settings related feature.
 */
public interface GameSettingsFeatureProvider {
    /**
     * Returns true if the feature is supported.
     */
    boolean isSupported(Context context);

    /**
     * Launch GameSettings
     */
    void launchGameSettings(Context context);
}
+35 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 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.applications;

import android.content.Context;

/**
 * Provider implementation for Game Settings related features.
 */
public class GameSettingsFeatureProviderImpl implements
        GameSettingsFeatureProvider {
    @Override
    public boolean isSupported(Context context) {
        return false;
    }

    @Override
    public void launchGameSettings(Context context) {
        return;
    }
}
+60 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 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.applications;

import android.content.Context;
import android.text.TextUtils;

import androidx.preference.Preference;

import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.overlay.FeatureFactory;

/** Contains logic that deals with showing Game Settings in app settings. */
public class GameSettingsPreferenceController extends BasePreferenceController {

    @VisibleForTesting
    final GameSettingsFeatureProvider mGameSettingsFeatureProvider;

    public GameSettingsPreferenceController(Context context, String key) {
        super(context, key);
        mGameSettingsFeatureProvider =
                FeatureFactory.getFactory(context).getGameSettingsFeatureProvider();
    }

    GameSettingsPreferenceController(Context context, String key,
            GameSettingsFeatureProvider gameSettingsFeatureProvider) {
        super(context, key);
        mGameSettingsFeatureProvider = gameSettingsFeatureProvider;
    }

    @Override
    public int getAvailabilityStatus() {
        return mGameSettingsFeatureProvider.isSupported(mContext)
                ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
    }

    @Override
    public boolean handlePreferenceTreeClick(Preference preference) {
        if (TextUtils.equals(getPreferenceKey(), preference.getKey())) {
            mGameSettingsFeatureProvider.launchGameSettings(mContext);
            return true;
        }
        return super.handlePreferenceTreeClick(preference);
    }
}
Loading