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

Commit 2b7c0f22 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add controllers for default app shortcut preferences."

parents 1bd76a97 86daa8f4
Loading
Loading
Loading
Loading
+31 −11
Original line number Diff line number Diff line
@@ -39,21 +39,18 @@

    <Preference
        android:key="notification_settings"
        android:title="@string/notifications_label"
        android:selectable="true"/>
        android:title="@string/notifications_label"/>

    <com.android.settings.widget.FixedLineSummaryPreference
        android:key="permission_settings"
        android:title="@string/permissions_label"
        android:summary="@string/summary_placeholder"
        android:selectable="true"
        app:summaryLineCount="1" />

    <Preference
        android:key="storage_settings"
        android:title="@string/storage_settings"
        android:summary="@string/summary_placeholder"
        android:selectable="true"/>
        android:summary="@string/summary_placeholder"/>

    <com.android.settings.applications.AppDomainsPreference
        android:key="instant_app_launch_supported_domain_urls"
@@ -63,14 +60,12 @@
    <Preference
        android:key="data_settings"
        android:title="@string/data_usage_summary_title"
        android:summary="@string/summary_placeholder"
        android:selectable="true"/>
        android:summary="@string/summary_placeholder"/>

    <Preference
        android:key="battery"
        android:title="@string/power_usage_summary_title"
        android:summary="@string/summary_placeholder"
        android:selectable="true"/>
        android:summary="@string/summary_placeholder"/>

    <Preference
        android:key="preferred_settings"
@@ -82,8 +77,33 @@
        android:key="memory"
        android:title="@string/memory_settings_title"
        android:summary="@string/summary_placeholder"
        android:enabled="false"
        android:selectable="true"/>
        android:enabled="false"/>

    <!-- Default apps shortcuts -->
    <Preference
        android:key="default_home"
        android:title="@string/home_app"
        android:summary="@string/summary_placeholder" />

    <Preference
        android:key="default_browser"
        android:title="@string/default_browser_title"
        android:summary="@string/summary_placeholder" />

    <Preference
        android:key="default_phone_app"
        android:title="@string/default_phone_title"
        android:summary="@string/default_phone_title" />

    <Preference
        android:key="default_emergency_app"
        android:title="@string/default_emergency_app"
        android:summary="@string/summary_placeholder" />

    <Preference
        android:key="default_sms_app"
        android:title="@string/sms_application_title"
        android:summary="@string/summary_placeholder" />

    <Preference
        android:key="app_version"
+12 −56
Original line number Diff line number Diff line
@@ -50,7 +50,6 @@ import android.support.v7.preference.Preference;
import android.support.v7.preference.Preference.OnPreferenceClickListener;
import android.support.v7.preference.PreferenceCategory;
import android.support.v7.preference.PreferenceScreen;
import android.text.BidiFormatter;
import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
@@ -74,6 +73,11 @@ import com.android.settings.applications.appinfo.AppOpenByDefaultPreferenceContr
import com.android.settings.applications.appinfo.AppPermissionPreferenceController;
import com.android.settings.applications.appinfo.AppStoragePreferenceController;
import com.android.settings.applications.appinfo.AppVersionPreferenceController;
import com.android.settings.applications.appinfo.DefaultBrowserShortcutPreferenceController;
import com.android.settings.applications.appinfo.DefaultEmergencyShortcutPreferenceController;
import com.android.settings.applications.appinfo.DefaultHomeShortcutPreferenceController;
import com.android.settings.applications.appinfo.DefaultPhoneShortcutPreferenceController;
import com.android.settings.applications.appinfo.DefaultSmsShortcutPreferenceController;
import com.android.settings.applications.defaultapps.DefaultBrowserPreferenceController;
import com.android.settings.applications.defaultapps.DefaultEmergencyPreferenceController;
import com.android.settings.applications.defaultapps.DefaultHomePreferenceController;
@@ -394,6 +398,12 @@ public class AppInfoDashboardFragment extends DashboardFragment
        // state when app state changes.
        controllers.add(new AppBatteryPreferenceController(context, this, packageName, lifecycle));
        controllers.add(new AppMemoryPreferenceController(context, this, lifecycle));
        controllers.add(new DefaultHomeShortcutPreferenceController(context, packageName));
        controllers.add(new DefaultBrowserShortcutPreferenceController(context, packageName));
        controllers.add(new DefaultPhoneShortcutPreferenceController(context, packageName));
        controllers.add(new DefaultEmergencyShortcutPreferenceController(context, packageName));
        controllers.add(new DefaultSmsShortcutPreferenceController(context, packageName));

        return controllers;
    }

@@ -863,31 +873,6 @@ public class AppInfoDashboardFragment extends DashboardFragment
        }
        final PreferenceScreen screen = getPreferenceScreen();
        final Context context = getContext();
        if (DefaultHomePreferenceController.hasHomePreference(mPackageName, context)) {
            screen.addPreference(new ShortcutPreference(getPrefContext(),
                    DefaultAppSettings.class, "default_home", R.string.home_app,
                    R.string.configure_apps));
        }
        if (DefaultBrowserPreferenceController.hasBrowserPreference(mPackageName, context)) {
            screen.addPreference(new ShortcutPreference(getPrefContext(),
                    DefaultAppSettings.class, "default_browser", R.string.default_browser_title,
                    R.string.configure_apps));
        }
        if (DefaultPhonePreferenceController.hasPhonePreference(mPackageName, context)) {
            screen.addPreference(new ShortcutPreference(getPrefContext(),
                    DefaultAppSettings.class, "default_phone_app", R.string.default_phone_title,
                    R.string.configure_apps));
        }
        if (DefaultEmergencyPreferenceController.hasEmergencyPreference(mPackageName, context)) {
            screen.addPreference(new ShortcutPreference(getPrefContext(),
                    DefaultAppSettings.class, "default_emergency_app",
                    R.string.default_emergency_app, R.string.configure_apps));
        }
        if (DefaultSmsPreferenceController.hasSmsPreference(mPackageName, context)) {
            screen.addPreference(new ShortcutPreference(getPrefContext(),
                    DefaultAppSettings.class, "default_sms_app", R.string.sms_application_title,
                    R.string.configure_apps));
        }

        // Get the package info with the activities
        PackageInfo packageInfoWithActivities = null;
