Utils.java revision 146de36083f6ce8b7e8a1f974d3990594a36bfec
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;
20146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.content.Context;
21146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.content.Intent;
22146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.content.res.Resources;
23146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.text.format.Time;
24146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.view.animation.AlphaAnimation;
25146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.widget.ViewFlipper;
26146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project
27146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectpublic class Utils {
28146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project    public static void startActivity(Context context, String className, long time) {
29146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        Intent intent = new Intent(Intent.ACTION_VIEW);
30146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project
31146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        intent.setClassName(context, className);
32146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        intent.putExtra(EVENT_BEGIN_TIME, time);
33146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project
34146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        context.startActivity(intent);
35146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project    }
36146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project
37146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project    public static final Time timeFromIntent(Intent intent) {
38146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        Time time = new Time();
39146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        time.set(timeFromIntentInMillis(intent));
40146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        return time;
41146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project    }
42146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project
43146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project    /**
44146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project     * If the given intent specifies a time (in milliseconds since the epoch),
45146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project     * then that time is returned. Otherwise, the current time is returned.
46146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project     */
47146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project    public static final long timeFromIntentInMillis(Intent intent) {
48146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        // If the time was specified, then use that.  Otherwise, use the current time.
49146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        long millis = intent.getLongExtra(EVENT_BEGIN_TIME, -1);
50146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        if (millis == -1) {
51146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project            millis = System.currentTimeMillis();
52146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        }
53146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        return millis;
54146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project    }
55146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project
56146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project    public static final void applyAlphaAnimation(ViewFlipper v) {
57146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        AlphaAnimation in = new AlphaAnimation(0.0f, 1.0f);
58146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project
59146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        in.setStartOffset(0);
60146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        in.setDuration(500);
61146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project
62146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        AlphaAnimation out = new AlphaAnimation(1.0f, 0.0f);
63146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project
64146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        out.setStartOffset(0);
65146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        out.setDuration(500);
66146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project
67146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        v.setInAnimation(in);
68146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        v.setOutAnimation(out);
69146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project    }
70146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project
71146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project    /**
72146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project     * Formats the given Time object so that it gives the month and year
73146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project     * (for example, "September 2007").
74146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project     *
75146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project     * @param time the time to format
76146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project     * @return the string containing the weekday and the date
77146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project     */
78146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project    public static String formatMonthYear(Time time) {
79146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        Resources res = Resources.getSystem();
80146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        return time.format(res.getString(com.android.internal.R.string.month_year));
81146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project    }
82146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project
83146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project    // TODO: replace this with the correct i18n way to do this
84146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project    public static final String englishNthDay[] = {
85146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        "", "1st", "2nd", "3rd", "4th", "5th", "6th", "7th", "8th", "9th",
86146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        "10th", "11th", "12th", "13th", "14th", "15th", "16th", "17th", "18th", "19th",
87146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        "20th", "21st", "22nd", "23rd", "24th", "25th", "26th", "27th", "28th", "29th",
88146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        "30th", "31st"
89146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project    };
90146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project
91146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project    public static String formatNth(int nth) {
92146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        return "the " + englishNthDay[nth];
93146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project    }
94146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project
95146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project    /**
96146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project     * Sets the time to the beginning of the day (midnight) by clearing the
97146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project     * hour, minute, and second fields.
98146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project     */
99146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project    static void setTimeToStartOfDay(Time time) {
100146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        time.second = 0;
101146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        time.minute = 0;
102146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project        time.hour = 0;
103146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project    }
104146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project}
105