1c5afb16430a145f20d7c887e45f47b38687054daMarc Blank/** 2c5afb16430a145f20d7c887e45f47b38687054daMarc Blank * Copyright (c) 2012, Google Inc. 3c5afb16430a145f20d7c887e45f47b38687054daMarc Blank * 4c5afb16430a145f20d7c887e45f47b38687054daMarc Blank * Licensed under the Apache License, Version 2.0 (the "License"); 5c5afb16430a145f20d7c887e45f47b38687054daMarc Blank * you may not use this file except in compliance with the License. 6c5afb16430a145f20d7c887e45f47b38687054daMarc Blank * You may obtain a copy of the License at 7c5afb16430a145f20d7c887e45f47b38687054daMarc Blank * 8c5afb16430a145f20d7c887e45f47b38687054daMarc Blank * http://www.apache.org/licenses/LICENSE-2.0 9c5afb16430a145f20d7c887e45f47b38687054daMarc Blank * 10c5afb16430a145f20d7c887e45f47b38687054daMarc Blank * Unless required by applicable law or agreed to in writing, software 11c5afb16430a145f20d7c887e45f47b38687054daMarc Blank * distributed under the License is distributed on an "AS IS" BASIS, 12c5afb16430a145f20d7c887e45f47b38687054daMarc Blank * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c5afb16430a145f20d7c887e45f47b38687054daMarc Blank * See the License for the specific language governing permissions and 14c5afb16430a145f20d7c887e45f47b38687054daMarc Blank * limitations under the License. 15c5afb16430a145f20d7c887e45f47b38687054daMarc Blank */ 16c5afb16430a145f20d7c887e45f47b38687054daMarc Blank 17c5afb16430a145f20d7c887e45f47b38687054daMarc Blankpackage com.android.email.activity; 18c5afb16430a145f20d7c887e45f47b38687054daMarc Blank 19c5afb16430a145f20d7c887e45f47b38687054daMarc Blankimport android.app.Activity; 20c5afb16430a145f20d7c887e45f47b38687054daMarc Blankimport android.content.ContentUris; 21c5afb16430a145f20d7c887e45f47b38687054daMarc Blankimport android.content.Intent; 22c5afb16430a145f20d7c887e45f47b38687054daMarc Blankimport android.database.Cursor; 23c5afb16430a145f20d7c887e45f47b38687054daMarc Blankimport android.net.Uri; 24c5afb16430a145f20d7c887e45f47b38687054daMarc Blankimport android.os.Bundle; 25c5afb16430a145f20d7c887e45f47b38687054daMarc Blankimport android.provider.CalendarContract; 26c5afb16430a145f20d7c887e45f47b38687054daMarc Blank 27c5afb16430a145f20d7c887e45f47b38687054daMarc Blankimport com.android.emailcommon.mail.MeetingInfo; 28c5afb16430a145f20d7c887e45f47b38687054daMarc Blankimport com.android.emailcommon.mail.PackedString; 29c5afb16430a145f20d7c887e45f47b38687054daMarc Blankimport com.android.emailcommon.provider.EmailContent.Message; 30c5afb16430a145f20d7c887e45f47b38687054daMarc Blankimport com.android.emailcommon.utility.Utility; 31c5afb16430a145f20d7c887e45f47b38687054daMarc Blank 32988d2b6e85ad7bd62bbadd0021f15cd2a70c82d0Jay Shraunerimport java.text.ParseException; 33988d2b6e85ad7bd62bbadd0021f15cd2a70c82d0Jay Shrauner 34c5afb16430a145f20d7c887e45f47b38687054daMarc Blankpublic class EventViewer extends Activity { 35c5afb16430a145f20d7c887e45f47b38687054daMarc Blank @Override 36c5afb16430a145f20d7c887e45f47b38687054daMarc Blank public void onCreate(Bundle savedInstanceState) { 37c5afb16430a145f20d7c887e45f47b38687054daMarc Blank super.onCreate(savedInstanceState); 38c5afb16430a145f20d7c887e45f47b38687054daMarc Blank Uri uri = getIntent().getData(); 39c5afb16430a145f20d7c887e45f47b38687054daMarc Blank long messageId = Long.parseLong(uri.getLastPathSegment()); 40c5afb16430a145f20d7c887e45f47b38687054daMarc Blank Message msg = Message.restoreMessageWithId(this, messageId); 41c5afb16430a145f20d7c887e45f47b38687054daMarc Blank if (msg == null) { 42c5afb16430a145f20d7c887e45f47b38687054daMarc Blank finish(); 43c5afb16430a145f20d7c887e45f47b38687054daMarc Blank } else { 44c5afb16430a145f20d7c887e45f47b38687054daMarc Blank PackedString info = new PackedString(msg.mMeetingInfo); 45c5afb16430a145f20d7c887e45f47b38687054daMarc Blank String uid = info.get(MeetingInfo.MEETING_UID); 46c5afb16430a145f20d7c887e45f47b38687054daMarc Blank long eventId = -1; 47c5afb16430a145f20d7c887e45f47b38687054daMarc Blank if (uid != null) { 48c5afb16430a145f20d7c887e45f47b38687054daMarc Blank Cursor c = getContentResolver().query(CalendarContract.Events.CONTENT_URI, 49c5afb16430a145f20d7c887e45f47b38687054daMarc Blank new String[] {CalendarContract.Events._ID}, 50c5afb16430a145f20d7c887e45f47b38687054daMarc Blank CalendarContract.Events.SYNC_DATA2 + "=?", 51c5afb16430a145f20d7c887e45f47b38687054daMarc Blank new String[] {uid}, null); 52c5afb16430a145f20d7c887e45f47b38687054daMarc Blank if (c != null) { 53c5afb16430a145f20d7c887e45f47b38687054daMarc Blank try { 54c5afb16430a145f20d7c887e45f47b38687054daMarc Blank if (c.getCount() == 1) { 55c5afb16430a145f20d7c887e45f47b38687054daMarc Blank c.moveToFirst(); 56c5afb16430a145f20d7c887e45f47b38687054daMarc Blank eventId = c.getLong(0); 57c5afb16430a145f20d7c887e45f47b38687054daMarc Blank } 58c5afb16430a145f20d7c887e45f47b38687054daMarc Blank } finally { 59c5afb16430a145f20d7c887e45f47b38687054daMarc Blank c.close(); 60c5afb16430a145f20d7c887e45f47b38687054daMarc Blank } 61c5afb16430a145f20d7c887e45f47b38687054daMarc Blank } 62c5afb16430a145f20d7c887e45f47b38687054daMarc Blank } 63c5afb16430a145f20d7c887e45f47b38687054daMarc Blank Intent intent = new Intent(Intent.ACTION_VIEW); 64c5afb16430a145f20d7c887e45f47b38687054daMarc Blank if (eventId != -1) { 65c5afb16430a145f20d7c887e45f47b38687054daMarc Blank uri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, eventId); 66c5afb16430a145f20d7c887e45f47b38687054daMarc Blank } else { 67988d2b6e85ad7bd62bbadd0021f15cd2a70c82d0Jay Shrauner long time; 68988d2b6e85ad7bd62bbadd0021f15cd2a70c82d0Jay Shrauner try { 69988d2b6e85ad7bd62bbadd0021f15cd2a70c82d0Jay Shrauner time = Utility.parseEmailDateTimeToMillis(info.get(MeetingInfo.MEETING_DTSTART)); 70988d2b6e85ad7bd62bbadd0021f15cd2a70c82d0Jay Shrauner } catch (ParseException e) { 71988d2b6e85ad7bd62bbadd0021f15cd2a70c82d0Jay Shrauner finish(); 72988d2b6e85ad7bd62bbadd0021f15cd2a70c82d0Jay Shrauner return; 73988d2b6e85ad7bd62bbadd0021f15cd2a70c82d0Jay Shrauner } 74c5afb16430a145f20d7c887e45f47b38687054daMarc Blank uri = Uri.parse("content://com.android.calendar/time/" + time); 75c5afb16430a145f20d7c887e45f47b38687054daMarc Blank intent.putExtra("VIEW", "DAY"); 76c5afb16430a145f20d7c887e45f47b38687054daMarc Blank } 77c5afb16430a145f20d7c887e45f47b38687054daMarc Blank intent.setData(uri); 78c5afb16430a145f20d7c887e45f47b38687054daMarc Blank intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); 79c5afb16430a145f20d7c887e45f47b38687054daMarc Blank startActivity(intent); 80c5afb16430a145f20d7c887e45f47b38687054daMarc Blank finish(); 81c5afb16430a145f20d7c887e45f47b38687054daMarc Blank } 82c5afb16430a145f20d7c887e45f47b38687054daMarc Blank } 83c5afb16430a145f20d7c887e45f47b38687054daMarc Blank} 84