1ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian/*
2ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Copyright (C) 2016 The Android Open Source Project
3ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian *
4ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Licensed under the Apache License, Version 2.0 (the "License");
5ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * you may not use this file except in compliance with the License.
6ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * You may obtain a copy of the License at
7ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian *
8ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian *      http://www.apache.org/licenses/LICENSE-2.0
9ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian *
10ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Unless required by applicable law or agreed to in writing, software
11ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * distributed under the License is distributed on an "AS IS" BASIS,
12ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * See the License for the specific language governing permissions and
14ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * limitations under the License.
15ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian */
16ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian
17ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianpackage com.android.dialer.util;
18ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian
19ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.graphics.Point;
20ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian
21ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian/**
22ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Singleton class to keep track of where the user last touched the screen.
23ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian *
24ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * <p>Used to pass on to the InCallUI for animation.
25ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian */
26ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianpublic class TouchPointManager {
27ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian
28ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian  public static final String TOUCH_POINT = "touchPoint";
29ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian
30183cb71663320f16149d83eeebaff7795a4b55f2linyuh  private static TouchPointManager instance = new TouchPointManager();
31ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian
32183cb71663320f16149d83eeebaff7795a4b55f2linyuh  private Point point = new Point();
33ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian
3410b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian  /** Private constructor. Instance should only be acquired through getRunningInstance(). */
35ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian  private TouchPointManager() {}
36ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian
37ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian  public static TouchPointManager getInstance() {
38183cb71663320f16149d83eeebaff7795a4b55f2linyuh    return instance;
39ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian  }
40ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian
41ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian  public Point getPoint() {
42183cb71663320f16149d83eeebaff7795a4b55f2linyuh    return point;
43ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian  }
44ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian
45ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian  public void setPoint(int x, int y) {
46183cb71663320f16149d83eeebaff7795a4b55f2linyuh    point.set(x, y);
47ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian  }
48ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian
49ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian  /**
50ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian   * When a point is initialized, its value is (0,0). Since it is highly unlikely a user will touch
51ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian   * at that exact point, if the point in TouchPointManager is (0,0), it is safe to assume that the
52ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian   * TouchPointManager has not yet collected a touch.
53ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian   *
54ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian   * @return True if there is a valid point saved. Define a valid point as any point that is not
55ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian   *     (0,0).
56ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian   */
57ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian  public boolean hasValidPoint() {
58183cb71663320f16149d83eeebaff7795a4b55f2linyuh    return point.x != 0 || point.y != 0;
59ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian  }
60ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian}
61