1 /* 2 * Copyright (C) 2012 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.timer; 18 19 import android.content.Context; 20 import android.util.AttributeSet; 21 import android.view.LayoutInflater; 22 import android.view.ViewGroup; 23 import android.widget.ImageView; 24 import android.widget.LinearLayout; 25 26 import com.android.deskclock.CircleTimerView; 27 import com.android.deskclock.R; 28 29 30 public class TimerListItem extends LinearLayout { 31 32 CountingTimerView mTimerText; 33 CircleTimerView mCircleView; 34 ImageView mResetAddButton; 35 36 long mTimerLength; 37 TimerListItem(Context context)38 public TimerListItem(Context context) { 39 this(context, null); 40 } 41 TimerListItem(Context context, AttributeSet attrs)42 public TimerListItem(Context context, AttributeSet attrs) { 43 super(context, attrs); 44 } 45 46 @Override onFinishInflate()47 protected void onFinishInflate() { 48 super.onFinishInflate(); 49 mTimerText = (CountingTimerView) findViewById(R.id.timer_time_text); 50 mCircleView = (CircleTimerView) findViewById(R.id.timer_time); 51 mResetAddButton = (ImageView) findViewById(R.id.reset_add); 52 mCircleView.setTimerMode(true); 53 } 54 set(long timerLength, long timeLeft, boolean drawRed)55 public void set(long timerLength, long timeLeft, boolean drawRed) { 56 if (mCircleView == null) { 57 mCircleView = (CircleTimerView) findViewById(R.id.timer_time); 58 mCircleView.setTimerMode(true); 59 } 60 mTimerLength = timerLength; 61 mCircleView.setIntervalTime(mTimerLength); 62 mCircleView.setPassedTime(timerLength - timeLeft, drawRed); 63 invalidate(); 64 } 65 start()66 public void start() { 67 mResetAddButton.setImageResource(R.drawable.ic_plusone); 68 mResetAddButton.setContentDescription(getResources().getString(R.string.timer_plus_one)); 69 mCircleView.startIntervalAnimation(); 70 mTimerText.setTimeStrTextColor(false, true); 71 mTimerText.showTime(true); 72 mCircleView.setVisibility(VISIBLE); 73 } 74 pause()75 public void pause() { 76 mResetAddButton.setImageResource(R.drawable.ic_reset); 77 mResetAddButton.setContentDescription(getResources().getString(R.string.timer_reset)); 78 mCircleView.pauseIntervalAnimation(); 79 mTimerText.setTimeStrTextColor(false, true); 80 mTimerText.showTime(true); 81 mCircleView.setVisibility(VISIBLE); 82 } 83 stop()84 public void stop() { 85 mCircleView.stopIntervalAnimation(); 86 mTimerText.setTimeStrTextColor(false, true); 87 mTimerText.showTime(true); 88 mCircleView.setVisibility(VISIBLE); 89 } 90 timesUp()91 public void timesUp() { 92 mCircleView.abortIntervalAnimation(); 93 mTimerText.setTimeStrTextColor(true, true); 94 } 95 done()96 public void done() { 97 mCircleView.stopIntervalAnimation(); 98 mCircleView.setVisibility(VISIBLE); 99 mCircleView.invalidate(); 100 mTimerText.setTimeStrTextColor(true, false); 101 } 102 setLength(long timerLength)103 public void setLength(long timerLength) { 104 mTimerLength = timerLength; 105 mCircleView.setIntervalTime(mTimerLength); 106 mCircleView.invalidate(); 107 } 108 setTextBlink(boolean blink)109 public void setTextBlink(boolean blink) { 110 mTimerText.showTime(!blink); 111 } 112 setCircleBlink(boolean blink)113 public void setCircleBlink(boolean blink) { 114 mCircleView.setVisibility(blink ? INVISIBLE : VISIBLE); 115 } 116 setResetAddButton(boolean isRunning, OnClickListener listener)117 public void setResetAddButton(boolean isRunning, OnClickListener listener) { 118 if (mResetAddButton == null) { 119 mResetAddButton = (ImageView) findViewById(R.id.reset_add); 120 } 121 mResetAddButton.setImageResource(isRunning ? R.drawable.ic_plusone : 122 R.drawable.ic_reset); 123 mResetAddButton.setContentDescription(getResources().getString( 124 isRunning ? R.string.timer_plus_one : R.string.timer_reset)); 125 mResetAddButton.setOnClickListener(listener); 126 } 127 setTime(long time, boolean forceUpdate)128 public void setTime(long time, boolean forceUpdate) { 129 if (mTimerText == null) { 130 mTimerText = (CountingTimerView) findViewById(R.id.timer_time_text); 131 } 132 mTimerText.setTime(time, false, forceUpdate); 133 } 134 } 135