• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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