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