diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e80014769..dbd65e925a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ For support you can use [the contact form](https://contact.faircode.eu/?product= ### Next version +* Added send option for default text color * Added display option to swap trash/archive in bottom action bar * Small improvements and minor bug fixes * Updated translations diff --git a/app/src/main/assets/CHANGELOG.md b/app/src/main/assets/CHANGELOG.md index 4e80014769..dbd65e925a 100644 --- a/app/src/main/assets/CHANGELOG.md +++ b/app/src/main/assets/CHANGELOG.md @@ -20,6 +20,7 @@ For support you can use [the contact form](https://contact.faircode.eu/?product= ### Next version +* Added send option for default text color * Added display option to swap trash/archive in bottom action bar * Small improvements and minor bug fixes * Updated translations diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 5780eb5282..7e2fc46a07 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -283,6 +283,7 @@ public class FragmentCompose extends FragmentBase { private ContentResolver resolver; private AdapterAttachment adapter; + private int compose_color; private String compose_font; private String display_font; private boolean dsn = true; @@ -348,6 +349,7 @@ public class FragmentCompose extends FragmentBase { final Context context = getContext(); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + compose_color = prefs.getInt("compose_color", Color.TRANSPARENT); compose_font = prefs.getString("compose_font", ""); display_font = prefs.getString("display_font", ""); style = prefs.getBoolean("compose_style", false); @@ -717,6 +719,8 @@ public class FragmentCompose extends FragmentBase { } }); + if (compose_color != Color.TRANSPARENT) + tvSignature.setTextColor(compose_color); tvSignature.setTypeface(StyleHelper.getTypeface(compose_font, getContext())); cbSignature.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @@ -802,6 +806,8 @@ public class FragmentCompose extends FragmentBase { } }); + if (compose_color != Color.TRANSPARENT) + etBody.setTextColor(compose_color); etBody.setTypeface(StyleHelper.getTypeface(compose_font, getContext())); tvReference.setTypeface(StyleHelper.getTypeface(display_font, getContext())); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java b/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java index 941a3c5b90..4f970df649 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java @@ -21,8 +21,11 @@ package eu.faircode.email; import static android.app.Activity.RESULT_OK; +import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; +import android.graphics.Color; import android.media.RingtoneManager; import android.net.Uri; import android.os.Bundle; @@ -49,6 +52,10 @@ import androidx.appcompat.widget.SwitchCompat; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.preference.PreferenceManager; +import com.flask.colorpicker.ColorPickerView; +import com.flask.colorpicker.builder.ColorPickerClickListener; +import com.flask.colorpicker.builder.ColorPickerDialogBuilder; + import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -74,6 +81,7 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc private Spinner spAnswerAction; private Button btnSound; + private ViewButtonColor btnComposeColor; private Spinner spComposeFont; private SwitchCompat swPrefixOnce; private SwitchCompat swPrefixCount; @@ -114,7 +122,7 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc "send_delayed", "answer_action", "sound_sent", - "compose_font", + "compose_color", "compose_font", "prefix_once", "prefix_count", "alt_re", "alt_fwd", "separate_reply", "extended_reply", "write_below", "quote_reply", "quote_limit", "resize_reply", "signature_location", "signature_new", "signature_reply", "signature_reply_once", "signature_forward", @@ -153,6 +161,7 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc spAnswerAction = view.findViewById(R.id.spAnswerAction); btnSound = view.findViewById(R.id.btnSound); + btnComposeColor = view.findViewById(R.id.btnComposeColor); spComposeFont = view.findViewById(R.id.spComposeFont); swPrefixOnce = view.findViewById(R.id.swPrefixOnce); swPrefixCount = view.findViewById(R.id.swPrefixCount); @@ -356,6 +365,41 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc } }); + btnComposeColor.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Context context = getContext(); + int editTextColor = Helper.resolveColor(context, android.R.attr.editTextColor); + int compose_color = prefs.getInt("compose_color", Color.TRANSPARENT); + + ColorPickerDialogBuilder builder = ColorPickerDialogBuilder + .with(context) + .setTitle(R.string.title_advanced_compose_color) + .initialColor(compose_color == Color.TRANSPARENT ? Color.GRAY : compose_color) + .showColorEdit(true) + .setColorEditTextColor(editTextColor) + .wheelType(ColorPickerView.WHEEL_TYPE.FLOWER) + .density(6) + .lightnessSliderOnly() + .setPositiveButton(android.R.string.ok, new ColorPickerClickListener() { + @Override + public void onClick(DialogInterface dialog, int selectedColor, Integer[] allColors) { + prefs.edit().putInt("compose_color", selectedColor).apply(); + btnComposeColor.setColor(selectedColor); + } + }) + .setNegativeButton(R.string.title_reset, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + prefs.edit().remove("compose_color").apply(); + btnComposeColor.setColor(Color.TRANSPARENT); + } + }); + + builder.build().show(); + } + }); + spComposeFont.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView adapterView, View view, int position, long id) { @@ -678,6 +722,8 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc break; } + btnComposeColor.setColor(prefs.getInt("compose_color", Color.TRANSPARENT)); + String compose_font = prefs.getString("compose_font", ""); List fonts = StyleHelper.getFonts(getContext()); for (int pos = 0; pos < fonts.size(); pos++) { diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index c3e87142f4..74a97e3518 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -24,6 +24,7 @@ import static android.system.OsConstants.ENOSPC; import android.Manifest; import android.content.Context; import android.content.SharedPreferences; +import android.graphics.Color; import android.net.Uri; import android.os.Build; import android.system.ErrnoException; @@ -929,6 +930,7 @@ public class MessageHelper { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); boolean format_flowed = prefs.getBoolean("format_flowed", false); + int compose_color = prefs.getInt("compose_color", Color.TRANSPARENT); String compose_font = prefs.getString("compose_font", ""); boolean auto_link = prefs.getBoolean("auto_link", false); @@ -960,6 +962,9 @@ public class MessageHelper { HtmlHelper.autoLink(document, true); } + if (compose_color != Color.TRANSPARENT) + document.head().append(""); + if (!TextUtils.isEmpty(compose_font)) { List childs = new ArrayList<>(); for (Node child : document.body().childNodes()) diff --git a/app/src/main/res/layout/fragment_options_send.xml b/app/src/main/res/layout/fragment_options_send.xml index 4c2c016989..d3ed0af003 100644 --- a/app/src/main/res/layout/fragment_options_send.xml +++ b/app/src/main/res/layout/fragment_options_send.xml @@ -387,6 +387,17 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + + app:layout_constraintTop_toBottomOf="@id/btnComposeColor" /> Automatically save a draft after every paragraph Automatically save a draft after every sentence + Default text color Default font Automatically select identities for new messages Prefix subject only once on replying or forwarding diff --git a/metadata/en-US/changelogs/2013.txt b/metadata/en-US/changelogs/2013.txt index c95c30dd17..6f395d0fbb 100644 --- a/metadata/en-US/changelogs/2013.txt +++ b/metadata/en-US/changelogs/2013.txt @@ -20,6 +20,7 @@ For support you can use the contact form. Next version +* Added send option for default text color * Added display option to swap trash/archive in bottom action bar * Small improvements and minor bug fixes * Updated translations