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