mirror of
https://github.com/M66B/FairEmail.git
synced 2025-01-01 04:35:57 +00:00
Added option to disable storing events as tentative
This commit is contained in:
parent
c19b5e1ddb
commit
61eba3e652
4 changed files with 46 additions and 5 deletions
|
@ -114,6 +114,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
|||
private SwitchCompat swSortAnswers;
|
||||
private SwitchCompat swExternalAnswer;
|
||||
private SwitchCompat swShortcuts;
|
||||
private SwitchCompat swICalTentative;
|
||||
private SwitchCompat swFts;
|
||||
private SwitchCompat swClassification;
|
||||
private TextView tvClassMinProbability;
|
||||
|
@ -291,7 +292,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
|||
private static final long MIN_FILE_SIZE = 1024 * 1024L;
|
||||
|
||||
private final static String[] RESET_OPTIONS = new String[]{
|
||||
"sort_answers", "shortcuts", "fts",
|
||||
"sort_answers", "shortcuts", "ical_tentative", "fts",
|
||||
"classification", "class_min_probability", "class_min_difference",
|
||||
"show_filtered",
|
||||
"language",
|
||||
|
@ -381,6 +382,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
|||
swSortAnswers = view.findViewById(R.id.swSortAnswers);
|
||||
swExternalAnswer = view.findViewById(R.id.swExternalAnswer);
|
||||
swShortcuts = view.findViewById(R.id.swShortcuts);
|
||||
swICalTentative = view.findViewById(R.id.swICalTentative);
|
||||
swFts = view.findViewById(R.id.swFts);
|
||||
swClassification = view.findViewById(R.id.swClassification);
|
||||
ibClassification = view.findViewById(R.id.ibClassification);
|
||||
|
@ -608,6 +610,14 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
|||
}
|
||||
});
|
||||
|
||||
swICalTentative.setVisibility(BuildConfig.PLAY_STORE_RELEASE ? View.GONE : View.VISIBLE);
|
||||
swICalTentative.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
|
||||
prefs.edit().putBoolean("ical_tentative", checked).apply(); // apply won't work here
|
||||
}
|
||||
});
|
||||
|
||||
swFts.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
|
||||
|
@ -2597,6 +2607,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
|||
swExternalSearch.setChecked(Helper.isComponentEnabled(getContext(), ActivitySearch.class));
|
||||
swExternalAnswer.setChecked(Helper.isComponentEnabled(getContext(), ActivityAnswer.class));
|
||||
swShortcuts.setChecked(prefs.getBoolean("shortcuts", true));
|
||||
swICalTentative.setChecked(prefs.getBoolean("ical_tentative", true));
|
||||
swFts.setChecked(prefs.getBoolean("fts", false));
|
||||
|
||||
swClassification.setChecked(prefs.getBoolean("classification", false));
|
||||
|
|
|
@ -159,6 +159,7 @@ import biweekly.Biweekly;
|
|||
import biweekly.ICalendar;
|
||||
import biweekly.component.VEvent;
|
||||
import biweekly.property.Method;
|
||||
import biweekly.property.Status;
|
||||
import ezvcard.VCard;
|
||||
import ezvcard.VCardVersion;
|
||||
import ezvcard.io.text.VCardWriter;
|
||||
|
@ -4416,6 +4417,9 @@ public class MessageHelper {
|
|||
private void decodeICalendar(Context context, EntityAttachment local) {
|
||||
DB db = DB.getInstance(context);
|
||||
try {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
boolean ical_tentative = prefs.getBoolean("ical_tentative", true);
|
||||
|
||||
boolean permission = Helper.hasPermission(context, Manifest.permission.WRITE_CALENDAR);
|
||||
|
||||
EntityMessage message = db.message().getMessage(local.message);
|
||||
|
@ -4447,6 +4451,21 @@ public class MessageHelper {
|
|||
if (method != null && method.isCancel())
|
||||
CalendarHelper.delete(context, event, message);
|
||||
else if (method == null || method.isRequest() || method.isReply()) {
|
||||
int status = CalendarContract.Events.STATUS_TENTATIVE;
|
||||
if (method != null && method.isReply()) {
|
||||
Status istatus = event.getStatus();
|
||||
if (istatus != null)
|
||||
if (Status.ACCEPTED.equals(istatus.getValue()))
|
||||
status = CalendarContract.Events.STATUS_CONFIRMED;
|
||||
else if (Status.CANCELLED.equals(istatus.getValue()))
|
||||
status = CalendarContract.Events.STATUS_CANCELED;
|
||||
}
|
||||
|
||||
if (status == CalendarContract.Events.STATUS_TENTATIVE && !ical_tentative) {
|
||||
EntityLog.log(context, "Tentative event not processed");
|
||||
return;
|
||||
}
|
||||
|
||||
String selectedAccount;
|
||||
String selectedName;
|
||||
try {
|
||||
|
@ -4459,9 +4478,7 @@ public class MessageHelper {
|
|||
selectedName = null;
|
||||
}
|
||||
|
||||
CalendarHelper.insert(context, icalendar, event,
|
||||
CalendarContract.Events.STATUS_TENTATIVE,
|
||||
selectedAccount, selectedName, message);
|
||||
CalendarHelper.insert(context, icalendar, event, status, selectedAccount, selectedName, message);
|
||||
} else
|
||||
EntityLog.log(context, "Unknown event method=" + method.getValue());
|
||||
} catch (Throwable ex) {
|
||||
|
|
|
@ -156,6 +156,18 @@
|
|||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/swShortcuts" />
|
||||
|
||||
<androidx.appcompat.widget.SwitchCompat
|
||||
android:id="@+id/swICalTentative"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp"
|
||||
android:checked="true"
|
||||
android:text="@string/title_advanced_ical_tentative"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvShortcutsHint"
|
||||
app:switchPadding="12dp" />
|
||||
|
||||
<androidx.appcompat.widget.SwitchCompat
|
||||
android:id="@+id/swFts"
|
||||
android:layout_width="0dp"
|
||||
|
@ -164,7 +176,7 @@
|
|||
android:text="@string/title_advanced_fts"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvShortcutsHint"
|
||||
app:layout_constraintTop_toBottomOf="@id/swICalTentative"
|
||||
app:switchPadding="12dp" />
|
||||
|
||||
<TextView
|
||||
|
|
|
@ -821,6 +821,7 @@
|
|||
<string name="title_advanced_sort_answers">Sort reply templates by frequency of use</string>
|
||||
<string name="title_advanced_external_answer" translatable="false">Provide reply templates to other apps</string>
|
||||
<string name="title_advanced_shortcuts">Show frequently used contacts in Android share menu</string>
|
||||
<string name="title_advanced_ical_tentative">Store received invitations as tentative</string>
|
||||
<string name="title_advanced_fts">Build search index</string>
|
||||
<string name="title_advanced_fts_indexed">%1$d / %2$d messages indexed (%3$s)</string>
|
||||
<string name="title_advanced_classification">Classify messages</string>
|
||||
|
|
Loading…
Reference in a new issue