• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2008 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.calendar.alerts;
18 
19 import com.android.calendar.R;
20 import com.android.calendar.Utils;
21 
22 import android.content.Context;
23 import android.content.res.Resources;
24 import android.database.Cursor;
25 import android.text.TextUtils;
26 import android.text.format.DateFormat;
27 import android.text.format.DateUtils;
28 import android.text.format.Time;
29 import android.view.View;
30 import android.widget.ResourceCursorAdapter;
31 import android.widget.TextView;
32 
33 import java.util.Locale;
34 import java.util.TimeZone;
35 
36 public class AlertAdapter extends ResourceCursorAdapter {
37 
38     private static boolean mFirstTime = true;
39     private static int mTitleColor;
40     private static int mOtherColor; // non-title fields
41     private static int mPastEventColor;
42 
AlertAdapter(Context context, int resource)43     public AlertAdapter(Context context, int resource) {
44         super(context, resource, null);
45     }
46 
47     @Override
bindView(View view, Context context, Cursor cursor)48     public void bindView(View view, Context context, Cursor cursor) {
49         View square = view.findViewById(R.id.color_square);
50         int color = Utils.getDisplayColorFromColor(cursor.getInt(AlertActivity.INDEX_COLOR));
51         square.setBackgroundColor(color);
52 
53         // Repeating info
54         View repeatContainer = view.findViewById(R.id.repeat_icon);
55         String rrule = cursor.getString(AlertActivity.INDEX_RRULE);
56         if (!TextUtils.isEmpty(rrule)) {
57             repeatContainer.setVisibility(View.VISIBLE);
58         } else {
59             repeatContainer.setVisibility(View.GONE);
60         }
61 
62         /*
63         // Reminder
64         boolean hasAlarm = cursor.getInt(AlertActivity.INDEX_HAS_ALARM) != 0;
65         if (hasAlarm) {
66             AgendaAdapter.updateReminder(view, context, cursor.getLong(AlertActivity.INDEX_BEGIN),
67                     cursor.getLong(AlertActivity.INDEX_EVENT_ID));
68         }
69         */
70 
71         String eventName = cursor.getString(AlertActivity.INDEX_TITLE);
72         String location = cursor.getString(AlertActivity.INDEX_EVENT_LOCATION);
73         long startMillis = cursor.getLong(AlertActivity.INDEX_BEGIN);
74         long endMillis = cursor.getLong(AlertActivity.INDEX_END);
75         boolean allDay = cursor.getInt(AlertActivity.INDEX_ALL_DAY) != 0;
76 
77         updateView(context, view, eventName, location, startMillis, endMillis, allDay);
78     }
79 
updateView(Context context, View view, String eventName, String location, long startMillis, long endMillis, boolean allDay)80     public static void updateView(Context context, View view, String eventName, String location,
81             long startMillis, long endMillis, boolean allDay) {
82         Resources res = context.getResources();
83 
84         TextView titleView = (TextView) view.findViewById(R.id.event_title);
85         TextView whenView = (TextView) view.findViewById(R.id.when);
86         TextView whereView = (TextView) view.findViewById(R.id.where);
87         if (mFirstTime) {
88             mPastEventColor = res.getColor(R.color.alert_past_event);
89             mTitleColor = res.getColor(R.color.alert_event_title);
90             mOtherColor = res.getColor(R.color.alert_event_other);
91             mFirstTime = false;
92         }
93 
94         if (endMillis < System.currentTimeMillis()) {
95             titleView.setTextColor(mPastEventColor);
96             whenView.setTextColor(mPastEventColor);
97             whereView.setTextColor(mPastEventColor);
98         } else {
99             titleView.setTextColor(mTitleColor);
100             whenView.setTextColor(mOtherColor);
101             whereView.setTextColor(mOtherColor);
102         }
103 
104         // What
105         if (eventName == null || eventName.length() == 0) {
106             eventName = res.getString(R.string.no_title_label);
107         }
108         titleView.setText(eventName);
109 
110         // When
111         String when;
112         int flags;
113         String tz = Utils.getTimeZone(context, null);
114         if (allDay) {
115             flags = DateUtils.FORMAT_UTC | DateUtils.FORMAT_SHOW_WEEKDAY |
116                     DateUtils.FORMAT_SHOW_DATE;
117             tz = Time.TIMEZONE_UTC;
118         } else {
119             flags = DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE;
120         }
121         if (DateFormat.is24HourFormat(context)) {
122             flags |= DateUtils.FORMAT_24HOUR;
123         }
124 
125         Time time = new Time(tz);
126         time.set(startMillis);
127         boolean isDST = time.isDst != 0;
128         StringBuilder sb = new StringBuilder(
129                 Utils.formatDateRange(context, startMillis, endMillis, flags));
130         if (!allDay && tz != Time.getCurrentTimezone()) {
131             sb.append(" ").append(TimeZone.getTimeZone(tz).getDisplayName(
132                     isDST, TimeZone.SHORT, Locale.getDefault()));
133         }
134 
135         when = sb.toString();
136         whenView.setText(when);
137 
138         // Where
139         if (location == null || location.length() == 0) {
140             whereView.setVisibility(View.GONE);
141         } else {
142             whereView.setText(location);
143             whereView.setVisibility(View.VISIBLE);
144         }
145     }
146 }
147