Merge "Move AppPreference to settingslib, and change imports."

This commit is contained in:
Fan Zhang
2018-09-25 19:15:19 +00:00
committed by Android (Google) Code Review
21 changed files with 37 additions and 281 deletions

View File

@@ -1,100 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 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.
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:gravity="center_vertical"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
<LinearLayout
android:id="@+id/icon_frame"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="start|center_vertical"
android:minWidth="56dp"
android:orientation="horizontal"
android:paddingEnd="8dp"
android:paddingTop="4dp"
android:paddingBottom="4dp">
<ImageView
android:id="@android:id/icon"
android:layout_width="@dimen/secondary_app_icon_size"
android:layout_height="@dimen/secondary_app_icon_size"/>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:paddingTop="16dp"
android:paddingBottom="16dp">
<TextView android:id="@android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.TileTitle"
android:ellipsize="marquee"
android:fadingEdge="horizontal" />
<LinearLayout
android:id="@+id/summary_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone">
<TextView android:id="@android:id/summary"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textAppearance="@style/TextAppearance.Small"
android:textAlignment="viewStart"
android:textColor="?android:attr/textColorSecondary" />
<TextView android:id="@+id/appendix"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textAppearance="@style/TextAppearance.Small"
android:textAlignment="viewEnd"
android:textColor="?android:attr/textColorSecondary"
android:maxLines="1"
android:ellipsize="end" />
</LinearLayout>
<ProgressBar
android:id="@android:id/progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:max="100"
android:visibility="gone" />
</LinearLayout>
<LinearLayout
android:id="@android:id/widget_frame"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:minWidth="64dp"
android:orientation="vertical" />
</LinearLayout>

View File

@@ -22,7 +22,6 @@
<dimen name="action_bar_switch_padding">16dip</dimen>
<dimen name="app_icon_size">40dip</dimen>
<dimen name="secondary_app_icon_size">32dp</dimen>
<dimen name="min_tap_target_size">48dp</dimen>
<dimen name="screen_margin_sides">64dip</dimen>
<dimen name="screen_margin_top">72dip</dimen>

View File

@@ -21,59 +21,59 @@
android:key="app_default_settings_screen"
android:title="@string/app_default_dashboard_title">
<com.android.settings.widget.AppPreference
<com.android.settingslib.widget.apppreference.AppPreference
android:key="assist_and_voice_input"
android:title="@string/assist_and_voice_input_title"
android:fragment="com.android.settings.applications.assist.ManageAssist"
settings:searchable="false"/>
<com.android.settings.widget.AppPreference
<com.android.settingslib.widget.apppreference.AppPreference
android:key="default_browser"
android:title="@string/default_browser_title"
android:fragment="com.android.settings.applications.defaultapps.DefaultBrowserPicker"
settings:keywords="@string/keywords_default_browser">
<extra android:name="for_work" android:value="false" />
</com.android.settings.widget.AppPreference>
</com.android.settingslib.widget.apppreference.AppPreference>
<com.android.settings.widget.GearPreference
<com.android.settingslib.widget.apppreference.AppPreference
android:key="default_home"
android:title="@string/home_app"
android:fragment="com.android.settings.applications.defaultapps.DefaultHomePicker"
settings:keywords="@string/keywords_home" />
<com.android.settings.widget.AppPreference
<com.android.settingslib.widget.apppreference.AppPreference
android:key="default_phone_app"
android:title="@string/default_phone_title"
android:fragment="com.android.settings.applications.defaultapps.DefaultPhonePicker"
settings:keywords="@string/keywords_default_phone_app" />
<com.android.settings.widget.AppPreference
<com.android.settingslib.widget.apppreference.AppPreference
android:key="default_sms_app"
android:title="@string/sms_application_title"
android:fragment="com.android.settings.applications.defaultapps.DefaultSmsPicker"
settings:keywords="@string/keywords_more_default_sms_app" />
<com.android.settings.widget.AppPreference
<com.android.settingslib.widget.apppreference.AppPreference
android:key="default_payment_app"
android:title="@string/nfc_payment_settings_title"
android:summary="@string/summary_placeholder"
android:fragment="com.android.settings.nfc.PaymentSettings"
settings:keywords="@string/keywords_default_payment_app"/>
<com.android.settings.widget.AppPreference
<com.android.settingslib.widget.apppreference.AppPreference
android:key="default_emergency_app"
android:title="@string/default_emergency_app"
settings:keywords="@string/keywords_emergency_app" />
<!--
<com.android.settings.widget.AppPreference
<com.android.settingslib.widget.apppreference.AppPreference
android:key="default_notification_asst_app"
android:title="@string/default_notification_assistant"
android:fragment="com.android.settings.applications.defaultapps.DefaultNotificationAssistantPicker"
/>
-->
<com.android.settings.widget.AppPreference
<com.android.settingslib.widget.apppreference.AppPreference
android:key="domain_urls"
android:title="@string/domain_urls_title"
android:fragment="com.android.settings.applications.managedomainurls.ManageDomainUrls"
@@ -83,21 +83,21 @@
android:key="work_app_defaults"
android:title="@string/default_for_work">
<com.android.settings.widget.AppPreference
<com.android.settingslib.widget.apppreference.AppPreference
android:key="work_default_browser"
android:title="@string/default_browser_title"
android:fragment="com.android.settings.applications.defaultapps.DefaultBrowserPicker"
settings:searchable="false">
<extra android:name="for_work" android:value="true" />
</com.android.settings.widget.AppPreference>
</com.android.settingslib.widget.apppreference.AppPreference>
<com.android.settings.widget.AppPreference
<com.android.settingslib.widget.apppreference.AppPreference
android:key="work_default_phone_app"
android:title="@string/default_phone_title"
android:fragment="com.android.settings.applications.defaultapps.DefaultPhonePicker"
settings:searchable="false">
<extra android:name="for_work" android:value="true" />
</com.android.settings.widget.AppPreference>
</com.android.settingslib.widget.apppreference.AppPreference>
</com.android.settings.widget.WorkOnlyCategory>

