mirror of https://github.com/M66B/FairEmail.git
Select by calendar account and name
This commit is contained in:
parent
e33eb40833
commit
cd955c4f3c
|
@ -449,7 +449,7 @@ public class FragmentAccount extends FragmentBase {
|
|||
@Override
|
||||
public void onClick(View v) {
|
||||
Bundle args = new Bundle();
|
||||
args.putString("account", calendar);
|
||||
args.putString("calendar", calendar);
|
||||
|
||||
FragmentDialogCalendar fragment = new FragmentDialogCalendar();
|
||||
fragment.setArguments(args);
|
||||
|
@ -1877,7 +1877,12 @@ public class FragmentAccount extends FragmentBase {
|
|||
if (resultCode == RESULT_OK && data != null) {
|
||||
if (ActivityBilling.isPro(getContext())) {
|
||||
Bundle args = data.getBundleExtra("args");
|
||||
calendar = args.getString("account");
|
||||
JSONObject jobject = new JSONObject();
|
||||
jobject.put("id", args.getLong("id"));
|
||||
jobject.put("account", args.getString("account"));
|
||||
jobject.put("type", args.getString("type"));
|
||||
jobject.put("name", args.getString("name"));
|
||||
calendar = jobject.toString();
|
||||
} else
|
||||
startActivity(new Intent(getContext(), ActivityBilling.class));
|
||||
}
|
||||
|
|
|
@ -29,12 +29,16 @@ import android.content.DialogInterface;
|
|||
import android.database.Cursor;
|
||||
import android.os.Bundle;
|
||||
import android.provider.CalendarContract;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
public class FragmentDialogCalendar extends FragmentDialogBase {
|
||||
@NonNull
|
||||
|
@ -43,14 +47,28 @@ public class FragmentDialogCalendar extends FragmentDialogBase {
|
|||
final Context context = getContext();
|
||||
final ContentResolver resolver = context.getContentResolver();
|
||||
|
||||
String selectedAccount = getArguments().getString("account");
|
||||
String selectedCalendar = getArguments().getString("calendar");
|
||||
String selectedAccount;
|
||||
String selectedName;
|
||||
try {
|
||||
JSONObject jselected = new JSONObject(selectedCalendar);
|
||||
selectedAccount = jselected.getString("account");
|
||||
selectedName = jselected.getString("name");
|
||||
} catch (Throwable ex) {
|
||||
Log.i(ex);
|
||||
selectedAccount = selectedCalendar;
|
||||
selectedName = null;
|
||||
}
|
||||
|
||||
List<Calendar> calendars = new ArrayList<>();
|
||||
try (Cursor cursor = resolver.query(CalendarContract.Calendars.CONTENT_URI,
|
||||
new String[]{
|
||||
CalendarContract.Calendars._ID,
|
||||
CalendarContract.Calendars.ACCOUNT_NAME,
|
||||
CalendarContract.Calendars.ACCOUNT_TYPE
|
||||
CalendarContract.Calendars.ACCOUNT_TYPE,
|
||||
CalendarContract.Calendars.IS_PRIMARY,
|
||||
CalendarContract.Calendars.VISIBLE,
|
||||
CalendarContract.Calendars.CALENDAR_DISPLAY_NAME
|
||||
},
|
||||
CalendarContract.Calendars.VISIBLE + " = 1 AND " +
|
||||
CalendarContract.Calendars.IS_PRIMARY + " = 1",
|
||||
|
@ -61,8 +79,11 @@ public class FragmentDialogCalendar extends FragmentDialogBase {
|
|||
long id = cursor.getLong(0);
|
||||
String account = cursor.getString(1);
|
||||
String type = cursor.getString(2);
|
||||
boolean primary = (cursor.getInt(3) != 0);
|
||||
boolean visible = (cursor.getInt(4) != 0);
|
||||
String name = cursor.getString(5);
|
||||
if (account != null)
|
||||
calendars.add(new Calendar(id, account, type));
|
||||
calendars.add(new Calendar(id, account, type, primary, visible, name));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -71,7 +92,8 @@ public class FragmentDialogCalendar extends FragmentDialogBase {
|
|||
for (int i = 0; i < calendars.size(); i++) {
|
||||
Calendar calendar = calendars.get(i);
|
||||
names.add(calendar.getTitle());
|
||||
if (calendar.account.equals(selectedAccount))
|
||||
if (Objects.equals(calendar.account, selectedAccount) &&
|
||||
(selectedName == null || Objects.equals(calendar.name, selectedName)))
|
||||
checkedItem = i;
|
||||
}
|
||||
|
||||
|
@ -86,6 +108,7 @@ public class FragmentDialogCalendar extends FragmentDialogBase {
|
|||
getArguments().putLong("id", calendar.id);
|
||||
getArguments().putString("account", calendar.account);
|
||||
getArguments().putString("type", calendar.type);
|
||||
getArguments().putString("name", calendar.name);
|
||||
sendResult(RESULT_OK);
|
||||
dismiss();
|
||||
}
|
||||
|
@ -108,18 +131,29 @@ public class FragmentDialogCalendar extends FragmentDialogBase {
|
|||
|
||||
|
||||
private class Calendar {
|
||||
Calendar(long id, String account, String type) {
|
||||
this.id = id;
|
||||
this.account = account;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
private long id;
|
||||
private String account;
|
||||
private String type;
|
||||
private boolean primary;
|
||||
private boolean visible;
|
||||
private String name;
|
||||
|
||||
Calendar(long id, String account, String type, boolean primary, boolean visible, String name) {
|
||||
this.id = id;
|
||||
this.account = account;
|
||||
this.type = type;
|
||||
this.primary = primary;
|
||||
this.visible = visible;
|
||||
this.name = (Objects.equals(account, name) ? null : name);
|
||||
}
|
||||
|
||||
String getTitle() {
|
||||
return (this.account == null ? "-" : this.account);
|
||||
return (this.visible ? "" : "(") +
|
||||
(TextUtils.isEmpty(this.name) ? "" : this.name + ":") +
|
||||
(this.account == null ? "-" : this.account) +
|
||||
(BuildConfig.DEBUG && false ? ":" + (this.type == null ? "-" : this.type) : "") +
|
||||
(this.visible ? "" : ")") +
|
||||
" " + (this.primary && BuildConfig.DEBUG && false ? "*" : "");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -265,7 +265,7 @@ public class FragmentPop extends FragmentBase {
|
|||
@Override
|
||||
public void onClick(View v) {
|
||||
Bundle args = new Bundle();
|
||||
args.putString("account", calendar);
|
||||
args.putString("calendar", calendar);
|
||||
|
||||
FragmentDialogCalendar fragment = new FragmentDialogCalendar();
|
||||
fragment.setArguments(args);
|
||||
|
@ -914,7 +914,12 @@ public class FragmentPop extends FragmentBase {
|
|||
if (resultCode == RESULT_OK && data != null) {
|
||||
if (ActivityBilling.isPro(getContext())) {
|
||||
Bundle args = data.getBundleExtra("args");
|
||||
calendar = args.getString("account");
|
||||
JSONObject jobject = new JSONObject();
|
||||
jobject.put("id", args.getLong("id"));
|
||||
jobject.put("account", args.getString("account"));
|
||||
jobject.put("type", args.getString("type"));
|
||||
jobject.put("name", args.getString("name"));
|
||||
calendar = jobject.toString();
|
||||
} else
|
||||
startActivity(new Intent(getContext(), ActivityBilling.class));
|
||||
}
|
||||
|
|
|
@ -64,6 +64,7 @@ import org.apache.commons.compress.archivers.ArchiveInputStream;
|
|||
import org.apache.commons.compress.archivers.ArchiveStreamFactory;
|
||||
import org.apache.commons.compress.archivers.zip.UnsupportedZipFeatureException;
|
||||
import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
|
||||
import org.json.JSONObject;
|
||||
import org.jsoup.nodes.Document;
|
||||
import org.jsoup.nodes.Element;
|
||||
import org.jsoup.nodes.Node;
|
||||
|
@ -3944,18 +3945,35 @@ public class MessageHelper {
|
|||
}
|
||||
}
|
||||
|
||||
if (icalendar.getMethod().isRequest())
|
||||
if (icalendar.getMethod().isRequest()) {
|
||||
String selectedAccount;
|
||||
String selectedName;
|
||||
try {
|
||||
JSONObject jselected = new JSONObject(account.calendar);
|
||||
selectedAccount = jselected.getString("account");
|
||||
selectedName = jselected.getString("name");
|
||||
} catch (Throwable ex) {
|
||||
Log.i(ex);
|
||||
selectedAccount = account.calendar;
|
||||
selectedName = null;
|
||||
}
|
||||
|
||||
try (Cursor cursor = resolver.query(CalendarContract.Calendars.CONTENT_URI,
|
||||
new String[]{CalendarContract.Calendars._ID},
|
||||
CalendarContract.Calendars.VISIBLE + " = 1 AND " +
|
||||
CalendarContract.Calendars.IS_PRIMARY + " = 1 AND " +
|
||||
CalendarContract.Calendars.ACCOUNT_NAME + " = ?",
|
||||
new String[]{account.calendar},
|
||||
CalendarContract.Calendars.ACCOUNT_NAME + " = ?" +
|
||||
(selectedName == null
|
||||
? ""
|
||||
: " AND " + CalendarContract.Calendars.CALENDAR_DISPLAY_NAME + " = ?"),
|
||||
selectedName == null
|
||||
? new String[]{selectedAccount}
|
||||
: new String[]{selectedAccount, selectedName},
|
||||
null)) {
|
||||
if (cursor.getCount() == 0)
|
||||
EntityLog.log(context, EntityLog.Type.General, message,
|
||||
"Account not found username=" + account.user);
|
||||
while (cursor.moveToNext()) {
|
||||
if (cursor.moveToNext()) {
|
||||
// https://developer.android.com/guide/topics/providers/calendar-provider#add-event
|
||||
// https://developer.android.com/reference/android/provider/CalendarContract.EventsColumns
|
||||
ContentValues values = new ContentValues();
|
||||
|
@ -3985,6 +4003,7 @@ public class MessageHelper {
|
|||
" summary=" + summary);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Throwable ex) {
|
||||
|
|
Loading…
Reference in New Issue