TimerObj.java revision 647353dd437f8c075aa96f3b98efb84442e8b7bf
163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson/* 263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson * Copyright (C) 2012 The Android Open Source Project 363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson * 463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson * Licensed under the Apache License, Version 2.0 (the "License"); 563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson * you may not use this file except in compliance with the License. 663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson * You may obtain a copy of the License at 763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson * 863211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson * http://www.apache.org/licenses/LICENSE-2.0 963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson * 1063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson * Unless required by applicable law or agreed to in writing, software 1163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson * distributed under the License is distributed on an "AS IS" BASIS, 1263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson * See the License for the specific language governing permissions and 1463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson * limitations under the License. 1563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson */ 1663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 1763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelsonpackage com.android.deskclock.timer; 1863211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 1963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelsonimport android.content.SharedPreferences; 2063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelsonimport android.os.Parcel; 2163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelsonimport android.os.Parcelable; 2263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelsonimport android.util.Log; 2363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelsonimport android.view.View; 2463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 2563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelsonimport java.util.ArrayList; 2663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelsonimport java.util.HashSet; 2763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelsonimport java.util.Set; 2863211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 2963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelsonpublic class TimerObj implements Parcelable { 3063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 3163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson private static final String TAG = "TimerObj"; 32860de0e94f5588369985063127512dc2270cd7deItzhak Katzenelson // Max timer length is 9 hours + 99 minutes + 9 seconds 33860de0e94f5588369985063127512dc2270cd7deItzhak Katzenelson private static final long MAX_TIMER_LENGTH = (9 * 3600 + 99 * 60 + 60) * 1000; 3463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 3563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public int mTimerId; // Unique id 3663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public long mStartTime; // With mTimeLeft , used to calculate the correct time 3763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public long mTimeLeft; // in the timer. 38860de0e94f5588369985063127512dc2270cd7deItzhak Katzenelson public long mOriginalLength; // length set at start of timer and by +1 min after times up 39860de0e94f5588369985063127512dc2270cd7deItzhak Katzenelson public long mSetupLength; // length set at start of timer 4063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public View mView; 4163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public int mState; 421ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson public String mLabel; 4363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 4463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public static final int STATE_RUNNING = 1; 4563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public static final int STATE_STOPPED = 2; 4663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public static final int STATE_TIMESUP = 3; 4763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public static final int STATE_DONE = 4; 4863211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public static final int STATE_RESTART = 5; 4963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 5063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson private static final String PREF_TIMER_ID = "timer_id_"; 5163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson private static final String PREF_START_TIME = "timer_start_time_"; 5263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson private static final String PREF_TIME_LEFT = "timer_time_left_"; 5363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson private static final String PREF_ORIGINAL_TIME = "timer_original_timet_"; 54860de0e94f5588369985063127512dc2270cd7deItzhak Katzenelson private static final String PREF_SETUP_TIME = "timer_setup_timet_"; 5563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson private static final String PREF_STATE = "timer_state_"; 561ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson private static final String PREF_LABEL = "timer_label_"; 5763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 5863211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson private static final String PREF_TIMERS_LIST = "timers_list"; 5963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 6063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public static final Parcelable.Creator<TimerObj> CREATOR = new Parcelable.Creator<TimerObj>() { 6163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson @Override 6263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public TimerObj createFromParcel(Parcel p) { 6363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson return new TimerObj(p); 6463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 6563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 6663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson @Override 6763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public TimerObj[] newArray(int size) { 6863211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson return new TimerObj[size]; 6963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 7063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson }; 7163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 7263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public void writeToSharedPref(SharedPreferences prefs) { 7363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson SharedPreferences.Editor editor = prefs.edit(); 7463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson String key = PREF_TIMER_ID + Integer.toString(mTimerId); 7563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson String id = Integer.toString(mTimerId); 7663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson editor.putInt (key, mTimerId); 7763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson key = PREF_START_TIME + id; 7863211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson editor.putLong (key, mStartTime); 7963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson key = PREF_TIME_LEFT + id; 8063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson editor.putLong (key, mTimeLeft); 8163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson key = PREF_ORIGINAL_TIME + id; 8263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson editor.putLong (key, mOriginalLength); 83860de0e94f5588369985063127512dc2270cd7deItzhak Katzenelson key = PREF_SETUP_TIME + id; 84860de0e94f5588369985063127512dc2270cd7deItzhak Katzenelson editor.putLong (key, mSetupLength); 8563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson key = PREF_STATE + id; 8663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson editor.putInt (key, mState); 8763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson Set <String> timersList = prefs.getStringSet(PREF_TIMERS_LIST, new HashSet<String>()); 8863211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson timersList.add(id); 8963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson editor.putStringSet(PREF_TIMERS_LIST, timersList); 901ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson key = PREF_LABEL + id; 911ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson editor.putString(key, mLabel); 9263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson editor.apply(); 9363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 9463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 9563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 9663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public void readFromSharedPref(SharedPreferences prefs) { 9763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson String id = Integer.toString(mTimerId); 9863211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson String key = PREF_START_TIME + id; 9963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson mStartTime = prefs.getLong(key, 0); 10063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson key = PREF_TIME_LEFT + id; 10163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson mTimeLeft = prefs.getLong(key, 0); 10263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson key = PREF_ORIGINAL_TIME + id; 10363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson mOriginalLength = prefs.getLong(key, 0); 104860de0e94f5588369985063127512dc2270cd7deItzhak Katzenelson key = PREF_SETUP_TIME + id; 105860de0e94f5588369985063127512dc2270cd7deItzhak Katzenelson mSetupLength = prefs.getLong(key, 0); 10663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson key = PREF_STATE + id; 10763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson mState = prefs.getInt(key, 0); 1081ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson key = PREF_LABEL + id; 1091ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson mLabel = prefs.getString(key, ""); 11063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 11163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 11263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public void deleteFromSharedPref(SharedPreferences prefs) { 11363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson SharedPreferences.Editor editor = prefs.edit(); 11463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson String key = PREF_TIMER_ID + Integer.toString(mTimerId); 11563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson String id = Integer.toString(mTimerId); 11663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson editor.remove (key); 11763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson key = PREF_START_TIME + id; 11863211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson editor.remove (key); 11963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson key = PREF_TIME_LEFT + id; 12063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson editor.remove (key); 12163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson key = PREF_ORIGINAL_TIME + id; 12263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson editor.remove (key); 12363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson key = PREF_STATE + id; 12463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson editor.remove (key); 12563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson Set <String> timersList = prefs.getStringSet(PREF_TIMERS_LIST, new HashSet<String>()); 12663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson timersList.remove(id); 12763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson editor.putStringSet(PREF_TIMERS_LIST, timersList); 1281ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson key = PREF_LABEL + id; 1291ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson editor.remove(key); 13063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson editor.commit(); 13163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson //dumpTimersFromSharedPrefs(prefs); 13263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 13363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 13463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 13563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson @Override 13663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public int describeContents() { 13763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson return 0; 13863211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 13963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 14063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson @Override 14163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public void writeToParcel(Parcel dest, int flags) { 14263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson dest.writeInt(mTimerId); 14363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson dest.writeLong(mStartTime); 14463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson dest.writeLong(mTimeLeft); 14563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson dest.writeLong(mOriginalLength); 146860de0e94f5588369985063127512dc2270cd7deItzhak Katzenelson dest.writeLong(mSetupLength); 147871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson dest.writeInt(mState); 1481ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson dest.writeString(mLabel); 14963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 15063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 15163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public TimerObj(Parcel p) { 15263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson mTimerId = p.readInt(); 15363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson mStartTime = p.readLong(); 15463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson mTimeLeft = p.readLong(); 15563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson mOriginalLength = p.readLong(); 156860de0e94f5588369985063127512dc2270cd7deItzhak Katzenelson mSetupLength = p.readLong(); 157871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson mState = p.readInt(); 1581ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson mLabel = p.readString(); 15963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 16063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 16163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public TimerObj() { 16263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson init(0); 16363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 16463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 16563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public TimerObj(long timerLength) { 16663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson init(timerLength); 16763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 16863211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 16963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson private void init (long length) { 17063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson mTimerId = (int) System.currentTimeMillis(); 17163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson mStartTime = System.currentTimeMillis(); 172860de0e94f5588369985063127512dc2270cd7deItzhak Katzenelson mTimeLeft = mOriginalLength = mSetupLength = length; 1731ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson mLabel = ""; 17463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 17563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 176644a5d887d7033e669ac362a8ed6e79197d13c72Itzhak Katzenelson public long updateTimeLeft(boolean forceUpdate) { 177644a5d887d7033e669ac362a8ed6e79197d13c72Itzhak Katzenelson if (isTicking() || forceUpdate) { 178644a5d887d7033e669ac362a8ed6e79197d13c72Itzhak Katzenelson long millis = System.currentTimeMillis(); 179644a5d887d7033e669ac362a8ed6e79197d13c72Itzhak Katzenelson mTimeLeft = mOriginalLength - (millis - mStartTime); 180644a5d887d7033e669ac362a8ed6e79197d13c72Itzhak Katzenelson } 18163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson return mTimeLeft; 18263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 18363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 1841ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson public boolean isTicking() { 1851ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson return mState == STATE_RUNNING || mState == STATE_TIMESUP; 1861ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson } 1871ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson 1881ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson public boolean isInUse() { 1891ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson return mState == STATE_RUNNING || mState == STATE_STOPPED; 1901ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson } 1911ce69abc1f8bea2d7903f24ee32fec42cee83634Itzhak Katzenelson 192860de0e94f5588369985063127512dc2270cd7deItzhak Katzenelson public void addTime(long time) { 193860de0e94f5588369985063127512dc2270cd7deItzhak Katzenelson mTimeLeft = mOriginalLength - (System.currentTimeMillis() - mStartTime); 194860de0e94f5588369985063127512dc2270cd7deItzhak Katzenelson if (mTimeLeft < MAX_TIMER_LENGTH - time) { 1957d44b054055c9491570a58f14f2ae5b5e077c05aSam Blitzstein mOriginalLength += time; 196860de0e94f5588369985063127512dc2270cd7deItzhak Katzenelson } 197860de0e94f5588369985063127512dc2270cd7deItzhak Katzenelson } 198860de0e94f5588369985063127512dc2270cd7deItzhak Katzenelson 199871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson public long getTimesupTime() { 200871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson return mStartTime + mOriginalLength; 201871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson } 202871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson 203871d7d00b561dc0e100c5ac7f79542d20ae9578dIsaac Katzenelson 20463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public static void getTimersFromSharedPrefs( 20563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson SharedPreferences prefs, ArrayList<TimerObj> timers) { 20663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson Object[] timerStrings = 20763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson prefs.getStringSet(PREF_TIMERS_LIST, new HashSet<String>()).toArray(); 20863211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson if (timerStrings.length > 0) { 20963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson for (int i = 0; i < timerStrings.length; i++) { 21063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson TimerObj t = new TimerObj(); 21163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson t.mTimerId = Integer.parseInt((String)timerStrings[i]); 21263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson t.readFromSharedPref(prefs); 21363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson timers.add(t); 21463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 21563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 21663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 21763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 218647353dd437f8c075aa96f3b98efb84442e8b7bfRobyn Coultas public static void getTimersFromSharedPrefs(SharedPreferences prefs, ArrayList<TimerObj> timers, int match) { 219647353dd437f8c075aa96f3b98efb84442e8b7bfRobyn Coultas Object[] timerStrings = prefs.getStringSet(PREF_TIMERS_LIST, new HashSet<String>()).toArray(); 220647353dd437f8c075aa96f3b98efb84442e8b7bfRobyn Coultas if (timerStrings.length > 0) { 221647353dd437f8c075aa96f3b98efb84442e8b7bfRobyn Coultas for (int i = 0; i < timerStrings.length; i++) { 222647353dd437f8c075aa96f3b98efb84442e8b7bfRobyn Coultas TimerObj t = new TimerObj(); 223647353dd437f8c075aa96f3b98efb84442e8b7bfRobyn Coultas t.mTimerId = Integer.parseInt((String) timerStrings[i]); 224647353dd437f8c075aa96f3b98efb84442e8b7bfRobyn Coultas t.readFromSharedPref(prefs); 225647353dd437f8c075aa96f3b98efb84442e8b7bfRobyn Coultas if (t.mState == match) { 226647353dd437f8c075aa96f3b98efb84442e8b7bfRobyn Coultas timers.add(t); 227647353dd437f8c075aa96f3b98efb84442e8b7bfRobyn Coultas } 228647353dd437f8c075aa96f3b98efb84442e8b7bfRobyn Coultas } 229647353dd437f8c075aa96f3b98efb84442e8b7bfRobyn Coultas } 230647353dd437f8c075aa96f3b98efb84442e8b7bfRobyn Coultas } 231647353dd437f8c075aa96f3b98efb84442e8b7bfRobyn Coultas 23263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public static void putTimersInSharedPrefs( 23363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson SharedPreferences prefs, ArrayList<TimerObj> timers) { 23463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson if (timers.size() > 0) { 23563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson for (int i = 0; i < timers.size(); i++) { 23663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson TimerObj t = timers.get(i); 23763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson timers.get(i).writeToSharedPref(prefs); 23863211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 23963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 24063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 24163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 24263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public static void dumpTimersFromSharedPrefs( 24363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson SharedPreferences prefs) { 24463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson Object[] timerStrings = 24563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson prefs.getStringSet(PREF_TIMERS_LIST, new HashSet<String>()).toArray(); 24663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson Log.v(TAG,"--------------------- timers list in shared prefs"); 24763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson if (timerStrings.length > 0) { 24863211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson for (int i = 0; i < timerStrings.length; i++) { 24963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson int id = Integer.parseInt((String)timerStrings[i]); 25063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson Log.v(TAG,"---------------------timer " + (i + 1) + ": id - " + id); 25163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 25263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 25363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 25463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 25563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 25663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson} 257