• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.android.dialer.list;
2 
3 import android.view.View;
4 
5 import com.android.dialer.list.PhoneFavoritesTileAdapter.ContactTileRow;
6 
7 import java.util.ArrayList;
8 import java.util.List;
9 
10 /**
11  * Class that handles and combines drag events generated from multiple views, and then fires
12  * off events to any OnDragDropListeners that have registered for callbacks.
13  */
14 public class DragDropController {
15     private List<OnDragDropListener> mOnDragDropListeners = new ArrayList<OnDragDropListener>();
16 
17     /**
18      * @return True if the drag is started, false if the drag is cancelled for some reason.
19      */
handleDragStarted(int x, int y, ContactTileRow tileRow)20     boolean handleDragStarted(int x, int y, ContactTileRow tileRow) {
21         final PhoneFavoriteTileView tileView =
22                 (PhoneFavoriteTileView) tileRow.getViewAtPosition(x, y);
23 
24         final int itemIndex = tileRow.getItemIndex(x, y);
25         if (itemIndex != -1 && !mOnDragDropListeners.isEmpty()) {
26             for (int i = 0; i < mOnDragDropListeners.size(); i++) {
27                 mOnDragDropListeners.get(i).onDragStarted(itemIndex, x, y, tileView);
28             }
29         }
30 
31         return true;
32     }
33 
handleDragHovered(int x, int y, View view)34     public void handleDragHovered(int x, int y, View view) {
35         int itemIndex;
36         if (!(view instanceof ContactTileRow)) {
37             itemIndex = -1;
38         } else {
39             final ContactTileRow tile = (ContactTileRow) view;
40             itemIndex = tile.getItemIndex(x, y);
41         }
42         for (int i = 0; i < mOnDragDropListeners.size(); i++) {
43             mOnDragDropListeners.get(i).onDragHovered(itemIndex, x, y);
44         }
45     }
46 
handleDragFinished(int x, int y, boolean isRemoveView)47     public void handleDragFinished(int x, int y, boolean isRemoveView) {
48         if (isRemoveView) {
49             for (int i = 0; i < mOnDragDropListeners.size(); i++) {
50                 mOnDragDropListeners.get(i).onDroppedOnRemove();
51             }
52         }
53 
54         for (int i = 0; i < mOnDragDropListeners.size(); i++) {
55             mOnDragDropListeners.get(i).onDragFinished(x, y);
56         }
57     }
58 
addOnDragDropListener(OnDragDropListener listener)59     public void addOnDragDropListener(OnDragDropListener listener) {
60         if (!mOnDragDropListeners.contains(listener)) {
61             mOnDragDropListeners.add(listener);
62         }
63     }
64 
removeOnDragDropListener(OnDragDropListener listener)65     public void removeOnDragDropListener(OnDragDropListener listener) {
66         if (mOnDragDropListeners.contains(listener)) {
67             mOnDragDropListeners.remove(listener);
68         }
69     }
70 
71 }