diff options
author | Erik <roboerik@android.com> | 2010-09-15 12:32:46 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-09-15 12:32:46 -0700 |
commit | ac212158f078dc259c70710cfad04dddacf90366 (patch) | |
tree | 2a30243f7b6ebbcea09c225125a347c348e94224 /core/java/android/util | |
parent | 49478536b6b8b28f33398393bed5e939085af7af (diff) | |
parent | 0b46070d8878a8791f343cbbe720388e7dfe4e6f (diff) | |
download | frameworks_base-ac212158f078dc259c70710cfad04dddacf90366.zip frameworks_base-ac212158f078dc259c70710cfad04dddacf90366.tar.gz frameworks_base-ac212158f078dc259c70710cfad04dddacf90366.tar.bz2 |
am 0b46070d: am 426ee7f2: Fixes some bugs in TimeZoneUtils
Merge commit '0b46070d8878a8791f343cbbe720388e7dfe4e6f'
* commit '0b46070d8878a8791f343cbbe720388e7dfe4e6f':
Fixes some bugs in TimeZoneUtils
Diffstat (limited to 'core/java/android/util')
-rw-r--r-- | core/java/android/util/CalendarUtils.java | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/core/java/android/util/CalendarUtils.java b/core/java/android/util/CalendarUtils.java index 81709d7..9a4a67d 100644 --- a/core/java/android/util/CalendarUtils.java +++ b/core/java/android/util/CalendarUtils.java @@ -45,6 +45,10 @@ public class CalendarUtils { * values. */ public static class TimeZoneUtils { + private static final String[] TIMEZONE_TYPE_ARGS = { CalendarCache.TIMEZONE_KEY_TYPE }; + private static final String[] TIMEZONE_INSTANCES_ARGS = + { CalendarCache.TIMEZONE_KEY_INSTANCES }; + private static StringBuilder mSB = new StringBuilder(50); private static Formatter mF = new Formatter(mSB, Locale.getDefault()); private volatile static boolean mFirstTZRequest = true; @@ -213,19 +217,17 @@ public class CalendarUtils { } // Write the use home tz setting - String[] selArgs = new String[] { CalendarCache.TIMEZONE_KEY_TYPE }; values.put(CalendarCache.VALUE, mUseHomeTZ ? CalendarCache.TIMEZONE_TYPE_HOME : CalendarCache.TIMEZONE_TYPE_AUTO); mHandler.startUpdate(mToken, null, CalendarCache.URI, values, CalendarCache.WHERE, - selArgs); + TIMEZONE_TYPE_ARGS); // If using a home tz write it to the db if (mUseHomeTZ) { - selArgs[0] = CalendarCache.TIMEZONE_KEY_INSTANCES; - values.clear(); - values.put(CalendarCache.VALUE, mHomeTZ); - mHandler.startUpdate( - mToken, null, CalendarCache.URI, values, CalendarCache.WHERE, selArgs); + ContentValues values2 = new ContentValues(); + values2.put(CalendarCache.VALUE, mHomeTZ); + mHandler.startUpdate(mToken, null, CalendarCache.URI, values2, + CalendarCache.WHERE, TIMEZONE_INSTANCES_ARGS); } } } @@ -270,6 +272,27 @@ public class CalendarUtils { } return mUseHomeTZ ? mHomeTZ : Time.getCurrentTimezone(); } + + /** + * Forces a query of the database to check for changes to the time zone. + * This should be called if another app may have modified the db. If a + * query is already in progress the callback will be added to the list + * of callbacks to be called when it returns. + * + * @param context The calling activity + * @param callback The runnable that should execute if a query returns + * new values + */ + public void forceDBRequery(Context context, Runnable callback) { + synchronized (mTZCallbacks){ + if (mTZQueryInProgress) { + mTZCallbacks.add(callback); + return; + } + mFirstTZRequest = true; + getTimeZone(context, callback); + } + } } /** |