am 095eee41
: Set selfAttendeeStatus and busyStatus properly on downsync/upsync
Merge commit '095eee41565900a2509256ffcbf6cd67a4c4e345' into froyo-plus-aosp * commit '095eee41565900a2509256ffcbf6cd67a4c4e345': Set selfAttendeeStatus and busyStatus properly on downsync/upsync
This commit is contained in:
commit
825999f815
@ -97,8 +97,6 @@ public class CalendarSyncAdapter extends AbstractSyncAdapter {
|
||||
private static final String CATEGORY_TOKENIZER_DELIMITER = "\\";
|
||||
private static final String ATTENDEE_TOKENIZER_DELIMITER = CATEGORY_TOKENIZER_DELIMITER;
|
||||
|
||||
private static final String FREE_BUSY_BUSY = "2";
|
||||
|
||||
private static final ContentProviderOperation PLACEHOLDER_OPERATION =
|
||||
ContentProviderOperation.newInsert(Uri.EMPTY).build();
|
||||
|
||||
@ -411,7 +409,9 @@ public class CalendarSyncAdapter extends AbstractSyncAdapter {
|
||||
ops.newExtendedProperty("meeting_status", getValue());
|
||||
break;
|
||||
case Tags.CALENDAR_BUSY_STATUS:
|
||||
ops.newExtendedProperty("busy_status", getValue());
|
||||
int busyStatus = getValueInt();
|
||||
cv.put(Events.SELF_ATTENDEE_STATUS,
|
||||
CalendarUtilities.selfAttendeeStatusFromBusyStatus(busyStatus));
|
||||
break;
|
||||
case Tags.CALENDAR_CATEGORIES:
|
||||
String categories = categoriesParser(ops);
|
||||
@ -618,21 +618,19 @@ public class CalendarSyncAdapter extends AbstractSyncAdapter {
|
||||
case Tags.CALENDAR_SENSITIVITY:
|
||||
cv.put(Events.VISIBILITY, encodeVisibility(getValueInt()));
|
||||
break;
|
||||
case Tags.CALENDAR_BUSY_STATUS:
|
||||
int busyStatus = getValueInt();
|
||||
cv.put(Events.SELF_ATTENDEE_STATUS,
|
||||
CalendarUtilities.selfAttendeeStatusFromBusyStatus(busyStatus));
|
||||
break;
|
||||
|
||||
// TODO How to handle these items that are linked to event id!
|
||||
|
||||
// case Tags.CALENDAR_DTSTAMP:
|
||||
// ops.newExtendedProperty("dtstamp", getValue());
|
||||
// break;
|
||||
// case Tags.CALENDAR_BUSY_STATUS:
|
||||
// // TODO Try to fit this into Calendar scheme
|
||||
// ops.newExtendedProperty("busy_status", getValue());
|
||||
// break;
|
||||
// case Tags.CALENDAR_REMINDER_MINS_BEFORE:
|
||||
// ops.newReminder(getValueInt());
|
||||
// break;
|
||||
|
||||
// Not yet handled
|
||||
default:
|
||||
skipTag();
|
||||
}
|
||||
@ -1173,7 +1171,10 @@ public class CalendarSyncAdapter extends AbstractSyncAdapter {
|
||||
|
||||
// Busy status is only required for 2.5, but we need to send it with later
|
||||
// versions as well, because if we don't, the server will clear it.
|
||||
s.data(Tags.CALENDAR_BUSY_STATUS, FREE_BUSY_BUSY);
|
||||
int selfAttendeeStatus = entityValues.getAsInteger(Events.SELF_ATTENDEE_STATUS);
|
||||
s.data(Tags.CALENDAR_BUSY_STATUS,
|
||||
Integer.toString(CalendarUtilities
|
||||
.busyStatusFromSelfAttendeeStatus(selfAttendeeStatus)));
|
||||
|
||||
boolean allDay = false;
|
||||
if (entityValues.containsKey(Events.ALL_DAY)) {
|
||||
|
@ -137,6 +137,11 @@ public class CalendarUtilities {
|
||||
static final String ICALENDAR_ATTENDEE_TENTATIVE =
|
||||
ICALENDAR_ATTENDEE + ";PARTSTAT=TENTATIVE";
|
||||
|
||||
public static final int BUSY_STATUS_BUSY = 0;
|
||||
public static final int BUSY_STATUS_FREE = 1;
|
||||
public static final int BUSY_STATUS_TENTATIVE = 2;
|
||||
public static final int BUSY_STATUS_OOF = 3;
|
||||
|
||||
// Return a 4-byte long from a byte array (little endian)
|
||||
static int getLong(byte[] bytes, int offset) {
|
||||
return (bytes[offset++] & 0xFF) | ((bytes[offset++] & 0xFF) << 8) |
|
||||
@ -1210,6 +1215,55 @@ public class CalendarUtilities {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a selfAttendeeStatus from a busy status
|
||||
* The default here is NONE (i.e. we don't know the status)
|
||||
* Note that a busy status of FREE must mean NONE as well, since it can't mean declined
|
||||
* (there would be no event)
|
||||
* @param busyStatus the busy status, from EAS
|
||||
* @return the corresponding value for selfAttendeeStatus
|
||||
*/
|
||||
static public int selfAttendeeStatusFromBusyStatus(int busyStatus) {
|
||||
int selfAttendeeStatus;
|
||||
switch (busyStatus) {
|
||||
case BUSY_STATUS_BUSY:
|
||||
selfAttendeeStatus = Attendees.ATTENDEE_STATUS_ACCEPTED;
|
||||
break;
|
||||
case BUSY_STATUS_TENTATIVE:
|
||||
selfAttendeeStatus = Attendees.ATTENDEE_STATUS_TENTATIVE;
|
||||
break;
|
||||
case BUSY_STATUS_FREE:
|
||||
case BUSY_STATUS_OOF:
|
||||
default:
|
||||
selfAttendeeStatus = Attendees.ATTENDEE_STATUS_NONE;
|
||||
}
|
||||
return selfAttendeeStatus;
|
||||
}
|
||||
|
||||
/** Get a busy status from a selfAttendeeStatus
|
||||
* The default here is BUSY
|
||||
* @param selfAttendeeStatus from CalendarProvider2
|
||||
* @return the corresponding value of busy status
|
||||
*/
|
||||
static public int busyStatusFromSelfAttendeeStatus(int selfAttendeeStatus) {
|
||||
int busyStatus;
|
||||
switch (selfAttendeeStatus) {
|
||||
case Attendees.ATTENDEE_STATUS_DECLINED:
|
||||
case Attendees.ATTENDEE_STATUS_NONE:
|
||||
case Attendees.ATTENDEE_STATUS_INVITED:
|
||||
busyStatus = BUSY_STATUS_FREE;
|
||||
break;
|
||||
case Attendees.ATTENDEE_STATUS_TENTATIVE:
|
||||
busyStatus = BUSY_STATUS_TENTATIVE;
|
||||
break;
|
||||
case Attendees.ATTENDEE_STATUS_ACCEPTED:
|
||||
default:
|
||||
busyStatus = BUSY_STATUS_BUSY;
|
||||
break;
|
||||
}
|
||||
return busyStatus;
|
||||
}
|
||||
|
||||
static public String buildMessageTextFromEntityValues(Context context,
|
||||
ContentValues entityValues, StringBuilder sb) {
|
||||
if (sb == null) {
|
||||
|
@ -714,6 +714,39 @@ public class CalendarUtilitiesTests extends AndroidTestCase {
|
||||
assertEquals(uid, "040000008200E00074C5B7101A82E00800000000C0093BBB29B3CA" +
|
||||
"01000000000000000010000000E6E0B06E8756DD459B2FBB1A52DB1A16");
|
||||
}
|
||||
|
||||
public void testSelfAttendeeStatusFromBusyStatus() {
|
||||
assertEquals(Attendees.ATTENDEE_STATUS_ACCEPTED,
|
||||
CalendarUtilities.selfAttendeeStatusFromBusyStatus(
|
||||
CalendarUtilities.BUSY_STATUS_BUSY));
|
||||
assertEquals(Attendees.ATTENDEE_STATUS_TENTATIVE,
|
||||
CalendarUtilities.selfAttendeeStatusFromBusyStatus(
|
||||
CalendarUtilities.BUSY_STATUS_TENTATIVE));
|
||||
assertEquals(Attendees.ATTENDEE_STATUS_NONE,
|
||||
CalendarUtilities.selfAttendeeStatusFromBusyStatus(
|
||||
CalendarUtilities.BUSY_STATUS_FREE));
|
||||
assertEquals(Attendees.ATTENDEE_STATUS_NONE,
|
||||
CalendarUtilities.selfAttendeeStatusFromBusyStatus(
|
||||
CalendarUtilities.BUSY_STATUS_OOF));
|
||||
}
|
||||
|
||||
public void testBusyStatusFromSelfStatus() {
|
||||
assertEquals(CalendarUtilities.BUSY_STATUS_FREE,
|
||||
CalendarUtilities.busyStatusFromSelfAttendeeStatus(
|
||||
Attendees.ATTENDEE_STATUS_DECLINED));
|
||||
assertEquals(CalendarUtilities.BUSY_STATUS_BUSY,
|
||||
CalendarUtilities.busyStatusFromSelfAttendeeStatus(
|
||||
Attendees.ATTENDEE_STATUS_NONE));
|
||||
assertEquals(CalendarUtilities.BUSY_STATUS_BUSY,
|
||||
CalendarUtilities.busyStatusFromSelfAttendeeStatus(
|
||||
Attendees.ATTENDEE_STATUS_INVITED));
|
||||
assertEquals(CalendarUtilities.BUSY_STATUS_TENTATIVE,
|
||||
CalendarUtilities.busyStatusFromSelfAttendeeStatus(
|
||||
Attendees.ATTENDEE_STATUS_TENTATIVE));
|
||||
assertEquals(CalendarUtilities.BUSY_STATUS_BUSY,
|
||||
CalendarUtilities.busyStatusFromSelfAttendeeStatus(
|
||||
Attendees.ATTENDEE_STATUS_ACCEPTED));
|
||||
}
|
||||
}
|
||||
|
||||
// TODO Planned unit tests
|
||||
|
Loading…
Reference in New Issue
Block a user