mirror of https://github.com/M66B/FairEmail.git
Added select file to signature editor
This commit is contained in:
parent
51fcbc41fd
commit
b814ad89af
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue