Added select file to signature editor

This commit is contained in:
M66B 2022-06-23 14:11:16 +02:00
parent 51fcbc41fd
commit b814ad89af
3 changed files with 56 additions and 0 deletions

View File

@ -20,6 +20,7 @@ package eu.faircode.email;
*/
import android.content.ClipboardManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
@ -55,6 +56,8 @@ import com.google.android.material.bottomnavigation.BottomNavigationView;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.Objects;
public class ActivitySignature extends ActivityBase {
@ -69,6 +72,7 @@ public class ActivitySignature extends ActivityBase {
private boolean dirty = false;
private static final int REQUEST_IMAGE = 1;
private static final int REQUEST_FILE = 2;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -239,6 +243,9 @@ public class ActivitySignature extends ActivityBase {
item.setChecked(!item.isChecked());
html(item.isChecked());
return true;
} else if (itemId == R.id.menu_import_file) {
onMenuSelectFile();
return true;
}
return super.onOptionsItemSelected(item);
}
@ -247,6 +254,14 @@ public class ActivitySignature extends ActivityBase {
Helper.viewFAQ(this, 57);
}
private void onMenuSelectFile() {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("text/*");
Helper.openAdvanced(intent);
startActivityForResult(intent, REQUEST_FILE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
@ -257,6 +272,10 @@ public class ActivitySignature extends ActivityBase {
if (resultCode == RESULT_OK && data != null)
onImageSelected(data.getData());
break;
case REQUEST_FILE:
if (resultCode == RESULT_OK && data != null)
onFileSelected(data.getData());
break;
}
} catch (Throwable ex) {
Log.e(ex);
@ -413,4 +432,36 @@ public class ActivitySignature extends ActivityBase {
Log.unexpectedError(getSupportFragmentManager(), ex);
}
}
private void onFileSelected(Uri uri) {
Bundle args = new Bundle();
args.putParcelable("uri", uri);
new SimpleTask<String>() {
@Override
protected String onExecute(Context context, Bundle args) throws Throwable {
try (InputStream is = getContentResolver().openInputStream(uri)) {
if (is == null)
throw new FileNotFoundException(uri.toString());
return Helper.readStream(is);
}
}
@Override
protected void onExecuted(Bundle args, String text) {
int start = etText.getSelectionStart();
if (start < 0)
start = 0;
etText.getText().insert(start, text);
}
@Override
protected void onException(Bundle args, Throwable ex) {
if (ex instanceof NoStreamException)
((NoStreamException) ex).report(ActivitySignature.this);
else
Log.unexpectedError(getSupportFragmentManager(), ex);
}
}.execute(this, args, "signature:file");
}
}

View File

@ -11,4 +11,8 @@
android:checkable="true"
android:title="@string/title_edit_html"
app:showAsAction="never" />
<item
android:id="@+id/menu_import_file"
android:title="@string/title_import_file"
app:showAsAction="never" />
</menu>

View File

@ -1017,6 +1017,7 @@
<string name="title_account_delete">Delete this account permanently?</string>
<string name="title_identity_delete">Delete this identity permanently?</string>
<string name="title_edit_html">Edit as HTML</string>
<string name="title_import_file">Import file</string>
<string name="title_sign_key">Sign key: %1$s</string>
<string name="title_created_at">Created: %1$s</string>
<string name="title_last_connected">Last connected: %1$s</string>