From 6ae0d5480dd0b56be0f9e5993bfc4c9c7d59f718 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 2 Jul 2021 22:35:41 +0200 Subject: [PATCH] Save signature dirty state --- .../eu/faircode/email/ActivitySignature.java | 12 ++--- .../eu/faircode/email/EditTextCompose.java | 50 +++++++++++++++++++ 2 files changed, 56 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ActivitySignature.java b/app/src/main/java/eu/faircode/email/ActivitySignature.java index ac4602c3d4..9350227ae6 100644 --- a/app/src/main/java/eu/faircode/email/ActivitySignature.java +++ b/app/src/main/java/eu/faircode/email/ActivitySignature.java @@ -174,15 +174,15 @@ public class ActivitySignature extends ActivityBase { } }, this); - if (savedInstanceState != null) - etText.setRaw(savedInstanceState.getBoolean("fair:raw")); - style_bar.setVisibility(View.GONE); setResult(RESULT_CANCELED, new Intent()); - load(getIntent().getStringExtra("html")); - dirty = false; + if (savedInstanceState == null) { + load(getIntent().getStringExtra("html")); + dirty = false; + } else + dirty = savedInstanceState.getBoolean("fair:dirty"); } @Override @@ -196,7 +196,7 @@ public class ActivitySignature extends ActivityBase { @Override protected void onSaveInstanceState(Bundle outState) { - outState.putBoolean("fair:raw", etText.isRaw()); + outState.putBoolean("fair:dirty", dirty); super.onSaveInstanceState(outState); } diff --git a/app/src/main/java/eu/faircode/email/EditTextCompose.java b/app/src/main/java/eu/faircode/email/EditTextCompose.java index 092355764c..1dbc47c551 100644 --- a/app/src/main/java/eu/faircode/email/EditTextCompose.java +++ b/app/src/main/java/eu/faircode/email/EditTextCompose.java @@ -26,11 +26,14 @@ import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Build; import android.os.Bundle; +import android.os.Parcel; +import android.os.Parcelable; import android.text.Html; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.style.QuoteSpan; import android.util.AttributeSet; +import android.view.View; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; @@ -65,6 +68,19 @@ public class EditTextCompose extends FixedEditText { Helper.setKeyboardIncognitoMode(this, context); } + @Override + public Parcelable onSaveInstanceState() { + Parcelable superState = super.onSaveInstanceState(); + return new SavedState(superState, this.raw); + } + + @Override + public void onRestoreInstanceState(Parcelable state) { + SavedState savedState = (SavedState) state; + super.onRestoreInstanceState(savedState.getSuperState()); + setRaw(savedState.getRaw()); + } + @Override protected void onAttachedToWindow() { // Spellchecker workaround @@ -270,4 +286,38 @@ public class EditTextCompose extends FixedEditText { interface ISelection { void onSelected(boolean selection); } + + static class SavedState extends View.BaseSavedState { + private boolean raw; + + private SavedState(Parcelable superState, boolean raw) { + super(superState); + this.raw = raw; + } + + private SavedState(Parcel in) { + super(in); + raw = (in.readInt() != 0); + } + + public boolean getRaw() { + return this.raw; + } + + @Override + public void writeToParcel(Parcel destination, int flags) { + super.writeToParcel(destination, flags); + destination.writeInt(raw ? 1 : 0); + } + + public static final Parcelable.Creator CREATOR = new Creator() { + public SavedState createFromParcel(Parcel in) { + return new SavedState(in); + } + + public SavedState[] newArray(int size) { + return new SavedState[size]; + } + }; + } }