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