1 /*
2  * Copyright (C) 2020 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.deskclock.events
18 
19 import androidx.annotation.StringRes
20 
21 import com.android.deskclock.R
22 import com.android.deskclock.controller.Controller
23 
24 /**
25  * This thin layer over [Controller.sendEvent] eases the API usage.
26  */
27 object Events {
28     /** Extra describing the entity responsible for the action being performed.  */
29     const val EXTRA_EVENT_LABEL = "com.android.deskclock.extra.EVENT_LABEL"
30 
31     /**
32      * Tracks an alarm event.
33      *
34      * @param action resource id of event action
35      * @param label resource id of event label
36      */
37     @JvmStatic
sendAlarmEventnull38     fun sendAlarmEvent(@StringRes action: Int, @StringRes label: Int) {
39         sendEvent(R.string.category_alarm, action, label)
40     }
41 
42     /**
43      * Tracks a clock event.
44      *
45      * @param action resource id of event action
46      * @param label resource id of event label
47      */
48     @JvmStatic
sendClockEventnull49     fun sendClockEvent(@StringRes action: Int, @StringRes label: Int) {
50         sendEvent(R.string.category_clock, action, label)
51     }
52 
53     /**
54      * Tracks a timer event.
55      *
56      * @param action resource id of event action
57      * @param label resource id of event label
58      */
59     @JvmStatic
sendTimerEventnull60     fun sendTimerEvent(@StringRes action: Int, @StringRes label: Int) {
61         sendEvent(R.string.category_timer, action, label)
62     }
63 
64     /**
65      * Tracks a stopwatch event.
66      *
67      * @param action resource id of event action
68      * @param label resource id of event label
69      */
70     @JvmStatic
sendStopwatchEventnull71     fun sendStopwatchEvent(@StringRes action: Int, @StringRes label: Int) {
72         sendEvent(R.string.category_stopwatch, action, label)
73     }
74 
75     /**
76      * Tracks a screensaver event.
77      *
78      * @param action resource id of event action
79      * @param label resource id of event label
80      */
81     @JvmStatic
sendScreensaverEventnull82     fun sendScreensaverEvent(@StringRes action: Int, @StringRes label: Int) {
83         sendEvent(R.string.category_screensaver, action, label)
84     }
85 
86     /**
87      * Tracks an event. Events have a category, action, label and value. This
88      * method can be used to track events such as button presses or other user
89      * interactions with your application (value is not used in this app).
90      *
91      * @param category resource id of event category
92      * @param action resource id of event action
93      * @param label resource id of event label
94      */
95     @JvmStatic
sendEventnull96     fun sendEvent(@StringRes category: Int, @StringRes action: Int, @StringRes label: Int) {
97         Controller.getController().sendEvent(category, action, label)
98     }
99 }