1e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan/* 2e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan * Copyright (C) 2012 The Android Open Source Project 3e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan * 4e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan * Licensed under the Apache License, Version 2.0 (the "License"); 5e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan * you may not use this file except in compliance with the License. 6e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan * You may obtain a copy of the License at 7e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan * 8e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan * http://www.apache.org/licenses/LICENSE-2.0 9e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan * 10e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan * Unless required by applicable law or agreed to in writing, software 11e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan * distributed under the License is distributed on an "AS IS" BASIS, 12e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan * See the License for the specific language governing permissions and 14e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan * limitations under the License. 15e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan */ 16e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan 17e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chanpackage com.android.calendar.alerts; 18e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan 19e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chanimport android.app.ListActivity; 20e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chanimport android.content.ActivityNotFoundException; 21e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chanimport android.content.Intent; 22e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chanimport android.os.Bundle; 23e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chanimport android.view.View; 24e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chanimport android.widget.AdapterView; 25e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chanimport android.widget.AdapterView.OnItemClickListener; 26e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chanimport android.widget.ArrayAdapter; 27e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chanimport android.widget.Toast; 28e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan 29e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chanimport com.android.calendar.R; 30e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chanimport com.android.calendar.Utils; 31e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan 32e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chanimport java.util.Arrays; 33e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan 34e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan/** 35e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan * Activity which displays when the user wants to email guests from notifications. 36e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan * 37e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan * This presents the user with list if quick responses to be populated in an email 38e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan * to minimize typing. 39e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan * 40e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan */ 41e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chanpublic class QuickResponseActivity extends ListActivity implements OnItemClickListener { 42e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan private static final String TAG = "QuickResponseActivity"; 437da27670d2a62e213e230989b250f047012a3bbdSara Ting public static final String EXTRA_EVENT_ID = "eventId"; 44e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan 45e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan private String[] mResponses = null; 46e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan static long mEventId; 47e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan 48e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan @Override 49e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan protected void onCreate(Bundle icicle) { 50e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan super.onCreate(icicle); 51e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan 52e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan Intent intent = getIntent(); 53e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan if (intent == null) { 54e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan finish(); 55e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan return; 56e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan } 57e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan 58e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan mEventId = intent.getLongExtra(EXTRA_EVENT_ID, -1); 59e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan if (mEventId == -1) { 60e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan finish(); 61e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan return; 62e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan } 63e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan 64e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan // Set listener 65e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan getListView().setOnItemClickListener(QuickResponseActivity.this); 66e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan 67e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan // Populate responses 68e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan String[] responses = Utils.getQuickResponses(this); 69e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan Arrays.sort(responses); 70e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan 71e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan // Add "Custom response..." 72e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan mResponses = new String[responses.length + 1]; 73e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan int i; 74e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan for (i = 0; i < responses.length; i++) { 75e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan mResponses[i] = responses[i]; 76e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan } 77e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan mResponses[i] = getResources().getString(R.string.quick_response_custom_msg); 78e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan 79e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan setListAdapter(new ArrayAdapter<String>(this, R.layout.quick_response_item, mResponses)); 80e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan } 81e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan 82e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan // implements OnItemClickListener 83e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan @Override 84e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 85e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan 86e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan String body = null; 87e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan if (mResponses != null && position < mResponses.length - 1) { 88e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan body = mResponses[position]; 89e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan } 90e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan 91e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan // Start thread to query provider and send mail 92e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan new QueryThread(mEventId, body).start(); 93e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan } 94e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan 95e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan private class QueryThread extends Thread { 96e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan long mEventId; 97e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan String mBody; 98e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan 99e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan QueryThread(long eventId, String body) { 100e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan mEventId = eventId; 101e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan mBody = body; 102e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan } 103e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan 104e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan @Override 105e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan public void run() { 106e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan Intent emailIntent = AlertReceiver.createEmailIntent(QuickResponseActivity.this, 107e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan mEventId, mBody); 108e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan if (emailIntent != null) { 109e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan try { 110e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan startActivity(emailIntent); 111e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan finish(); 112e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan } catch (ActivityNotFoundException ex) { 113e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan QuickResponseActivity.this.getListView().post(new Runnable() { 114e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan @Override 115e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan public void run() { 116e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan Toast.makeText(QuickResponseActivity.this, 117e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan R.string.quick_response_email_failed, Toast.LENGTH_LONG); 118e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan finish(); 119e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan } 120e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan }); 121e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan } 122e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan } 123e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan } 124e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan } 125e98dca7e0042f7b36788b0e5d8dc6e94048c895cMichael Chan} 126