Utils.java revision e8aa59d4575d712601a133a9263acc23adbc8c17
1146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project/* 2146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * Copyright (C) 2006 The Android Open Source Project 3146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * 4146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * you may not use this file except in compliance with the License. 6146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * You may obtain a copy of the License at 7146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * 8146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * 10146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * See the License for the specific language governing permissions and 14146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * limitations under the License. 15146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project */ 16146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 17146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectpackage com.android.calendar; 18146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 19146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport static android.provider.Calendar.EVENT_BEGIN_TIME; 20e8aa59d4575d712601a133a9263acc23adbc8c17Michael Chan 21146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.content.Context; 22146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.content.Intent; 23e8aa59d4575d712601a133a9263acc23adbc8c17Michael Chanimport android.content.SharedPreferences; 24146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.content.res.Resources; 25e8aa59d4575d712601a133a9263acc23adbc8c17Michael Chanimport android.preference.PreferenceManager; 26146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.text.format.Time; 27146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.view.animation.AlphaAnimation; 28146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.widget.ViewFlipper; 29146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 30146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectpublic class Utils { 31146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project public static void startActivity(Context context, String className, long time) { 32146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project Intent intent = new Intent(Intent.ACTION_VIEW); 33146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 34146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project intent.setClassName(context, className); 35146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project intent.putExtra(EVENT_BEGIN_TIME, time); 3623f400cdb34b08d9003f4a96fca5976ad632e4ceMichael Chan intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_SINGLE_TOP); 37146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 38146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project context.startActivity(intent); 39146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 40146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 41e8aa59d4575d712601a133a9263acc23adbc8c17Michael Chan static void setDefaultView(Context context, int viewId) { 42e8aa59d4575d712601a133a9263acc23adbc8c17Michael Chan String activityString = CalendarApplication.ACTIVITY_NAMES[viewId]; 43e8aa59d4575d712601a133a9263acc23adbc8c17Michael Chan 44e8aa59d4575d712601a133a9263acc23adbc8c17Michael Chan SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 45e8aa59d4575d712601a133a9263acc23adbc8c17Michael Chan SharedPreferences.Editor editor = prefs.edit(); 46e8aa59d4575d712601a133a9263acc23adbc8c17Michael Chan if (viewId == CalendarApplication.AGENDA_VIEW_ID || 47e8aa59d4575d712601a133a9263acc23adbc8c17Michael Chan viewId == CalendarApplication.DAY_VIEW_ID) { 48e8aa59d4575d712601a133a9263acc23adbc8c17Michael Chan // Record the (new) detail start view only for Agenda and Day 49e8aa59d4575d712601a133a9263acc23adbc8c17Michael Chan editor.putString(CalendarPreferenceActivity.KEY_DETAILED_VIEW, activityString); 50e8aa59d4575d712601a133a9263acc23adbc8c17Michael Chan } 51e8aa59d4575d712601a133a9263acc23adbc8c17Michael Chan 52e8aa59d4575d712601a133a9263acc23adbc8c17Michael Chan // Record the (new) start view 53e8aa59d4575d712601a133a9263acc23adbc8c17Michael Chan editor.putString(CalendarPreferenceActivity.KEY_START_VIEW, activityString); 54e8aa59d4575d712601a133a9263acc23adbc8c17Michael Chan editor.commit(); 55e8aa59d4575d712601a133a9263acc23adbc8c17Michael Chan } 56e8aa59d4575d712601a133a9263acc23adbc8c17Michael Chan 57146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project public static final Time timeFromIntent(Intent intent) { 58146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project Time time = new Time(); 59146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project time.set(timeFromIntentInMillis(intent)); 60146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project return time; 61146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 62146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 63146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project /** 64146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * If the given intent specifies a time (in milliseconds since the epoch), 65146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * then that time is returned. Otherwise, the current time is returned. 66146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project */ 67146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project public static final long timeFromIntentInMillis(Intent intent) { 68146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project // If the time was specified, then use that. Otherwise, use the current time. 69146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project long millis = intent.getLongExtra(EVENT_BEGIN_TIME, -1); 70146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project if (millis == -1) { 71146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project millis = System.currentTimeMillis(); 72146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 73146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project return millis; 74146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 75146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 76146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project public static final void applyAlphaAnimation(ViewFlipper v) { 77146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project AlphaAnimation in = new AlphaAnimation(0.0f, 1.0f); 78146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 79146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project in.setStartOffset(0); 80146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project in.setDuration(500); 81146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 82146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project AlphaAnimation out = new AlphaAnimation(1.0f, 0.0f); 83146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 84146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project out.setStartOffset(0); 85146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project out.setDuration(500); 86146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 87146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project v.setInAnimation(in); 88146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project v.setOutAnimation(out); 89146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 90146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 91146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project /** 92146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * Formats the given Time object so that it gives the month and year 93146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * (for example, "September 2007"). 94146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * 95146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * @param time the time to format 96146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * @return the string containing the weekday and the date 97146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project */ 98146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project public static String formatMonthYear(Time time) { 99146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project Resources res = Resources.getSystem(); 100146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project return time.format(res.getString(com.android.internal.R.string.month_year)); 101146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 102146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 103146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project // TODO: replace this with the correct i18n way to do this 104146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project public static final String englishNthDay[] = { 105146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project "", "1st", "2nd", "3rd", "4th", "5th", "6th", "7th", "8th", "9th", 106146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project "10th", "11th", "12th", "13th", "14th", "15th", "16th", "17th", "18th", "19th", 107146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project "20th", "21st", "22nd", "23rd", "24th", "25th", "26th", "27th", "28th", "29th", 108146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project "30th", "31st" 109146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project }; 110146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 111146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project public static String formatNth(int nth) { 112146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project return "the " + englishNthDay[nth]; 113146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 114146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 115146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project /** 116146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * Sets the time to the beginning of the day (midnight) by clearing the 117146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * hour, minute, and second fields. 118146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project */ 119146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project static void setTimeToStartOfDay(Time time) { 120146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project time.second = 0; 121146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project time.minute = 0; 122146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project time.hour = 0; 123146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 124146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project} 125