1b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson/* 2b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson * Copyright (C) 2008 The Android Open Source Project 3b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson * 4b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson * Licensed under the Apache License, Version 2.0 (the "License"); 5b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson * you may not use this file except in compliance with the License. 6b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson * You may obtain a copy of the License at 7b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson * 8b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson * http://www.apache.org/licenses/LICENSE-2.0 9b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson * 10b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson * Unless required by applicable law or agreed to in writing, software 11b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson * distributed under the License is distributed on an "AS IS" BASIS, 12b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson * See the License for the specific language governing permissions and 14b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson * limitations under the License. 15b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson */ 16b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson 17b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelsonpackage com.android.deskclock; 18b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson 193a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoroimport android.animation.Animator; 203a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoroimport android.animation.AnimatorListenerAdapter; 21b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelsonimport android.content.Context; 22749b3b31aa96a520784ce92262c99644de9d01fcRobyn Coultasimport android.content.res.Configuration; 23912542db3876aa3eee68a6d0cdee7d39ea233bf1Budi Kusmiantoroimport android.graphics.Color; 245084e1c0e2a99e084e0c20d176085257d0b129b9Robyn Coultasimport android.os.Bundle; 25b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelsonimport android.util.AttributeSet; 26b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelsonimport android.view.LayoutInflater; 27b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelsonimport android.view.View; 28b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelsonimport android.widget.Button; 294ad5b75cd1c5ec94b2122f10f2f02137e1c0e9b2Isaac Katzenelsonimport android.widget.ImageButton; 30b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelsonimport android.widget.LinearLayout; 31b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson 3243474e446f4fd103b0f609d1be75c4825adb8b58Isaac Katzenelsonimport com.android.deskclock.timer.TimerView; 3343474e446f4fd103b0f609d1be75c4825adb8b58Isaac Katzenelson 34b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson 35c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzsteinpublic class TimerSetupView extends LinearLayout implements Button.OnClickListener, 36c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein Button.OnLongClickListener{ 37b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson 38683b5100b411fe9a747b9a194bf75caa714073c4Isaac Katzenelson protected int mInputSize = 5; 39b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson 40683b5100b411fe9a747b9a194bf75caa714073c4Isaac Katzenelson protected final Button mNumbers [] = new Button [10]; 41683b5100b411fe9a747b9a194bf75caa714073c4Isaac Katzenelson protected int mInput [] = new int [mInputSize]; 42683b5100b411fe9a747b9a194bf75caa714073c4Isaac Katzenelson protected int mInputPointer = -1; 43683b5100b411fe9a747b9a194bf75caa714073c4Isaac Katzenelson protected Button mLeft, mRight; 44d83613a9aa4fd1088cf08ea01a5d6534ed5f20a7rachelzhang protected ImageButton mStart; 45683b5100b411fe9a747b9a194bf75caa714073c4Isaac Katzenelson protected ImageButton mDelete; 46683b5100b411fe9a747b9a194bf75caa714073c4Isaac Katzenelson protected TimerView mEnteredTime; 47d83613a9aa4fd1088cf08ea01a5d6534ed5f20a7rachelzhang protected View mDivider; 48683b5100b411fe9a747b9a194bf75caa714073c4Isaac Katzenelson protected final Context mContext; 49b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson 503a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro private final AnimatorListenerAdapter mHideFabAnimatorListener = new AnimatorListenerAdapter() { 513a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro @Override 523a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro public void onAnimationEnd(Animator animation) { 533a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro if (mStart != null) { 541d7356386ee17946aa68b82917ef83588e219d00rachelzhang mStart.setScaleX(1.0f); 551d7356386ee17946aa68b82917ef83588e219d00rachelzhang mStart.setScaleY(1.0f); 563a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro mStart.setVisibility(View.INVISIBLE); 573a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro } 583a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro } 593a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro }; 603a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro 613a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro private final AnimatorListenerAdapter mShowFabAnimatorListener = new AnimatorListenerAdapter() { 623a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro @Override 633a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro public void onAnimationStart(Animator animation) { 643a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro if (mStart != null) { 653a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro mStart.setVisibility(View.VISIBLE); 663a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro } 673a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro } 683a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro }; 693a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro 70b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson public TimerSetupView(Context context) { 71b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson this(context, null); 72b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson } 73b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson 74b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson public TimerSetupView(Context context, AttributeSet attrs) { 75b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson super(context, attrs); 76b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson mContext = context; 77b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson LayoutInflater layoutInflater = 78b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 7956be6dac87bd9735cef70da1b39ce8c9d89148f0Robyn Coultas layoutInflater.inflate(R.layout.time_setup_view, this); 80b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson } 81b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson 82b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson @Override 83b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson protected void onFinishInflate() { 84b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson super.onFinishInflate(); 85b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson 86b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson View v1 = findViewById(R.id.first); 87b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson View v2 = findViewById(R.id.second); 88b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson View v3 = findViewById(R.id.third); 89b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson View v4 = findViewById(R.id.fourth); 90b3b120a990057c4ce6a92fafcc20c8cb6207cf80rachelzhang 914ad5b75cd1c5ec94b2122f10f2f02137e1c0e9b2Isaac Katzenelson mEnteredTime = (TimerView)findViewById(R.id.timer_time_text); 924ad5b75cd1c5ec94b2122f10f2f02137e1c0e9b2Isaac Katzenelson mDelete = (ImageButton)findViewById(R.id.delete); 934ad5b75cd1c5ec94b2122f10f2f02137e1c0e9b2Isaac Katzenelson mDelete.setOnClickListener(this); 94c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein mDelete.setOnLongClickListener(this); 95d83613a9aa4fd1088cf08ea01a5d6534ed5f20a7rachelzhang mDivider = findViewById(R.id.divider); 96b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson 97b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson mNumbers[1] = (Button)v1.findViewById(R.id.key_left); 98b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson mNumbers[2] = (Button)v1.findViewById(R.id.key_middle); 99b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson mNumbers[3] = (Button)v1.findViewById(R.id.key_right); 100b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson 101b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson mNumbers[4] = (Button)v2.findViewById(R.id.key_left); 102b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson mNumbers[5] = (Button)v2.findViewById(R.id.key_middle); 103b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson mNumbers[6] = (Button)v2.findViewById(R.id.key_right); 104b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson 105b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson mNumbers[7] = (Button)v3.findViewById(R.id.key_left); 106b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson mNumbers[8] = (Button)v3.findViewById(R.id.key_middle); 107b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson mNumbers[9] = (Button)v3.findViewById(R.id.key_right); 108b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson 109b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson mLeft = (Button)v4.findViewById(R.id.key_left); 110b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson mNumbers[0] = (Button)v4.findViewById(R.id.key_middle); 111b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson mRight = (Button)v4.findViewById(R.id.key_right); 11226fd3d012330e5abf4f6452e811938374004d0d8Sam Blitzstein setLeftRightEnabled(false); 113b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson 114b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson for (int i = 0; i < 10; i++) { 115b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson mNumbers[i].setOnClickListener(this); 116912542db3876aa3eee68a6d0cdee7d39ea233bf1Budi Kusmiantoro mNumbers[i].setText(String.format("%d", i)); 117912542db3876aa3eee68a6d0cdee7d39ea233bf1Budi Kusmiantoro mNumbers[i].setTextColor(Color.WHITE); 118912542db3876aa3eee68a6d0cdee7d39ea233bf1Budi Kusmiantoro mNumbers[i].setTag(R.id.numbers_key, new Integer(i)); 119b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson } 120b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson updateTime(); 121b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson } 122b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson 123d83613a9aa4fd1088cf08ea01a5d6534ed5f20a7rachelzhang public void registerStartButton(ImageButton start) { 124c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein mStart = start; 1253a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro initializeStartButtonVisibility(); 126c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein } 127c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein 1283a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro private void initializeStartButtonVisibility() { 129c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein if (mStart != null) { 1303a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro mStart.setVisibility(isInputHasValue() ? View.VISIBLE : View.INVISIBLE); 131c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein } 132c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein } 133c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein 1343a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro private void updateStartButton() { 1353a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro setFabButtonVisibility(isInputHasValue() /* show or hide */); 1363a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro } 1373a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro 138d83613a9aa4fd1088cf08ea01a5d6534ed5f20a7rachelzhang public void updateDeleteButtonAndDivider() { 1393a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro final boolean enabled = isInputHasValue(); 140c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein if (mDelete != null) { 141c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein mDelete.setEnabled(enabled); 14269a4b4f2810100f19e997b4e539f1b0e56b0afb5rachelzhang mDivider.setBackgroundResource(enabled ? R.color.hot_pink : R.color.dialog_gray); 143c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein } 144c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein } 145b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson 1463a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro private boolean isInputHasValue() { 1473a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro return mInputPointer != -1; 1483a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro } 1493a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro 1503a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro private void setFabButtonVisibility(boolean show) { 1513a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro final int finalVisibility = show ? View.VISIBLE : View.INVISIBLE; 1523a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro if (mStart == null || mStart.getVisibility() == finalVisibility) { 1533a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro // Fab is not initialized yet or already shown/hidden 1543a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro return; 1553a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro } 1563a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro 157d2ac32f6d0975877feb60acb76de8b4b1f794d4bJustin Klaassen final Animator scaleAnimator = AnimatorUtils.getScaleAnimator( 158d2ac32f6d0975877feb60acb76de8b4b1f794d4bJustin Klaassen mStart, show ? 0.0f : 1.0f, show ? 1.0f : 0.0f); 159d2ac32f6d0975877feb60acb76de8b4b1f794d4bJustin Klaassen scaleAnimator.setDuration(AnimatorUtils.ANIM_DURATION_SHORT); 160d2ac32f6d0975877feb60acb76de8b4b1f794d4bJustin Klaassen scaleAnimator.addListener(show ? mShowFabAnimatorListener : mHideFabAnimatorListener); 161d2ac32f6d0975877feb60acb76de8b4b1f794d4bJustin Klaassen scaleAnimator.start(); 1623a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro } 1633a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro 164b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson @Override 165b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson public void onClick(View v) { 166683b5100b411fe9a747b9a194bf75caa714073c4Isaac Katzenelson doOnClick(v); 167c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein updateStartButton(); 168d83613a9aa4fd1088cf08ea01a5d6534ed5f20a7rachelzhang updateDeleteButtonAndDivider(); 169683b5100b411fe9a747b9a194bf75caa714073c4Isaac Katzenelson } 170683b5100b411fe9a747b9a194bf75caa714073c4Isaac Katzenelson 171683b5100b411fe9a747b9a194bf75caa714073c4Isaac Katzenelson protected void doOnClick(View v) { 172b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson 173b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson Integer val = (Integer) v.getTag(R.id.numbers_key); 174b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson // A number was pressed 175b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson if (val != null) { 176b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson // pressing "0" as the first digit does nothing 177b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson if (mInputPointer == -1 && val == 0) { 178b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson return; 179b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson } 180683b5100b411fe9a747b9a194bf75caa714073c4Isaac Katzenelson if (mInputPointer < mInputSize - 1) { 1814ad5b75cd1c5ec94b2122f10f2f02137e1c0e9b2Isaac Katzenelson for (int i = mInputPointer; i >= 0; i--) { 1824ad5b75cd1c5ec94b2122f10f2f02137e1c0e9b2Isaac Katzenelson mInput[i+1] = mInput[i]; 1834ad5b75cd1c5ec94b2122f10f2f02137e1c0e9b2Isaac Katzenelson } 184b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson mInputPointer++; 1854ad5b75cd1c5ec94b2122f10f2f02137e1c0e9b2Isaac Katzenelson mInput [0] = val; 186b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson updateTime(); 187b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson } 188b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson return; 189b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson } 190b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson 191b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson // other keys 1924ad5b75cd1c5ec94b2122f10f2f02137e1c0e9b2Isaac Katzenelson if (v == mDelete) { 1934ad5b75cd1c5ec94b2122f10f2f02137e1c0e9b2Isaac Katzenelson if (mInputPointer >= 0) { 1944ad5b75cd1c5ec94b2122f10f2f02137e1c0e9b2Isaac Katzenelson for (int i = 0; i < mInputPointer; i++) { 1954ad5b75cd1c5ec94b2122f10f2f02137e1c0e9b2Isaac Katzenelson mInput[i] = mInput[i + 1]; 196b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson } 1974ad5b75cd1c5ec94b2122f10f2f02137e1c0e9b2Isaac Katzenelson mInput[mInputPointer] = 0; 1984ad5b75cd1c5ec94b2122f10f2f02137e1c0e9b2Isaac Katzenelson mInputPointer--; 1994ad5b75cd1c5ec94b2122f10f2f02137e1c0e9b2Isaac Katzenelson updateTime(); 2004ad5b75cd1c5ec94b2122f10f2f02137e1c0e9b2Isaac Katzenelson } 201b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson } 202b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson } 203b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson 204c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein @Override 205c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein public boolean onLongClick(View v) { 206c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein if (v == mDelete) { 207c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein reset(); 208c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein updateStartButton(); 209d83613a9aa4fd1088cf08ea01a5d6534ed5f20a7rachelzhang updateDeleteButtonAndDivider(); 210c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein return true; 211c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein } 212c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein return false; 213c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein } 214c5679e9c0bb95b68d6909f6a5a6a59f6f59dec1aSam Blitzstein 215683b5100b411fe9a747b9a194bf75caa714073c4Isaac Katzenelson protected void updateTime() { 21656be6dac87bd9735cef70da1b39ce8c9d89148f0Robyn Coultas mEnteredTime.setTime(mInput[4], mInput[3], mInput[2], 2172307cc404a412bb4067240fb295c4c9142dbbc87Isaac Katzenelson mInput[1] * 10 + mInput[0]); 218b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson } 219b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson 220b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson public void reset() { 221683b5100b411fe9a747b9a194bf75caa714073c4Isaac Katzenelson for (int i = 0; i < mInputSize; i ++) { 222b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson mInput[i] = 0; 223b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson } 224b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson mInputPointer = -1; 225b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson updateTime(); 226b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson } 2274ad5b75cd1c5ec94b2122f10f2f02137e1c0e9b2Isaac Katzenelson 2284ad5b75cd1c5ec94b2122f10f2f02137e1c0e9b2Isaac Katzenelson public int getTime() { 2294ad5b75cd1c5ec94b2122f10f2f02137e1c0e9b2Isaac Katzenelson return mInput[4] * 3600 + mInput[3] * 600 + mInput[2] * 60 + mInput[1] * 10 + mInput[0]; 2304ad5b75cd1c5ec94b2122f10f2f02137e1c0e9b2Isaac Katzenelson } 23126fd3d012330e5abf4f6452e811938374004d0d8Sam Blitzstein 2325084e1c0e2a99e084e0c20d176085257d0b129b9Robyn Coultas public void saveEntryState(Bundle outState, String key) { 2335084e1c0e2a99e084e0c20d176085257d0b129b9Robyn Coultas outState.putIntArray(key, mInput); 2345084e1c0e2a99e084e0c20d176085257d0b129b9Robyn Coultas } 2355084e1c0e2a99e084e0c20d176085257d0b129b9Robyn Coultas 2365084e1c0e2a99e084e0c20d176085257d0b129b9Robyn Coultas public void restoreEntryState(Bundle inState, String key) { 2375084e1c0e2a99e084e0c20d176085257d0b129b9Robyn Coultas int[] input = inState.getIntArray(key); 2385084e1c0e2a99e084e0c20d176085257d0b129b9Robyn Coultas if (input != null && mInputSize == input.length) { 2395084e1c0e2a99e084e0c20d176085257d0b129b9Robyn Coultas for (int i = 0; i < mInputSize; i++) { 2405084e1c0e2a99e084e0c20d176085257d0b129b9Robyn Coultas mInput[i] = input[i]; 2415084e1c0e2a99e084e0c20d176085257d0b129b9Robyn Coultas if (mInput[i] != 0) { 2425084e1c0e2a99e084e0c20d176085257d0b129b9Robyn Coultas mInputPointer = i; 2435084e1c0e2a99e084e0c20d176085257d0b129b9Robyn Coultas } 2445084e1c0e2a99e084e0c20d176085257d0b129b9Robyn Coultas } 2455084e1c0e2a99e084e0c20d176085257d0b129b9Robyn Coultas updateTime(); 2465084e1c0e2a99e084e0c20d176085257d0b129b9Robyn Coultas } 2473a087e9c93639fdb069ea7f2083ed7bd6f76aa9aBudi Kusmiantoro initializeStartButtonVisibility(); 2485084e1c0e2a99e084e0c20d176085257d0b129b9Robyn Coultas } 2495084e1c0e2a99e084e0c20d176085257d0b129b9Robyn Coultas 25026fd3d012330e5abf4f6452e811938374004d0d8Sam Blitzstein protected void setLeftRightEnabled(boolean enabled) { 25126fd3d012330e5abf4f6452e811938374004d0d8Sam Blitzstein mLeft.setEnabled(enabled); 25226fd3d012330e5abf4f6452e811938374004d0d8Sam Blitzstein mRight.setEnabled(enabled); 253d05e44ef00a18d57875036aaa9a090df3b566b42Isaac Katzenelson if (!enabled) { 254d05e44ef00a18d57875036aaa9a090df3b566b42Isaac Katzenelson mLeft.setContentDescription(null); 255d05e44ef00a18d57875036aaa9a090df3b566b42Isaac Katzenelson mRight.setContentDescription(null); 256d05e44ef00a18d57875036aaa9a090df3b566b42Isaac Katzenelson } 25726fd3d012330e5abf4f6452e811938374004d0d8Sam Blitzstein } 258b94027194a2da12ed354465b9186fa452c0bd8f3Isaac Katzenelson} 259