From 317144630cacd1977909b62b304aed446a44b914 Mon Sep 17 00:00:00 2001 From: Ricki Hirner Date: Sat, 11 Jun 2016 08:53:29 +0200 Subject: [PATCH] Make use of RFC6868 optional * make use of RFC6868 for VCards optional because some defect servers don't accept it * minor UI improvements (thanks biociahi) --- .../at/bitfire/davdroid/AccountSettings.java | 17 +++++++++++++++++ .../syncadapter/ContactsSyncManager.java | 2 +- .../davdroid/ui/AccountSettingsActivity.java | 13 ++++++++++++- app/src/main/res/layout/accounts_content.xml | 1 - app/src/main/res/layout/activity_accounts.xml | 6 ++---- app/src/main/res/values/strings.xml | 4 ++++ app/src/main/res/xml/settings_account.xml | 13 ++++++++++++- vcard4android | 2 +- 8 files changed, 49 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/at/bitfire/davdroid/AccountSettings.java b/app/src/main/java/at/bitfire/davdroid/AccountSettings.java index 0ea7ccfc..f497b06b 100644 --- a/app/src/main/java/at/bitfire/davdroid/AccountSettings.java +++ b/app/src/main/java/at/bitfire/davdroid/AccountSettings.java @@ -59,6 +59,12 @@ public class AccountSettings { KEY_WIFI_ONLY = "wifi_only", // sync on WiFi only (default: false) KEY_WIFI_ONLY_SSID = "wifi_only_ssid"; // restrict sync to specific WiFi SSID + /** Whether to use RFC 6868 for VCards + * value = null (not existing) use RFC6868-style encoding (default value) + * "0" don't use RFC 6868-style encoding + */ + private final static String KEY_VCARD_RFC6868 = "vcard_rfc6868"; + /** Time range limitation to the past [in days] value = null default value (DEFAULT_TIME_RANGE_PAST_DAYS) < 0 (-1) no limit @@ -182,6 +188,17 @@ public class AccountSettings { } + // CardDAV settings + + public boolean getVCardRFC6868() { + return accountManager.getUserData(account, KEY_VCARD_RFC6868) == null; + } + + public void setVCardRFC6868(boolean use) { + accountManager.setUserData(account, KEY_VCARD_RFC6868, use ? null : "0"); + } + + // CalDAV settings public Integer getTimeRangePastDays() { diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/ContactsSyncManager.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/ContactsSyncManager.java index 7ce1306b..cbdeb9e9 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/ContactsSyncManager.java +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/ContactsSyncManager.java @@ -137,7 +137,7 @@ public class ContactsSyncManager extends SyncManager { App.log.log(Level.FINE, "Preparing upload of contact " + local.getFileName(), local.getContact()); ByteArrayOutputStream os = new ByteArrayOutputStream(); - local.getContact().write(hasVCard4 ? VCardVersion.V4_0 : VCardVersion.V3_0, os); + local.getContact().write(hasVCard4 ? VCardVersion.V4_0 : VCardVersion.V3_0, settings.getVCardRFC6868(), os); return RequestBody.create( hasVCard4 ? DavAddressBook.MIME_VCARD4 : DavAddressBook.MIME_VCARD3_UTF8, diff --git a/app/src/main/java/at/bitfire/davdroid/ui/AccountSettingsActivity.java b/app/src/main/java/at/bitfire/davdroid/ui/AccountSettingsActivity.java index 52169013..895a065c 100644 --- a/app/src/main/java/at/bitfire/davdroid/ui/AccountSettingsActivity.java +++ b/app/src/main/java/at/bitfire/davdroid/ui/AccountSettingsActivity.java @@ -208,8 +208,19 @@ public class AccountSettingsActivity extends AppCompatActivity { } }); + // category: CardDAV + final SwitchPreferenceCompat prefRFC6868 = (SwitchPreferenceCompat)findPreference("vcard_rfc6868"); + prefRFC6868.setChecked(settings.getVCardRFC6868()); + prefRFC6868.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object o) { + settings.setVCardRFC6868((Boolean)o); + refresh(); return false; + } + }); + // category: CalDAV - final EditTextPreference prefTimeRangePastDays = (EditTextPreference)findPreference("caldav_time_range_past_days"); + final EditTextPreference prefTimeRangePastDays = (EditTextPreference)findPreference("time_range_past_days"); Integer pastDays = settings.getTimeRangePastDays(); if (pastDays != null) { prefTimeRangePastDays.setText(pastDays.toString()); diff --git a/app/src/main/res/layout/accounts_content.xml b/app/src/main/res/layout/accounts_content.xml index e1e5230c..f8e5c9b6 100644 --- a/app/src/main/res/layout/accounts_content.xml +++ b/app/src/main/res/layout/accounts_content.xml @@ -13,7 +13,6 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:fitsSystemWindows="true" tools:context="at.bitfire.davdroid.ui.AccountsActivity"> - + Will only synchronize over %s All WiFi connections may be used Enter the name of a WiFi network (SSID) to restrict synchronization to this network, or leave blank for all WiFi connections. + CardDAV + Use RFC6868 for VCards + Double quotes can be used in parameter values + Double quotes can\'t be used in parameter values CalDAV Past event time limit All events will be synchronized diff --git a/app/src/main/res/xml/settings_account.xml b/app/src/main/res/xml/settings_account.xml index 87cfb3a1..13b69834 100644 --- a/app/src/main/res/xml/settings_account.xml +++ b/app/src/main/res/xml/settings_account.xml @@ -74,10 +74,21 @@ + + + + + +