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 19146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.content.Context; 20146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.content.res.Resources; 21146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.database.Cursor; 22a7c0390d9c5dd4ff730de505682687fae5f5ced0RoboErikimport android.provider.CalendarContract.Attendees; 2366b2067e0a389180f909eb0a528bea5f6becca23Michael Chanimport android.text.TextUtils; 24146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.text.format.DateFormat; 25146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.text.format.DateUtils; 269a88873f9ec97b47aaaaae47208d22b3998b8e99Erikimport android.text.format.Time; 27146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.view.View; 28980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelsonimport android.view.ViewGroup; 2918af2447a421c514ce6da1723abea2869e349fb3Isaac Katzenelsonimport android.widget.LinearLayout; 30146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.widget.ResourceCursorAdapter; 31146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectimport android.widget.TextView; 32146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 3318af2447a421c514ce6da1723abea2869e349fb3Isaac Katzenelsonimport com.android.calendar.ColorChipView; 3418af2447a421c514ce6da1723abea2869e349fb3Isaac Katzenelsonimport com.android.calendar.R; 3518af2447a421c514ce6da1723abea2869e349fb3Isaac Katzenelsonimport com.android.calendar.Utils; 3618af2447a421c514ce6da1723abea2869e349fb3Isaac Katzenelson 3713850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chanimport java.util.Formatter; 3813850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chanimport java.util.Locale; 391121e409c5f504e8df75982475d8cc607d5f0dfaRoboErikimport java.util.TimeZone; 4013850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan 41146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Projectpublic class AgendaAdapter extends ResourceCursorAdapter { 4218af2447a421c514ce6da1723abea2869e349fb3Isaac Katzenelson private final String mNoTitleLabel; 4318af2447a421c514ce6da1723abea2869e349fb3Isaac Katzenelson private final Resources mResources; 4418af2447a421c514ce6da1723abea2869e349fb3Isaac Katzenelson private final int mDeclinedColor; 4518af2447a421c514ce6da1723abea2869e349fb3Isaac Katzenelson private final int mStandardColor; 4618af2447a421c514ce6da1723abea2869e349fb3Isaac Katzenelson private final int mWhereColor; 4718af2447a421c514ce6da1723abea2869e349fb3Isaac Katzenelson private final int mWhereDeclinedColor; 4823f400cdb34b08d9003f4a96fca5976ad632e4ceMichael Chan // Note: Formatter is not thread safe. Fine for now as it is only used by the main thread. 4918af2447a421c514ce6da1723abea2869e349fb3Isaac Katzenelson private final Formatter mFormatter; 5018af2447a421c514ce6da1723abea2869e349fb3Isaac Katzenelson private final StringBuilder mStringBuilder; 51980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson private float mScale; 52980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson 53980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson private int COLOR_CHIP_ALL_DAY_HEIGHT; 54980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson private int COLOR_CHIP_HEIGHT; 55b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan 5618af2447a421c514ce6da1723abea2869e349fb3Isaac Katzenelson private final Runnable mTZUpdater = new Runnable() { 579a88873f9ec97b47aaaaae47208d22b3998b8e99Erik @Override 589a88873f9ec97b47aaaaae47208d22b3998b8e99Erik public void run() { 599a88873f9ec97b47aaaaae47208d22b3998b8e99Erik notifyDataSetChanged(); 609a88873f9ec97b47aaaaae47208d22b3998b8e99Erik } 619a88873f9ec97b47aaaaae47208d22b3998b8e99Erik }; 629a88873f9ec97b47aaaaae47208d22b3998b8e99Erik 63b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan static class ViewHolder { 64056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson 65056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson public static final int DECLINED_RESPONSE = 0; 66056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson public static final int TENTATIVE_RESPONSE = 1; 67056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson public static final int ACCEPTED_RESPONSE = 2; 68056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson 69d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan /* Event */ 70d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan TextView title; 71d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan TextView when; 72d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan TextView where; 73ffbc790abf31576c84af7ddeab090fcd93ef3299Michael Chan View selectedMarker; 7418af2447a421c514ce6da1723abea2869e349fb3Isaac Katzenelson LinearLayout textContainer; 75ffbc790abf31576c84af7ddeab090fcd93ef3299Michael Chan long instanceId; 76d002bd24937d9c0823f283884961adc2c902558eIsaac Katzenelson ColorChipView colorChip; 7731412a0fea756e0da0bcbdf3cdffe4efae21cdbeIsaac Katzenelson long startTimeMilli; 784d09b91abf62994cf47ccdbf7e61f60b891f9f61Isaac Katzenelson boolean allDay; 796467afce8cd7df7d013028462fa6ddf450238a43Isaac Katzenelson boolean grayed; 8031412a0fea756e0da0bcbdf3cdffe4efae21cdbeIsaac Katzenelson int julianDay; 81d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan } 82146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 83146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project public AgendaAdapter(Context context, int resource) { 84146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project super(context, resource, null); 859a88873f9ec97b47aaaaae47208d22b3998b8e99Erik 86146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project mResources = context.getResources(); 87d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan mNoTitleLabel = mResources.getString(R.string.no_title_label); 88980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson mDeclinedColor = mResources.getColor(R.color.agenda_item_declined_color); 89980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson mStandardColor = mResources.getColor(R.color.agenda_item_standard_color); 90e9baa2499d9592343e30c983116e3f8dc921d3b0RoboErik mWhereDeclinedColor = mResources.getColor(R.color.agenda_item_where_declined_text_color); 91e9baa2499d9592343e30c983116e3f8dc921d3b0RoboErik mWhereColor = mResources.getColor(R.color.agenda_item_where_text_color); 9213850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan mStringBuilder = new StringBuilder(50); 9313850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan mFormatter = new Formatter(mStringBuilder, Locale.getDefault()); 94980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson 95980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson COLOR_CHIP_ALL_DAY_HEIGHT = mResources.getInteger(R.integer.color_chip_all_day_height); 96980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson COLOR_CHIP_HEIGHT = mResources.getInteger(R.integer.color_chip_height); 97980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson if (mScale == 0) { 98980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson mScale = mResources.getDisplayMetrics().density; 99980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson if (mScale != 1) { 100980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson COLOR_CHIP_ALL_DAY_HEIGHT *= mScale; 101980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson COLOR_CHIP_HEIGHT *= mScale; 102980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson } 103980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson } 104980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson 105146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 106d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan 107146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project @Override 108146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project public void bindView(View view, Context context, Cursor cursor) { 10913850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan ViewHolder holder = null; 11013850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan 11113850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan // Listview may get confused and pass in a different type of view since 11213850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan // we keep shifting data around. Not a big problem. 11313850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan Object tag = view.getTag(); 11413850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan if (tag instanceof ViewHolder) { 11513850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan holder = (ViewHolder) view.getTag(); 11613850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan } 117d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan 118d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan if (holder == null) { 119d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan holder = new ViewHolder(); 120d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan view.setTag(holder); 121d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan holder.title = (TextView) view.findViewById(R.id.title); 122d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan holder.when = (TextView) view.findViewById(R.id.when); 123d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan holder.where = (TextView) view.findViewById(R.id.where); 12418af2447a421c514ce6da1723abea2869e349fb3Isaac Katzenelson holder.textContainer = (LinearLayout) 12518af2447a421c514ce6da1723abea2869e349fb3Isaac Katzenelson view.findViewById(R.id.agenda_item_text_container); 126ffbc790abf31576c84af7ddeab090fcd93ef3299Michael Chan holder.selectedMarker = view.findViewById(R.id.selected_marker); 127d002bd24937d9c0823f283884961adc2c902558eIsaac Katzenelson holder.colorChip = (ColorChipView)view.findViewById(R.id.agenda_item_color); 128d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan } 129d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan 13031412a0fea756e0da0bcbdf3cdffe4efae21cdbeIsaac Katzenelson holder.startTimeMilli = cursor.getLong(AgendaWindowAdapter.INDEX_BEGIN); 131056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson // Fade text if event was declined and set the color chip mode (response 132980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson boolean allDay = cursor.getInt(AgendaWindowAdapter.INDEX_ALL_DAY) != 0; 1334d09b91abf62994cf47ccdbf7e61f60b891f9f61Isaac Katzenelson holder.allDay = allDay; 13413850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan int selfAttendeeStatus = cursor.getInt(AgendaWindowAdapter.INDEX_SELF_ATTENDEE_STATUS); 135b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan if (selfAttendeeStatus == Attendees.ATTENDEE_STATUS_DECLINED) { 136980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson holder.title.setTextColor(mDeclinedColor); 137763b9308fa13c8c9c3b9a715f4daf8eba497b935RoboErik holder.when.setTextColor(mWhereDeclinedColor); 138e9baa2499d9592343e30c983116e3f8dc921d3b0RoboErik holder.where.setTextColor(mWhereDeclinedColor); 139aeae98bf8f8c5c544f65f5b6b7f29cfd31366ad5Michael Chan holder.colorChip.setDrawStyle(ColorChipView.DRAW_FADED); 140b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan } else { 141980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson holder.title.setTextColor(mStandardColor); 142763b9308fa13c8c9c3b9a715f4daf8eba497b935RoboErik holder.when.setTextColor(mWhereColor); 143e9baa2499d9592343e30c983116e3f8dc921d3b0RoboErik holder.where.setTextColor(mWhereColor); 144929a3b7e9d4a8bb388b04bdd7dde07619e2d1835RoboErik if (selfAttendeeStatus == Attendees.ATTENDEE_STATUS_INVITED) { 145d002bd24937d9c0823f283884961adc2c902558eIsaac Katzenelson holder.colorChip.setDrawStyle(ColorChipView.DRAW_BORDER); 146056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson } else { 147d002bd24937d9c0823f283884961adc2c902558eIsaac Katzenelson holder.colorChip.setDrawStyle(ColorChipView.DRAW_FULL); 148056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson } 149056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson } 150056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson 151980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson // Set the size of the color chip 152980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson ViewGroup.LayoutParams params = holder.colorChip.getLayoutParams(); 153980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson if (allDay) { 154980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson params.height = COLOR_CHIP_ALL_DAY_HEIGHT; 155980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson } else { 156980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson params.height = COLOR_CHIP_HEIGHT; 157980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson 158980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson } 159980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson holder.colorChip.setLayoutParams(params); 160980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson 161056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson // Deal with exchange events that the owner cannot respond to 162056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson int canRespond = cursor.getInt(AgendaWindowAdapter.INDEX_CAN_ORGANIZER_RESPOND); 163056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson if (canRespond == 0) { 164056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson String owner = cursor.getString(AgendaWindowAdapter.INDEX_OWNER_ACCOUNT); 165056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson String organizer = cursor.getString(AgendaWindowAdapter.INDEX_ORGANIZER); 166056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson if (owner.equals(organizer)) { 167d002bd24937d9c0823f283884961adc2c902558eIsaac Katzenelson holder.colorChip.setDrawStyle(ColorChipView.DRAW_FULL); 168980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson holder.title.setTextColor(mStandardColor); 169980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson holder.when.setTextColor(mStandardColor); 170980d530f002b335916e8b31662e50a94b43cae18Isaac Katzenelson holder.where.setTextColor(mStandardColor); 171056079920bc9d141241648662ad4ebdea91b1fd4Isaac Katzenelson } 172b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan } 173d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan 174d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan TextView title = holder.title; 175d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan TextView when = holder.when; 176d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan TextView where = holder.where; 177d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan 178ffbc790abf31576c84af7ddeab090fcd93ef3299Michael Chan holder.instanceId = cursor.getLong(AgendaWindowAdapter.INDEX_INSTANCE_ID); 179ffbc790abf31576c84af7ddeab090fcd93ef3299Michael Chan 180b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan /* Calendar Color */ 1814acb2fd087308dea146b8b10f5278c59df387680RoboErik int color = Utils.getDisplayColorFromColor(cursor.getInt(AgendaWindowAdapter.INDEX_COLOR)); 182d002bd24937d9c0823f283884961adc2c902558eIsaac Katzenelson holder.colorChip.setColor(color); 183146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 184146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project // What 18513850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan String titleString = cursor.getString(AgendaWindowAdapter.INDEX_TITLE); 186146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project if (titleString == null || titleString.length() == 0) { 187d06a1bf1cf81b818b3e3dc0f81b7cb07382425f2Michael Chan titleString = mNoTitleLabel; 188146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 189146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project title.setText(titleString); 190b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan 191146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project // When 19213850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan long begin = cursor.getLong(AgendaWindowAdapter.INDEX_BEGIN); 19313850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan long end = cursor.getLong(AgendaWindowAdapter.INDEX_END); 1941121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik String eventTz = cursor.getString(AgendaWindowAdapter.INDEX_TIME_ZONE); 1959a88873f9ec97b47aaaaae47208d22b3998b8e99Erik int flags = 0; 196146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project String whenString; 1979a88873f9ec97b47aaaaae47208d22b3998b8e99Erik // It's difficult to update all the adapters so just query this each 1989a88873f9ec97b47aaaaae47208d22b3998b8e99Erik // time we need to build the view. 1991121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik String tzString = Utils.getTimeZone(context, mTZUpdater); 200146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project if (allDay) { 2011121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik tzString = Time.TIMEZONE_UTC; 202146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } else { 203146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project flags = DateUtils.FORMAT_SHOW_TIME; 204146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 205146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project if (DateFormat.is24HourFormat(context)) { 206146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project flags |= DateUtils.FORMAT_24HOUR; 207146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 20813850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan mStringBuilder.setLength(0); 2091121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik whenString = DateUtils.formatDateRange(context, mFormatter, begin, end, flags, tzString) 2109a88873f9ec97b47aaaaae47208d22b3998b8e99Erik .toString(); 2111121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik if (!allDay && !TextUtils.equals(tzString, eventTz)) { 2121121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik String displayName; 2131121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik // Figure out if this is in DST 2141121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik Time date = new Time(tzString); 2151121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik date.set(begin); 2161121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik 2171121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik TimeZone tz = TimeZone.getTimeZone(tzString); 2181121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik if (tz == null || tz.getID().equals("GMT")) { 2191121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik displayName = tzString; 2201121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik } else { 2211121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik displayName = tz.getDisplayName(date.isDst != 0, TimeZone.SHORT); 2221121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik } 2231121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik whenString += " (" + displayName + ")"; 2241121e409c5f504e8df75982475d8cc607d5f0dfaRoboErik } 225146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project when.setText(whenString); 226b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan 2279a39bddb8e519b710a06d1c77257de6962ae5f72Isaac Katzenelson /* Recurring event icon is removed 22813850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan String rrule = cursor.getString(AgendaWindowAdapter.INDEX_RRULE); 22966b2067e0a389180f909eb0a528bea5f6becca23Michael Chan if (!TextUtils.isEmpty(rrule)) { 230b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan when.setCompoundDrawablesWithIntrinsicBounds(null, null, 231146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project context.getResources().getDrawable(R.drawable.ic_repeat_dark), null); 232146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project when.setCompoundDrawablePadding(5); 233146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } else { 234146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project when.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); 2359a39bddb8e519b710a06d1c77257de6962ae5f72Isaac Katzenelson } */ 236b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan 237146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project /* 238146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project // Repeating info 239146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project View repeatContainer = view.findViewById(R.id.repeat_icon); 2404484b04707d5570a6de4a5a4b228a9bb273bbab7Michael Chan String rrule = cursor.getString(AgendaWindowAdapter.INDEX_RRULE); 24166b2067e0a389180f909eb0a528bea5f6becca23Michael Chan if (!TextUtils.isEmpty(rrule)) { 242146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project repeatContainer.setVisibility(View.VISIBLE); 243146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } else { 244146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project repeatContainer.setVisibility(View.GONE); 245146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 246146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project */ 247b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan 248146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project /* 249146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project // Reminder 2504484b04707d5570a6de4a5a4b228a9bb273bbab7Michael Chan boolean hasAlarm = cursor.getInt(AgendaWindowAdapter.INDEX_HAS_ALARM) != 0; 251146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project if (hasAlarm) { 2524484b04707d5570a6de4a5a4b228a9bb273bbab7Michael Chan updateReminder(view, context, begin, cursor.getLong(AgendaWindowAdapter.INDEX_EVENT_ID)); 253146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 254146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project */ 255b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan 256146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project // Where 25713850936e579386a0f2ee589607bbf8b7cf1a7d4Michael Chan String whereString = cursor.getString(AgendaWindowAdapter.INDEX_EVENT_LOCATION); 258146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project if (whereString != null && whereString.length() > 0) { 259146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project where.setVisibility(View.VISIBLE); 260146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project where.setText(whereString); 261146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } else { 262146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project where.setVisibility(View.GONE); 263146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 264146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 265146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 266146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project /* 267146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project public static void updateReminder(View view, Context context, long begin, long eventId) { 268146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project ContentResolver cr = context.getContentResolver(); 269146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project Uri uri = Reminders.CONTENT_URI; 270146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project String where = String.format(REMINDERS_WHERE, eventId); 271b3866cbd69a2688d0cb165f18f133e73f0243c8eMichael Chan 272146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project Cursor remindersCursor = cr.query(uri, REMINDERS_PROJECTION, where, null, null); 273146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project if (remindersCursor != null) { 274146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project LayoutInflater inflater = 275146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 276146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project LinearLayout parent = (LinearLayout) view.findViewById(R.id.reminders_container); 277146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project parent.removeAllViews(); 278146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project while (remindersCursor.moveToNext()) { 279146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project int alarm = remindersCursor.getInt(REMINDERS_INDEX_MINUTES); 280146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project String before = EditEvent.constructReminderLabel(context, alarm, true); 281146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project LinearLayout reminderItem = (LinearLayout) 282146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project inflater.inflate(R.layout.agenda_reminder_item, null); 283146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project TextView reminderItemText = (TextView) reminderItem.findViewById(R.id.reminder); 284146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project reminderItemText.setText(before); 285146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project parent.addView(reminderItem); 286146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 287146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 288146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project remindersCursor.close(); 289146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project } 290146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project */ 291146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project} 292146de36083f6ce8b7e8a1f974d3990594a36bfecThe Android Open Source Project 293