Added write below setting per message

pull/214/head
M66B 8 months ago
parent 5ded10a29a
commit 1b5651f044

File diff suppressed because it is too large Load Diff

@ -68,7 +68,7 @@ import javax.mail.internet.InternetAddress;
// https://developer.android.com/topic/libraries/architecture/room.html
@Database(
version = 284,
version = 285,
entities = {
EntityIdentity.class,
EntityAccount.class,
@ -2868,6 +2868,12 @@ public abstract class DB extends RoomDatabase {
db.execSQL("UPDATE `identity` SET insecure = 1 WHERE auth_type = " + AUTH_TYPE_PASSWORD);
}
}
}).addMigrations(new Migration(284, 285) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase db) {
logMigration(startVersion, endVersion);
db.execSQL("ALTER TABLE `message` ADD COLUMN `write_below` INTEGER");
}
}).addMigrations(new Migration(998, 999) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase db) {

@ -880,6 +880,9 @@ public interface DaoMessage {
@Query("UPDATE message SET plain_only = :plain_only WHERE id = :id AND NOT (plain_only IS :plain_only)")
int setMessagePlainOnly(long id, Integer plain_only);
@Query("UPDATE message SET write_below = :write_below WHERE id = :id AND NOT (write_below IS :write_below)")
int setMessageWriteBelow(long id, Boolean write_below);
@Query("UPDATE message SET encrypt = :encrypt WHERE id = :id AND NOT (encrypt IS :encrypt)")
int setMessageEncrypt(long id, Integer encrypt);

@ -191,6 +191,7 @@ public class EntityMessage implements Serializable {
public Boolean content = false;
public String language = null; // classified
public Integer plain_only = null; // 1=true; 0x80=alt
public Boolean write_below;
public Boolean resend = null;
public Integer encrypt = null;
public Integer ui_encrypt = null;

@ -861,15 +861,46 @@ public class FragmentCompose extends FragmentBase {
ibWriteAboveBelow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(v.getContext());
boolean write_below = !prefs.getBoolean("write_below", false);
prefs.edit().putBoolean("write_below", write_below).apply();
ibWriteAboveBelow.setImageLevel(write_below ? 1 : 0);
ToastEx.makeText(v.getContext(),
write_below
? R.string.title_advanced_write_below
: R.string.title_advanced_write_above,
Toast.LENGTH_LONG).show();
Bundle args = new Bundle();
args.putLong("id", working);
new SimpleTask<Boolean>() {
@Override
protected Boolean onExecute(Context context, Bundle args) throws Throwable {
long id = args.getLong("id");
DB db = DB.getInstance(context);
EntityMessage draft = db.message().getMessage(id);
if (draft == null)
return null;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean write_below = prefs.getBoolean("write_below", false);
boolean wb = (draft == null || draft.write_below == null ? write_below : draft.write_below);
wb = !wb;
db.message().setMessageWriteBelow(id, wb);
return wb;
}
@Override
protected void onExecuted(Bundle args, Boolean wb) {
if (wb == null)
return;
ibWriteAboveBelow.setImageLevel(wb ? 1 : 0);
ToastEx.makeText(v.getContext(), wb
? R.string.title_advanced_write_below
: R.string.title_advanced_write_above,
Toast.LENGTH_LONG).show();
}
@Override
protected void onException(Bundle args, Throwable ex) {
Log.unexpectedError(getParentFragmentManager(), ex);
}
}.execute(FragmentCompose.this, args, "compose:below");
}
});
@ -3671,18 +3702,20 @@ public class FragmentCompose extends FragmentBase {
String html = HtmlHelper.toHtml(s, context);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean write_below = prefs.getBoolean("write_below", false);
EntityMessage draft = db.message().getMessage(id);
if (draft != null) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean write_below = prefs.getBoolean("write_below", false);
boolean wb = (draft == null || draft.write_below == null ? write_below : draft.write_below);
File file = draft.getFile(context);
Elements ref = JsoupEx.parse(file).select("div[fairemail=reference]");
Document doc = JsoupEx.parse(html);
for (Element e : ref)
if (write_below && draft.wasforwardedfrom == null)
if (wb && draft.wasforwardedfrom == null)
doc.body().prependChild(e);
else
doc.body().appendChild(e);
@ -5329,6 +5362,7 @@ public class FragmentCompose extends FragmentBase {
throw new OperationCanceledException(context.getString(R.string.title_no_composable));
data.draft = db.message().getMessage(id);
boolean wb = (data.draft == null || data.draft.write_below == null ? write_below : data.draft.write_below);
if (data.draft == null || data.draft.ui_hide) {
// New draft
if ("edit".equals(action))
@ -5914,7 +5948,7 @@ public class FragmentCompose extends FragmentBase {
e.tagName("p");
reply.appendChild(e);
if (write_below && data.draft.wasforwardedfrom == null)
if (wb && data.draft.wasforwardedfrom == null)
document.body().prependChild(reply);
else
document.body().appendChild(reply);
@ -6141,7 +6175,7 @@ public class FragmentCompose extends FragmentBase {
// Possibly external draft
for (Element e : ref)
if (write_below && data.draft.wasforwardedfrom == null)
if (wb && data.draft.wasforwardedfrom == null)
doc.body().prependChild(e);
else
doc.body().appendChild(e);
@ -6801,7 +6835,8 @@ public class FragmentCompose extends FragmentBase {
if (extras.containsKey("html"))
dirty = true;
if (below != write_below &&
boolean wb = (draft == null || draft.write_below == null ? write_below : draft.write_below);
if (below != wb &&
doc.body().childrenSize() > 0 &&
draft.wasforwardedfrom == null)
dirty = true;
@ -6835,7 +6870,7 @@ public class FragmentCompose extends FragmentBase {
Document c = JsoupEx.parse(body);
for (Element e : ref)
if (write_below && draft.wasforwardedfrom == null)
if (wb && draft.wasforwardedfrom == null)
c.body().prependChild(e);
else
c.body().appendChild(e);
@ -6849,7 +6884,7 @@ public class FragmentCompose extends FragmentBase {
d = JsoupEx.parse(body); // Save
for (Element e : ref)
if (write_below && draft.wasforwardedfrom == null)
if (wb && draft.wasforwardedfrom == null)
d.body().prependChild(e);
else
d.body().appendChild(e);
@ -7498,6 +7533,8 @@ public class FragmentCompose extends FragmentBase {
boolean write_below = prefs.getBoolean("write_below", false);
String compose_font = prefs.getString("compose_font", "");
boolean wb = (draft == null || draft.write_below == null ? write_below : draft.write_below);
Element div = document.createElement("div");
div.attr("fairemail", "signature");
if (!TextUtils.isEmpty(compose_font))
@ -7520,7 +7557,7 @@ public class FragmentCompose extends FragmentBase {
else if (ref.size() == 0 || signature_location == 2) // bottom
document.body().appendChild(div);
else if (signature_location == 1) // below text
if (write_below && draft.wasforwardedfrom == null)
if (wb && draft.wasforwardedfrom == null)
document.body().appendChild(div);
else
ref.first().before(div);
@ -7679,10 +7716,12 @@ public class FragmentCompose extends FragmentBase {
boolean ref_hint = prefs.getBoolean("compose_reference", true);
boolean write_below = prefs.getBoolean("write_below", false);
boolean wb = (draft == null || draft.write_below == null ? write_below : draft.write_below);
tvReference.setText(text[1]);
tvReference.setVisibility(text[1] == null ? View.GONE : View.VISIBLE);
grpReferenceHint.setVisibility(text[1] == null || !ref_hint ? View.GONE : View.VISIBLE);
ibWriteAboveBelow.setImageLevel(write_below ? 1 : 0);
ibWriteAboveBelow.setImageLevel(wb ? 1 : 0);
ibWriteAboveBelow.setVisibility(text[1] == null ||
draft.wasforwardedfrom != null || BuildConfig.PLAY_STORE_RELEASE
? View.GONE : View.VISIBLE);
@ -7693,7 +7732,7 @@ public class FragmentCompose extends FragmentBase {
setBodyPadding();
if (refedit && write_below)
if (refedit && wb)
etBody.setSelection(etBody.length());
if (state == State.LOADED)

Loading…
Cancel
Save