@@ -1037,36 +1022,7 @@ public class AppInfoDashboardFragment extends DashboardFragment

    private void updateDynamicPrefs() {
        final Context context = getContext();
        Preference pref = findPreference("default_home");

        if (pref != null) {
            pref.setSummary(DefaultHomePreferenceController.isHomeDefault(mPackageName,
                    new PackageManagerWrapper(context.getPackageManager()))
                    ? R.string.yes : R.string.no);
        }
        pref = findPreference("default_browser");
        if (pref != null) {
            pref.setSummary(new DefaultBrowserPreferenceController(context)
                    .isBrowserDefault(mPackageName, mUserId)
                    ? R.string.yes : R.string.no);
        }
        pref = findPreference("default_phone_app");
        if (pref != null) {
            pref.setSummary(
                    DefaultPhonePreferenceController.isPhoneDefault(mPackageName, context)
                    ? R.string.yes : R.string.no);
        }
        pref = findPreference("default_emergency_app");
        if (pref != null) {
            pref.setSummary(DefaultEmergencyPreferenceController.isEmergencyDefault(mPackageName,
                    getContext()) ? R.string.yes : R.string.no);
        }
        pref = findPreference("default_sms_app");
        if (pref != null) {
            pref.setSummary(DefaultSmsPreferenceController.isSmsDefault(mPackageName, context)
                    ? R.string.yes : R.string.no);
        }
        pref = findPreference("system_alert_window");
        Preference pref = findPreference("system_alert_window");
        if (pref != null) {
            pref.setSummary(DrawOverlayDetails.getSummary(getContext(), mAppEntry));
        }
+5 −0
Original line number Diff line number Diff line
@@ -21,7 +21,12 @@ import android.support.v7.preference.Preference;
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.SettingsActivity;
import com.android.settings.Utils;
import com.android.settings.applications.appinfo.DefaultAppShortcutPreferenceControllerBase;

/**
 * deprecated in favor of {@link DefaultAppShortcutPreferenceControllerBase}
 */
@Deprecated
public class ShortcutPreference extends Preference {

    private final Class mTarget;
+87 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 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.appinfo;

import android.app.slice.Slice;
import android.content.Context;
import android.os.Bundle;
import android.os.UserManager;
import android.support.v7.preference.Preference;
import android.text.TextUtils;

import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.Utils;
import com.android.settings.applications.DefaultAppSettings;
import com.android.settings.core.BasePreferenceController;

/*
 * Abstract base controller for the default app shortcut preferences that launches the default app
 * settings with the corresponding default app highlighted.
 */
public abstract class DefaultAppShortcutPreferenceControllerBase extends BasePreferenceController {

    protected final String mPackageName;

    public DefaultAppShortcutPreferenceControllerBase(Context context, String preferenceKey,
            String packageName) {
        super(context, preferenceKey);
        mPackageName = packageName;
    }

    @Override
    public int getAvailabilityStatus() {
        if (UserManager.get(mContext).isManagedProfile()) {
            return DISABLED_FOR_USER;
        }
        return hasAppCapability() ? AVAILABLE : DISABLED_UNSUPPORTED;
    }

    @Override
    public Slice getSettingSlice() {
        return null;
    }

    @Override
    public void updateState(Preference preference) {
        preference.setSummary(isDefaultApp() ? R.string.yes : R.string.no);
    }

    @Override
    public boolean handlePreferenceTreeClick(Preference preference) {
        if (TextUtils.equals(mPreferenceKey, preference.getKey())) {
            Bundle bundle = new Bundle();
            bundle.putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, mPreferenceKey);
            Utils.startWithFragment(mContext, DefaultAppSettings.class.getName(), bundle, null, 0,
                    R.string.configure_apps, null, MetricsProto.MetricsEvent.VIEW_UNKNOWN);
            return true;
        }
        return false;
    }

    /**
     * Check whether the app has the default app capability
     * @return true if the app has the default app capability
     */
    protected abstract boolean hasAppCapability();

    /**
     * Check whether the app is the default app
     * @return true if the app is the default app
     */
    protected abstract boolean isDefaultApp();

}
+42 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 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.appinfo;

import android.content.Context;
import android.os.UserHandle;

import com.android.settings.applications.defaultapps.DefaultBrowserPreferenceController;

public class DefaultBrowserShortcutPreferenceController
        extends DefaultAppShortcutPreferenceControllerBase {

    private static final String KEY = "default_browser";

    public DefaultBrowserShortcutPreferenceController(Context context, String packageName) {
        super(context, KEY, packageName);
    }

    @Override
    protected boolean hasAppCapability() {
        return DefaultBrowserPreferenceController.hasBrowserPreference(mPackageName, mContext);
    }

    @Override
    protected boolean isDefaultApp() {
        return new DefaultBrowserPreferenceController(mContext)
                .isBrowserDefault(mPackageName, UserHandle.myUserId());
    }

}
Loading