From 1e00ed217fcc8dab1244ea7e39a6f1d2c9f29c5c Mon Sep 17 00:00:00 2001 From: rfc2822 Date: Tue, 12 Nov 2013 22:17:46 +0100 Subject: [PATCH] import Apple calendar-color with r,g,b,a (see issue #31) --- .../davdroid/resource/LocalCalendar.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/at/bitfire/davdroid/resource/LocalCalendar.java b/src/at/bitfire/davdroid/resource/LocalCalendar.java index d80544b5..569bc8ba 100644 --- a/src/at/bitfire/davdroid/resource/LocalCalendar.java +++ b/src/at/bitfire/davdroid/resource/LocalCalendar.java @@ -11,6 +11,8 @@ import java.net.URISyntaxException; import java.text.ParseException; import java.util.LinkedList; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import lombok.Getter; import net.fortuna.ical4j.model.Parameter; @@ -91,13 +93,16 @@ public class LocalCalendar extends LocalCollection { public static void create(Account account, ContentResolver resolver, ServerInfo.ResourceInfo info) throws RemoteException { ContentProviderClient client = resolver.acquireContentProviderClient(CalendarContract.AUTHORITY); - int color = 0xFFC3EA6E; - if (info.getColor() != null) - try { - color = Integer.decode(info.getColor()); - } catch(Exception ex) { - Log.w(TAG, "Couldn't parse calendar color " + info.getColor()); + int color = 0xFFC3EA6E; // fallback: "DAVdroid green" + if (info.getColor() != null) { + Pattern p = Pattern.compile("#(\\p{XDigit}{6})(\\p{XDigit}{2})?"); + Matcher m = p.matcher(info.getColor()); + if (m.find()) { + int color_rgb = Integer.parseInt(m.group(1), 16); + byte color_alpha = m.group(2) != null ? Byte.parseByte(m.group(2), 16) : -1; + color = (color_alpha << 24) | color_rgb; } + } ContentValues values = new ContentValues(); values.put(Calendars.ACCOUNT_NAME, account.name);