View File

@@ -30,7 +30,7 @@ import androidx.preference.Preference.OnPreferenceClickListener;
import com.android.settings.Utils;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.widget.AppPreference;
import com.android.settingslib.widget.apppreference.AppPreference;
public class AccountTypePreference extends AppPreference implements OnPreferenceClickListener {
/**

View File

@@ -22,7 +22,7 @@ import android.text.TextUtils;
import android.text.format.Formatter;
import android.util.Log;
import com.android.settings.widget.AppPreference;
import com.android.settingslib.widget.apppreference.AppPreference;
public class ProcessStatsPreference extends AppPreference {
static final String TAG = "ProcessStatsPreference";

View File

@@ -42,11 +42,11 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.widget.AppPreference;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.utils.StringUtil;
import com.android.settingslib.widget.apppreference.AppPreference;
import java.util.ArrayList;
import java.util.Arrays;

View File

@@ -27,8 +27,8 @@ import androidx.preference.PreferenceViewHolder;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.widget.AppPreference;
import com.android.settingslib.applications.ApplicationsState.AppEntry;
import com.android.settingslib.widget.apppreference.AppPreference;
public class DomainAppPreference extends AppPreference {

View File

@@ -42,9 +42,9 @@ import com.android.settings.R;
import com.android.settings.applications.AppInfoBase;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import com.android.settings.widget.AppPreference;
import com.android.settings.widget.EmptyTextSettings;
import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.widget.apppreference.AppPreference;
import java.text.Collator;
import java.util.ArrayList;

View File

@@ -20,11 +20,11 @@ import android.widget.ProgressBar;
import androidx.preference.PreferenceViewHolder;
import com.android.settings.widget.AppPreference;
import com.android.settingslib.AppItem;
import com.android.settingslib.net.UidDetail;
import com.android.settingslib.net.UidDetailProvider;
import com.android.settingslib.utils.ThreadUtils;
import com.android.settingslib.widget.apppreference.AppPreference;
public class AppDataUsagePreference extends AppPreference {

View File

@@ -27,8 +27,8 @@ import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.applications.ApplicationFeatureProvider;
import com.android.settings.applications.UserAppInfo;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.widget.AppPreference;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.widget.apppreference.AppPreference;
import java.util.List;
@@ -80,6 +80,7 @@ public class ApplicationListPreferenceController extends AbstractPreferenceContr
/**
* Simple interface for building application list within {
*
* @link ApplicationListPreferenceController}
*/
public interface ApplicationListBuilder {

View File

@@ -17,7 +17,6 @@
package com.android.settings.fuelgauge;
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.TextView;
@@ -26,7 +25,7 @@ import androidx.preference.PreferenceViewHolder;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.widget.AppPreference;
import com.android.settingslib.widget.apppreference.AppPreference;
/**
* Custom preference for displaying battery usage info as a bar and an icon on

View File

@@ -21,10 +21,10 @@ import android.text.TextUtils;
import androidx.preference.Preference;
import com.android.settings.widget.AppPreference;
import com.android.settings.widget.RestrictedAppPreference;
import com.android.settingslib.location.InjectedSetting;
import com.android.settingslib.location.SettingsInjector;
import com.android.settingslib.widget.apppreference.AppPreference;
/**
* Adds the preferences specified by the {@link InjectedSetting} objects to a preference group.

View File

@@ -26,9 +26,9 @@ import com.android.settings.R;
import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.widget.AppPreference;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.location.RecentLocationApps;
import com.android.settingslib.widget.apppreference.AppPreference;
import java.util.List;
@@ -43,7 +43,7 @@ public class RecentLocationRequestPreferenceController extends LocationBasePrefe
private PreferenceCategory mCategoryRecentLocationRequests;
private Preference mSeeAllButton;
/** Used in this class and {@link RecentLocationRequestSeeAllPreferenceController}*/
/** Used in this class and {@link RecentLocationRequestSeeAllPreferenceController} */
static class PackageEntryClickedListener implements Preference.OnPreferenceClickListener {
private final DashboardFragment mFragment;
private final String mPackage;
@@ -111,7 +111,7 @@ public class RecentLocationRequestPreferenceController extends LocationBasePrefe
if (recentLocationRequests.size() > 3) {
// Display the top 3 preferences to container in original order.
for (int i = 0; i < 3; i ++) {
for (int i = 0; i < 3; i++) {
mCategoryRecentLocationRequests.addPreference(
createAppPreference(prefContext, recentLocationRequests.get(i)));
}

View File

@@ -23,9 +23,9 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
import com.android.settings.widget.AppPreference;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.location.RecentLocationApps;
import com.android.settingslib.widget.apppreference.AppPreference;
import java.util.List;

View File

@@ -55,8 +55,8 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import com.android.settings.widget.AppPreference;
import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.widget.apppreference.AppPreference;
import java.text.DateFormat;
import java.util.ArrayList;
@@ -356,7 +356,7 @@ public class PrintSettingsFragment extends ProfileSettingsPreferenceFragment
printJob.getCreationTime(), printJob.getCreationTime(),
DateFormat.SHORT, DateFormat.SHORT)));
TypedArray a = getActivity().obtainStyledAttributes(new int[] {
TypedArray a = getActivity().obtainStyledAttributes(new int[]{
android.R.attr.colorControlNormal});
int tintColor = a.getColor(0, 0);
a.recycle();

View File

@@ -1,64 +0,0 @@
/*
* 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.widget;
import android.content.Context;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ProgressBar;
import androidx.preference.Preference;
import androidx.preference.PreferenceViewHolder;
import com.android.settings.R;
public class AppPreference extends Preference {
private int mProgress;
private boolean mProgressVisible;
public AppPreference(Context context) {
super(context);
setLayoutResource(R.layout.preference_app);
}
public AppPreference(Context context, AttributeSet attrs) {
super(context, attrs);
setLayoutResource(R.layout.preference_app);
}
public void setProgress(int amount) {
mProgress = amount;
mProgressVisible = true;
notifyChanged();
}
@Override
public void onBindViewHolder(PreferenceViewHolder view) {
super.onBindViewHolder(view);
view.findViewById(R.id.summary_container)
.setVisibility(TextUtils.isEmpty(getSummary()) ? View.GONE : View.VISIBLE);
final ProgressBar progress = (ProgressBar) view.findViewById(android.R.id.progress);
if (mProgressVisible) {
progress.setProgress(mProgress);
progress.setVisibility(View.VISIBLE);
} else {
progress.setVisibility(View.GONE);
}
}
}

View File

@@ -28,6 +28,7 @@ import androidx.preference.PreferenceViewHolder;
import com.android.settings.R;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedPreferenceHelper;
import com.android.settingslib.widget.apppreference.AppPreference;
/**
* {@link AppPreference} that implements user restriction utilities using

View File

@@ -42,10 +42,10 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.widget.AppPreference;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.location.RecentLocationApps;
import com.android.settingslib.location.RecentLocationApps.Request;
import com.android.settingslib.widget.apppreference.AppPreference;
import org.junit.Before;
import org.junit.Test;
@@ -173,7 +173,7 @@ public class RecentLocationRequestPreferenceControllerTest {
@Test
public void onPreferenceClick_shouldLaunchAppDetails() {
final Context context= mock(Context.class);
final Context context = mock(Context.class);
when(mFragment.getContext()).thenReturn(context);
final List<RecentLocationApps.Request> requests = new ArrayList<>();
@@ -210,7 +210,7 @@ public class RecentLocationRequestPreferenceControllerTest {
AppPreference appPreference = mock(AppPreference.class, "AppPreference" + i);
doReturn(title).when(appPreference).getTitle();
doReturn(appPreference)
.when(mController).createAppPreference(any(Context.class), eq(req));
.when(mController).createAppPreference(any(Context.class), eq(req));
}
return requests;
}

View File

@@ -32,10 +32,10 @@ import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.widget.AppPreference;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.location.RecentLocationApps;
import com.android.settingslib.location.RecentLocationApps.Request;
import com.android.settingslib.widget.apppreference.AppPreference;
import org.junit.Before;
import org.junit.Test;

View File

@@ -75,6 +75,8 @@ public class SettingsRobolectricTestRunner extends RobolectricTestRunner {
Fs.fromURL(new URL("file:packages/apps/Settings/res")), null));
paths.add(new ResourcePath(null,
Fs.fromURL(new URL("file:frameworks/base/packages/SettingsLib/res")), null));
paths.add(new ResourcePath(null,
Fs.fromURL(new URL("file:frameworks/base/packages/SettingsLib/AppPreference/res/")), null));
paths.add(new ResourcePath(null,
Fs.fromURL(new URL("file:frameworks/base/packages/SettingsLib/HelpUtils/res/")), null));
paths.add(new ResourcePath(null,

View File

@@ -1,82 +0,0 @@
/*
* 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.widget;
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
import android.view.View;
import androidx.preference.PreferenceViewHolder;
import com.android.settings.R;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment;
@RunWith(SettingsRobolectricTestRunner.class)
public class AppPreferenceTest {
private Context mContext;
private View mRootView;
private AppPreference mPref;
private PreferenceViewHolder mHolder;
@Before
public void setUp() {
mContext = RuntimeEnvironment.application;
mRootView = View.inflate(mContext, R.layout.preference_app, null /* parent */);
mHolder = PreferenceViewHolder.createInstanceForTests(mRootView);
mPref = new AppPreference(mContext);
}
@Test
public void setProgress_showProgress() {
mPref.setProgress(1);
mPref.onBindViewHolder(mHolder);
assertThat(mHolder.findViewById(android.R.id.progress).getVisibility())
.isEqualTo(View.VISIBLE);
}
@Test
public void setSummary_showSummaryContainer() {
mPref.setSummary("test");
mPref.onBindViewHolder(mHolder);
assertThat(mHolder.findViewById(R.id.summary_container).getVisibility())
.isEqualTo(View.VISIBLE);
}
@Test
public void noSummary_hideSummaryContainer() {
mPref.setSummary(null);
mPref.onBindViewHolder(mHolder);
assertThat(mHolder.findViewById(R.id.summary_container).getVisibility())
.isEqualTo(View.GONE);
}
@Test
public void foobar_testName() {
float iconSize = mContext.getResources().getDimension(R.dimen.secondary_app_icon_size);
assertThat(Float.floatToIntBits(iconSize)).isEqualTo(Float.floatToIntBits(32));
}
}