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