From 736c82ba577f8f972ea4277357ae440b192dcd13 Mon Sep 17 00:00:00 2001 From: Anthony Hugh Date: Wed, 16 Sep 2015 17:51:10 -0700 Subject: Permissions Settings UI updates Changes: - Moved non-system permission groups to the end of the list - Updated "disabled" look to match non-center looked - Fixed state string alpha to match other alphas when not centered - Minor code clean ups BUG: 24132393 BUG: 24132470 BUG: 24131983 Change-Id: I65a64d59e6fff8e0cbdaaa3da4e4a79987d6e624 --- res/layout-watch/permissions_settings_item.xml | 7 +++-- res/values-watch/colors.xml | 2 ++ .../ui/wear/AppPermissionsFragmentWear.java | 26 +++++++++++++--- .../permission/ui/wear/TitledSettingsFragment.java | 23 +++++--------- .../wear/settings/PermissionsSettingsAdapter.java | 36 ++++++++++++++++------ .../ui/wear/settings/SettingsAdapter.java | 23 ++------------ 6 files changed, 63 insertions(+), 54 deletions(-) diff --git a/res/layout-watch/permissions_settings_item.xml b/res/layout-watch/permissions_settings_item.xml index 1c57fd81..1dc4abf7 100644 --- a/res/layout-watch/permissions_settings_item.xml +++ b/res/layout-watch/permissions_settings_item.xml @@ -27,17 +27,18 @@ android:fontFamily="sans-serif-condensed-light" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textColor="#FFFFFFFF" + android:textColor="@color/permissions_settings_item_color" android:textSize="14sp" android:maxLines="2" android:ellipsize="end"/> diff --git a/res/values-watch/colors.xml b/res/values-watch/colors.xml index 39c3eb48..b81d6e3b 100644 --- a/res/values-watch/colors.xml +++ b/res/values-watch/colors.xml @@ -22,6 +22,8 @@ @color/off_white #b2eeeeee + #FFFFFFFF + #ffeeeeee #424242 diff --git a/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java b/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java index 9e54c7d5..1969c20d 100644 --- a/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java +++ b/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java @@ -66,7 +66,6 @@ public final class AppPermissionsFragmentWear extends TitledSettingsFragment { arguments.putString(Intent.EXTRA_PACKAGE_NAME, packageName); fragment.setArguments(arguments); return fragment; - } @Override @@ -126,11 +125,11 @@ public final class AppPermissionsFragmentWear extends TitledSettingsFragment { super.onViewCreated(view, savedInstanceState); if (mAppPermissions != null) { initializeLayout(mAdapter); - bindUi(mAppPermissions.getPackageInfo()); + bindHeader(mAppPermissions.getPackageInfo()); } } - private void bindUi(PackageInfo packageInfo) { + private void bindHeader(PackageInfo packageInfo) { Activity activity = getActivity(); PackageManager pm = activity.getPackageManager(); ApplicationInfo appInfo = packageInfo.applicationInfo; @@ -141,6 +140,8 @@ public final class AppPermissionsFragmentWear extends TitledSettingsFragment { private void initializePermissionGroupList() { final String packageName = mAppPermissions.getPackageInfo().packageName; List groups = mAppPermissions.getPermissionGroups(); + List> nonSystemGroups = new ArrayList<>(); + final int count = groups.size(); for (int i = 0; i < count; ++i) { final AppPermissionGroup group = groups.get(i); @@ -148,12 +149,27 @@ public final class AppPermissionsFragmentWear extends TitledSettingsFragment { continue; } + boolean isPlatform = group.getDeclaringPackage().equals(Utils.OS_PKG); + SettingsAdapter.Setting setting = new SettingsAdapter.Setting( group.getLabel(), getPermissionGroupIcon(group), i); setting.data = group; + + // The UI shows System settings first, then non-system settings + if (isPlatform) { + mAdapter.addSetting(setting); + } else { + nonSystemGroups.add(setting); + } + } + + // Now add the non-system settings to the end of the list + final int nonSystemCount = nonSystemGroups.size(); + for (int i = 0; i < nonSystemCount; ++i) { + final SettingsAdapter.Setting setting = nonSystemGroups.get(i); mAdapter.addSetting(setting); } } @@ -161,7 +177,7 @@ public final class AppPermissionsFragmentWear extends TitledSettingsFragment { @Override public void onPause() { super.onPause(); - logToggledGroups(); + logAndClearToggledGroups(); } @Override @@ -247,7 +263,7 @@ public final class AppPermissionsFragmentWear extends TitledSettingsFragment { } } - private void logToggledGroups() { + private void logAndClearToggledGroups() { if (mToggledGroups != null) { String packageName = mAppPermissions.getPackageInfo().packageName; SafetyNetLogger.logPermissionsToggled(packageName, mToggledGroups); diff --git a/src/com/android/packageinstaller/permission/ui/wear/TitledSettingsFragment.java b/src/com/android/packageinstaller/permission/ui/wear/TitledSettingsFragment.java index a738decd..64f42d0d 100644 --- a/src/com/android/packageinstaller/permission/ui/wear/TitledSettingsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/wear/TitledSettingsFragment.java @@ -48,10 +48,9 @@ public abstract class TitledSettingsFragment extends Fragment implements protected TextView mHeader; protected WearableListView mWheel; - private static boolean sInitialized; - private static int sCharLimitShortTitle; - private static int sCharLimitLine; - private static int mChinOffset; + private int mCharLimitShortTitle; + private int mCharLimitLine; + private int mChinOffset; private TextWatcher mHeaderTextWatcher = new TextWatcher() { @Override @@ -64,7 +63,6 @@ public abstract class TitledSettingsFragment extends Fragment implements public void afterTextChanged(Editable editable) { adjustHeaderSize(); } - }; private void adjustHeaderTranslation() { @@ -88,11 +86,8 @@ public abstract class TitledSettingsFragment extends Fragment implements @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - if (!sInitialized) { - sCharLimitShortTitle = getResources().getInteger(R.integer.short_title_length); - sCharLimitLine = getResources().getInteger(R.integer.char_limit_per_line); - sInitialized = true; - } + mCharLimitShortTitle = getResources().getInteger(R.integer.short_title_length); + mCharLimitLine = getResources().getInteger(R.integer.char_limit_per_line); } @Override @@ -142,7 +137,7 @@ public abstract class TitledSettingsFragment extends Fragment implements positionOnCircular(getContext(), mHeader, mWheel); } - public static void positionOnCircular(Context context, View header, final ViewGroup wheel) { + public void positionOnCircular(Context context, View header, final ViewGroup wheel) { if (ViewUtils.getIsCircular(context)) { FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) header.getLayoutParams(); @@ -196,7 +191,7 @@ public abstract class TitledSettingsFragment extends Fragment implements private void adjustHeaderSize() { int length = mHeader.length(); - if (length <= sCharLimitShortTitle) { + if (length <= mCharLimitShortTitle) { mHeader.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimensionPixelSize( R.dimen.setting_short_header_text_size)); @@ -206,7 +201,7 @@ public abstract class TitledSettingsFragment extends Fragment implements R.dimen.setting_long_header_text_size)); } - boolean singleLine = length <= sCharLimitLine; + boolean singleLine = length <= mCharLimitLine; float height = getResources().getDimension(R.dimen.settings_header_base_height); if (!singleLine) { @@ -236,6 +231,4 @@ public abstract class TitledSettingsFragment extends Fragment implements } mHeader.setLayoutParams(params); } - - } diff --git a/src/com/android/packageinstaller/permission/ui/wear/settings/PermissionsSettingsAdapter.java b/src/com/android/packageinstaller/permission/ui/wear/settings/PermissionsSettingsAdapter.java index 1e6a3795..69629f01 100644 --- a/src/com/android/packageinstaller/permission/ui/wear/settings/PermissionsSettingsAdapter.java +++ b/src/com/android/packageinstaller/permission/ui/wear/settings/PermissionsSettingsAdapter.java @@ -18,23 +18,14 @@ package com.android.packageinstaller.permission.ui.wear.settings; import android.content.Context; import android.content.res.Resources; -import android.support.wearable.view.CircledImageView; import android.support.wearable.view.WearableListView; -import android.text.SpannableStringBuilder; -import android.text.Spanned; -import android.text.style.TextAppearanceSpan; -import android.util.Log; -import android.view.Gravity; import android.view.View; import android.view.ViewGroup; -import android.widget.FrameLayout; import android.widget.TextView; import com.android.packageinstaller.R; import com.android.packageinstaller.permission.model.AppPermissionGroup; -import java.util.ArrayList; - public final class PermissionsSettingsAdapter extends SettingsAdapter { private Resources mRes; @@ -45,7 +36,7 @@ public final class PermissionsSettingsAdapter extends SettingsAdapter extends WearableListView.Adapter { private static final String TAG = "SettingsAdapter"; private final Context mContext; - protected static CharSequence generateLabelWithState( - Context context, int labelId, boolean enabled) { - return generateLabelWithState(context, labelId, R.string.generic_enabled, enabled); - } - - protected static CharSequence generateLabelWithState( - Context context, int labelId, int onId, boolean enabled) { - SpannableStringBuilder ssb = new SpannableStringBuilder(context.getString(labelId)); - ssb.append('\n'); - ssb.append( - context.getString(enabled ? onId : R.string.generic_disabled), - new TextAppearanceSpan(context, R.style.TextAppearance_Settings_Label_Large), - Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - return ssb; - } - public static final class Setting { public static final int ID_INVALID = -1; @@ -240,8 +221,8 @@ public class SettingsAdapter extends WearableListView.Adapter { protected class SettingsItem extends FrameLayout implements ExtendedOnCenterProximityListener { - private final CircledImageView mImage; - private final TextView mText; + protected final CircledImageView mImage; + protected final TextView mText; public SettingsItem(Context context) { super(context); -- cgit v1.2.3