Experiment: load alternative message part

pull/194/merge
M66B 4 years ago
parent 55ac52f9a2
commit 125be871be

@ -5109,6 +5109,10 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
.setVisible(message.accountProtocol == EntityAccount.TYPE_IMAP ||
EntityFolder.INBOX.equals(message.folderType));
popupMenu.getMenu().findItem(R.id.menu_alternative)
.setEnabled(message.uid != null && message.plain_only != null)
.setVisible(BuildConfig.DEBUG);
popupMenu.insertIcons(context);
MenuCompat.setGroupDividerEnabled(popupMenu.getMenu(), true);
@ -5203,6 +5207,9 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
} else if (itemId == R.id.menu_resync) {
onMenuResync(message);
return true;
} else if (itemId == R.id.menu_alternative) {
onMenuAlt(message);
return true;
} else if (itemId == R.id.menu_log) {
onMenuLog(message);
return true;
@ -5595,6 +5602,49 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
}.execute(context, owner, args, "message:resync");
}
private void onMenuAlt(TupleMessageEx message) {
properties.setSize(message.id, null);
properties.setHeight(message.id, null);
properties.setPosition(message.id, null);
Bundle args = new Bundle();
args.putLong("id", message.id);
new SimpleTask<Void>() {
@Override
protected Void onExecute(Context context, Bundle args) {
long id = args.getLong("id");
DB db = DB.getInstance(context);
try {
db.beginTransaction();
EntityMessage message = db.message().getMessage(id);
if (message == null)
return null;
EntityOperation.queue(context, message, EntityOperation.BODY, !message.plain_only);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
return null;
}
@Override
protected void onExecuted(Bundle args, Void data) {
ToastEx.makeText(context, R.string.title_fetching_again, Toast.LENGTH_LONG).show();
}
@Override
protected void onException(Bundle args, Throwable ex) {
Log.unexpectedError(parentFragment.getParentFragmentManager(), ex);
}
}.execute(context, owner, args, "message:resync");
}
private void onMenuNotes(TupleMessageEx message) {
Bundle args = new Bundle();
args.putLong("id", message.id);

@ -1932,10 +1932,13 @@ class Core {
}
private static void onBody(Context context, JSONArray jargs, EntityFolder folder, EntityMessage message, IMAPFolder ifolder) throws MessagingException, IOException {
boolean plain_text = jargs.optBoolean(0);
// Download message body
DB db = DB.getInstance(context);
if (message.content)
if (message.content &&
Objects.equals(message.plain_only, plain_text))
return;
// Get message
@ -1945,7 +1948,7 @@ class Core {
MessageHelper helper = new MessageHelper((MimeMessage) imessage, context);
MessageHelper.MessageParts parts = helper.getMessageParts();
String body = parts.getHtml(context);
String body = parts.getHtml(context, plain_text);
File file = message.getFile(context);
Helper.writeText(file, body);
String text = HtmlHelper.getFullText(body);
@ -1954,7 +1957,7 @@ class Core {
db.message().setMessageContent(message.id,
true,
message.language,
parts.isPlainOnly(),
plain_text || parts.isPlainOnly(),
message.preview,
parts.getWarnings(message.warning));
MessageClassifier.classify(message, folder, null, context);

@ -2842,6 +2842,10 @@ public class MessageHelper {
}
String getHtml(Context context) throws MessagingException, IOException {
return getHtml(context, false);
}
String getHtml(Context context, boolean plain_text) throws MessagingException, IOException {
if (text.size() == 0) {
Log.i("No body part");
return null;
@ -2856,8 +2860,13 @@ public class MessageHelper {
parts.addAll(text);
else
for (PartHolder h : text)
if (h.isHtml())
parts.add(h);
if (plain_text) {
if (h.isPlainText())
parts.add(h);
} else {
if (h.isHtml())
parts.add(h);
}
parts.addAll(extra);

@ -0,0 +1,13 @@
<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="M18,12l4,-4l-4,-4l0,3l-15,0l0,2l15,0z"/>
<path
android:fillColor="@android:color/white"
android:pathData="M6,12l-4,4l4,4l0,-3l15,0l0,-2l-15,0z"/>
</vector>

@ -155,6 +155,11 @@
android:icon="@drawable/twotone_sync_24"
android:title="@string/title_resync" />
<item
android:id="@+id/menu_alternative"
android:icon="@drawable/twotone_sync_alt_24"
android:title="@string/title_alternative" />
<item
android:id="@+id/menu_log"
android:icon="@drawable/twotone_dns_24"

@ -1369,6 +1369,7 @@
<string name="title_encrypt">Encrypt</string>
<string name="title_decrypt">Decrypt</string>
<string name="title_resync">Resync</string>
<string name="title_alternative" translatable="false">Alternative</string>
<string name="title_no_openpgp">OpenKeychain not found</string>
<string name="title_user_interaction">Transferring to OpenKeychain</string>
<string name="title_signed_data">Verify the signature to show the message text</string>

Loading…
Cancel
Save