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