Move bold/italic to action menu

Refs #49
This commit is contained in:
M66B
2018-09-08 05:52:37 +00:00
parent c4f8841a5c
commit e17c4a350c
4 changed files with 38 additions and 59 deletions

View File

@@ -49,7 +49,6 @@ import android.webkit.MimeTypeMap;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.FilterQueryProvider;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.MultiAutoCompleteTextView;
import android.widget.ProgressBar;
@@ -104,15 +103,12 @@ public class FragmentCompose extends FragmentEx {
private EditText etSubject;
private RecyclerView rvAttachment;
private EditText etBody;
private ImageButton ibBold;
private ImageButton ibItalic;
private BottomNavigationView bottom_navigation;
private ProgressBar pbWait;
private Group grpHeader;
private Group grpAddresses;
private Group grpAttachments;
private Group grpMessage;
private Group grpAction;
private AdapterAttachment adapter;
@@ -140,15 +136,12 @@ public class FragmentCompose extends FragmentEx {
etSubject = view.findViewById(R.id.etSubject);
rvAttachment = view.findViewById(R.id.rvAttachment);
etBody = view.findViewById(R.id.etBody);
ibBold = view.findViewById(R.id.ibBold);
ibItalic = view.findViewById(R.id.ibItalic);
bottom_navigation = view.findViewById(R.id.bottom_navigation);
pbWait = view.findViewById(R.id.pbWait);
grpHeader = view.findViewById(R.id.grpHeader);
grpAddresses = view.findViewById(R.id.grpAddresses);
grpAttachments = view.findViewById(R.id.grpAttachments);
grpMessage = view.findViewById(R.id.grpMessage);
grpAction = view.findViewById(R.id.grpAction);
// Wire controls
@@ -201,7 +194,6 @@ public class FragmentCompose extends FragmentEx {
addresses = (grpAddresses.getVisibility() != View.GONE);
grpAddresses.setVisibility(View.GONE);
grpAttachments.setVisibility(View.GONE);
grpAction.setVisibility(View.VISIBLE);
}
}
});
@@ -220,7 +212,6 @@ public class FragmentCompose extends FragmentEx {
grpAddresses.setVisibility(View.VISIBLE);
if (rvAttachment.getAdapter().getItemCount() > 0)
grpAttachments.setVisibility(View.VISIBLE);
grpAction.setVisibility(View.GONE);
new Handler().post(new Runnable() {
@Override
@@ -237,29 +228,6 @@ public class FragmentCompose extends FragmentEx {
}
});
View.OnClickListener styleListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
int start = etBody.getSelectionStart();
int end = etBody.getSelectionEnd();
if (start > end) {
int tmp = start;
start = end;
end = tmp;
}
if (start != end) {
SpannableString s = new SpannableString(etBody.getText());
s.setSpan(new StyleSpan(v.getId() == ibBold.getId() ? Typeface.BOLD : Typeface.ITALIC),
start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
etBody.setText(s);
etBody.setSelection(end);
}
}
};
ibBold.setOnClickListener(styleListener);
ibItalic.setOnClickListener(styleListener);
bottom_navigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
@@ -289,7 +257,6 @@ public class FragmentCompose extends FragmentEx {
grpAddresses.setVisibility(View.GONE);
grpAttachments.setVisibility(View.GONE);
grpMessage.setVisibility(View.GONE);
grpAction.setVisibility(View.GONE);
pbWait.setVisibility(View.VISIBLE);
getActivity().invalidateOptionsMenu();
@@ -427,6 +394,8 @@ public class FragmentCompose extends FragmentEx {
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
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_attachment).setVisible(!free && working >= 0);
menu.findItem(R.id.menu_attachment).setEnabled(etBody.isEnabled());
menu.findItem(R.id.menu_addresses).setVisible(!free && working >= 0);
@@ -435,6 +404,10 @@ public class FragmentCompose extends FragmentEx {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_bold:
case R.id.menu_italic:
onMenuStyle(item.getItemId());
return true;
case R.id.menu_attachment:
onMenuAttachment();
return true;
@@ -446,6 +419,23 @@ public class FragmentCompose extends FragmentEx {
}
}
private void onMenuStyle(int id) {
int start = etBody.getSelectionStart();
int end = etBody.getSelectionEnd();
if (start > end) {
int tmp = start;
start = end;
end = tmp;
}
if (start != end) {
SpannableString s = new SpannableString(etBody.getText());
s.setSpan(new StyleSpan(id == R.id.menu_bold ? Typeface.BOLD : Typeface.ITALIC),
start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
etBody.setText(s);
etBody.setSelection(end);
}
}
private void onMenuAttachment() {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);