Enable send chips inline

pull/194/merge
M66B 3 years ago
parent 07f30a9288
commit 5f5912f23f

@ -72,24 +72,23 @@ public class EditTextMultiAutoComplete extends AppCompatMultiAutoCompleteTextVie
Helper.setKeyboardIncognitoMode(this, context);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean send_chips = prefs.getBoolean("send_chips", false);
if (send_chips) {
boolean dark = Helper.isDarkTheme(context);
ContextThemeWrapper ctx = new ContextThemeWrapper(context,
dark ? R.style.ChipDark : R.style.ChipLight);
ContentResolver resolver = context.getContentResolver();
Runnable update = new Runnable() {
@Override
public void run() {
try {
Editable edit = getText();
boolean added = false;
List<ClipImageSpan> spans = new ArrayList<>();
spans.addAll(Arrays.asList(edit.getSpans(0, edit.length(), ClipImageSpan.class)));
boolean dark = Helper.isDarkTheme(context);
ContextThemeWrapper ctx = new ContextThemeWrapper(context,
dark ? R.style.ChipDark : R.style.ChipLight);
ContentResolver resolver = context.getContentResolver();
Runnable update = new Runnable() {
@Override
public void run() {
try {
Editable edit = getText();
boolean send_chips = prefs.getBoolean("send_chips", false);
boolean added = false;
List<ClipImageSpan> spans = new ArrayList<>();
spans.addAll(Arrays.asList(edit.getSpans(0, edit.length(), ClipImageSpan.class)));
if (send_chips) {
boolean quote = false;
int start = 0;
for (int i = 0; i < edit.length(); i++) {
@ -153,38 +152,38 @@ public class EditTextMultiAutoComplete extends AppCompatMultiAutoCompleteTextVie
start = i + 1;
}
}
for (ClipImageSpan span : spans)
edit.removeSpan(span);
if (spans.size() > 0 || added)
invalidate();
} catch (Throwable ex) {
Log.e(ex);
}
}
};
addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// Do nothing
}
for (ClipImageSpan span : spans)
edit.removeSpan(span);
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// Do nothing
if (spans.size() > 0 || added)
invalidate();
} catch (Throwable ex) {
Log.e(ex);
}
@Override
public void afterTextChanged(Editable edit) {
if (getWidth() == 0)
post(update);
else
update.run();
}
});
}
}
};
addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// Do nothing
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// Do nothing
}
@Override
public void afterTextChanged(Editable edit) {
if (getWidth() == 0)
post(update);
else
update.run();
}
});
}
private static class ClipImageSpan extends ImageSpan {

@ -1609,10 +1609,12 @@ public class FragmentCompose extends FragmentBase {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean save_drafts = prefs.getBoolean("save_drafts", true);
boolean send_chips = prefs.getBoolean("send_chips", false);
boolean send_dialog = prefs.getBoolean("send_dialog", true);
boolean image_dialog = prefs.getBoolean("image_dialog", true);
menu.findItem(R.id.menu_save_drafts).setChecked(save_drafts);
menu.findItem(R.id.menu_send_chips).setChecked(send_chips);
menu.findItem(R.id.menu_send_dialog).setChecked(send_dialog);
menu.findItem(R.id.menu_image_dialog).setChecked(image_dialog);
menu.findItem(R.id.menu_media).setChecked(media);
@ -1667,6 +1669,9 @@ public class FragmentCompose extends FragmentBase {
} else if (itemId == R.id.menu_save_drafts) {
onMenuSaveDrafts();
return true;
} else if (itemId == R.id.menu_send_chips) {
onMenuSendChips();
return true;
} else if (itemId == R.id.menu_send_dialog) {
onMenuSendDialog();
return true;
@ -1799,6 +1804,16 @@ public class FragmentCompose extends FragmentBase {
prefs.edit().putBoolean("save_drafts", !save_drafts).apply();
}
private void onMenuSendChips() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
boolean send_chips = prefs.getBoolean("send_chips", true);
prefs.edit().putBoolean("send_chips", !send_chips).apply();
etTo.setText(etTo.getText());
etCc.setText(etCc.getText());
etBcc.setText(etBcc.getText());
}
private void onMenuSendDialog() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
boolean send_dialog = prefs.getBoolean("send_dialog", true);

@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M12,21.95h5v-2h-5c-4.34,0 -8,-3.66 -8,-8s3.66,-8 8,-8 8,3.66 8,8v1.43c0,0.79 -0.71,1.57 -1.5,1.57s-1.5,-0.78 -1.5,-1.57v-1.43c0,-2.76 -2.24,-5 -5,-5s-5,2.24 -5,5 2.24,5 5,5c1.38,0 2.64,-0.56 3.54,-1.47 0.65,0.89 1.77,1.47 2.96,1.47 1.97,0 3.5,-1.6 3.5,-3.57v-1.43c0,-5.52 -4.48,-10 -10,-10s-10,4.48 -10,10 4.48,10 10,10zM12,14.95c-1.66,0 -3,-1.34 -3,-3s1.34,-3 3,-3 3,1.34 3,3 -1.34,3 -3,3z"
android:fillAlpha="0.9"/>
</vector>

@ -28,6 +28,13 @@
android:title="@string/title_save_drafts"
app:showAsAction="never" />
<item
android:id="@+id/menu_send_chips"
android:checkable="true"
android:icon="@drawable/twotone_alternate_email_24"
android:title="@string/title_advanced_send_chips"
app:showAsAction="never" />
<item
android:id="@+id/menu_send_dialog"
android:checkable="true"

Loading…
Cancel
Save