|
|
@ -20,6 +20,7 @@ package eu.faircode.email;
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
import android.Manifest;
|
|
|
|
import android.Manifest;
|
|
|
|
|
|
|
|
import android.content.ClipboardManager;
|
|
|
|
import android.content.Context;
|
|
|
|
import android.content.Context;
|
|
|
|
import android.content.DialogInterface;
|
|
|
|
import android.content.DialogInterface;
|
|
|
|
import android.content.Intent;
|
|
|
|
import android.content.Intent;
|
|
|
@ -37,6 +38,7 @@ import android.text.SpannableString;
|
|
|
|
import android.text.Spanned;
|
|
|
|
import android.text.Spanned;
|
|
|
|
import android.text.TextUtils;
|
|
|
|
import android.text.TextUtils;
|
|
|
|
import android.text.style.StyleSpan;
|
|
|
|
import android.text.style.StyleSpan;
|
|
|
|
|
|
|
|
import android.text.style.URLSpan;
|
|
|
|
import android.util.Log;
|
|
|
|
import android.util.Log;
|
|
|
|
import android.view.KeyEvent;
|
|
|
|
import android.view.KeyEvent;
|
|
|
|
import android.view.LayoutInflater;
|
|
|
|
import android.view.LayoutInflater;
|
|
|
@ -396,6 +398,7 @@ public class FragmentCompose extends FragmentEx {
|
|
|
|
super.onPrepareOptionsMenu(menu);
|
|
|
|
super.onPrepareOptionsMenu(menu);
|
|
|
|
menu.findItem(R.id.menu_bold).setVisible(free && working >= 0);
|
|
|
|
menu.findItem(R.id.menu_bold).setVisible(free && working >= 0);
|
|
|
|
menu.findItem(R.id.menu_italic).setVisible(free && working >= 0);
|
|
|
|
menu.findItem(R.id.menu_italic).setVisible(free && working >= 0);
|
|
|
|
|
|
|
|
menu.findItem(R.id.menu_link).setVisible(free && working >= 0);
|
|
|
|
menu.findItem(R.id.menu_attachment).setVisible(!free && working >= 0);
|
|
|
|
menu.findItem(R.id.menu_attachment).setVisible(!free && working >= 0);
|
|
|
|
menu.findItem(R.id.menu_attachment).setEnabled(etBody.isEnabled());
|
|
|
|
menu.findItem(R.id.menu_attachment).setEnabled(etBody.isEnabled());
|
|
|
|
menu.findItem(R.id.menu_addresses).setVisible(!free && working >= 0);
|
|
|
|
menu.findItem(R.id.menu_addresses).setVisible(!free && working >= 0);
|
|
|
@ -404,6 +407,7 @@ public class FragmentCompose extends FragmentEx {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public boolean onOptionsItemSelected(MenuItem item) {
|
|
|
|
public boolean onOptionsItemSelected(MenuItem item) {
|
|
|
|
switch (item.getItemId()) {
|
|
|
|
switch (item.getItemId()) {
|
|
|
|
|
|
|
|
case R.id.menu_link:
|
|
|
|
case R.id.menu_bold:
|
|
|
|
case R.id.menu_bold:
|
|
|
|
case R.id.menu_italic:
|
|
|
|
case R.id.menu_italic:
|
|
|
|
onMenuStyle(item.getItemId());
|
|
|
|
onMenuStyle(item.getItemId());
|
|
|
@ -429,8 +433,28 @@ public class FragmentCompose extends FragmentEx {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (start != end) {
|
|
|
|
if (start != end) {
|
|
|
|
SpannableString s = new SpannableString(etBody.getText());
|
|
|
|
SpannableString s = new SpannableString(etBody.getText());
|
|
|
|
s.setSpan(new StyleSpan(id == R.id.menu_bold ? Typeface.BOLD : Typeface.ITALIC),
|
|
|
|
switch (id) {
|
|
|
|
start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
|
|
|
case R.id.menu_bold:
|
|
|
|
|
|
|
|
s.setSpan(new StyleSpan(Typeface.BOLD), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case R.id.menu_italic:
|
|
|
|
|
|
|
|
s.setSpan(new StyleSpan(Typeface.ITALIC), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case R.id.menu_link:
|
|
|
|
|
|
|
|
Uri uri = null;
|
|
|
|
|
|
|
|
ClipboardManager cbm = getContext().getSystemService(ClipboardManager.class);
|
|
|
|
|
|
|
|
if (cbm.hasPrimaryClip()) {
|
|
|
|
|
|
|
|
String link = cbm.getPrimaryClip().getItemAt(0).coerceToText(getContext()).toString();
|
|
|
|
|
|
|
|
uri = Uri.parse(link);
|
|
|
|
|
|
|
|
if (uri.getScheme() == null)
|
|
|
|
|
|
|
|
uri = null;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (uri == null)
|
|
|
|
|
|
|
|
Snackbar.make(view, R.string.title_clipboard_empty, Snackbar.LENGTH_LONG).show();
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
s.setSpan(new URLSpan(uri.toString()), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
etBody.setText(s);
|
|
|
|
etBody.setText(s);
|
|
|
|
etBody.setSelection(end);
|
|
|
|
etBody.setSelection(end);
|
|
|
|
}
|
|
|
|
}
|
|
|
|