169c182afb0e6d82a341a28b4317aa703af768906Gary Maipackage com.android.contacts.interactions;
2f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen
3f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chenimport android.graphics.Point;
4f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen
5f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen/**
6f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen * Singleton class to keep track of where the user last touched the screen.
7f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen *
8f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen * Used to pass on to the InCallUI for animation.
9f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen */
10f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chenpublic class TouchPointManager {
11f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen    public static final String TOUCH_POINT = "touchPoint";
12f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen
13f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen    private static TouchPointManager sInstance = new TouchPointManager();
14f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen
15f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen    private Point mPoint = new Point();
16f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen
17f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen    /**
18f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen     * Private constructor.  Instance should only be acquired through getInstance().
19f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen     */
20f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen    private TouchPointManager() {
21f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen    }
22f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen
23f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen    public static TouchPointManager getInstance() {
24f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen        return sInstance;
25f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen    }
26f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen
27f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen    public Point getPoint() {
28f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen        return mPoint;
29f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen    }
30f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen
31f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen    public void setPoint(int x, int y) {
32f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen        mPoint.set(x, y);
33f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen    }
34aca95b8c684a4cdc85faad878c8609aaebcabc33Nancy Chen
35aca95b8c684a4cdc85faad878c8609aaebcabc33Nancy Chen    /**
36aca95b8c684a4cdc85faad878c8609aaebcabc33Nancy Chen     * When a point is initialized, its value is (0,0). Since it is highly unlikely a user will
37aca95b8c684a4cdc85faad878c8609aaebcabc33Nancy Chen     * touch at that exact point, if the point in TouchPointManager is (0,0), it is safe to assume
38aca95b8c684a4cdc85faad878c8609aaebcabc33Nancy Chen     * that the TouchPointManager has not yet collected a touch.
39aca95b8c684a4cdc85faad878c8609aaebcabc33Nancy Chen     *
40aca95b8c684a4cdc85faad878c8609aaebcabc33Nancy Chen     * @return True if there is a valid point saved. Define a valid point as any point that is
41aca95b8c684a4cdc85faad878c8609aaebcabc33Nancy Chen     * not (0,0).
42aca95b8c684a4cdc85faad878c8609aaebcabc33Nancy Chen     */
43aca95b8c684a4cdc85faad878c8609aaebcabc33Nancy Chen    public boolean hasValidPoint() {
44aca95b8c684a4cdc85faad878c8609aaebcabc33Nancy Chen        return mPoint.x != 0 || mPoint.y != 0;
45aca95b8c684a4cdc85faad878c8609aaebcabc33Nancy Chen    }
46f4474e6a054dad17a55291ac26dc294b874354c4Nancy Chen}
47