mirror of
https://github.com/M66B/FairEmail.git
synced 2025-03-09 21:56:20 +00:00
Added write below setting per message
This commit is contained in:
parent
5ded10a29a
commit
1b5651f044
5 changed files with 3056 additions and 22 deletions
2985
app/schemas/eu.faircode.email.DB/285.json
Normal file
2985
app/schemas/eu.faircode.email.DB/285.json
Normal file
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…
Add table
Reference in a new issue