Signature: fixed/improved inserting links

This commit is contained in:
M66B 2022-11-25 18:38:27 +01:00
parent 4a0a4eca92
commit d96bccc191
1 changed files with 18 additions and 33 deletions

View File

@ -19,7 +19,6 @@ package eu.faircode.email;
Copyright 2018-2022 by Marcel Bokhorst (M66B) Copyright 2018-2022 by Marcel Bokhorst (M66B)
*/ */
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;
@ -41,7 +40,6 @@ import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.TextView; import android.widget.TextView;
@ -74,6 +72,7 @@ public class ActivitySignature extends ActivityBase {
private static final int REQUEST_IMAGE = 1; private static final int REQUEST_IMAGE = 1;
private static final int REQUEST_FILE = 2; private static final int REQUEST_FILE = 2;
private static final int REQUEST_LINK = 3;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -295,6 +294,10 @@ public class ActivitySignature extends ActivityBase {
if (resultCode == RESULT_OK && data != null) if (resultCode == RESULT_OK && data != null)
onFileSelected(data.getData()); onFileSelected(data.getData());
break; break;
case REQUEST_LINK:
if (resultCode == RESULT_OK && data != null)
onLinkSelected(data.getBundleExtra("args"));
break;
} }
} catch (Throwable ex) { } catch (Throwable ex) {
Log.e(ex); Log.e(ex);
@ -386,37 +389,10 @@ public class ActivitySignature extends ActivityBase {
Log.i("Style action=" + action); Log.i("Style action=" + action);
if (action == R.id.menu_link) { if (action == R.id.menu_link) {
Uri uri = null; FragmentDialogInsertLink fragment = new FragmentDialogInsertLink();
final int start = etText.getSelectionStart(); fragment.setArguments(FragmentDialogInsertLink.getArguments(etText));
final int end = etText.getSelectionEnd(); fragment.setTargetActivity(this, REQUEST_LINK);
fragment.show(getSupportFragmentManager(), "signature:link");
ClipboardManager cbm = Helper.getSystemService(this, ClipboardManager.class);
if (cbm != null && cbm.hasPrimaryClip()) {
String link = cbm.getPrimaryClip().getItemAt(0).coerceToText(this).toString();
uri = Uri.parse(link);
if (uri.getScheme() == null)
uri = null;
}
View view = LayoutInflater.from(this).inflate(R.layout.dialog_insert_link, null);
EditText etLink = view.findViewById(R.id.etLink);
TextView tvInsecure = view.findViewById(R.id.tvInsecure);
etLink.setText(uri == null ? "https://" : uri.toString());
tvInsecure.setVisibility(View.GONE);
new AlertDialog.Builder(this)
.setView(view)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String link = etLink.getText().toString();
etText.setSelection(start, end);
StyleHelper.apply(R.id.menu_link, ActivitySignature.this, null, etText, link);
}
})
.setNegativeButton(android.R.string.cancel, null)
.show();
return true; return true;
} else } else
@ -495,4 +471,13 @@ public class ActivitySignature extends ActivityBase {
} }
}.execute(this, args, "signature:file"); }.execute(this, args, "signature:file");
} }
private void onLinkSelected(Bundle args) {
String link = args.getString("link");
int start = args.getInt("start");
int end = args.getInt("end");
String title = args.getString("title");
etText.setSelection(start, end);
StyleHelper.apply(R.id.menu_link, this, null, etText, link, title);
}
} }