summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/widget
diff options
context:
space:
mode:
authorHyunyoung Song <hyunyoungs@google.com>2015-05-29 12:00:44 -0700
committerHyunyoung Song <hyunyoungs@google.com>2015-05-29 12:00:44 -0700
commitac5f6af1488ec1cf0b73aa0848a675764c2f652b (patch)
tree9d26eeaef26f24aa5de18e382c299cb5a86f0b0a /src/com/android/launcher3/widget
parent0b06875971fffd232ce2dea78cd29145edc5bab4 (diff)
downloadandroid_packages_apps_Trebuchet-ac5f6af1488ec1cf0b73aa0848a675764c2f652b.tar.gz
android_packages_apps_Trebuchet-ac5f6af1488ec1cf0b73aa0848a675764c2f652b.tar.bz2
android_packages_apps_Trebuchet-ac5f6af1488ec1cf0b73aa0848a675764c2f652b.zip
Move fast scrolling logic to BaseRecyclerView
- This change has no effect on actual functionality but to make it easier for widget tray to inherit the goodness of the 1) fast scroller functionality 2) unify the scroll look and feel with the all apps view b/21375339 Change-Id: Ib859b1c3352c0b69f16549ded8f20eb82cf58ba8
Diffstat (limited to 'src/com/android/launcher3/widget')
-rw-r--r--src/com/android/launcher3/widget/WidgetsContainerView.java5
-rw-r--r--src/com/android/launcher3/widget/WidgetsListAdapter.java1
-rw-r--r--src/com/android/launcher3/widget/WidgetsRecyclerView.java72
3 files changed, 75 insertions, 3 deletions
diff --git a/src/com/android/launcher3/widget/WidgetsContainerView.java b/src/com/android/launcher3/widget/WidgetsContainerView.java
index 778cf9ef1..11c2107f2 100644
--- a/src/com/android/launcher3/widget/WidgetsContainerView.java
+++ b/src/com/android/launcher3/widget/WidgetsContainerView.java
@@ -65,7 +65,7 @@ public class WidgetsContainerView extends BaseContainerView
private IconCache mIconCache;
/* Recycler view related member variables */
- private RecyclerView mView;
+ private WidgetsRecyclerView mView;
private WidgetsListAdapter mAdapter;
/* Touch handling related member variables. */
@@ -100,7 +100,7 @@ public class WidgetsContainerView extends BaseContainerView
@Override
protected void onFinishInflate() {
- mView = (RecyclerView) findViewById(R.id.widgets_list_view);
+ mView = (WidgetsRecyclerView) findViewById(R.id.widgets_list_view);
mView.setAdapter(mAdapter);
// This extends the layout space so that preloading happen for the {@link RecyclerView}
@@ -351,6 +351,7 @@ public class WidgetsContainerView extends BaseContainerView
* Initialize the widget data model.
*/
public void addWidgets(WidgetsModel model) {
+ mView.setWidgets(model);
mAdapter.setWidgetsModel(model);
mAdapter.notifyDataSetChanged();
}
diff --git a/src/com/android/launcher3/widget/WidgetsListAdapter.java b/src/com/android/launcher3/widget/WidgetsListAdapter.java
index 7439a44f8..e82c0a631 100644
--- a/src/com/android/launcher3/widget/WidgetsListAdapter.java
+++ b/src/com/android/launcher3/widget/WidgetsListAdapter.java
@@ -32,7 +32,6 @@ import android.widget.LinearLayout;
import com.android.launcher3.BubbleTextView;
import com.android.launcher3.DeviceProfile;
-import com.android.launcher3.IconCache;
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherAppState;
import com.android.launcher3.LauncherAppWidgetProviderInfo;
diff --git a/src/com/android/launcher3/widget/WidgetsRecyclerView.java b/src/com/android/launcher3/widget/WidgetsRecyclerView.java
index 31ef5d6fc..bef255908 100644
--- a/src/com/android/launcher3/widget/WidgetsRecyclerView.java
+++ b/src/com/android/launcher3/widget/WidgetsRecyclerView.java
@@ -17,14 +17,23 @@
package com.android.launcher3.widget;
import android.content.Context;
+import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
+import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
+import android.view.MotionEvent;
+
import com.android.launcher3.BaseRecyclerView;
+import com.android.launcher3.model.WidgetsModel;
/**
* The widgets recycler view.
*/
public class WidgetsRecyclerView extends BaseRecyclerView {
+ private WidgetsModel mWidgets;
+ private Rect mBackgroundPadding = new Rect();
+
public WidgetsRecyclerView(Context context) {
this(context, null);
}
@@ -37,4 +46,67 @@ public class WidgetsRecyclerView extends BaseRecyclerView {
super(context, attrs, defStyleAttr);
}
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+ addOnItemTouchListener(this);
+ }
+
+ public void updateBackgroundPadding(Drawable background) {
+ background.getPadding(mBackgroundPadding);
+ }
+
+ /**
+ * Sets the widget model in this view, used to determine the fast scroll position.
+ */
+ public void setWidgets(WidgetsModel widgets) {
+ mWidgets = widgets;
+ }
+
+ /**
+ * Maps the touch (from 0..1) to the adapter position that should be visible.
+ */
+ @Override
+ public String scrollToPositionAtProgress(float touchFraction) {
+ // Ensure that we have any sections
+ return "";
+ }
+
+ /**
+ * Updates the bounds for the scrollbar.
+ */
+ @Override
+ public void updateVerticalScrollbarBounds() {
+ int rowCount = mWidgets.getPackageSize();
+
+ // Skip early if there are no items.
+ if (rowCount == 0) {
+ verticalScrollbarBounds.setEmpty();
+ return;
+ }
+
+ int x, y;
+ getCurScrollState(scrollPosState);
+ if (scrollPosState.rowIndex < 0) {
+ verticalScrollbarBounds.setEmpty();
+ }
+ // TODO
+ }
+
+ /**
+ * Returns the current scroll state.
+ */
+ private void getCurScrollState(ScrollPositionState stateOut) {
+ stateOut.rowIndex = -1;
+ stateOut.rowTopOffset = -1;
+ stateOut.rowHeight = -1;
+
+ int rowCount = mWidgets.getPackageSize();
+
+ // Return early if there are no items
+ if (rowCount == 0) {
+ return;
+ }
+ // TODO
+ }
} \ No newline at end of file