Added sharing of calendar actions

This commit is contained in:
M66B
2020-01-08 09:31:32 +01:00
parent 16210b561c
commit e5f67ef64b
3 changed files with 42 additions and 14 deletions

View File

@@ -611,6 +611,10 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
btnCalendarMaybe.setOnClickListener(this);
ibCalendar.setOnClickListener(this);
btnCalendarAccept.setOnLongClickListener(this);
btnCalendarDecline.setOnLongClickListener(this);
btnCalendarMaybe.setOnLongClickListener(this);
gestureDetector = new ScaleGestureDetector(context, new ScaleGestureDetector.SimpleOnScaleGestureListener() {
@Override
public boolean onScale(ScaleGestureDetector detector) {
@@ -674,6 +678,10 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
btnCalendarDecline.setOnClickListener(null);
btnCalendarMaybe.setOnClickListener(null);
ibCalendar.setOnClickListener(null);
btnCalendarAccept.setOnLongClickListener(null);
btnCalendarDecline.setOnLongClickListener(null);
btnCalendarMaybe.setOnLongClickListener(null);
}
if (accessibility)
@@ -1880,7 +1888,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
}.setLog(false).execute(context, owner, args, "message:calendar");
}
private void onActionCalendar(TupleMessageEx message, int action) {
private void onActionCalendar(TupleMessageEx message, int action, boolean share) {
if (!ActivityBilling.isPro(context)) {
context.startActivity(new Intent(context, ActivityBilling.class));
return;
@@ -1889,6 +1897,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
Bundle args = new Bundle();
args.putLong("id", message.id);
args.putInt("action", action);
args.putBoolean("share", share);
new SimpleTask<Object>() {
@Override
@@ -1982,7 +1991,10 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
response.setMethod(Method.REPLY);
response.addEvent(ev);
File ics = File.createTempFile("calendar", ".ics", context.getCacheDir());
File dir = new File(context.getCacheDir(), "calendar");
if (!dir.exists())
dir.mkdir();
File ics = new File(dir, message.id + ".ics");
response.write(ics);
return ics;
@@ -2007,12 +2019,16 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
break;
}
Intent reply = new Intent(context, ActivityCompose.class)
.putExtra("action", "participation")
.putExtra("reference", args.getLong("id"))
.putExtra("ics", (File) result)
.putExtra("status", status);
context.startActivity(reply);
if (args.getBoolean("share"))
Helper.share(context, (File) result, "text/calendar", action + ".ics");
else {
Intent reply = new Intent(context, ActivityCompose.class)
.putExtra("action", "participation")
.putExtra("reference", args.getLong("id"))
.putExtra("ics", (File) result)
.putExtra("status", status);
context.startActivity(reply);
}
} else if (result instanceof Intent) {
context.startActivity((Intent) result);
}
@@ -2127,7 +2143,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
case R.id.btnCalendarDecline:
case R.id.btnCalendarMaybe:
case R.id.ibCalendar:
onActionCalendar(message, view.getId());
onActionCalendar(message, view.getId(), false);
break;
default:
onToggleMessage(message);
@@ -2274,12 +2290,18 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
if (message == null || message.folderReadOnly)
return false;
if (view.getId() == R.id.ibFlagged) {
onMenuColoredStar(message);
return true;
switch (view.getId()) {
case R.id.ibFlagged:
onMenuColoredStar(message);
return true;
case R.id.btnCalendarAccept:
case R.id.btnCalendarDecline:
case R.id.btnCalendarMaybe:
onActionCalendar(message, view.getId(), true);
return true;
default:
return false;
}
return false;
}
@Override