1146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project/* 2146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project * Copyright (C) 2007 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 1700b8c1a39d75c1b4626dc987bd1a51cfaf7c9be1Mason Tangpackage com.android.calendar.agenda; 1800b8c1a39d75c1b4626dc987bd1a51cfaf7c9be1Mason Tang 19d002bd24937d9c0823f283884961adc2c902558eIsaac Katzenelsonimport com.android.calendar.ColorChipView; 2000b8c1a39d75c1b4626dc987bd1a51cfaf7c9be1Mason Tangimport com.android.calendar.R; 219a88873f9ec97b47aaaaae47208d22b3998b8e99Erikimport com.android.calendar.Utils; 22146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 23146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.content.Context; 24146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.content.res.Resources; 25146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.database.Cursor; 26a7c0390d9c5dd4ff730de505682687fae5f5ced0RoboErikimport android.provider.CalendarContract.Attendees; 2766b2067e0a389180f909eb0a528bea5f6becca23Michael Chanimport android.text.TextUtils; 28146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.text.format.DateFormat; 29146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.text.format.DateUtils; 309a88873f9ec97b47aaaaae47208d22b3998b8e99Erikimport android.text.format.Time; 31146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.view.View; 32980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelsonimport android.view.ViewGroup; 33146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.widget.ResourceCursorAdapter; 34146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.widget.TextView; 35146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 3613850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chanimport java.util.Formatter; 3713850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chanimport java.util.Locale; 381121e409c5f504e8df75982475d8cc607d5f0dfaRoboErikimport java.util.TimeZone; 3913850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan 40146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectpublic class AgendaAdapter extends ResourceCursorAdapter { 4198ab9de2fa5ad8dfd37faa6593dc66fa426d8960Michael Chan private String mNoTitleLabel; 42146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project private Resources mResources; 43b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan private int mDeclinedColor; 44980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson private int mStandardColor; 45e9baa2499d9592343e30c983116e3f8dc921d3b0RoboErik private int mWhereColor; 46e9baa2499d9592343e30c983116e3f8dc921d3b0RoboErik private int mWhereDeclinedColor; 4723f400cdb34b08d9003f4a96fca5976ad632e4ceMichael Chan // Note: Formatter is not thread safe. Fine for now as it is only used by the main thread. 4823f400cdb34b08d9003f4a96fca5976ad632e4ceMichael Chan private Formatter mFormatter; 4913850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan private StringBuilder mStringBuilder; 50980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson private float mScale; 51980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson 52980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson private int COLOR_CHIP_ALL_DAY_HEIGHT; 53980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson private int COLOR_CHIP_HEIGHT; 54b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan 559a88873f9ec97b47aaaaae47208d22b3998b8e99Erik private Runnable mTZUpdater = new Runnable() { 569a88873f9ec97b47aaaaae47208d22b3998b8e99Erik @Override 579a88873f9ec97b47aaaaae47208d22b3998b8e99Erik public void run() { 589a88873f9ec97b47aaaaae47208d22b3998b8e99Erik notifyDataSetChanged(); 599a88873f9ec97b47aaaaae47208d22b3998b8e99Erik } 609a88873f9ec97b47aaaaae47208d22b3998b8e99Erik }; 619a88873f9ec97b47aaaaae47208d22b3998b8e99Erik 62b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan static class ViewHolder { 63056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson 64056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson public static final int DECLINED_RESPONSE = 0; 65056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson public static final int TENTATIVE_RESPONSE = 1; 66056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson public static final int ACCEPTED_RESPONSE = 2; 67056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson 68d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan /* Event */ 69d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan TextView title; 70d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan TextView when; 71d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan TextView where; 72ffbc790abf31576c84af7ddeab090fcd93ef3299Michael Chan View selectedMarker; 73ffbc790abf31576c84af7ddeab090fcd93ef3299Michael Chan long instanceId; 74d002bd24937d9c0823f283884961adc2c902558eIsaac Katzenelson ColorChipView colorChip; 7531412a0fea756e0da0bcbdf3cdffe4efae21cdbeIsaac Katzenelson long startTimeMilli; 764d09b91abf62994cf47ccdbf7e61f60b891f9f61Isaac Katzenelson boolean allDay; 776467afce8cd7df7d013028462fa6ddf450238a43Isaac Katzenelson boolean grayed; 7831412a0fea756e0da0bcbdf3cdffe4efae21cdbeIsaac Katzenelson int julianDay; 79d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan } 80146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 81146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project public AgendaAdapter(Context context, int resource) { 82146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project super(context, resource, null); 839a88873f9ec97b47aaaaae47208d22b3998b8e99Erik 84146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project mResources = context.getResources(); 85d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan mNoTitleLabel = mResources.getString(R.string.no_title_label); 86980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson mDeclinedColor = mResources.getColor(R.color.agenda_item_declined_color); 87980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson mStandardColor = mResources.getColor(R.color.agenda_item_standard_color); 88e9baa2499d9592343e30c983116e3f8dc921d3b0RoboErik mWhereDeclinedColor = mResources.getColor(R.color.agenda_item_where_declined_text_color); 89e9baa2499d9592343e30c983116e3f8dc921d3b0RoboErik mWhereColor = mResources.getColor(R.color.agenda_item_where_text_color); 9013850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan mStringBuilder = new StringBuilder(50); 9113850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan mFormatter = new Formatter(mStringBuilder, Locale.getDefault()); 92980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson 93980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson COLOR_CHIP_ALL_DAY_HEIGHT = mResources.getInteger(R.integer.color_chip_all_day_height); 94980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson COLOR_CHIP_HEIGHT = mResources.getInteger(R.integer.color_chip_height); 95980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson if (mScale == 0) { 96980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson mScale = mResources.getDisplayMetrics().density; 97980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson if (mScale != 1) { 98980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson COLOR_CHIP_ALL_DAY_HEIGHT *= mScale; 99980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson COLOR_CHIP_HEIGHT *= mScale; 100980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson } 101980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson } 102980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson 103146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 104d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan 105146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project @Override 106146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project public void bindView(View view, Context context, Cursor cursor) { 10713850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan ViewHolder holder = null; 10813850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan 10913850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan // Listview may get confused and pass in a different type of view since 11013850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan // we keep shifting data around. Not a big problem. 11113850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan Object tag = view.getTag(); 11213850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan if (tag instanceof ViewHolder) { 11313850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan holder = (ViewHolder) view.getTag(); 11413850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan } 115d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan 116d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan if (holder == null) { 117d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan holder = new ViewHolder(); 118d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan view.setTag(holder); 119d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan holder.title = (TextView) view.findViewById(R.id.title); 120d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan holder.when = (TextView) view.findViewById(R.id.when); 121d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan holder.where = (TextView) view.findViewById(R.id.where); 122ffbc790abf31576c84af7ddeab090fcd93ef3299Michael Chan holder.selectedMarker = view.findViewById(R.id.selected_marker); 123d002bd24937d9c0823f283884961adc2c902558eIsaac Katzenelson holder.colorChip = (ColorChipView)view.findViewById(R.id.agenda_item_color); 124d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan } 125d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan 12631412a0fea756e0da0bcbdf3cdffe4efae21cdbeIsaac Katzenelson holder.startTimeMilli = cursor.getLong(AgendaWindowAdapter.INDEX_BEGIN); 127056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson // Fade text if event was declined and set the color chip mode (response 128980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson boolean allDay = cursor.getInt(AgendaWindowAdapter.INDEX_ALL_DAY) != 0; 1294d09b91abf62994cf47ccdbf7e61f60b891f9f61Isaac Katzenelson holder.allDay = allDay; 13013850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan int selfAttendeeStatus = cursor.getInt(AgendaWindowAdapter.INDEX_SELF_ATTENDEE_STATUS); 131b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan if (selfAttendeeStatus == Attendees.ATTENDEE_STATUS_DECLINED) { 132980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson holder.title.setTextColor(mDeclinedColor); 133763b9308fa13c8c9c3b9a715f4daf8eba497b935RoboErik holder.when.setTextColor(mWhereDeclinedColor); 134e9baa2499d9592343e30c983116e3f8dc921d3b0RoboErik holder.where.setTextColor(mWhereDeclinedColor); 135aeae98bf8f8c5c544f65f5b6b7f29cfd31366ad5Michael Chan holder.colorChip.setDrawStyle(ColorChipView.DRAW_FADED); 136b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan } else { 137980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson holder.title.setTextColor(mStandardColor); 138763b9308fa13c8c9c3b9a715f4daf8eba497b935RoboErik holder.when.setTextColor(mWhereColor); 139e9baa2499d9592343e30c983116e3f8dc921d3b0RoboErik holder.where.setTextColor(mWhereColor); 140929a3b7e9d4a8bb388b04bdd7dde07619e2d1835RoboErik if (selfAttendeeStatus == Attendees.ATTENDEE_STATUS_INVITED) { 141d002bd24937d9c0823f283884961adc2c902558eIsaac Katzenelson holder.colorChip.setDrawStyle(ColorChipView.DRAW_BORDER); 142056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson } else { 143d002bd24937d9c0823f283884961adc2c902558eIsaac Katzenelson holder.colorChip.setDrawStyle(ColorChipView.DRAW_FULL); 144056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson } 145056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson } 146056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson 147980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson // Set the size of the color chip 148980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson ViewGroup.LayoutParams params = holder.colorChip.getLayoutParams(); 149980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson if (allDay) { 150980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson params.height = COLOR_CHIP_ALL_DAY_HEIGHT; 151980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson } else { 152980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson params.height = COLOR_CHIP_HEIGHT; 153980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson 154980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson } 155980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson holder.colorChip.setLayoutParams(params); 156980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson 157056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson // Deal with exchange events that the owner cannot respond to 158056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson int canRespond = cursor.getInt(AgendaWindowAdapter.INDEX_CAN_ORGANIZER_RESPOND); 159056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson if (canRespond == 0) { 160056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson String owner = cursor.getString(AgendaWindowAdapter.INDEX_OWNER_ACCOUNT); 161056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson String organizer = cursor.getString(AgendaWindowAdapter.INDEX_ORGANIZER); 162056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson if (owner.equals(organizer)) { 163d002bd24937d9c0823f283884961adc2c902558eIsaac Katzenelson holder.colorChip.setDrawStyle(ColorChipView.DRAW_FULL); 164980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson holder.title.setTextColor(mStandardColor); 165980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson holder.when.setTextColor(mStandardColor); 166980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson holder.where.setTextColor(mStandardColor); 167056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson } 168b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan } 169d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan 170d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan TextView title = holder.title; 171d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan TextView when = holder.when; 172d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan TextView where = holder.where; 173d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan 174ffbc790abf31576c84af7ddeab090fcd93ef3299Michael Chan holder.instanceId = cursor.getLong(AgendaWindowAdapter.INDEX_INSTANCE_ID); 175ffbc790abf31576c84af7ddeab090fcd93ef3299Michael Chan 176b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan /* Calendar Color */ 1774acb2fd087308dea146b8b10f5278c59df387680RoboErik int color = Utils.getDisplayColorFromColor(cursor.getInt(AgendaWindowAdapter.INDEX_COLOR)); 178d002bd24937d9c0823f283884961adc2c902558eIsaac Katzenelson holder.colorChip.setColor(color); 179146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 180146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project // What 18113850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan String titleString = cursor.getString(AgendaWindowAdapter.INDEX_TITLE); 182146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project if (titleString == null || titleString.length() == 0) { 183d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan titleString = mNoTitleLabel; 184146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 185146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project title.setText(titleString); 186b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan 187146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project // When 18813850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan long begin = cursor.getLong(AgendaWindowAdapter.INDEX_BEGIN); 18913850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan long end = cursor.getLong(AgendaWindowAdapter.INDEX_END); 1901121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik String eventTz = cursor.getString(AgendaWindowAdapter.INDEX_TIME_ZONE); 1919a88873f9ec97b47aaaaae47208d22b3998b8e99Erik int flags = 0; 192146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project String whenString; 1939a88873f9ec97b47aaaaae47208d22b3998b8e99Erik // It's difficult to update all the adapters so just query this each 1949a88873f9ec97b47aaaaae47208d22b3998b8e99Erik // time we need to build the view. 1951121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik String tzString = Utils.getTimeZone(context, mTZUpdater); 196146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project if (allDay) { 1971121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik tzString = Time.TIMEZONE_UTC; 198146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } else { 199146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project flags = DateUtils.FORMAT_SHOW_TIME; 200146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 201146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project if (DateFormat.is24HourFormat(context)) { 202146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project flags |= DateUtils.FORMAT_24HOUR; 203146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 20413850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan mStringBuilder.setLength(0); 2051121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik whenString = DateUtils.formatDateRange(context, mFormatter, begin, end, flags, tzString) 2069a88873f9ec97b47aaaaae47208d22b3998b8e99Erik .toString(); 2071121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik if (!allDay && !TextUtils.equals(tzString, eventTz)) { 2081121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik String displayName; 2091121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik // Figure out if this is in DST 2101121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik Time date = new Time(tzString); 2111121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik date.set(begin); 2121121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik 2131121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik TimeZone tz = TimeZone.getTimeZone(tzString); 2141121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik if (tz == null || tz.getID().equals("GMT")) { 2151121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik displayName = tzString; 2161121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik } else { 2171121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik displayName = tz.getDisplayName(date.isDst != 0, TimeZone.SHORT); 2181121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik } 2191121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik whenString += " (" + displayName + ")"; 2201121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik } 221146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project when.setText(whenString); 222b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan 2239a39bddb8e519b710a06d1c77257de6962ae5f72Isaac Katzenelson /* Recurring event icon is removed 22413850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan String rrule = cursor.getString(AgendaWindowAdapter.INDEX_RRULE); 22566b2067e0a389180f909eb0a528bea5f6becca23Michael Chan if (!TextUtils.isEmpty(rrule)) { 226b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan when.setCompoundDrawablesWithIntrinsicBounds(null, null, 227146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project context.getResources().getDrawable(R.drawable.ic_repeat_dark), null); 228146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project when.setCompoundDrawablePadding(5); 229146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } else { 230146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project when.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); 2319a39bddb8e519b710a06d1c77257de6962ae5f72Isaac Katzenelson } */ 232b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan 233146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project /* 234146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project // Repeating info 235146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project View repeatContainer = view.findViewById(R.id.repeat_icon); 2364484b04707d5570a6de4a5a4b228a9bb273bbab7Michael Chan String rrule = cursor.getString(AgendaWindowAdapter.INDEX_RRULE); 23766b2067e0a389180f909eb0a528bea5f6becca23Michael Chan if (!TextUtils.isEmpty(rrule)) { 238146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project repeatContainer.setVisibility(View.VISIBLE); 239146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } else { 240146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project repeatContainer.setVisibility(View.GONE); 241146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 242146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project */ 243b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan 244146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project /* 245146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project // Reminder 2464484b04707d5570a6de4a5a4b228a9bb273bbab7Michael Chan boolean hasAlarm = cursor.getInt(AgendaWindowAdapter.INDEX_HAS_ALARM) != 0; 247146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project if (hasAlarm) { 2484484b04707d5570a6de4a5a4b228a9bb273bbab7Michael Chan updateReminder(view, context, begin, cursor.getLong(AgendaWindowAdapter.INDEX_EVENT_ID)); 249146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 250146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project */ 251b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan 252146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project // Where 25313850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan String whereString = cursor.getString(AgendaWindowAdapter.INDEX_EVENT_LOCATION); 254146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project if (whereString != null && whereString.length() > 0) { 255146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project where.setVisibility(View.VISIBLE); 256146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project where.setText(whereString); 257146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } else { 258146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project where.setVisibility(View.GONE); 259146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 260146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 261146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 262146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project /* 263146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project public static void updateReminder(View view, Context context, long begin, long eventId) { 264146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project ContentResolver cr = context.getContentResolver(); 265146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project Uri uri = Reminders.CONTENT_URI; 266146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project String where = String.format(REMINDERS_WHERE, eventId); 267b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan 268146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project Cursor remindersCursor = cr.query(uri, REMINDERS_PROJECTION, where, null, null); 269146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project if (remindersCursor != null) { 270146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project LayoutInflater inflater = 271146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 272146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project LinearLayout parent = (LinearLayout) view.findViewById(R.id.reminders_container); 273146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project parent.removeAllViews(); 274146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project while (remindersCursor.moveToNext()) { 275146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project int alarm = remindersCursor.getInt(REMINDERS_INDEX_MINUTES); 276146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project String before = EditEvent.constructReminderLabel(context, alarm, true); 277146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project LinearLayout reminderItem = (LinearLayout) 278146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project inflater.inflate(R.layout.agenda_reminder_item, null); 279146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project TextView reminderItemText = (TextView) reminderItem.findViewById(R.id.reminder); 280146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project reminderItemText.setText(before); 281146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project parent.addView(reminderItem); 282146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 283146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 284146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project remindersCursor.close(); 285146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 286146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project */ 287146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project} 288146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 289