1 /*
2  * Copyright (C) 2018 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.systemui.dock;
18 
19 /**
20  * Allows an app to handle dock events.
21  */
22 public interface DockManager {
23 
24     /**
25      * Uninitialized / undocking dock states.
26      */
27     int STATE_NONE = 0;
28     /**
29      * The state for docking
30      */
31     int STATE_DOCKED = 1;
32     /**
33      * The state for docking without showing UI.
34      */
35     int STATE_DOCKED_HIDE = 2;
36 
37     /**
38      * Indicates there's no alignment info. This could happen when the device is unable to decide
39      * its alignment condition.
40      */
41     int ALIGN_STATE_UNKNOWN = -1;
42 
43     /**
44      * Indicates there's no alignment issue.
45      */
46     int ALIGN_STATE_GOOD = 0;
47 
48     /**
49      * Indicates it's slightly not aligned with dock.
50      */
51     int ALIGN_STATE_POOR = 1;
52 
53     /**
54      * Indicates it's not aligned with dock.
55      */
56     int ALIGN_STATE_TERRIBLE = 2;
57 
58     /**
59      * Adds a dock event listener into manager.
60      *
61      * @param callback A {@link DockEventListener} which want to add
62      */
addListener(DockEventListener callback)63     void addListener(DockEventListener callback);
64 
65     /**
66      * Removes the added listener from dock manager
67      *
68      * @param callback A {@link DockEventListener} which want to remove
69      */
removeListener(DockEventListener callback)70     void removeListener(DockEventListener callback);
71 
72     /**
73      * Adds a alignment listener into manager.
74      *
75      * @param listener A {@link AlignmentStateListener} which want to add
76      */
addAlignmentStateListener(AlignmentStateListener listener)77     void addAlignmentStateListener(AlignmentStateListener listener);
78 
79     /**
80      * Removes the added alignment listener from dock manager.
81      *
82      * @param listener A {@link AlignmentStateListener} which want to remove
83      */
removeAlignmentStateListener(AlignmentStateListener listener)84     void removeAlignmentStateListener(AlignmentStateListener listener);
85 
86     /**
87     * Returns true if the device is in docking state.
88     */
isDocked()89     boolean isDocked();
90 
91     /**
92      * Returns true if it is hiding docking UI.
93      */
isHidden()94     boolean isHidden();
95 
96     /**
97      * Listens to dock events.
98      */
99     interface DockEventListener {
100         /**
101          * Override to handle dock events.
102          */
onEvent(int event)103         void onEvent(int event);
104     }
105 
106     /**
107      * Listens to dock alignment state changed.
108      */
109     interface AlignmentStateListener {
110         /**
111          * Override to handle alignment state changes.
112          */
onAlignmentStateChanged(int alignState)113         void onAlignmentStateChanged(int alignState);
114     }
115 }
116