Added widget title fields

This commit is contained in:
M66B 2024-02-02 17:22:51 +01:00
parent 615f1e7a6a
commit 5071a43552
4 changed files with 78 additions and 14 deletions

View File

@ -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);

View File

@ -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);

View File

@ -173,6 +173,28 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvFontSize" />
<TextView
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/title_widget_caption"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/spFontSize" />
<eu.faircode.email.EditTextPlain
android:id="@+id/etName"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/title_optional"
android:inputType="textCapSentences|textAutoCorrect"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvName" />
<Button
android:id="@+id/btnSave"
android:layout_width="wrap_content"
@ -182,7 +204,7 @@
android:drawablePadding="6dp"
android:text="@string/title_save"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/spFontSize" />
app:layout_constraintTop_toBottomOf="@id/etName" />
<eu.faircode.email.ContentLoadingProgressBar
android:id="@+id/pbWait"

View File

@ -234,6 +234,20 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cbAccountName" />
<eu.faircode.email.EditTextPlain
android:id="@+id/etName"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="12dp"
android:hint="@string/title_optional"
android:inputType="textCapSentences|textAutoCorrect"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cbCaption" />
<CheckBox
android:id="@+id/cbRefresh"
android:layout_width="wrap_content"
@ -242,7 +256,7 @@
android:checked="true"
android:text="@string/title_widget_refresh"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cbCaption" />
app:layout_constraintTop_toBottomOf="@id/etName" />
<CheckBox
android:id="@+id/cbCompose"