1c6953b77552d4cb71776cf0537dc226029381628Tony Mantler/** 2c6953b77552d4cb71776cf0537dc226029381628Tony Mantler * Copyright (c) 2013, Google Inc. 3c6953b77552d4cb71776cf0537dc226029381628Tony Mantler * 4c6953b77552d4cb71776cf0537dc226029381628Tony Mantler * Licensed under the Apache License, Version 2.0 (the "License"); 5c6953b77552d4cb71776cf0537dc226029381628Tony Mantler * you may not use this file except in compliance with the License. 6c6953b77552d4cb71776cf0537dc226029381628Tony Mantler * You may obtain a copy of the License at 7c6953b77552d4cb71776cf0537dc226029381628Tony Mantler * 8c6953b77552d4cb71776cf0537dc226029381628Tony Mantler * http://www.apache.org/licenses/LICENSE-2.0 9c6953b77552d4cb71776cf0537dc226029381628Tony Mantler * 10c6953b77552d4cb71776cf0537dc226029381628Tony Mantler * Unless required by applicable law or agreed to in writing, software 11c6953b77552d4cb71776cf0537dc226029381628Tony Mantler * distributed under the License is distributed on an "AS IS" BASIS, 12c6953b77552d4cb71776cf0537dc226029381628Tony Mantler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c6953b77552d4cb71776cf0537dc226029381628Tony Mantler * See the License for the specific language governing permissions and 14c6953b77552d4cb71776cf0537dc226029381628Tony Mantler * limitations under the License. 15c6953b77552d4cb71776cf0537dc226029381628Tony Mantler */ 16c6953b77552d4cb71776cf0537dc226029381628Tony Mantler 17c6953b77552d4cb71776cf0537dc226029381628Tony Mantlerpackage com.android.email.activity; 18c6953b77552d4cb71776cf0537dc226029381628Tony Mantler 19c6953b77552d4cb71776cf0537dc226029381628Tony Mantlerimport android.text.Editable; 20c6953b77552d4cb71776cf0537dc226029381628Tony Mantlerimport android.text.SpannableStringBuilder; 21c6953b77552d4cb71776cf0537dc226029381628Tony Mantlerimport android.view.Menu; 22c6953b77552d4cb71776cf0537dc226029381628Tony Mantlerimport android.view.MenuItem; 23c6953b77552d4cb71776cf0537dc226029381628Tony Mantlerimport android.widget.EditText; 24c6953b77552d4cb71776cf0537dc226029381628Tony Mantler 25c6953b77552d4cb71776cf0537dc226029381628Tony Mantlerimport com.android.email.R; 26c6953b77552d4cb71776cf0537dc226029381628Tony Mantlerimport com.android.mail.compose.ComposeActivity; 27b0d82fecff0036a774f067a0389a1b0a834f8bffTony Mantlerimport com.android.mail.utils.LogUtils; 28c6953b77552d4cb71776cf0537dc226029381628Tony Mantler 29c6953b77552d4cb71776cf0537dc226029381628Tony Mantlerpublic class ComposeActivityEmail extends ComposeActivity 30c6953b77552d4cb71776cf0537dc226029381628Tony Mantler implements InsertQuickResponseDialog.Callback { 31c6953b77552d4cb71776cf0537dc226029381628Tony Mantler static final String insertQuickResponseDialogTag = "insertQuickResponseDialog"; 32c6953b77552d4cb71776cf0537dc226029381628Tony Mantler @Override 33c6953b77552d4cb71776cf0537dc226029381628Tony Mantler public boolean onCreateOptionsMenu(Menu menu) { 34b0d82fecff0036a774f067a0389a1b0a834f8bffTony Mantler final boolean superCreated = super.onCreateOptionsMenu(menu); 35b0d82fecff0036a774f067a0389a1b0a834f8bffTony Mantler if (mReplyFromAccount != null) { 36b0d82fecff0036a774f067a0389a1b0a834f8bffTony Mantler getMenuInflater().inflate(R.menu.email_compose_menu_extras, menu); 37b0d82fecff0036a774f067a0389a1b0a834f8bffTony Mantler return true; 38b0d82fecff0036a774f067a0389a1b0a834f8bffTony Mantler } else { 39b0d82fecff0036a774f067a0389a1b0a834f8bffTony Mantler LogUtils.d(LogUtils.TAG, "mReplyFromAccount is null, not adding Quick Response menu"); 40b0d82fecff0036a774f067a0389a1b0a834f8bffTony Mantler return superCreated; 41b0d82fecff0036a774f067a0389a1b0a834f8bffTony Mantler } 42c6953b77552d4cb71776cf0537dc226029381628Tony Mantler } 43c6953b77552d4cb71776cf0537dc226029381628Tony Mantler 44c6953b77552d4cb71776cf0537dc226029381628Tony Mantler @Override 45c6953b77552d4cb71776cf0537dc226029381628Tony Mantler public boolean onOptionsItemSelected(MenuItem item) { 46c6953b77552d4cb71776cf0537dc226029381628Tony Mantler if (item.getItemId() == R.id.insert_quick_response_menu_item) { 47c6953b77552d4cb71776cf0537dc226029381628Tony Mantler InsertQuickResponseDialog dialog = InsertQuickResponseDialog.newInstance(null, 48c6953b77552d4cb71776cf0537dc226029381628Tony Mantler mReplyFromAccount.account); 49c6953b77552d4cb71776cf0537dc226029381628Tony Mantler dialog.show(getFragmentManager(), insertQuickResponseDialogTag); 50c6953b77552d4cb71776cf0537dc226029381628Tony Mantler } 51c6953b77552d4cb71776cf0537dc226029381628Tony Mantler return super.onOptionsItemSelected(item); 52c6953b77552d4cb71776cf0537dc226029381628Tony Mantler } 53c6953b77552d4cb71776cf0537dc226029381628Tony Mantler 54c6953b77552d4cb71776cf0537dc226029381628Tony Mantler public void onQuickResponseSelected(CharSequence quickResponse) { 55c6953b77552d4cb71776cf0537dc226029381628Tony Mantler final int selEnd = mBodyView.getSelectionEnd(); 56c6953b77552d4cb71776cf0537dc226029381628Tony Mantler final int selStart = mBodyView.getSelectionStart(); 57c6953b77552d4cb71776cf0537dc226029381628Tony Mantler 58c6953b77552d4cb71776cf0537dc226029381628Tony Mantler if (selEnd >= 0 && selStart >= 0) { 59c6953b77552d4cb71776cf0537dc226029381628Tony Mantler final SpannableStringBuilder messageBody = 60c6953b77552d4cb71776cf0537dc226029381628Tony Mantler new SpannableStringBuilder(mBodyView.getText()); 61c6953b77552d4cb71776cf0537dc226029381628Tony Mantler final int replaceStart = selStart < selEnd ? selStart : selEnd; 62c6953b77552d4cb71776cf0537dc226029381628Tony Mantler final int replaceEnd = selStart < selEnd ? selEnd : selStart; 63c6953b77552d4cb71776cf0537dc226029381628Tony Mantler messageBody.replace(replaceStart, replaceEnd, quickResponse); 64c6953b77552d4cb71776cf0537dc226029381628Tony Mantler mBodyView.setText(messageBody); 65c6953b77552d4cb71776cf0537dc226029381628Tony Mantler mBodyView.setSelection(replaceStart + quickResponse.length()); 66c6953b77552d4cb71776cf0537dc226029381628Tony Mantler } else { 67c6953b77552d4cb71776cf0537dc226029381628Tony Mantler mBodyView.append(quickResponse); 68c6953b77552d4cb71776cf0537dc226029381628Tony Mantler mBodyView.setSelection(mBodyView.getText().length()); 69c6953b77552d4cb71776cf0537dc226029381628Tony Mantler } 70c6953b77552d4cb71776cf0537dc226029381628Tony Mantler } 71c6953b77552d4cb71776cf0537dc226029381628Tony Mantler} 72