summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/widget
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher3/widget')
-rw-r--r--src/com/android/launcher3/widget/WidgetsContainerView.java26
-rw-r--r--src/com/android/launcher3/widget/WidgetsListAdapter.java1
-rw-r--r--src/com/android/launcher3/widget/WidgetsRecyclerView.java72
3 files changed, 81 insertions, 18 deletions
diff --git a/src/com/android/launcher3/widget/WidgetsContainerView.java b/src/com/android/launcher3/widget/WidgetsContainerView.java
index 05e842e71..11c2107f2 100644
--- a/src/com/android/launcher3/widget/WidgetsContainerView.java
+++ b/src/com/android/launcher3/widget/WidgetsContainerView.java
@@ -35,7 +35,6 @@ import com.android.launcher3.DeviceProfile;
import com.android.launcher3.DragController;
import com.android.launcher3.DragSource;
import com.android.launcher3.DropTarget.DragObject;
-import com.android.launcher3.model.WidgetsModel;
import com.android.launcher3.Folder;
import com.android.launcher3.IconCache;
import com.android.launcher3.ItemInfo;
@@ -46,6 +45,7 @@ import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.WidgetPreviewLoader;
import com.android.launcher3.Workspace;
+import com.android.launcher3.model.WidgetsModel;
/**
* The widgets list view container.
@@ -56,8 +56,6 @@ public class WidgetsContainerView extends BaseContainerView
private static final String TAG = "WidgetsContainerView";
private static final boolean DEBUG = false;
- private static final int SPRING_MODE_DELAY_MS = 150;
-
/* Coefficient multiplied to the screen height for preloading widgets. */
private static final int PRELOAD_SCREEN_HEIGHT_MULTIPLE = 1;
@@ -67,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. */
@@ -102,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}
@@ -186,18 +184,11 @@ public class WidgetsContainerView extends BaseContainerView
Log.e(TAG, "Unexpected dragging view: " + v);
}
- // We delay entering spring-loaded mode slightly to make sure the UI
- // thread is free of any work.
- postDelayed(new Runnable() {
- @Override
- public void run() {
- // We don't enter spring-loaded mode if the drag has been cancelled
- if (mLauncher.getDragController().isDragging()) {
- // Go into spring loaded mode (must happen before we startDrag())
- mLauncher.enterSpringLoadedDragMode();
- }
- }
- }, SPRING_MODE_DELAY_MS);
+ // We don't enter spring-loaded mode if the drag has been cancelled
+ if (mLauncher.getDragController().isDragging()) {
+ // Go into spring loaded mode (must happen before we startDrag())
+ mLauncher.enterSpringLoadedDragMode();
+ }
return true;
}
@@ -360,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