• 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 AlertActivity alertActivity;
39     private static boolean mFirstTime = true;
40     private static int mTitleColor;
41     private static int mOtherColor; // non-title fields
42     private static int mPastEventColor;
43 
AlertAdapter(AlertActivity activity, int resource)44     public AlertAdapter(AlertActivity activity, int resource) {
45         super(activity, resource, null);
46         this.alertActivity = activity;
47     }
48 
49     @Override
bindView(View view, Context context, Cursor cursor)50     public void bindView(View view, Context context, Cursor cursor) {
51         View square = view.findViewById(R.id.color_square);
52         int color = Utils.getDisplayColorFromColor(cursor.getInt(AlertActivity.INDEX_COLOR));
53         square.setBackgroundColor(color);
54 
55         // Repeating info
56         View repeatContainer = view.findViewById(R.id.repeat_icon);
57         String rrule = cursor.getString(AlertActivity.INDEX_RRULE);
58         if (!TextUtils.isEmpty(rrule)) {
59             repeatContainer.setVisibility(View.VISIBLE);
60         } else {
61             repeatContainer.setVisibility(View.GONE);
62         }
63 
64         /*
65         // Reminder
66         boolean hasAlarm = cursor.getInt(AlertActivity.INDEX_HAS_ALARM) != 0;
67         if (hasAlarm) {
68             AgendaAdapter.updateReminder(view, context, cursor.getLong(AlertActivity.INDEX_BEGIN),
69                     cursor.getLong(AlertActivity.INDEX_EVENT_ID));
70         }
71         */
72 
73         String eventName = cursor.getString(AlertActivity.INDEX_TITLE);
74         String location = cursor.getString(AlertActivity.INDEX_EVENT_LOCATION);
75         long startMillis = cursor.getLong(AlertActivity.INDEX_BEGIN);
76         long endMillis = cursor.getLong(AlertActivity.INDEX_END);
77         boolean allDay = cursor.getInt(AlertActivity.INDEX_ALL_DAY) != 0;
78 
79         updateView(context, view, eventName, location, startMillis, endMillis, allDay);
80     }
81 
updateView(Context context, View view, String eventName, String location, long startMillis, long endMillis, boolean allDay)82     public static void updateView(Context context, View view, String eventName, String location,
83             long startMillis, long endMillis, boolean allDay) {
84         Resources res = context.getResources();
85 
86         TextView titleView = (TextView) view.findViewById(R.id.event_title);
87         TextView whenView = (TextView) view.findViewById(R.id.when);
88         TextView whereView = (TextView) view.findViewById(R.id.where);
89         if (mFirstTime) {
90             mPastEventColor = res.getColor(R.color.alert_past_event);
91             mTitleColor = res.getColor(R.color.alert_event_title);
92             mOtherColor = res.getColor(R.color.alert_event_other);
93             mFirstTime = false;
94         }
95 
96         if (endMillis < System.currentTimeMillis()) {
97             titleView.setTextColor(mPastEventColor);
98             whenView.setTextColor(mPastEventColor);
99             whereView.setTextColor(mPastEventColor);
100         } else {
101             titleView.setTextColor(mTitleColor);
102             whenView.setTextColor(mOtherColor);
103             whereView.setTextColor(mOtherColor);
104         }
105 
106         // What
107         if (eventName == null || eventName.length() == 0) {
108             eventName = res.getString(R.string.no_title_label);
109         }
110         titleView.setText(eventName);
111 
112         // When
113         String when;
114         int flags;
115         String tz = Utils.getTimeZone(context, null);
116         if (allDay) {
117             flags = DateUtils.FORMAT_UTC | DateUtils.FORMAT_SHOW_WEEKDAY |
118                     DateUtils.FORMAT_SHOW_DATE;
119             tz = Time.TIMEZONE_UTC;
120         } else {
121             flags = DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE;
122         }
123         if (DateFormat.is24HourFormat(context)) {
124             flags |= DateUtils.FORMAT_24HOUR;
125         }
126 
127         Time time = new Time(tz);
128         time.set(startMillis);
129         boolean isDST = time.isDst != 0;
130         StringBuilder sb = new StringBuilder(
131                 Utils.formatDateRange(context, startMillis, endMillis, flags));
132         if (!allDay && tz != Time.getCurrentTimezone()) {
133             sb.append(" ").append(TimeZone.getTimeZone(tz).getDisplayName(
134                     isDST, TimeZone.SHORT, Locale.getDefault()));
135         }
136 
137         when = sb.toString();
138         whenView.setText(when);
139 
140         // Where
141         if (location == null || location.length() == 0) {
142             whereView.setVisibility(View.GONE);
143         } else {
144             whereView.setText(location);
145             whereView.setVisibility(View.VISIBLE);
146         }
147     }
148 
149     @Override
onContentChanged()150     protected void onContentChanged () {
151         super.onContentChanged();
152 
153         // Prevent empty popup notification.
154         alertActivity.closeActivityIfEmpty();
155     }
156 }
157