Added option to keep messages infinitely

pull/147/head
M66B 7 years ago
parent 29f2e4c0e6
commit f552a9b23d

@ -178,7 +178,10 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
tvAfter.setText(null);
ivSync.setImageResource(R.drawable.baseline_sync_24);
} else {
tvAfter.setText(String.format("%d/%d", folder.sync_days, folder.keep_days));
if (folder.keep_days == Integer.MAX_VALUE)
tvAfter.setText(String.format("%d/∞", folder.sync_days));
else
tvAfter.setText(String.format("%d/%d", folder.sync_days, folder.keep_days));
ivSync.setImageResource(folder.synchronize ? R.drawable.baseline_sync_24 : R.drawable.baseline_sync_disabled_24);
}

@ -55,6 +55,7 @@ public class FragmentFolder extends FragmentEx {
private CheckBox cbNotify;
private EditText etSyncDays;
private EditText etKeepDays;
private CheckBox cbKeepAll;
private Button btnSave;
private ProgressBar pbSave;
private ProgressBar pbWait;
@ -90,6 +91,7 @@ public class FragmentFolder extends FragmentEx {
cbNotify = view.findViewById(R.id.cbNotify);
etSyncDays = view.findViewById(R.id.etSyncDays);
etKeepDays = view.findViewById(R.id.etKeepDays);
cbKeepAll = view.findViewById(R.id.cbKeepAll);
btnSave = view.findViewById(R.id.btnSave);
pbSave = view.findViewById(R.id.pbSave);
pbWait = view.findViewById(R.id.pbWait);
@ -113,6 +115,13 @@ public class FragmentFolder extends FragmentEx {
// Navigating to individual messages requires notification grouping
cbNotify.setVisibility(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N ? View.VISIBLE : View.GONE);
cbKeepAll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
etKeepDays.setEnabled(!isChecked);
}
});
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@ -131,7 +140,9 @@ public class FragmentFolder extends FragmentEx {
args.putBoolean("poll", cbPoll.isChecked());
args.putBoolean("notify", cbNotify.getVisibility() == View.VISIBLE && cbNotify.isChecked());
args.putString("sync", etSyncDays.getText().toString());
args.putString("keep", etKeepDays.getText().toString());
args.putString("keep", cbKeepAll.isChecked()
? Integer.toString(Integer.MAX_VALUE)
: etKeepDays.getText().toString());
new SimpleTask<Void>() {
@Override
@ -351,7 +362,10 @@ public class FragmentFolder extends FragmentEx {
cbPoll.setChecked(folder == null ? false : folder.poll);
cbNotify.setChecked(folder == null ? false : folder.notify);
etSyncDays.setText(Integer.toString(folder == null ? EntityFolder.DEFAULT_USER_SYNC : folder.sync_days));
etKeepDays.setText(Integer.toString(folder == null ? EntityFolder.DEFAULT_USER_SYNC : folder.keep_days));
if (folder != null && folder.keep_days == Integer.MAX_VALUE)
cbKeepAll.setChecked(true);
else
etKeepDays.setText(Integer.toString(folder == null ? EntityFolder.DEFAULT_USER_SYNC : folder.keep_days));
}
// Consider previous save as cancelled

@ -110,6 +110,17 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cbNotify" />
<TextView
android:id="@+id/tvSyncDaysRemark"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="@string/title_sync_days_remark"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="italic"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvSyncDays" />
<EditText
android:id="@+id/etSyncDays"
android:layout_width="match_parent"
@ -118,7 +129,7 @@
android:inputType="number"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvSyncDays" />
app:layout_constraintTop_toBottomOf="@id/tvSyncDaysRemark" />
<TextView
android:id="@+id/tvKeepDays"
@ -140,6 +151,14 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvKeepDays" />
<CheckBox
android:id="@+id/cbKeepAll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/title_keep_all"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/etKeepDays" />
<Button
android:id="@+id/btnSave"
android:layout_width="wrap_content"
@ -147,7 +166,7 @@
android:layout_marginTop="12dp"
android:text="@string/title_save"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/etKeepDays" />
app:layout_constraintTop_toBottomOf="@id/cbKeepAll" />
<ProgressBar
android:id="@+id/pbSave"

@ -187,7 +187,9 @@
<string name="title_poll_folder">Check periodically instead of continuous synchronize</string>
<string name="title_notify_folder">Notify new messages</string>
<string name="title_sync_days">Synchronize messages (days)</string>
<string name="title_sync_days_remark">If you have daily internet connectivity, set this to one day after the initial synchronization to reduce battery and data usage</string>
<string name="title_keep_days">Keep messages (days)</string>
<string name="title_keep_all">Keep all messages</string>
<string name="title_folder_exists">Folder %1$s exists</string>
<string name="title_folder_delete">Permanently delete this folder and any messages it contains?</string>

Loading…
Cancel
Save