1871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson/*
2871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson * Copyright (C) 2012 The Android Open Source Project
3871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson *
4871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson * Licensed under the Apache License, Version 2.0 (the "License");
5871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson * you may not use this file except in compliance with the License.
6871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson * You may obtain a copy of the License at
7871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson *
8871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson *      http://www.apache.org/licenses/LICENSE-2.0
9871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson *
10871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson * Unless required by applicable law or agreed to in writing, software
11871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson * distributed under the License is distributed on an "AS IS" BASIS,
12871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson * See the License for the specific language governing permissions and
14871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson * limitations under the License.
15871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson */
16871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson
17871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelsonpackage com.android.deskclock.timer;
18871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson
19871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelsonimport java.util.ArrayList;
20871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelsonimport java.util.Iterator;
21871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson
22871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelsonpublic class Timers {
23d5202b46aaf96b1d217cedba645f28aa1fee04c6Robyn Coultas    // Logging shared by TimerReceiver and TimerAlertFullScreen
24f8d45553007a3447953eb3bc40715d7e80a8ba89Isaac Katzenelson    public static final boolean LOGGING = true;
25d5202b46aaf96b1d217cedba645f28aa1fee04c6Robyn Coultas
26871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson    // Private actions processed by the receiver
27871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson    public static final String START_TIMER = "start_timer";
28871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson    public static final String DELETE_TIMER = "delete_timer";
29871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson    public static final String TIMES_UP = "times_up";
30871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson    public static final String TIMER_RESET = "timer_reset";
31871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson    public static final String TIMER_STOP = "timer_stop";
32871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson    public static final String TIMER_DONE = "timer_done";
33871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson    public static final String TIMER_UPDATE = "timer_update";
34871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson
35871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson    public static final String TIMER_INTENT_EXTRA = "timer.intent.extra";
36871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson
371ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson    public static final String NOTIF_IN_USE_SHOW = "notif_in_use_show";
381ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson    public static final String NOTIF_IN_USE_CANCEL = "notif_in_use_cancel";
391ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson    public static final String NOTIF_APP_OPEN = "notif_app_open";
401ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson    public static final String FROM_NOTIFICATION = "from_notification";
41d5202b46aaf96b1d217cedba645f28aa1fee04c6Robyn Coultas    public static final String NOTIF_TIMES_UP_STOP = "notif_times_up_stop";
42d5202b46aaf96b1d217cedba645f28aa1fee04c6Robyn Coultas    public static final String NOTIF_TIMES_UP_PLUS_ONE = "notif_times_up_plus_one";
43d5202b46aaf96b1d217cedba645f28aa1fee04c6Robyn Coultas    public static final String NOTIF_TIMES_UP_SHOW = "notif_times_up_show";
44d5202b46aaf96b1d217cedba645f28aa1fee04c6Robyn Coultas    public static final String NOTIF_TIMES_UP_CANCEL = "notif_times_up_cancel";
45feabb7a335fb8c7644783d2dca53b864009054d8Robyn Coultas    public static final String FROM_ALERT = "from_alert";
461ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson
47647353dd437f8c075aa96f3b98efb84442e8b7bfRobyn Coultas    public static final String TIMESUP_MODE = "times_up";
481ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson
49871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson    public static TimerObj findTimer(ArrayList<TimerObj> timers, int timerId) {
50871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson        Iterator<TimerObj> i = timers.iterator();
51871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson        while(i.hasNext()) {
52871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson            TimerObj t = i.next();
53871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson            if (t.mTimerId == timerId) {
54871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson                return t;
55871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson            }
56871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson        }
57871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson        return null;
58871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson    }
59871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson    public static TimerObj findExpiredTimer(ArrayList<TimerObj> timers) {
60871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson        Iterator<TimerObj> i = timers.iterator();
61871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson        while(i.hasNext()) {
62871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson            TimerObj t = i.next();
63871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson            if (t.mState == TimerObj.STATE_TIMESUP) {
64871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson                return t;
65871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson            }
66871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson        }
67871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson        return null;
68871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson    }
691ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson
701ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson    public static ArrayList<TimerObj> timersInUse(ArrayList<TimerObj> timers) {
711ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson        ArrayList<TimerObj> result = (ArrayList<TimerObj>) timers.clone();
721ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson        Iterator<TimerObj> it = result.iterator();
731ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson        while(it.hasNext()) {
741ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson            TimerObj timer = it.next();
751ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson            if (!timer.isInUse()) {
761ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson                it.remove();
771ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson            }
781ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson        }
791ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson        return result;
801ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson    }
81d5202b46aaf96b1d217cedba645f28aa1fee04c6Robyn Coultas
82d5202b46aaf96b1d217cedba645f28aa1fee04c6Robyn Coultas    public static ArrayList<TimerObj> timersInTimesUp(ArrayList<TimerObj> timers) {
83d5202b46aaf96b1d217cedba645f28aa1fee04c6Robyn Coultas        ArrayList<TimerObj> result = (ArrayList<TimerObj>) timers.clone();
84d5202b46aaf96b1d217cedba645f28aa1fee04c6Robyn Coultas        Iterator<TimerObj> it = result.iterator();
85d5202b46aaf96b1d217cedba645f28aa1fee04c6Robyn Coultas        while(it.hasNext()) {
86d5202b46aaf96b1d217cedba645f28aa1fee04c6Robyn Coultas            TimerObj timer = it.next();
87d5202b46aaf96b1d217cedba645f28aa1fee04c6Robyn Coultas            if (timer.mState != TimerObj.STATE_TIMESUP) {
88d5202b46aaf96b1d217cedba645f28aa1fee04c6Robyn Coultas                it.remove();
89d5202b46aaf96b1d217cedba645f28aa1fee04c6Robyn Coultas            }
90d5202b46aaf96b1d217cedba645f28aa1fee04c6Robyn Coultas        }
91d5202b46aaf96b1d217cedba645f28aa1fee04c6Robyn Coultas        return result;
92d5202b46aaf96b1d217cedba645f28aa1fee04c6Robyn Coultas    }
93871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson}
94