From dcb2b500d4f83495684dc57c031844556b6acfe0 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Mon, 11 Apr 2016 15:26:54 +0000 Subject: [PATCH 1/4] Revert "Dashboard status cards UI." This reverts commit d42e233bf0e5132cc1592fe9932532474e3fb84b. Change-Id: I58b4bcb2e153da26fb043bff2ce58d2c474b567b --- res/layout/dashboard_status_card.xml | 81 ----------------- res/values/dimens.xml | 4 - res/values/strings.xml | 9 -- res/values/styles.xml | 4 - .../dashboard/DashboardStatusAdapter.java | 89 +------------------ .../dashboard/DashboardStatusFragment.java | 1 - .../dashboard/status/StatusCategory.java | 43 --------- 7 files changed, 4 insertions(+), 227 deletions(-) delete mode 100644 res/layout/dashboard_status_card.xml delete mode 100644 src/com/android/settings/dashboard/status/StatusCategory.java diff --git a/res/layout/dashboard_status_card.xml b/res/layout/dashboard_status_card.xml deleted file mode 100644 index babbfcaedac..00000000000 --- a/res/layout/dashboard_status_card.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 6bb9a5f5da3..3cb7eea4fc3 100755 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -302,8 +302,4 @@ 16dp - - 16dp - 14sp - 12sp diff --git a/res/values/strings.xml b/res/values/strings.xml index c12987ddcd5..01b4a902793 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -7380,15 +7380,6 @@ Smallest width - - Connection - - Storage - - Battery - - Security - No installed apps have requested Premium SMS access diff --git a/res/values/styles.xml b/res/values/styles.xml index e711396541a..45d2c1178a6 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -392,8 +392,4 @@ @android:style/TextAppearance.Material.Subhead - - diff --git a/src/com/android/settings/dashboard/DashboardStatusAdapter.java b/src/com/android/settings/dashboard/DashboardStatusAdapter.java index a5829599b14..4c68cb79245 100644 --- a/src/com/android/settings/dashboard/DashboardStatusAdapter.java +++ b/src/com/android/settings/dashboard/DashboardStatusAdapter.java @@ -17,8 +17,6 @@ package com.android.settings.dashboard; import android.content.Context; -import android.graphics.Rect; -import android.support.annotation.LayoutRes; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; @@ -30,7 +28,6 @@ import android.widget.TextView; import com.android.settings.R; import com.android.settings.dashboard.conditional.Condition; import com.android.settings.dashboard.conditional.ConditionAdapterUtils; -import com.android.settings.dashboard.status.StatusCategory; import java.util.ArrayList; import java.util.List; @@ -45,14 +42,10 @@ public final class DashboardStatusAdapter public static final int GRID_COLUMN_COUNT = 2; // Namespaces - private static final int NS_SPACER = 0; - private static final int NS_CONDITION = 1000; - private static final int NS_STATUS = 2000; + private static final int NS_CONDITION = 0; // Item types - private static final int TYPE_SPACER = R.layout.dashboard_spacer; private static final int TYPE_CONDITION = R.layout.condition_card; - private static final int TYPE_STATUS = R.layout.dashboard_status_card; // Multi namespace support. private final Context mContext; @@ -63,16 +56,13 @@ public final class DashboardStatusAdapter // Layout control private final SpanSizeLookup mSpanSizeLookup; - private final ItemDecoration mItemDecoration; private List mConditions; private Condition mExpandedCondition = null; - private List mStatus; public DashboardStatusAdapter(Context context) { mContext = context; mSpanSizeLookup = new SpanSizeLookup(); - mItemDecoration = new ItemDecoration(context); setHasStableIds(true); } @@ -80,7 +70,6 @@ public final class DashboardStatusAdapter public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new ViewHolder( LayoutInflater.from(parent.getContext()).inflate(viewType, parent, false)); - } @Override @@ -95,11 +84,6 @@ public final class DashboardStatusAdapter onExpandClick(v); } }); - break; - case TYPE_STATUS: - final StatusCategory status = (StatusCategory) mItems.get(position); - status.bindToViewHolder(holder); - break; } } @@ -132,10 +116,6 @@ public final class DashboardStatusAdapter return mSpanSizeLookup; } - public ItemDecoration getItemDecoration() { - return mItemDecoration; - } - public void setConditions(List conditions) { mConditions = conditions; recountItems(); @@ -150,7 +130,7 @@ public final class DashboardStatusAdapter return null; } - private void countItem(Object object, @LayoutRes int type, boolean add, int nameSpace) { + private void countItem(Object object, int type, boolean add, int nameSpace) { if (add) { mItems.add(object); mTypes.add(type); @@ -173,16 +153,9 @@ public final class DashboardStatusAdapter private void recountItems() { reset(); - countItem(null, TYPE_SPACER, true /* add */, NS_SPACER); - boolean hasCondition = false; for (int i = 0; mConditions != null && i < mConditions.size(); i++) { boolean shouldShow = mConditions.get(i).shouldShow(); countItem(mConditions.get(i), TYPE_CONDITION, shouldShow, NS_CONDITION); - hasCondition |= shouldShow; - } - countItem(null, TYPE_SPACER, hasCondition, NS_SPACER); - for (int i = 0; mStatus != null && i < mStatus.size(); i++) { - countItem(mStatus.get(i), TYPE_STATUS, true, NS_STATUS); } notifyDataSetChanged(); } @@ -196,16 +169,12 @@ public final class DashboardStatusAdapter notifyDataSetChanged(); } - /** - * {@link GridLayoutManager.SpanSizeLookup} that assigns column span for different item types. - */ private final class SpanSizeLookup extends GridLayoutManager.SpanSizeLookup { @Override public int getSpanSize(int position) { final int viewType = getItemViewType(position); switch (viewType) { case TYPE_CONDITION: - case TYPE_SPACER: return 2; default: return 1; @@ -213,66 +182,16 @@ public final class DashboardStatusAdapter } } - /** - * {@link ItemDecoration} that adds padding around different types of views during layout. - */ - private static final class ItemDecoration extends RecyclerView.ItemDecoration { - - private final int mItemSpacing; - - public ItemDecoration(Context context) { - mItemSpacing = context.getResources() - .getDimensionPixelSize(R.dimen.dashboard_status_item_padding); - } - - @Override - public void getItemOffsets(Rect outRect, View view, RecyclerView parent, - RecyclerView.State state) { - GridLayoutManager.LayoutParams layoutParams - = (GridLayoutManager.LayoutParams) view.getLayoutParams(); - final int position = layoutParams.getViewLayoutPosition(); - if (position == RecyclerView.NO_POSITION) { - super.getItemOffsets(outRect, view, parent, state); - return; - } - final int viewType = parent.getChildViewHolder(view).getItemViewType(); - switch (viewType) { - case TYPE_SPACER: - // No padding for spacer. - super.getItemOffsets(outRect, view, parent, state); - return; - case TYPE_CONDITION: - // Adds padding horizontally. - outRect.left = mItemSpacing; - outRect.right = mItemSpacing; - return; - default: - // Adds padding around status card. - final int spanIndex = layoutParams.getSpanIndex(); - outRect.left = spanIndex == 0 ? mItemSpacing : mItemSpacing / 2; - outRect.right = spanIndex + layoutParams.getSpanSize() == GRID_COLUMN_COUNT - ? mItemSpacing : mItemSpacing / 2; - outRect.top = mItemSpacing; - outRect.bottom = 0; - break; - } - } - } - public static class ViewHolder extends RecyclerView.ViewHolder { - public final TextView title; public final ImageView icon; + public final TextView title; public final TextView summary; - public final ImageView icon2; - public final TextView summary2; public ViewHolder(View itemView) { super(itemView); - title = (TextView) itemView.findViewById(android.R.id.title); icon = (ImageView) itemView.findViewById(android.R.id.icon); + title = (TextView) itemView.findViewById(android.R.id.title); summary = (TextView) itemView.findViewById(android.R.id.summary); - icon2 = (ImageView) itemView.findViewById(android.R.id.icon2); - summary2 = (TextView) itemView.findViewById(android.R.id.text2); } } } \ No newline at end of file diff --git a/src/com/android/settings/dashboard/DashboardStatusFragment.java b/src/com/android/settings/dashboard/DashboardStatusFragment.java index 27b02969cf8..38f06293166 100644 --- a/src/com/android/settings/dashboard/DashboardStatusFragment.java +++ b/src/com/android/settings/dashboard/DashboardStatusFragment.java @@ -71,7 +71,6 @@ public final class DashboardStatusFragment extends InstrumentedFragment mRecyclerView.setHasFixedSize(true); mRecyclerView.setListener(this); mRecyclerView.setAdapter(mAdapter); - mRecyclerView.addItemDecoration(mAdapter.getItemDecoration()); ConditionAdapterUtils.addDismiss(mRecyclerView); return content; } diff --git a/src/com/android/settings/dashboard/status/StatusCategory.java b/src/com/android/settings/dashboard/status/StatusCategory.java deleted file mode 100644 index 5314c774695..00000000000 --- a/src/com/android/settings/dashboard/status/StatusCategory.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.android.settings.dashboard.status; - -import android.annotation.StringRes; -import android.content.Context; -import android.graphics.drawable.Icon; - -import com.android.settings.dashboard.DashboardStatusAdapter; - -/** - * Data item for status category in dashboard. - */ -public final class StatusCategory { - - private final String mTitle; - - public StatusCategory(Context context, @StringRes int titleResId) { - mTitle = context.getString(titleResId); - } - - public void bindToViewHolder(DashboardStatusAdapter.ViewHolder viewHolder) { - viewHolder.title.setText(mTitle); - viewHolder.icon.setImageIcon(getIcon()); - viewHolder.summary.setText(getSummary()); - viewHolder.icon2.setImageIcon(getSecondaryIcon()); - viewHolder.summary2.setText(getSecondarySummary()); - } - - private Icon getIcon() { - return null; - } - - private String getSummary() { - return null; - } - - private Icon getSecondaryIcon() { - return null; - } - - private String getSecondarySummary() { - return null; - } -} From 872c61249b78056f0395e5214edf1566b8f8f440 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Mon, 11 Apr 2016 16:09:39 +0000 Subject: [PATCH 2/4] Revert "Add a RecyclerView adapter for first tab in settings." This reverts commit 44e7be1289d99b4d6720bbd9ac82d23671ea7b69. Change-Id: I1391f41a19526ebd02a0c06e628fb1e18d454a71 --- res/layout/dashboard.xml | 2 +- res/layout/dashboard_container.xml | 8 +- res/layout/dashboard_status.xml | 12 +- .../settings/dashboard/DashboardAdapter.java | 67 +++++- .../dashboard/DashboardStatusAdapter.java | 197 ------------------ .../dashboard/DashboardStatusFragment.java | 72 +------ .../settings/dashboard/DashboardSummary.java | 41 +++- .../conditional/ConditionAdapterUtils.java | 7 +- 8 files changed, 113 insertions(+), 293 deletions(-) delete mode 100644 src/com/android/settings/dashboard/DashboardStatusAdapter.java diff --git a/res/layout/dashboard.xml b/res/layout/dashboard.xml index 6b3d827079b..ebf5204e636 100644 --- a/res/layout/dashboard.xml +++ b/res/layout/dashboard.xml @@ -14,7 +14,7 @@ limitations under the License. --> - + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/pager" + android:layout_width="match_parent" + android:layout_height="match_parent"/> diff --git a/res/layout/dashboard_status.xml b/res/layout/dashboard_status.xml index 8eee08f372d..d9b28630153 100644 --- a/res/layout/dashboard_status.xml +++ b/res/layout/dashboard_status.xml @@ -14,14 +14,8 @@ limitations under the License. --> - + android:layout_height="match_parent"/> \ No newline at end of file diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java index dad18f287b4..292244c492d 100644 --- a/src/com/android/settings/dashboard/DashboardAdapter.java +++ b/src/com/android/settings/dashboard/DashboardAdapter.java @@ -29,12 +29,13 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; - import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.util.ArrayUtils; import com.android.settings.R; import com.android.settings.SettingsActivity; +import com.android.settings.dashboard.conditional.Condition; +import com.android.settings.dashboard.conditional.ConditionAdapterUtils; import com.android.settingslib.SuggestionParser; import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.Tile; @@ -42,11 +43,13 @@ import com.android.settingslib.drawer.Tile; import java.util.ArrayList; import java.util.List; -public class DashboardAdapter extends RecyclerView.Adapter { +public class DashboardAdapter extends RecyclerView.Adapter + implements View.OnClickListener { public static final String TAG = "DashboardAdapter"; private static final int NS_SPACER = 0; private static final int NS_SUGGESTION = 1000; private static final int NS_ITEMS = 2000; + private static final int NS_CONDITION = 3000; private static int SUGGESTION_MODE_DEFAULT = 0; private static int SUGGESTION_MODE_COLLAPSED = 1; @@ -62,6 +65,7 @@ public class DashboardAdapter extends RecyclerView.Adapter mCategories; + private List mConditions; private List mSuggestions; private boolean mIsShowingAll; @@ -70,6 +74,7 @@ public class DashboardAdapter extends RecyclerView.Adapter conditions) { + mConditions = conditions; + recountItems(); + } + public boolean isShowingAll() { return mIsShowingAll; } @@ -141,7 +151,14 @@ public class DashboardAdapter extends RecyclerView.Adapter - implements View.OnClickListener { - - public static final int GRID_COLUMN_COUNT = 2; - - // Namespaces - private static final int NS_CONDITION = 0; - - // Item types - private static final int TYPE_CONDITION = R.layout.condition_card; - - // Multi namespace support. - private final Context mContext; - private final List mItems = new ArrayList<>(); - private final List mTypes = new ArrayList<>(); - private final List mIds = new ArrayList<>(); - private int mId; - - // Layout control - private final SpanSizeLookup mSpanSizeLookup; - - private List mConditions; - private Condition mExpandedCondition = null; - - public DashboardStatusAdapter(Context context) { - mContext = context; - mSpanSizeLookup = new SpanSizeLookup(); - setHasStableIds(true); - } - - @Override - public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - return new ViewHolder( - LayoutInflater.from(parent.getContext()).inflate(viewType, parent, false)); - } - - @Override - public void onBindViewHolder(ViewHolder holder, int position) { - switch (holder.getItemViewType()) { - case TYPE_CONDITION: - ConditionAdapterUtils.bindViews((Condition) mItems.get(position), holder, - mItems.get(position) == mExpandedCondition, this, - new View.OnClickListener() { - @Override - public void onClick(View v) { - onExpandClick(v); - } - }); - } - } - - @Override - public long getItemId(int position) { - return mIds.get(position); - } - - @Override - public int getItemViewType(int position) { - return mTypes.get(position); - } - - @Override - public int getItemCount() { - return mIds.size(); - } - - @Override - public void onClick(View v) { - if (v.getTag() == mExpandedCondition) { - mExpandedCondition.onPrimaryClick(); - } else { - mExpandedCondition = (Condition) v.getTag(); - notifyDataSetChanged(); - } - } - - public SpanSizeLookup getSpanSizeLookup() { - return mSpanSizeLookup; - } - - public void setConditions(List conditions) { - mConditions = conditions; - recountItems(); - } - - public Object getItem(long itemId) { - for (int i = 0; i < mIds.size(); i++) { - if (mIds.get(i) == itemId) { - return mItems.get(i); - } - } - return null; - } - - private void countItem(Object object, int type, boolean add, int nameSpace) { - if (add) { - mItems.add(object); - mTypes.add(type); - // TODO: Counting namespaces for handling of suggestions/conds appearing/disappearing. - mIds.add(mId + nameSpace); - } - mId++; - } - - private void reset() { - mItems.clear(); - mTypes.clear(); - mIds.clear(); - resetCount(); - } - - private void resetCount() { - mId = 0; - } - - private void recountItems() { - reset(); - for (int i = 0; mConditions != null && i < mConditions.size(); i++) { - boolean shouldShow = mConditions.get(i).shouldShow(); - countItem(mConditions.get(i), TYPE_CONDITION, shouldShow, NS_CONDITION); - } - notifyDataSetChanged(); - } - - private void onExpandClick(View v) { - if (v.getTag() == mExpandedCondition) { - mExpandedCondition = null; - } else { - mExpandedCondition = (Condition) v.getTag(); - } - notifyDataSetChanged(); - } - - private final class SpanSizeLookup extends GridLayoutManager.SpanSizeLookup { - @Override - public int getSpanSize(int position) { - final int viewType = getItemViewType(position); - switch (viewType) { - case TYPE_CONDITION: - return 2; - default: - return 1; - } - } - } - - public static class ViewHolder extends RecyclerView.ViewHolder { - public final ImageView icon; - public final TextView title; - public final TextView summary; - - public ViewHolder(View itemView) { - super(itemView); - icon = (ImageView) itemView.findViewById(android.R.id.icon); - title = (TextView) itemView.findViewById(android.R.id.title); - summary = (TextView) itemView.findViewById(android.R.id.summary); - } - } -} \ No newline at end of file diff --git a/src/com/android/settings/dashboard/DashboardStatusFragment.java b/src/com/android/settings/dashboard/DashboardStatusFragment.java index 38f06293166..66106be8f9e 100644 --- a/src/com/android/settings/dashboard/DashboardStatusFragment.java +++ b/src/com/android/settings/dashboard/DashboardStatusFragment.java @@ -17,93 +17,25 @@ package com.android.settings.dashboard; import android.os.Bundle; -import android.support.v7.widget.GridLayoutManager; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import com.android.internal.logging.MetricsLogger; import com.android.settings.InstrumentedFragment; import com.android.settings.R; -import com.android.settings.dashboard.conditional.Condition; -import com.android.settings.dashboard.conditional.ConditionAdapterUtils; -import com.android.settings.dashboard.conditional.ConditionManager; -import com.android.settings.dashboard.conditional.FocusRecyclerView; /** * Dashboard fragment for showing status and suggestions. */ -public final class DashboardStatusFragment extends InstrumentedFragment - implements ConditionManager.ConditionListener, FocusRecyclerView.FocusListener { - - private static final String TAG = "DashboardStatus"; - private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); - - private ConditionManager mConditionManager; - private DashboardStatusAdapter mAdapter; - private FocusRecyclerView mRecyclerView; - private GridLayoutManager mLayoutManager; +public final class DashboardStatusFragment extends InstrumentedFragment { @Override protected int getMetricsCategory() { return DASHBOARD_STATUS; } - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - mConditionManager = ConditionManager.get(getContext()); - } - @Override public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { - final View content = inflater.inflate(R.layout.dashboard_status, parent, false); - mRecyclerView = - (FocusRecyclerView) content.findViewById(R.id.dashboard_status_recycler_view); - mAdapter = new DashboardStatusAdapter(getContext()); - mAdapter.setConditions(mConditionManager.getConditions()); - mLayoutManager = new GridLayoutManager( - getContext(), DashboardStatusAdapter.GRID_COLUMN_COUNT); - mLayoutManager.setOrientation(GridLayoutManager.VERTICAL); - mLayoutManager.setSpanSizeLookup(mAdapter.getSpanSizeLookup()); - mRecyclerView.setLayoutManager(mLayoutManager); - mRecyclerView.setHasFixedSize(true); - mRecyclerView.setListener(this); - mRecyclerView.setAdapter(mAdapter); - ConditionAdapterUtils.addDismiss(mRecyclerView); - return content; - } - - @Override - public void onResume() { - super.onResume(); - for (Condition c : mConditionManager.getVisibleConditions()) { - MetricsLogger.visible(getContext(), c.getMetricsConstant()); - } - } - - @Override - public void onPause() { - super.onPause(); - for (Condition c : mConditionManager.getVisibleConditions()) { - MetricsLogger.hidden(getContext(), c.getMetricsConstant()); - } - } - - @Override - public void onWindowFocusChanged(boolean hasWindowFocus) { - if (hasWindowFocus) { - mConditionManager.addListener(this); - mConditionManager.refreshAll(); - } else { - mConditionManager.remListener(this); - } - } - - @Override - public void onConditionsChanged() { - if (DEBUG) Log.d(TAG, "onConditionsChanged"); - mAdapter.setConditions(mConditionManager.getConditions()); + return inflater.inflate(R.layout.dashboard_status, parent, false); } } diff --git a/src/com/android/settings/dashboard/DashboardSummary.java b/src/com/android/settings/dashboard/DashboardSummary.java index 36cbfddc080..b98b34d7e60 100644 --- a/src/com/android/settings/dashboard/DashboardSummary.java +++ b/src/com/android/settings/dashboard/DashboardSummary.java @@ -19,7 +19,6 @@ package com.android.settings.dashboard; import android.content.Context; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -31,7 +30,10 @@ import com.android.settings.InstrumentedFragment; import com.android.settings.R; import com.android.settings.Settings; import com.android.settings.SettingsActivity; - +import com.android.settings.dashboard.conditional.Condition; +import com.android.settings.dashboard.conditional.ConditionAdapterUtils; +import com.android.settings.dashboard.conditional.ConditionManager; +import com.android.settings.dashboard.conditional.FocusRecyclerView; import com.android.settingslib.SuggestionParser; import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.SettingsDrawerActivity; @@ -40,7 +42,8 @@ import com.android.settingslib.drawer.Tile; import java.util.List; public class DashboardSummary extends InstrumentedFragment - implements SettingsDrawerActivity.CategoryListener { + implements SettingsDrawerActivity.CategoryListener, ConditionManager.ConditionListener, + FocusRecyclerView.FocusListener { public static final boolean DEBUG = false; private static final boolean DEBUG_TIMING = false; private static final String TAG = "DashboardSummary"; @@ -58,9 +61,10 @@ public class DashboardSummary extends InstrumentedFragment private static final String EXTRA_SCROLL_POSITION = "scroll_position"; - private RecyclerView mDashboard; + private FocusRecyclerView mDashboard; private DashboardAdapter mAdapter; private SummaryLoader mSummaryLoader; + private ConditionManager mConditionManager; private SuggestionParser mSuggestionParser; private LinearLayoutManager mLayoutManager; @@ -80,7 +84,7 @@ public class DashboardSummary extends InstrumentedFragment if (DEBUG_TIMING) Log.d(TAG, "onCreate took " + (System.currentTimeMillis() - startTime) + " ms"); Context context = getContext(); - + mConditionManager = ConditionManager.get(context); mSuggestionParser = new SuggestionParser(context, context.getSharedPreferences(SUGGESTIONS, 0), R.xml.suggestion_ordering); } @@ -97,6 +101,9 @@ public class DashboardSummary extends InstrumentedFragment ((SettingsDrawerActivity) getActivity()).addCategoryListener(this); mSummaryLoader.setListening(true); + for (Condition c : mConditionManager.getVisibleConditions()) { + MetricsLogger.visible(getContext(), c.getMetricsConstant()); + } for (Tile suggestion : mSuggestionParser.getSuggestions()) { MetricsLogger.action(getContext(), MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, DashboardAdapter.getSuggestionIdentifier(getContext(), suggestion)); @@ -109,12 +116,25 @@ public class DashboardSummary extends InstrumentedFragment ((SettingsDrawerActivity) getActivity()).remCategoryListener(this); mSummaryLoader.setListening(false); + for (Condition c : mConditionManager.getVisibleConditions()) { + MetricsLogger.hidden(getContext(), c.getMetricsConstant()); + } for (Tile suggestion : mSuggestionParser.getSuggestions()) { MetricsLogger.action(getContext(), MetricsEvent.ACTION_HIDE_SETTINGS_SUGGESTION, DashboardAdapter.getSuggestionIdentifier(getContext(), suggestion)); } } + @Override + public void onWindowFocusChanged(boolean hasWindowFocus) { + if (hasWindowFocus) { + mConditionManager.addListener(this); + mConditionManager.refreshAll(); + } else { + mConditionManager.remListener(this); + } + } + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -130,7 +150,7 @@ public class DashboardSummary extends InstrumentedFragment @Override public void onViewCreated(View view, Bundle bundle) { - mDashboard = (RecyclerView) view.findViewById(R.id.dashboard_container); + mDashboard = (FocusRecyclerView) view.findViewById(R.id.dashboard_container); mLayoutManager = new LinearLayoutManager(getContext()); mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); if (bundle != null) { @@ -140,10 +160,13 @@ public class DashboardSummary extends InstrumentedFragment mDashboard.setLayoutManager(mLayoutManager); mDashboard.setHasFixedSize(true); mDashboard.addItemDecoration(new DashboardDecorator(getContext())); + mDashboard.setListener(this); mAdapter = new DashboardAdapter(getContext()); + mAdapter.setConditions(mConditionManager.getConditions()); mAdapter.setSuggestions(mSuggestionParser); mDashboard.setAdapter(mAdapter); mSummaryLoader.setAdapter(mAdapter); + ConditionAdapterUtils.addDismiss(mDashboard); rebuildUI(); } @@ -171,4 +194,10 @@ public class DashboardSummary extends InstrumentedFragment public void onCategoriesChanged() { rebuildUI(); } + + @Override + public void onConditionsChanged() { + Log.d(TAG, "onConditionsChanged"); + mAdapter.setConditions(mConditionManager.getConditions()); + } } diff --git a/src/com/android/settings/dashboard/conditional/ConditionAdapterUtils.java b/src/com/android/settings/dashboard/conditional/ConditionAdapterUtils.java index c83040739ca..a5d0701a83e 100644 --- a/src/com/android/settings/dashboard/conditional/ConditionAdapterUtils.java +++ b/src/com/android/settings/dashboard/conditional/ConditionAdapterUtils.java @@ -25,11 +25,10 @@ import android.view.View.OnLayoutChangeListener; import android.view.ViewGroup.LayoutParams; import android.widget.Button; import android.widget.ImageView; - import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.settings.R; -import com.android.settings.dashboard.DashboardStatusAdapter; +import com.android.settings.dashboard.DashboardAdapter; public class ConditionAdapterUtils { @@ -50,7 +49,7 @@ public class ConditionAdapterUtils { @Override public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { - DashboardStatusAdapter adapter = (DashboardStatusAdapter) recyclerView.getAdapter(); + DashboardAdapter adapter = (DashboardAdapter) recyclerView.getAdapter(); Object item = adapter.getItem(viewHolder.getItemId()); if (item instanceof Condition) { ((Condition) item).silence(); @@ -62,7 +61,7 @@ public class ConditionAdapterUtils { } public static void bindViews(final Condition condition, - DashboardStatusAdapter.ViewHolder view, boolean isExpanded, + DashboardAdapter.DashboardItemHolder view, boolean isExpanded, View.OnClickListener onClickListener, View.OnClickListener onExpandListener) { View card = view.itemView.findViewById(R.id.content); card.setTag(condition); From 3645373b6ff527402a2fe61dfd5573a5845bbc42 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Mon, 11 Apr 2016 09:17:57 -0700 Subject: [PATCH 3/4] Remove DashboardStatusFragment and hide sliding tab layout. Bug: 28090184 Change-Id: I34ff46d0f5ba87c824d1484f1018fad154696e15 --- res/layout/dashboard_status.xml | 21 ---------- res/values/strings.xml | 2 - .../settings/InstrumentedFragment.java | 1 - .../dashboard/DashboardContainerFragment.java | 13 +----- .../dashboard/DashboardStatusFragment.java | 41 ------------------- 5 files changed, 2 insertions(+), 76 deletions(-) delete mode 100644 res/layout/dashboard_status.xml delete mode 100644 src/com/android/settings/dashboard/DashboardStatusFragment.java diff --git a/res/layout/dashboard_status.xml b/res/layout/dashboard_status.xml deleted file mode 100644 index d9b28630153..00000000000 --- a/res/layout/dashboard_status.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index 01b4a902793..f43c84bc63c 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -7369,8 +7369,6 @@ Control lock screen notifications Show or hide notification content - - Status All diff --git a/src/com/android/settings/InstrumentedFragment.java b/src/com/android/settings/InstrumentedFragment.java index ee060343bfd..bb6a1bad5b9 100644 --- a/src/com/android/settings/InstrumentedFragment.java +++ b/src/com/android/settings/InstrumentedFragment.java @@ -31,7 +31,6 @@ public abstract class InstrumentedFragment extends PreferenceFragment { public static final int DASHBOARD_CONTAINER = UNDECLARED + 1; // Used by PreferenceActivity for the dummy fragment it adds, no useful data here. public static final int PREFERENCE_ACTIVITY_FRAGMENT = UNDECLARED + 2; - public static final int DASHBOARD_STATUS = UNDECLARED + 3; /** * Declare the view of this category. diff --git a/src/com/android/settings/dashboard/DashboardContainerFragment.java b/src/com/android/settings/dashboard/DashboardContainerFragment.java index 44129c6fa3e..5d8f092868b 100644 --- a/src/com/android/settings/dashboard/DashboardContainerFragment.java +++ b/src/com/android/settings/dashboard/DashboardContainerFragment.java @@ -33,15 +33,13 @@ import com.android.settings.InstrumentedFragment; import com.android.settings.R; import com.android.settings.widget.SlidingTabLayout; import com.android.settingslib.HelpUtils; -import com.android.settingslib.drawer.SettingsDrawerActivity; /** * Container for Dashboard fragments. */ public final class DashboardContainerFragment extends InstrumentedFragment { - private static final int INDEX_BRIEF_FRAGMENT = 0; - private static final int INDEX_SUMMARY_FRAGMENT = 1; + private static final int INDEX_SUMMARY_FRAGMENT = 0; private ViewPager mViewPager; private View mHeaderView; @@ -73,9 +71,6 @@ public final class DashboardContainerFragment extends InstrumentedFragment { public void onResume() { super.onResume(); final Activity activity = getActivity(); - if (activity instanceof SettingsDrawerActivity) { - ((SettingsDrawerActivity) getActivity()).setContentHeaderView(mHeaderView); - } } @Override @@ -98,8 +93,6 @@ public final class DashboardContainerFragment extends InstrumentedFragment { @Override public CharSequence getPageTitle(int position) { switch (position) { - case INDEX_BRIEF_FRAGMENT: - return mContext.getString(R.string.page_tab_title_status); case INDEX_SUMMARY_FRAGMENT: return mContext.getString(R.string.page_tab_title_summary); } @@ -109,8 +102,6 @@ public final class DashboardContainerFragment extends InstrumentedFragment { @Override public Fragment getItem(int position) { switch (position) { - case INDEX_BRIEF_FRAGMENT: - return new DashboardStatusFragment(); case INDEX_SUMMARY_FRAGMENT: return new DashboardSummary(); default: @@ -123,7 +114,7 @@ public final class DashboardContainerFragment extends InstrumentedFragment { @Override public int getCount() { - return 2; + return 1; } } } diff --git a/src/com/android/settings/dashboard/DashboardStatusFragment.java b/src/com/android/settings/dashboard/DashboardStatusFragment.java deleted file mode 100644 index 66106be8f9e..00000000000 --- a/src/com/android/settings/dashboard/DashboardStatusFragment.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2016 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.dashboard; - -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.android.settings.InstrumentedFragment; -import com.android.settings.R; - -/** - * Dashboard fragment for showing status and suggestions. - */ -public final class DashboardStatusFragment extends InstrumentedFragment { - - @Override - protected int getMetricsCategory() { - return DASHBOARD_STATUS; - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { - return inflater.inflate(R.layout.dashboard_status, parent, false); - } -} From 4bffbdb928a5cad83387f18203b36115b47401dc Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Mon, 11 Apr 2016 16:25:04 +0000 Subject: [PATCH 4/4] Revert "Add suggestion carousel view and dependencies to settings" This reverts commit 0050ac0bb759d15539c7551ea6149e521ad0cc08. Change-Id: Ic61137bae0fa1a6de5ba4970e8a3a3b4fe0469a3 --- Android.mk | 6 +- res/layout/suggestion_carousel_card_view.xml | 38 ------------ .../dashboard/SuggestionCarouselAdapter.java | 59 ------------------- 3 files changed, 2 insertions(+), 101 deletions(-) delete mode 100644 res/layout/suggestion_carousel_card_view.xml delete mode 100644 src/com/android/settings/dashboard/SuggestionCarouselAdapter.java diff --git a/Android.mk b/Android.mk index f45713d8d48..ea068af26dc 100644 --- a/Android.mk +++ b/Android.mk @@ -9,7 +9,6 @@ LOCAL_STATIC_JAVA_LIBRARIES := \ android-support-v7-preference \ android-support-v7-appcompat \ android-support-v14-preference \ - android-support-v7-cardview \ jsr305 LOCAL_MODULE_TAGS := optional @@ -22,8 +21,7 @@ LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res \ frameworks/support/v7/preference/res \ frameworks/support/v14/preference/res \ frameworks/support/v7/appcompat/res \ - frameworks/support/v7/recyclerview/res \ - frameworks/support/v7/cardview/res + frameworks/support/v7/recyclerview/res LOCAL_PACKAGE_NAME := Settings LOCAL_CERTIFICATE := platform @@ -32,7 +30,7 @@ LOCAL_PRIVILEGED_MODULE := true LOCAL_PROGUARD_FLAG_FILES := proguard.flags LOCAL_AAPT_FLAGS := --auto-add-overlay \ - --extra-packages android.support.v7.preference:android.support.v14.preference:android.support.v17.preference:android.support.v7.appcompat:android.support.v7.recyclerview:android.support.v7.cardview + --extra-packages android.support.v7.preference:android.support.v14.preference:android.support.v17.preference:android.support.v7.appcompat:android.support.v7.recyclerview ifneq ($(INCREMENTAL_BUILDS),) LOCAL_PROGUARD_ENABLED := disabled diff --git a/res/layout/suggestion_carousel_card_view.xml b/res/layout/suggestion_carousel_card_view.xml deleted file mode 100644 index d407a1946ff..00000000000 --- a/res/layout/suggestion_carousel_card_view.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - diff --git a/src/com/android/settings/dashboard/SuggestionCarouselAdapter.java b/src/com/android/settings/dashboard/SuggestionCarouselAdapter.java deleted file mode 100644 index 340ecdea04f..00000000000 --- a/src/com/android/settings/dashboard/SuggestionCarouselAdapter.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (C) 2016 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.dashboard; - -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import com.android.settings.R; - -public final class SuggestionCarouselAdapter - extends RecyclerView.Adapter { - - @Override - public SuggestionCarouselViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - final View itemView = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.suggestion_carousel_card_view, parent, - false /* attachToRoot */); - return new SuggestionCarouselViewHolder(itemView); - } - - @Override - public void onBindViewHolder(SuggestionCarouselViewHolder holder, int position) { - } - - @Override - public int getItemCount() { - return 0; - } - - public final class SuggestionCarouselViewHolder extends RecyclerView.ViewHolder { - - public ImageView mImageView; - public TextView mTextView; - - public SuggestionCarouselViewHolder(View itemView) { - super(itemView); - mImageView = (ImageView) itemView.findViewById(R.id.image); - mTextView = (TextView) itemView.findViewById(R.id.title); - } - } -}