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