From 5071a435525987509f68b706a702c2501c2bcd64 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 2 Feb 2024 17:22:51 +0100 Subject: [PATCH] Added widget title fields --- .../eu/faircode/email/ActivityWidget.java | 24 +++++++++++----- .../faircode/email/ActivityWidgetUnified.java | 28 +++++++++++++++---- app/src/main/res/layout/activity_widget.xml | 24 +++++++++++++++- .../res/layout/activity_widget_unified.xml | 16 ++++++++++- 4 files changed, 78 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ActivityWidget.java b/app/src/main/java/eu/faircode/email/ActivityWidget.java index b1802ba1a6..1757fef779 100644 --- a/app/src/main/java/eu/faircode/email/ActivityWidget.java +++ b/app/src/main/java/eu/faircode/email/ActivityWidget.java @@ -27,6 +27,7 @@ import android.content.SharedPreferences; import android.graphics.Color; import android.os.Build; import android.os.Bundle; +import android.text.TextUtils; import android.util.TypedValue; import android.view.View; import android.view.ViewGroup; @@ -35,6 +36,7 @@ import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; +import android.widget.EditText; import android.widget.ImageView; import android.widget.RadioButton; import android.widget.Spinner; @@ -70,6 +72,7 @@ public class ActivityWidget extends ActivityBase { private RadioButton rbNew; private CheckBox cbTop; private Spinner spFontSize; + private EditText etName; private Button btnSave; private ContentLoadingProgressBar pbWait; private Group grpReady; @@ -100,6 +103,7 @@ public class ActivityWidget extends ActivityBase { int layout = prefs.getInt("widget." + appWidgetId + ".layout", 1 /* new */); boolean top = prefs.getBoolean("widget." + appWidgetId + ".top", false); int size = prefs.getInt("widget." + appWidgetId + ".text_size", -1); + String name = prefs.getString("widget." + appWidgetId + ".name", null); daynight = daynight && (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S); @@ -119,6 +123,7 @@ public class ActivityWidget extends ActivityBase { rbNew = findViewById(R.id.rbNew); cbTop = findViewById(R.id.cbTop); spFontSize = findViewById(R.id.spFontSize); + etName = findViewById(R.id.etName); btnSave = findViewById(R.id.btnSave); pbWait = findViewById(R.id.pbWait); grpReady = findViewById(R.id.grpReady); @@ -268,13 +273,17 @@ public class ActivityWidget extends ActivityBase { int pos = spFontSize.getSelectedItemPosition(); SharedPreferences.Editor editor = prefs.edit(); - if (folder == null || folder.id < 0) { - if (account != null && account.id > 0) - editor.putString("widget." + appWidgetId + ".name", account.name); - else - editor.remove("widget." + appWidgetId + ".name"); - } else - editor.putString("widget." + appWidgetId + ".name", folder.getDisplayName(ActivityWidget.this)); + String name = etName.getText().toString(); + if (TextUtils.isEmpty(name)) + if (folder == null || folder.id < 0) { + if (account != null && account.id > 0) + editor.putString("widget." + appWidgetId + ".name", account.name); + else + editor.remove("widget." + appWidgetId + ".name"); + } else + editor.putString("widget." + appWidgetId + ".name", folder.getDisplayName(ActivityWidget.this)); + else + editor.putString("widget." + appWidgetId + ".name", name); editor.putLong("widget." + appWidgetId + ".account", account == null ? -1L : account.id); editor.putLong("widget." + appWidgetId + ".folder", folder == null ? -1L : folder.id); editor.putBoolean("widget." + appWidgetId + ".daynight", cbDayNight.isChecked()); @@ -400,6 +409,7 @@ public class ActivityWidget extends ActivityBase { rbNew.setChecked(layout == 1); cbTop.setChecked(top); spFontSize.setSelection(size + 1); + etName.setText(name); updatePreview(); grpReady.setVisibility(View.GONE); diff --git a/app/src/main/java/eu/faircode/email/ActivityWidgetUnified.java b/app/src/main/java/eu/faircode/email/ActivityWidgetUnified.java index 5cdeb7169f..cfb64500aa 100644 --- a/app/src/main/java/eu/faircode/email/ActivityWidgetUnified.java +++ b/app/src/main/java/eu/faircode/email/ActivityWidgetUnified.java @@ -27,6 +27,7 @@ import android.content.SharedPreferences; import android.graphics.Color; import android.os.Build; import android.os.Bundle; +import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; @@ -34,6 +35,7 @@ import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; +import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; @@ -73,6 +75,7 @@ public class ActivityWidgetUnified extends ActivityBase { private CheckBox cbAvatars; private CheckBox cbAccountName; private CheckBox cbCaption; + private EditText etName; private CheckBox cbRefresh; private CheckBox cbCompose; private Button btnSave; @@ -116,6 +119,7 @@ public class ActivityWidgetUnified extends ActivityBase { boolean avatars = prefs.getBoolean("widget." + appWidgetId + ".avatars", false); boolean account_name = prefs.getBoolean("widget." + appWidgetId + ".account_name", true); boolean caption = prefs.getBoolean("widget." + appWidgetId + ".caption", true); + String name = prefs.getString("widget." + appWidgetId + ".name", null); boolean refresh = prefs.getBoolean("widget." + appWidgetId + ".refresh", false); boolean compose = prefs.getBoolean("widget." + appWidgetId + ".compose", false); @@ -142,6 +146,7 @@ public class ActivityWidgetUnified extends ActivityBase { cbAvatars = findViewById(R.id.cbAvatars); cbAccountName = findViewById(R.id.cbAccountName); cbCaption = findViewById(R.id.cbCaption); + etName = findViewById(R.id.etName); cbRefresh = findViewById(R.id.cbRefresh); cbCompose = findViewById(R.id.cbCompose); btnSave = findViewById(R.id.btnSave); @@ -249,6 +254,13 @@ public class ActivityWidgetUnified extends ActivityBase { } }); + cbCaption.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + etName.setEnabled(isChecked); + } + }); + btnSave.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -258,12 +270,16 @@ public class ActivityWidgetUnified extends ActivityBase { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ActivityWidgetUnified.this); SharedPreferences.Editor editor = prefs.edit(); - if (account != null && account.id > 0) - if (folder != null && folder.id > 0) - editor.putString("widget." + appWidgetId + ".name", folder.getDisplayName(ActivityWidgetUnified.this)); + if (account != null && account.id > 0) { + String name = etName.getText().toString(); + if (TextUtils.isEmpty(name)) + if (folder != null && folder.id > 0) + editor.putString("widget." + appWidgetId + ".name", folder.getDisplayName(ActivityWidgetUnified.this)); + else + editor.putString("widget." + appWidgetId + ".name", account.name); else - editor.putString("widget." + appWidgetId + ".name", account.name); - else + editor.putString("widget." + appWidgetId + ".name", name); + } else editor.remove("widget." + appWidgetId + ".name"); int font = spFontSize.getSelectedItemPosition(); @@ -421,6 +437,8 @@ public class ActivityWidgetUnified extends ActivityBase { spSubjectLines.setSelection(subject_lines - 1); tvSubjectLinesHint.setText(getString(R.string.title_advanced_preview_lines_hint, NF.format(HtmlHelper.PREVIEW_SIZE))); cbCaption.setChecked(caption); + etName.setText(name); + etName.setEnabled(caption); cbRefresh.setChecked(refresh); cbCompose.setChecked(compose); diff --git a/app/src/main/res/layout/activity_widget.xml b/app/src/main/res/layout/activity_widget.xml index db3601ede9..541b832635 100644 --- a/app/src/main/res/layout/activity_widget.xml +++ b/app/src/main/res/layout/activity_widget.xml @@ -173,6 +173,28 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tvFontSize" /> + + + +