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