From 9b52e51e4edbbdd9dbd83e9b4bc87ce30cc098bb Mon Sep 17 00:00:00 2001 From: Ricki Hirner Date: Fri, 13 Feb 2015 17:26:32 +0100 Subject: [PATCH 01/11] New version: 0.6.12 * if well-known URI detection fails with I/O errors, ignore it instead of aborting * if current-user-principal is not supported by the server, use the user-given URL is the principal URL * determine availability of CalDAV/CardDAV by whether a calendar/address-book home set is available * if DAV:displayname is not available for a collection, use its URL path instead * remove SSLPeerUnverifiedException handling (Apache HttpClient doesn't use this exception) * use Depth: 1 (instead of Depth: 0) for multi-get REPORT requests * don't display address books in "Select collections" UI if CardDAV is not available * don't display calendars in "Select collections" UI if CalDAV is not available * version bump to 0.6.12 --- app/src/main/AndroidManifest.xml | 2 +- .../java/at/bitfire/davdroid/Constants.java | 2 +- .../davdroid/resource/DavResourceFinder.java | 168 +++++++++--------- .../davdroid/resource/LocalCalendar.java | 4 +- .../bitfire/davdroid/resource/ServerInfo.java | 14 ++ .../QueryServerDialogFragment.java | 2 - .../syncadapter/SelectCollectionsAdapter.java | 30 ++-- .../bitfire/davdroid/webdav/HttpReport.java | 2 +- app/src/main/res/values-ca/strings.xml | 2 - app/src/main/res/values-cs/strings.xml | 2 - app/src/main/res/values-de/strings.xml | 3 - app/src/main/res/values-hu/strings.xml | 2 - app/src/main/res/values-sr/strings.xml | 2 - app/src/main/res/values-zh-rcn/strings.xml | 2 - app/src/main/res/values/strings.xml | 3 - 15 files changed, 123 insertions(+), 117 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b22c4e28..88fa3895 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ addressBooks = new LinkedList<>(); - if (homeSetAddressBooks.getMembers() != null) - for (WebDavResource resource : homeSetAddressBooks.getMembers()) - if (resource.isAddressBook()) { - Log.i(TAG, "Found address book: " + resource.getLocation().getPath()); - ServerInfo.ResourceInfo info = new ServerInfo.ResourceInfo( - ServerInfo.ResourceInfo.Type.ADDRESS_BOOK, - resource.isReadOnly(), - resource.getLocation().toString(), - resource.getDisplayName(), - resource.getDescription(), resource.getColor() - ); - - VCardVersion version = resource.getVCardVersion(); - if (version == null) - version = VCardVersion.V3_0; // VCard 3.0 MUST be supported - info.setVCardVersion(version); - - addressBooks.add(info); - } - serverInfo.setAddressBooks(addressBooks); - } else - Log.w(TAG, "Found address-book home set, but it doesn't advertise CardDAV support"); - } + uriAddressBookHomeSet = principal.getAddressbookHomeSet(); + } catch (Exception e) { + Log.i(TAG, "Couldn't find address-book home set", e); } - + if (uriAddressBookHomeSet != null) { + serverInfo.setCardDAV(true); + Log.i(TAG, "Found address-book home set: " + uriAddressBookHomeSet); + + WebDavResource homeSetAddressBooks = new WebDavResource(principal, uriAddressBookHomeSet); + if (checkHomesetCapabilities(homeSetAddressBooks, "addressbook")) { + homeSetAddressBooks.propfind(Mode.CARDDAV_COLLECTIONS); + + List addressBooks = new LinkedList<>(); + if (homeSetAddressBooks.getMembers() != null) + for (WebDavResource resource : homeSetAddressBooks.getMembers()) + if (resource.isAddressBook()) { + Log.i(TAG, "Found address book: " + resource.getLocation().getPath()); + ServerInfo.ResourceInfo info = new ServerInfo.ResourceInfo( + ServerInfo.ResourceInfo.Type.ADDRESS_BOOK, + resource.isReadOnly(), + resource.getLocation().toString(), + resource.getDisplayName(), + resource.getDescription(), resource.getColor() + ); + + VCardVersion version = resource.getVCardVersion(); + if (version == null) + version = VCardVersion.V3_0; // VCard 3.0 MUST be supported + info.setVCardVersion(version); + + addressBooks.add(info); + } + serverInfo.setAddressBooks(addressBooks); + } else + Log.w(TAG, "Found address-book home set, but it doesn't advertise CardDAV support"); + } + // CalDAV principal = getCurrentUserPrincipal(serverInfo, "caldav"); - if (principal != null) { - serverInfo.setCalDAV(true); - + URI uriCalendarHomeSet = null; + try { principal.propfind(Mode.HOME_SETS); - URI uriCalendarHomeSet = principal.getCalendarHomeSet(); - if (uriCalendarHomeSet != null) { - Log.i(TAG, "Found calendar home set: " + uriCalendarHomeSet); - - WebDavResource homeSetCalendars = new WebDavResource(principal, uriCalendarHomeSet); - if (checkHomesetCapabilities(homeSetCalendars, "calendar-access")) { - homeSetCalendars.propfind(Mode.CALDAV_COLLECTIONS); - - List calendars = new LinkedList<>(); - if (homeSetCalendars.getMembers() != null) - for (WebDavResource resource : homeSetCalendars.getMembers()) - if (resource.isCalendar()) { - Log.i(TAG, "Found calendar: " + resource.getLocation().getPath()); - if (resource.getSupportedComponents() != null) { - // CALDAV:supported-calendar-component-set available - boolean supportsEvents = false; - for (String supportedComponent : resource.getSupportedComponents()) - if (supportedComponent.equalsIgnoreCase("VEVENT")) - supportsEvents = true; - if (!supportsEvents) { // ignore collections without VEVENT support - Log.i(TAG, "Ignoring this calendar because of missing VEVENT support"); - continue; - } - } - ServerInfo.ResourceInfo info = new ServerInfo.ResourceInfo( - ServerInfo.ResourceInfo.Type.CALENDAR, - resource.isReadOnly(), - resource.getLocation().toString(), - resource.getDisplayName(), - resource.getDescription(), resource.getColor() - ); - info.setTimezone(resource.getTimezone()); - calendars.add(info); - } - serverInfo.setCalendars(calendars); - } else - Log.w(TAG, "Found calendar home set, but it doesn't advertise CalDAV support"); - } + uriCalendarHomeSet = principal.getCalendarHomeSet(); + } catch(Exception e) { + Log.i(TAG, "Couldn't find calendar home set", e); } - + if (uriCalendarHomeSet != null) { + serverInfo.setCalDAV(true); + Log.i(TAG, "Found calendar home set: " + uriCalendarHomeSet); + + WebDavResource homeSetCalendars = new WebDavResource(principal, uriCalendarHomeSet); + if (checkHomesetCapabilities(homeSetCalendars, "calendar-access")) { + homeSetCalendars.propfind(Mode.CALDAV_COLLECTIONS); + + List calendars = new LinkedList<>(); + if (homeSetCalendars.getMembers() != null) + for (WebDavResource resource : homeSetCalendars.getMembers()) + if (resource.isCalendar()) { + Log.i(TAG, "Found calendar: " + resource.getLocation().getPath()); + if (resource.getSupportedComponents() != null) { + // CALDAV:supported-calendar-component-set available + boolean supportsEvents = false; + for (String supportedComponent : resource.getSupportedComponents()) + if (supportedComponent.equalsIgnoreCase("VEVENT")) + supportsEvents = true; + if (!supportsEvents) { // ignore collections without VEVENT support + Log.i(TAG, "Ignoring this calendar because of missing VEVENT support"); + continue; + } + } + ServerInfo.ResourceInfo info = new ServerInfo.ResourceInfo( + ServerInfo.ResourceInfo.Type.CALENDAR, + resource.isReadOnly(), + resource.getLocation().toString(), + resource.getDisplayName(), + resource.getDescription(), resource.getColor() + ); + info.setTimezone(resource.getTimezone()); + calendars.add(info); + } + serverInfo.setCalendars(calendars); + } else + Log.w(TAG, "Found calendar home set, but it doesn't advertise CalDAV support"); + } + if (!serverInfo.isCalDAV() && !serverInfo.isCardDAV()) throw new DavIncapableException(context.getString(R.string.setup_neither_caldav_nor_carddav)); @@ -251,11 +255,13 @@ public class DavResourceFinder implements Closeable { Log.w(TAG, "Not authorized for well-known " + serviceName + " service detection", e); throw e; } catch (URISyntaxException e) { - Log.w(TAG, "Well-known" + serviceName + " service detection failed because of invalid URIs", e); + Log.e(TAG, "Well-known" + serviceName + " service detection failed because of invalid URIs", e); } catch (HttpException e) { Log.d(TAG, "Well-known " + serviceName + " service detection failed with HTTP error", e); } catch (DavException e) { Log.w(TAG, "Well-known " + serviceName + " service detection failed with unexpected DAV response", e); + } catch (IOException e) { + Log.e(TAG, "Well-known " + serviceName + " service detection failed with I/O error", e); } // fall back to user-given initial context path @@ -271,7 +277,9 @@ public class DavResourceFinder implements Closeable { } catch (DavException e) { Log.e(TAG, "DAV error when querying principal", e); } - Log.i(TAG, "Couldn't find current-user-principal for service " + serviceName); + + Log.i(TAG, "Couldn't find current-user-principal for service " + serviceName + ", assuming user-given path is principal path"); + return base; } return null; } diff --git a/app/src/main/java/at/bitfire/davdroid/resource/LocalCalendar.java b/app/src/main/java/at/bitfire/davdroid/resource/LocalCalendar.java index 5fc72794..48729ad6 100644 --- a/app/src/main/java/at/bitfire/davdroid/resource/LocalCalendar.java +++ b/app/src/main/java/at/bitfire/davdroid/resource/LocalCalendar.java @@ -51,8 +51,10 @@ import net.fortuna.ical4j.model.property.Status; import org.apache.commons.lang.StringUtils; +import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; +import java.net.URL; import java.text.ParseException; import java.util.LinkedList; import java.util.List; @@ -119,7 +121,7 @@ public class LocalCalendar extends LocalCollection { color = (color_alpha << 24) | color_rgb; } } - + ContentValues values = new ContentValues(); values.put(Calendars.ACCOUNT_NAME, account.name); values.put(Calendars.ACCOUNT_TYPE, account.type); diff --git a/app/src/main/java/at/bitfire/davdroid/resource/ServerInfo.java b/app/src/main/java/at/bitfire/davdroid/resource/ServerInfo.java index 62da45a1..10e966c2 100644 --- a/app/src/main/java/at/bitfire/davdroid/resource/ServerInfo.java +++ b/app/src/main/java/at/bitfire/davdroid/resource/ServerInfo.java @@ -8,6 +8,7 @@ package at.bitfire.davdroid.resource; import java.io.Serializable; +import java.net.MalformedURLException; import java.net.URI; import java.util.LinkedList; import java.util.List; @@ -68,5 +69,18 @@ public class ServerInfo implements Serializable { VCardVersion vCardVersion; String timezone; + + + public String getTitle() { + if (title == null) { + try { + java.net.URL url = new java.net.URL(URL); + return url.getPath(); + } catch (MalformedURLException e) { + return URL; + } + } else + return title; + } } } diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/QueryServerDialogFragment.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/QueryServerDialogFragment.java index 756850ef..83eb19b7 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/QueryServerDialogFragment.java +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/QueryServerDialogFragment.java @@ -125,8 +125,6 @@ public class QueryServerDialogFragment extends DialogFragment implements LoaderC // overwrite by more specific message, if possible if (ExceptionUtils.indexOfType(e, CertPathValidatorException.class) != -1) serverInfo.setErrorMessage(getContext().getString(R.string.exception_cert_path_validation, e.getMessage())); - else if (ExceptionUtils.indexOfType(e, SSLPeerUnverifiedException.class) != -1) - serverInfo.setErrorMessage(getContext().getString(R.string.exception_peer_unverified, e.getMessage())); } catch (HttpException e) { Log.e(TAG, "HTTP error while querying server info", e); serverInfo.setErrorMessage(getContext().getString(R.string.exception_http, e.getLocalizedMessage())); diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/SelectCollectionsAdapter.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/SelectCollectionsAdapter.java index 8e105757..ae750bb1 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/SelectCollectionsAdapter.java +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/SelectCollectionsAdapter.java @@ -30,7 +30,7 @@ public class SelectCollectionsAdapter extends BaseAdapter implements ListAdapter protected Context context; protected ServerInfo serverInfo; - @Getter protected int nAddressBooks, nCalendars; + @Getter protected int nAddressBooks, nAddressbookHeadings, nCalendars, nCalendarHeadings; public SelectCollectionsAdapter(Context context, ServerInfo serverInfo) { @@ -38,7 +38,9 @@ public class SelectCollectionsAdapter extends BaseAdapter implements ListAdapter this.serverInfo = serverInfo; nAddressBooks = (serverInfo.getAddressBooks() == null) ? 0 : serverInfo.getAddressBooks().size(); + nAddressbookHeadings = (nAddressBooks == 0) ? 0 : 1; nCalendars = (serverInfo.getCalendars() == null) ? 0 : serverInfo.getCalendars().size(); + nCalendarHeadings = (nCalendars == 0) ? 0 : 1; } @@ -46,15 +48,17 @@ public class SelectCollectionsAdapter extends BaseAdapter implements ListAdapter @Override public int getCount() { - return nAddressBooks + nCalendars + 2; + return nAddressbookHeadings + nAddressBooks + nCalendarHeadings + nCalendars; } @Override public Object getItem(int position) { - if (position > 0 && position <= nAddressBooks) - return serverInfo.getAddressBooks().get(position - 1); - else if (position > nAddressBooks + 1) - return serverInfo.getCalendars().get(position - nAddressBooks - 2); + if (position >= nAddressbookHeadings && + position < (nAddressbookHeadings + nAddressBooks)) + return serverInfo.getAddressBooks().get(position - nAddressbookHeadings); + else if (position >= (nAddressbookHeadings + nAddressBooks + nCalendarHeadings) && + (position < (nAddressbookHeadings + nAddressBooks + nCalendarHeadings + nCalendars))) + return serverInfo.getCalendars().get(position - (nAddressbookHeadings + nAddressBooks + nCalendarHeadings)); return null; } @@ -78,13 +82,13 @@ public class SelectCollectionsAdapter extends BaseAdapter implements ListAdapter @Override public int getItemViewType(int position) { - if (position == 0) + if ((nAddressbookHeadings != 0) && (position == 0)) return TYPE_ADDRESS_BOOKS_HEADING; - else if (position <= nAddressBooks) + else if ((nAddressbookHeadings != 0) && (position > 0) && (position < nAddressbookHeadings + nAddressBooks)) return TYPE_ADDRESS_BOOKS_ROW; - else if (position == nAddressBooks + 1) + else if ((nCalendars != 0) && (position == nAddressbookHeadings + nAddressBooks)) return TYPE_CALENDARS_HEADING; - else if (position <= nAddressBooks + nCalendars + 1) + else if ((nCalendars != 0) && (position > nAddressbookHeadings + nAddressBooks) && (position < nAddressbookHeadings + nAddressBooks + nCalendarHeadings + nCalendars)) return TYPE_CALENDARS_ROW; else return IGNORE_ITEM_VIEW_TYPE; @@ -133,11 +137,7 @@ public class SelectCollectionsAdapter extends BaseAdapter implements ListAdapter view.setCompoundDrawablePadding(10); // set text - String title = info.getTitle(); - if (title == null) // unnamed collection - title = context.getString((info.getType() == Type.ADDRESS_BOOK) ? - R.string.setup_address_book : R.string.setup_calendar); - title = "" + title + ""; + String title = "" + info.getTitle() + ""; if (info.isReadOnly()) title = title + " (" + context.getString(R.string.setup_read_only) + ")"; diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/HttpReport.java b/app/src/main/java/at/bitfire/davdroid/webdav/HttpReport.java index 65d30839..c9e902d3 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/HttpReport.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/HttpReport.java @@ -30,7 +30,7 @@ public class HttpReport extends HttpEntityEnclosingRequestBaseHC4 { setHeader("Content-Type", "text/xml; charset=UTF-8"); setHeader("Accept", "text/xml"); - setHeader("Depth", "0"); + setHeader("Depth", "1"); try { setEntity(new StringEntity(entity, "UTF-8")); diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 89157c1d..2c0d7091 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -114,9 +114,7 @@ Contactant servidor. Espereu sisuplau. Quines col·leccions s\'han de sincronitzar? Llibretes de contactes - Llibreta de contactes Calendaris - Calendari Seleccioneu com a molt una llibreta de contactes (Polseu de nou per deseleccionar): Seleccioneu els vostres calendaris: diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 28c00674..52d79bc2 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -113,9 +113,7 @@ Probíhá komunikace se serverem. Chvilku strpení… Které sbírky mají být synchronizovány? Adresáře - Adresář Kalendáře - Kalendář Vybrat alespoň jeden adresář (opakovaně tapnout pro odebrání): Vybrat své kalendáře: diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index c1d1c403..409aac8e 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -10,7 +10,6 @@ HTTP-Fehler: %s Fehlende Server-Unterstützung: %s E/A-Fehler: %s - Zertifikat ist nicht für \"%s\" ausgestellt URI ungültig: %s @@ -110,9 +109,7 @@ Daten werden vom Server abgefragt. Bitte warten… Welche Ordner sollen synchronisiert werden? Adressbücher - Adressbuch Kalender - Kalender Ein oder kein Adressbuch auswählen (nochmal berühren, um abzuwählen): Kalender zur Synchronisation auswählen: diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index f08b9afe..2b1e1a6b 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -117,9 +117,7 @@ Kapcsolódás a szerverhez. Egy pillanat… Melyik gyűjtemények legyenek szinkronizálva? Címjegyzékek - Címjegyzék Naptárak - Naptár Egy címjegyzék választható (a kijelölés visszavonása újbóli érintéssel vagy másik tétel kiválasztásával): Naptárak kiválasztása: diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index dfe1b168..1110c9e0 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -108,9 +108,7 @@ Шаљем упит серверу. Сачекајте… Које збирке да синхронизујем? Адресари - Адресар Календари - Календар Изаберите један адресар (додирните поново да поништите избор): Изаберите ваше календаре: diff --git a/app/src/main/res/values-zh-rcn/strings.xml b/app/src/main/res/values-zh-rcn/strings.xml index 66d1d568..6f577395 100644 --- a/app/src/main/res/values-zh-rcn/strings.xml +++ b/app/src/main/res/values-zh-rcn/strings.xml @@ -98,9 +98,7 @@ 正在请求,请稍等… 需要同步哪些集合? 通讯录 - 通讯录 日历 - 日历 最多选择一个通讯录:(再次点按可取消选择) 选择日历: diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index de00c57a..7fdc21bf 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -12,7 +12,6 @@ HTTP error: %s Missing capabilities: %s I/O error: %s - Certificate not issued for \"%s\" Invalid URI: %s @@ -114,9 +113,7 @@ Querying server. Please wait… Which collections shall be synchronized? Address books - Address book Calendars - Calendar Select up to one address book (tap again to unselect): Select your calendars: From 3a8f17cc2e1e8af741e5abb3b3af976e9bb861a4 Mon Sep 17 00:00:00 2001 From: Ricki Hirner Date: Sun, 8 Mar 2015 23:30:03 +0100 Subject: [PATCH 02/11] Version 0.7 * new Settings activity * Settings: display/change user name, password, preemptive auth. * Settings: display/change sync. interval for contacts and calendars * requires permission GET_ACCOUNTS to list accounts in Settings * requires permission READ_SYNC_SETTINGS to display current sync intervals * remove obsolete files from res/ * update copyright notices * version bump to 0.7 --- app/build.gradle | 19 ++- app/lint.xml | 8 + .../at/bitfire/davdroid/ArrayUtilsTest.java | 6 +- .../java/at/bitfire/davdroid/ContactTest.java | 6 +- .../at/bitfire/davdroid/TestConstants.java | 8 + .../at/bitfire/davdroid/URLUtilsTest.java | 6 +- .../davdroid/resource/ContactTest.java | 6 +- .../bitfire/davdroid/resource/EventTest.java | 6 +- .../davdroid/resource/LocalCalendarTest.java | 6 +- .../syncadapter/DavResourceFinderTest.java | 8 + .../webdav/DavRedirectStrategyTest.java | 8 + .../webdav/TlsSniSocketFactoryTest.java | 2 +- .../davdroid/webdav/WebDavResourceTest.java | 6 +- app/src/androidTest/res/values/strings.xml | 8 + app/src/main/AndroidManifest.xml | 22 ++- .../java/at/bitfire/davdroid/ArrayUtils.java | 6 +- .../java/at/bitfire/davdroid/Constants.java | 8 +- .../at/bitfire/davdroid/MainActivity.java | 14 +- .../java/at/bitfire/davdroid/URIUtils.java | 6 +- .../davdroid/resource/CalDavCalendar.java | 6 +- .../davdroid/resource/CardDavAddressBook.java | 6 +- .../at/bitfire/davdroid/resource/Contact.java | 6 +- .../davdroid/resource/DavResourceFinder.java | 10 +- .../at/bitfire/davdroid/resource/Event.java | 6 +- .../resource/InvalidResourceException.java | 6 +- .../davdroid/resource/LocalAddressBook.java | 6 +- .../davdroid/resource/LocalCalendar.java | 6 +- .../davdroid/resource/LocalCollection.java | 6 +- .../resource/LocalStorageException.java | 6 +- .../resource/RecordNotFoundException.java | 6 +- .../davdroid/resource/RemoteCollection.java | 6 +- .../bitfire/davdroid/resource/Resource.java | 6 +- .../bitfire/davdroid/resource/ServerInfo.java | 6 +- .../AccountAuthenticatorService.java | 6 +- .../syncadapter/AccountDetailsFragment.java | 6 +- .../davdroid/syncadapter/AccountSettings.java | 75 +++++++-- .../syncadapter/AddAccountActivity.java | 8 +- .../CalendarsSyncAdapterService.java | 6 +- .../ContactsSyncAdapterService.java | 6 +- .../davdroid/syncadapter/DavSyncAdapter.java | 6 +- .../syncadapter/LoginEmailFragment.java | 6 +- .../syncadapter/LoginTypeFragment.java | 8 +- .../syncadapter/LoginURLFragment.java | 6 +- .../QueryServerDialogFragment.java | 12 +- .../syncadapter/SelectCollectionsAdapter.java | 6 +- .../SelectCollectionsFragment.java | 8 +- .../syncadapter/SettingsAccountFragment.java | 117 ++++++++++++++ .../syncadapter/SettingsActivity.java | 73 +++++++++ .../syncadapter/SettingsScopeFragment.java | 52 +++++++ .../davdroid/syncadapter/SyncManager.java | 6 +- .../syncadapter/WebDavResourceAdapter.java | 6 +- .../webdav/DavAddressbookMultiget.java | 6 +- .../davdroid/webdav/DavCalendarMultiget.java | 6 +- .../bitfire/davdroid/webdav/DavException.java | 6 +- .../at/bitfire/davdroid/webdav/DavHref.java | 6 +- .../davdroid/webdav/DavHttpClient.java | 6 +- .../webdav/DavHttpRequestRetryHandler.java | 6 +- .../webdav/DavIncapableException.java | 6 +- .../bitfire/davdroid/webdav/DavMultiget.java | 6 +- .../davdroid/webdav/DavMultistatus.java | 6 +- .../webdav/DavNoContentException.java | 6 +- .../webdav/DavNoMultiStatusException.java | 6 +- .../at/bitfire/davdroid/webdav/DavProp.java | 6 +- .../bitfire/davdroid/webdav/DavPropfind.java | 6 +- .../bitfire/davdroid/webdav/DavPropstat.java | 6 +- .../davdroid/webdav/DavRedirectStrategy.java | 6 +- .../bitfire/davdroid/webdav/DavResponse.java | 6 +- .../davdroid/webdav/HttpException.java | 6 +- .../bitfire/davdroid/webdav/HttpPropfind.java | 6 +- .../bitfire/davdroid/webdav/HttpReport.java | 6 +- .../webdav/NotAuthorizedException.java | 6 +- .../davdroid/webdav/NotFoundException.java | 6 +- .../webdav/PreconditionFailedException.java | 6 +- .../davdroid/webdav/TlsSniSocketFactory.java | 3 +- .../davdroid/webdav/WebDavResource.java | 6 +- .../res/drawable-hdpi/ic_action_settings.png | Bin 0 -> 953 bytes .../res/drawable-mdpi/ic_action_settings.png | Bin 0 -> 594 bytes .../res/drawable-xhdpi/ic_action_settings.png | Bin 0 -> 1231 bytes .../drawable-xxhdpi/ic_action_settings.png | Bin 0 -> 1863 bytes .../res/layout-sw720dp/activity_settings.xml | 27 ++++ app/src/main/res/layout/account_details.xml | 8 + app/src/main/res/layout/activity_main.xml | 8 + app/src/main/res/layout/activity_settings.xml | 17 ++ app/src/main/res/layout/add_account.xml | 10 +- .../main/res/layout/address_books_heading.xml | 8 + app/src/main/res/layout/calendars_heading.xml | 8 + app/src/main/res/layout/login_email.xml | 8 + app/src/main/res/layout/login_type.xml | 8 + app/src/main/res/layout/login_url.xml | 8 + app/src/main/res/layout/query_server.xml | 8 + .../res/layout/select_collections_header.xml | 8 + app/src/main/res/layout/settings_scope.xml | 14 ++ app/src/main/res/menu/account_details.xml | 8 + app/src/main/res/menu/add_account.xml | 8 + app/src/main/res/menu/main_activity.xml | 11 +- app/src/main/res/menu/only_next.xml | 8 + app/src/main/res/values-ca/strings.xml | 8 + app/src/main/res/values-cs/strings.xml | 8 + app/src/main/res/values-de/strings.xml | 37 ++++- app/src/main/res/values-es/strings.xml | 8 + app/src/main/res/values-fr/strings.xml | 8 + app/src/main/res/values-hu/strings.xml | 8 + app/src/main/res/values-sr/strings.xml | 8 + app/src/main/res/values-zh-rcn/strings.xml | 8 + app/src/main/res/values/dimen.xml | 12 ++ app/src/main/res/values/strings.xml | 56 ++++++- app/src/main/res/values/styles.xml | 8 + .../main/res/xml/account_authenticator.xml | 10 +- app/src/main/res/xml/account_prefs.xml | 60 ++++++- app/src/main/res/xml/contacts.xml | 8 + app/src/main/res/xml/sync_calendars.xml | 8 + app/src/main/res/xml/sync_contacts.xml | 8 + app/src/main/res/xml/sync_prefs.xml | 19 +++ build.gradle | 8 + gradle/wrapper/gradle-wrapper.properties | 8 + res/drawable-hdpi/addressbook.png | Bin 1212 -> 0 bytes .../alerts_and_states_warning.png | Bin 878 -> 0 bytes res/drawable-hdpi/calendar.png | Bin 1429 -> 0 bytes res/drawable-hdpi/extra_actions_about.png | Bin 1107 -> 0 bytes res/drawable-hdpi/ic_action_new_account.png | Bin 962 -> 0 bytes res/drawable-hdpi/ic_action_new_event.png | Bin 409 -> 0 bytes res/drawable-hdpi/ic_launcher.png | Bin 5274 -> 0 bytes res/drawable-hdpi/ic_read_only.png | Bin 1438 -> 0 bytes res/drawable-hdpi/navigation_accept.png | Bin 1320 -> 0 bytes res/drawable-hdpi/navigation_forward.png | Bin 1304 -> 0 bytes res/drawable-hdpi/show_sync_settings.png | Bin 1550 -> 0 bytes res/drawable-hdpi/view_website.png | Bin 1917 -> 0 bytes res/drawable-mdpi/addressbook.png | Bin 804 -> 0 bytes .../alerts_and_states_warning.png | Bin 613 -> 0 bytes res/drawable-mdpi/calendar.png | Bin 1393 -> 0 bytes res/drawable-mdpi/extra_actions_about.png | Bin 671 -> 0 bytes res/drawable-mdpi/ic_action_new_account.png | Bin 666 -> 0 bytes res/drawable-mdpi/ic_action_new_event.png | Bin 384 -> 0 bytes res/drawable-mdpi/ic_launcher.png | Bin 3272 -> 0 bytes res/drawable-mdpi/ic_read_only.png | Bin 868 -> 0 bytes res/drawable-mdpi/navigation_accept.png | Bin 1197 -> 0 bytes res/drawable-mdpi/navigation_forward.png | Bin 1221 -> 0 bytes res/drawable-mdpi/show_sync_settings.png | Bin 910 -> 0 bytes res/drawable-mdpi/view_website.png | Bin 1144 -> 0 bytes res/drawable-xhdpi/addressbook.png | Bin 1251 -> 0 bytes .../alerts_and_states_warning.png | Bin 1020 -> 0 bytes res/drawable-xhdpi/calendar.png | Bin 1677 -> 0 bytes res/drawable-xhdpi/extra_actions_about.png | Bin 1455 -> 0 bytes res/drawable-xhdpi/ic_action_new_account.png | Bin 1049 -> 0 bytes res/drawable-xhdpi/ic_action_new_event.png | Bin 481 -> 0 bytes res/drawable-xhdpi/ic_launcher.png | Bin 7765 -> 0 bytes res/drawable-xhdpi/ic_read_only.png | Bin 1895 -> 0 bytes res/drawable-xhdpi/navigation_accept.png | Bin 1546 -> 0 bytes res/drawable-xhdpi/navigation_forward.png | Bin 1458 -> 0 bytes res/drawable-xhdpi/show_sync_settings.png | Bin 2038 -> 0 bytes res/drawable-xhdpi/view_website.png | Bin 2638 -> 0 bytes res/drawable-xxhdpi/addressbook.png | Bin 2817 -> 0 bytes .../alerts_and_states_warning.png | Bin 912 -> 0 bytes res/drawable-xxhdpi/calendar.png | Bin 1879 -> 0 bytes res/drawable-xxhdpi/extra_actions_about.png | Bin 1436 -> 0 bytes res/drawable-xxhdpi/ic_action_new_account.png | Bin 920 -> 0 bytes res/drawable-xxhdpi/ic_action_new_event.png | Bin 530 -> 0 bytes res/drawable-xxhdpi/ic_launcher.png | Bin 12150 -> 0 bytes res/drawable-xxhdpi/ic_read_only.png | Bin 2037 -> 0 bytes res/drawable-xxhdpi/navigation_accept.png | Bin 649 -> 0 bytes res/drawable-xxhdpi/navigation_forward.png | Bin 578 -> 0 bytes res/drawable-xxhdpi/show_sync_settings.png | Bin 2745 -> 0 bytes res/drawable-xxhdpi/view_website.png | Bin 2703 -> 0 bytes res/layout/account_details.xml | 53 ------- res/layout/activity_main.xml | 29 ---- res/layout/add_account.xml | 7 - res/layout/address_books_heading.xml | 20 --- res/layout/calendars_heading.xml | 21 --- res/layout/login_email.xml | 52 ------- res/layout/login_type.xml | 38 ----- res/layout/login_url.xml | 89 ----------- res/layout/query_server.xml | 23 --- res/layout/select_collections_header.xml | 18 --- res/menu/account_details.xml | 11 -- res/menu/add_account.xml | 10 -- res/menu/debug_settings.xml | 4 - res/menu/main_activity.xml | 7 - res/menu/only_next.xml | 11 -- res/values-ca/strings.xml | 142 ----------------- res/values-cs/strings.xml | 141 ----------------- res/values-de/strings.xml | 138 ---------------- res/values-es/strings.xml | 86 ---------- res/values-fr/strings.xml | 93 ----------- res/values-hu/strings.xml | 147 ------------------ res/values-sr/strings.xml | 136 ---------------- res/values-zh-rcn/strings.xml | 126 --------------- res/values/strings.xml | 140 ----------------- res/values/styles.xml | 26 ---- res/xml/account_authenticator.xml | 6 - res/xml/account_prefs.xml | 11 -- res/xml/contacts.xml | 86 ---------- res/xml/general_settings.xml | 11 -- res/xml/sync_calendars.xml | 7 - res/xml/sync_contacts.xml | 7 - settings.gradle | 8 + 195 files changed, 1043 insertions(+), 1935 deletions(-) create mode 100644 app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsAccountFragment.java create mode 100644 app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsActivity.java create mode 100644 app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsScopeFragment.java create mode 100644 app/src/main/res/drawable-hdpi/ic_action_settings.png create mode 100644 app/src/main/res/drawable-mdpi/ic_action_settings.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_action_settings.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_action_settings.png create mode 100644 app/src/main/res/layout-sw720dp/activity_settings.xml create mode 100644 app/src/main/res/layout/activity_settings.xml create mode 100644 app/src/main/res/layout/settings_scope.xml create mode 100644 app/src/main/res/values/dimen.xml create mode 100644 app/src/main/res/xml/sync_prefs.xml delete mode 100644 res/drawable-hdpi/addressbook.png delete mode 100644 res/drawable-hdpi/alerts_and_states_warning.png delete mode 100644 res/drawable-hdpi/calendar.png delete mode 100644 res/drawable-hdpi/extra_actions_about.png delete mode 100644 res/drawable-hdpi/ic_action_new_account.png delete mode 100644 res/drawable-hdpi/ic_action_new_event.png delete mode 100644 res/drawable-hdpi/ic_launcher.png delete mode 100644 res/drawable-hdpi/ic_read_only.png delete mode 100644 res/drawable-hdpi/navigation_accept.png delete mode 100644 res/drawable-hdpi/navigation_forward.png delete mode 100644 res/drawable-hdpi/show_sync_settings.png delete mode 100644 res/drawable-hdpi/view_website.png delete mode 100644 res/drawable-mdpi/addressbook.png delete mode 100644 res/drawable-mdpi/alerts_and_states_warning.png delete mode 100644 res/drawable-mdpi/calendar.png delete mode 100644 res/drawable-mdpi/extra_actions_about.png delete mode 100644 res/drawable-mdpi/ic_action_new_account.png delete mode 100644 res/drawable-mdpi/ic_action_new_event.png delete mode 100644 res/drawable-mdpi/ic_launcher.png delete mode 100644 res/drawable-mdpi/ic_read_only.png delete mode 100644 res/drawable-mdpi/navigation_accept.png delete mode 100644 res/drawable-mdpi/navigation_forward.png delete mode 100644 res/drawable-mdpi/show_sync_settings.png delete mode 100644 res/drawable-mdpi/view_website.png delete mode 100644 res/drawable-xhdpi/addressbook.png delete mode 100644 res/drawable-xhdpi/alerts_and_states_warning.png delete mode 100644 res/drawable-xhdpi/calendar.png delete mode 100644 res/drawable-xhdpi/extra_actions_about.png delete mode 100644 res/drawable-xhdpi/ic_action_new_account.png delete mode 100644 res/drawable-xhdpi/ic_action_new_event.png delete mode 100644 res/drawable-xhdpi/ic_launcher.png delete mode 100644 res/drawable-xhdpi/ic_read_only.png delete mode 100644 res/drawable-xhdpi/navigation_accept.png delete mode 100644 res/drawable-xhdpi/navigation_forward.png delete mode 100644 res/drawable-xhdpi/show_sync_settings.png delete mode 100644 res/drawable-xhdpi/view_website.png delete mode 100644 res/drawable-xxhdpi/addressbook.png delete mode 100644 res/drawable-xxhdpi/alerts_and_states_warning.png delete mode 100644 res/drawable-xxhdpi/calendar.png delete mode 100644 res/drawable-xxhdpi/extra_actions_about.png delete mode 100644 res/drawable-xxhdpi/ic_action_new_account.png delete mode 100644 res/drawable-xxhdpi/ic_action_new_event.png delete mode 100644 res/drawable-xxhdpi/ic_launcher.png delete mode 100644 res/drawable-xxhdpi/ic_read_only.png delete mode 100644 res/drawable-xxhdpi/navigation_accept.png delete mode 100644 res/drawable-xxhdpi/navigation_forward.png delete mode 100644 res/drawable-xxhdpi/show_sync_settings.png delete mode 100644 res/drawable-xxhdpi/view_website.png delete mode 100644 res/layout/account_details.xml delete mode 100644 res/layout/activity_main.xml delete mode 100644 res/layout/add_account.xml delete mode 100644 res/layout/address_books_heading.xml delete mode 100644 res/layout/calendars_heading.xml delete mode 100644 res/layout/login_email.xml delete mode 100644 res/layout/login_type.xml delete mode 100644 res/layout/login_url.xml delete mode 100644 res/layout/query_server.xml delete mode 100644 res/layout/select_collections_header.xml delete mode 100644 res/menu/account_details.xml delete mode 100644 res/menu/add_account.xml delete mode 100644 res/menu/debug_settings.xml delete mode 100644 res/menu/main_activity.xml delete mode 100644 res/menu/only_next.xml delete mode 100644 res/values-ca/strings.xml delete mode 100644 res/values-cs/strings.xml delete mode 100644 res/values-de/strings.xml delete mode 100644 res/values-es/strings.xml delete mode 100644 res/values-fr/strings.xml delete mode 100644 res/values-hu/strings.xml delete mode 100644 res/values-sr/strings.xml delete mode 100644 res/values-zh-rcn/strings.xml delete mode 100644 res/values/strings.xml delete mode 100644 res/values/styles.xml delete mode 100644 res/xml/account_authenticator.xml delete mode 100644 res/xml/account_prefs.xml delete mode 100644 res/xml/contacts.xml delete mode 100644 res/xml/general_settings.xml delete mode 100644 res/xml/sync_calendars.xml delete mode 100644 res/xml/sync_contacts.xml diff --git a/app/build.gradle b/app/build.gradle index 9951fbaf..76dec230 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,8 +1,16 @@ +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Public License v3.0 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/gpl.html + */ + apply plugin: 'com.android.application' android { compileSdkVersion 21 - buildToolsVersion "21.1.2" + buildToolsVersion '21.1.2' defaultConfig { applicationId "at.bitfire.davdroid" @@ -19,7 +27,8 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } - dexOptions { + lintOptions { + abortOnError false } packagingOptions { @@ -36,13 +45,10 @@ dependencies { // Apache Commons compile 'commons-lang:commons-lang:2.6' compile 'commons-io:commons-io:2.4' - // Lombok for useful @helpers provided 'org.projectlombok:lombok:1.14.8' - // ical4j for parsing/generating iCalendars compile 'org.mnode.ical4j:ical4j:1.0.6' - // ez-vcard for parsing/generating VCards compile('com.googlecode.ez-vcard:ez-vcard:0.9.6') { // hCard functionality not needed @@ -51,16 +57,13 @@ dependencies { // jCard functionality not needed exclude group: 'com.fasterxml.jackson.core', module: 'jackson-core' } - // dnsjava for querying SRV/TXT records compile 'dnsjava:dnsjava:2.1.6' - // HttpClient 4.3, Android flavour for WebDAV operations // we have to use our own patched build of 4.3.5.2-SNAPSHOT to avoid // https://issues.apache.org/jira/browse/HTTPCLIENT-1591 compile files('lib/httpclient-android-4.3.5.2-davdroid1.jar') // compile 'org.apache.httpcomponents:httpclient-android:4.3.5.2-SNAPSHOT' - // SimpleXML for parsing and generating WebDAV messages compile('org.simpleframework:simple-xml:2.7.1') { exclude group: 'stax', module: 'stax-api' diff --git a/app/lint.xml b/app/lint.xml index 98d6334d..abd3b917 100644 --- a/app/lint.xml +++ b/app/lint.xml @@ -1,4 +1,12 @@ + + diff --git a/app/src/androidTest/java/at/bitfire/davdroid/ArrayUtilsTest.java b/app/src/androidTest/java/at/bitfire/davdroid/ArrayUtilsTest.java index 854b709d..6fef1eb2 100644 --- a/app/src/androidTest/java/at/bitfire/davdroid/ArrayUtilsTest.java +++ b/app/src/androidTest/java/at/bitfire/davdroid/ArrayUtilsTest.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid; import java.util.Arrays; diff --git a/app/src/androidTest/java/at/bitfire/davdroid/ContactTest.java b/app/src/androidTest/java/at/bitfire/davdroid/ContactTest.java index f292e2d8..48d6211d 100644 --- a/app/src/androidTest/java/at/bitfire/davdroid/ContactTest.java +++ b/app/src/androidTest/java/at/bitfire/davdroid/ContactTest.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid; import java.io.IOException; diff --git a/app/src/androidTest/java/at/bitfire/davdroid/TestConstants.java b/app/src/androidTest/java/at/bitfire/davdroid/TestConstants.java index d1f7aa12..0f7cb842 100644 --- a/app/src/androidTest/java/at/bitfire/davdroid/TestConstants.java +++ b/app/src/androidTest/java/at/bitfire/davdroid/TestConstants.java @@ -1,3 +1,11 @@ +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Public License v3.0 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/gpl.html + */ + package at.bitfire.davdroid; import java.net.URI; diff --git a/app/src/androidTest/java/at/bitfire/davdroid/URLUtilsTest.java b/app/src/androidTest/java/at/bitfire/davdroid/URLUtilsTest.java index e31a78c6..2ee94a21 100644 --- a/app/src/androidTest/java/at/bitfire/davdroid/URLUtilsTest.java +++ b/app/src/androidTest/java/at/bitfire/davdroid/URLUtilsTest.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid; import java.net.URI; diff --git a/app/src/androidTest/java/at/bitfire/davdroid/resource/ContactTest.java b/app/src/androidTest/java/at/bitfire/davdroid/resource/ContactTest.java index 89841223..fe8d90ff 100644 --- a/app/src/androidTest/java/at/bitfire/davdroid/resource/ContactTest.java +++ b/app/src/androidTest/java/at/bitfire/davdroid/resource/ContactTest.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.resource; import java.io.IOException; diff --git a/app/src/androidTest/java/at/bitfire/davdroid/resource/EventTest.java b/app/src/androidTest/java/at/bitfire/davdroid/resource/EventTest.java index b24453d5..d1665df3 100644 --- a/app/src/androidTest/java/at/bitfire/davdroid/resource/EventTest.java +++ b/app/src/androidTest/java/at/bitfire/davdroid/resource/EventTest.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.resource; import java.io.IOException; diff --git a/app/src/androidTest/java/at/bitfire/davdroid/resource/LocalCalendarTest.java b/app/src/androidTest/java/at/bitfire/davdroid/resource/LocalCalendarTest.java index 8308e3cb..28249209 100644 --- a/app/src/androidTest/java/at/bitfire/davdroid/resource/LocalCalendarTest.java +++ b/app/src/androidTest/java/at/bitfire/davdroid/resource/LocalCalendarTest.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.resource; import java.util.Calendar; diff --git a/app/src/androidTest/java/at/bitfire/davdroid/syncadapter/DavResourceFinderTest.java b/app/src/androidTest/java/at/bitfire/davdroid/syncadapter/DavResourceFinderTest.java index 8e70eb7b..30492125 100644 --- a/app/src/androidTest/java/at/bitfire/davdroid/syncadapter/DavResourceFinderTest.java +++ b/app/src/androidTest/java/at/bitfire/davdroid/syncadapter/DavResourceFinderTest.java @@ -1,3 +1,11 @@ +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Public License v3.0 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/gpl.html + */ + package at.bitfire.davdroid.syncadapter; import java.io.IOException; diff --git a/app/src/androidTest/java/at/bitfire/davdroid/webdav/DavRedirectStrategyTest.java b/app/src/androidTest/java/at/bitfire/davdroid/webdav/DavRedirectStrategyTest.java index 24b4b31f..3112a9fb 100644 --- a/app/src/androidTest/java/at/bitfire/davdroid/webdav/DavRedirectStrategyTest.java +++ b/app/src/androidTest/java/at/bitfire/davdroid/webdav/DavRedirectStrategyTest.java @@ -1,3 +1,11 @@ +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Public License v3.0 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/gpl.html + */ + package at.bitfire.davdroid.webdav; import java.io.IOException; diff --git a/app/src/androidTest/java/at/bitfire/davdroid/webdav/TlsSniSocketFactoryTest.java b/app/src/androidTest/java/at/bitfire/davdroid/webdav/TlsSniSocketFactoryTest.java index 54afcace..6c50ce0d 100644 --- a/app/src/androidTest/java/at/bitfire/davdroid/webdav/TlsSniSocketFactoryTest.java +++ b/app/src/androidTest/java/at/bitfire/davdroid/webdav/TlsSniSocketFactoryTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Ricki Hirner (bitfire web engineering). + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at diff --git a/app/src/androidTest/java/at/bitfire/davdroid/webdav/WebDavResourceTest.java b/app/src/androidTest/java/at/bitfire/davdroid/webdav/WebDavResourceTest.java index 6ba7871b..d9c66223 100644 --- a/app/src/androidTest/java/at/bitfire/davdroid/webdav/WebDavResourceTest.java +++ b/app/src/androidTest/java/at/bitfire/davdroid/webdav/WebDavResourceTest.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; import java.io.InputStream; diff --git a/app/src/androidTest/res/values/strings.xml b/app/src/androidTest/res/values/strings.xml index 2539643a..3be7ecec 100644 --- a/app/src/androidTest/res/values/strings.xml +++ b/app/src/androidTest/res/values/strings.xml @@ -1,4 +1,12 @@ + + DavdroidTest diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 88fa3895..d8cf83a6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,15 @@ + + + + + android:process=":sync"> + @@ -71,6 +82,13 @@ android:name=".syncadapter.AddAccountActivity" android:excludeFromRecents="true" > + + + + + diff --git a/app/src/main/java/at/bitfire/davdroid/ArrayUtils.java b/app/src/main/java/at/bitfire/davdroid/ArrayUtils.java index f4f050db..30a4d572 100644 --- a/app/src/main/java/at/bitfire/davdroid/ArrayUtils.java +++ b/app/src/main/java/at/bitfire/davdroid/ArrayUtils.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid; import java.lang.reflect.Array; diff --git a/app/src/main/java/at/bitfire/davdroid/Constants.java b/app/src/main/java/at/bitfire/davdroid/Constants.java index 88f26dec..320089d3 100644 --- a/app/src/main/java/at/bitfire/davdroid/Constants.java +++ b/app/src/main/java/at/bitfire/davdroid/Constants.java @@ -1,15 +1,15 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid; public class Constants { public static final String - APP_VERSION = "0.6.12", + APP_VERSION = "0.7", ACCOUNT_TYPE = "bitfire.at.davdroid", WEB_URL_HELP = "https://davdroid.bitfire.at/configuration?pk_campaign=davdroid-app", WEB_URL_VIEW_LOGS = "https://github.com/bitfireAT/davdroid/wiki/How-to-view-the-logs"; diff --git a/app/src/main/java/at/bitfire/davdroid/MainActivity.java b/app/src/main/java/at/bitfire/davdroid/MainActivity.java index a62969ed..c5524280 100644 --- a/app/src/main/java/at/bitfire/davdroid/MainActivity.java +++ b/app/src/main/java/at/bitfire/davdroid/MainActivity.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid; import android.app.Activity; @@ -21,6 +21,7 @@ import android.view.View; import android.widget.TextView; import at.bitfire.davdroid.syncadapter.AddAccountActivity; +import at.bitfire.davdroid.syncadapter.SettingsActivity; public class MainActivity extends Activity { @@ -51,8 +52,11 @@ public class MainActivity extends Activity { public void addAccount(MenuItem item) { - Intent intent = new Intent(this, AddAccountActivity.class); - startActivity(intent); + startActivity(new Intent(this, AddAccountActivity.class)); + } + + public void showSettings(MenuItem item) { + startActivity(new Intent(this, SettingsActivity.class)); } public void showSyncSettings(MenuItem item) { diff --git a/app/src/main/java/at/bitfire/davdroid/URIUtils.java b/app/src/main/java/at/bitfire/davdroid/URIUtils.java index 0a209637..d6f76fb9 100644 --- a/app/src/main/java/at/bitfire/davdroid/URIUtils.java +++ b/app/src/main/java/at/bitfire/davdroid/URIUtils.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid; import android.util.Log; diff --git a/app/src/main/java/at/bitfire/davdroid/resource/CalDavCalendar.java b/app/src/main/java/at/bitfire/davdroid/resource/CalDavCalendar.java index 6012f2ea..cab88a5e 100644 --- a/app/src/main/java/at/bitfire/davdroid/resource/CalDavCalendar.java +++ b/app/src/main/java/at/bitfire/davdroid/resource/CalDavCalendar.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.resource; import org.apache.http.impl.client.CloseableHttpClient; diff --git a/app/src/main/java/at/bitfire/davdroid/resource/CardDavAddressBook.java b/app/src/main/java/at/bitfire/davdroid/resource/CardDavAddressBook.java index 37821ac0..de23d95c 100644 --- a/app/src/main/java/at/bitfire/davdroid/resource/CardDavAddressBook.java +++ b/app/src/main/java/at/bitfire/davdroid/resource/CardDavAddressBook.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.resource; import org.apache.http.impl.client.CloseableHttpClient; diff --git a/app/src/main/java/at/bitfire/davdroid/resource/Contact.java b/app/src/main/java/at/bitfire/davdroid/resource/Contact.java index 4dcfc1bf..271ff380 100644 --- a/app/src/main/java/at/bitfire/davdroid/resource/Contact.java +++ b/app/src/main/java/at/bitfire/davdroid/resource/Contact.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.resource; import android.util.Log; diff --git a/app/src/main/java/at/bitfire/davdroid/resource/DavResourceFinder.java b/app/src/main/java/at/bitfire/davdroid/resource/DavResourceFinder.java index 05b364ca..13d730d8 100644 --- a/app/src/main/java/at/bitfire/davdroid/resource/DavResourceFinder.java +++ b/app/src/main/java/at/bitfire/davdroid/resource/DavResourceFinder.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.resource; import android.content.Context; @@ -67,11 +67,11 @@ public class DavResourceFinder implements Closeable { Log.i(TAG, "Couldn't find address-book home set", e); } if (uriAddressBookHomeSet != null) { - serverInfo.setCardDAV(true); Log.i(TAG, "Found address-book home set: " + uriAddressBookHomeSet); WebDavResource homeSetAddressBooks = new WebDavResource(principal, uriAddressBookHomeSet); if (checkHomesetCapabilities(homeSetAddressBooks, "addressbook")) { + serverInfo.setCardDAV(true); homeSetAddressBooks.propfind(Mode.CARDDAV_COLLECTIONS); List addressBooks = new LinkedList<>(); @@ -109,11 +109,11 @@ public class DavResourceFinder implements Closeable { Log.i(TAG, "Couldn't find calendar home set", e); } if (uriCalendarHomeSet != null) { - serverInfo.setCalDAV(true); Log.i(TAG, "Found calendar home set: " + uriCalendarHomeSet); WebDavResource homeSetCalendars = new WebDavResource(principal, uriCalendarHomeSet); if (checkHomesetCapabilities(homeSetCalendars, "calendar-access")) { + serverInfo.setCalDAV(true); homeSetCalendars.propfind(Mode.CALDAV_COLLECTIONS); List calendars = new LinkedList<>(); diff --git a/app/src/main/java/at/bitfire/davdroid/resource/Event.java b/app/src/main/java/at/bitfire/davdroid/resource/Event.java index b9d0384f..122e0f75 100644 --- a/app/src/main/java/at/bitfire/davdroid/resource/Event.java +++ b/app/src/main/java/at/bitfire/davdroid/resource/Event.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.resource; import android.text.format.Time; diff --git a/app/src/main/java/at/bitfire/davdroid/resource/InvalidResourceException.java b/app/src/main/java/at/bitfire/davdroid/resource/InvalidResourceException.java index ee24e1f6..8e97cc71 100644 --- a/app/src/main/java/at/bitfire/davdroid/resource/InvalidResourceException.java +++ b/app/src/main/java/at/bitfire/davdroid/resource/InvalidResourceException.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.resource; public class InvalidResourceException extends Exception { diff --git a/app/src/main/java/at/bitfire/davdroid/resource/LocalAddressBook.java b/app/src/main/java/at/bitfire/davdroid/resource/LocalAddressBook.java index c62891ca..101b635e 100644 --- a/app/src/main/java/at/bitfire/davdroid/resource/LocalAddressBook.java +++ b/app/src/main/java/at/bitfire/davdroid/resource/LocalAddressBook.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.resource; import android.accounts.Account; diff --git a/app/src/main/java/at/bitfire/davdroid/resource/LocalCalendar.java b/app/src/main/java/at/bitfire/davdroid/resource/LocalCalendar.java index 48729ad6..8edfdf8d 100644 --- a/app/src/main/java/at/bitfire/davdroid/resource/LocalCalendar.java +++ b/app/src/main/java/at/bitfire/davdroid/resource/LocalCalendar.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.resource; import android.accounts.Account; diff --git a/app/src/main/java/at/bitfire/davdroid/resource/LocalCollection.java b/app/src/main/java/at/bitfire/davdroid/resource/LocalCollection.java index 239b3be9..9f2e28d0 100644 --- a/app/src/main/java/at/bitfire/davdroid/resource/LocalCollection.java +++ b/app/src/main/java/at/bitfire/davdroid/resource/LocalCollection.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.resource; import android.accounts.Account; diff --git a/app/src/main/java/at/bitfire/davdroid/resource/LocalStorageException.java b/app/src/main/java/at/bitfire/davdroid/resource/LocalStorageException.java index d33ad46a..4ef9c00e 100644 --- a/app/src/main/java/at/bitfire/davdroid/resource/LocalStorageException.java +++ b/app/src/main/java/at/bitfire/davdroid/resource/LocalStorageException.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.resource; public class LocalStorageException extends Exception { diff --git a/app/src/main/java/at/bitfire/davdroid/resource/RecordNotFoundException.java b/app/src/main/java/at/bitfire/davdroid/resource/RecordNotFoundException.java index 98daa77c..50cda9ca 100644 --- a/app/src/main/java/at/bitfire/davdroid/resource/RecordNotFoundException.java +++ b/app/src/main/java/at/bitfire/davdroid/resource/RecordNotFoundException.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.resource; /** diff --git a/app/src/main/java/at/bitfire/davdroid/resource/RemoteCollection.java b/app/src/main/java/at/bitfire/davdroid/resource/RemoteCollection.java index d71e0366..a3b8fcc4 100644 --- a/app/src/main/java/at/bitfire/davdroid/resource/RemoteCollection.java +++ b/app/src/main/java/at/bitfire/davdroid/resource/RemoteCollection.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.resource; import android.util.Log; diff --git a/app/src/main/java/at/bitfire/davdroid/resource/Resource.java b/app/src/main/java/at/bitfire/davdroid/resource/Resource.java index 2bd87529..31e92426 100644 --- a/app/src/main/java/at/bitfire/davdroid/resource/Resource.java +++ b/app/src/main/java/at/bitfire/davdroid/resource/Resource.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.resource; import java.io.ByteArrayOutputStream; diff --git a/app/src/main/java/at/bitfire/davdroid/resource/ServerInfo.java b/app/src/main/java/at/bitfire/davdroid/resource/ServerInfo.java index 10e966c2..6823926e 100644 --- a/app/src/main/java/at/bitfire/davdroid/resource/ServerInfo.java +++ b/app/src/main/java/at/bitfire/davdroid/resource/ServerInfo.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.resource; import java.io.Serializable; diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/AccountAuthenticatorService.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/AccountAuthenticatorService.java index f78cc4f6..5de2219d 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/AccountAuthenticatorService.java +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/AccountAuthenticatorService.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.syncadapter; import android.accounts.AbstractAccountAuthenticator; diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/AccountDetailsFragment.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/AccountDetailsFragment.java index 7c830dc5..61390115 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/AccountDetailsFragment.java +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/AccountDetailsFragment.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.syncadapter; import android.accounts.Account; diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/AccountSettings.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/AccountSettings.java index f82c8684..2636242b 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/AccountSettings.java +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/AccountSettings.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.syncadapter; import android.accounts.Account; @@ -13,15 +13,18 @@ import android.content.ContentResolver; import android.content.ContentUris; import android.content.ContentValues; import android.content.Context; +import android.content.PeriodicSync; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.CalendarContract; import android.provider.CalendarContract.Calendars; +import android.provider.ContactsContract; import android.util.Log; import java.net.URI; import java.net.URISyntaxException; +import java.util.List; import at.bitfire.davdroid.resource.ServerInfo; import ezvcard.VCardVersion; @@ -40,7 +43,9 @@ public class AccountSettings { KEY_ADDRESSBOOK_URL = "addressbook_url", KEY_ADDRESSBOOK_CTAG = "addressbook_ctag", KEY_ADDRESSBOOK_VCARD_VERSION = "addressbook_vcard_version"; - + + public final static long SYNC_INTERVAL_MANUALLY = -1; + Context context; AccountManager accountManager; Account account; @@ -79,21 +84,71 @@ public class AccountSettings { } - // general settings - + // authentication settings + public String getUserName() { return accountManager.getUserData(account, KEY_USERNAME); } + void setUserName(String userName) { accountManager.setUserData(account, KEY_USERNAME, userName); } public String getPassword() { return accountManager.getPassword(account); } + void setPassword(String password) { accountManager.setPassword(account, password); } - public boolean getPreemptiveAuth() { - return Boolean.parseBoolean(accountManager.getUserData(account, KEY_AUTH_PREEMPTIVE)); + public boolean getPreemptiveAuth() { return Boolean.parseBoolean(accountManager.getUserData(account, KEY_AUTH_PREEMPTIVE)); } + void setPreemptiveAuth(boolean preemptive) { accountManager.setUserData(account, KEY_AUTH_PREEMPTIVE, Boolean.toString(preemptive)); } + + + // sync. settings + + public Long getContactsSyncInterval() { + if (ContentResolver.getIsSyncable(account, ContactsContract.AUTHORITY) <= 0) + return null; + + if (ContentResolver.getSyncAutomatically(account, ContactsContract.AUTHORITY)) { + List syncs = ContentResolver.getPeriodicSyncs(account, ContactsContract.AUTHORITY); + if (syncs.isEmpty()) + return SYNC_INTERVAL_MANUALLY; + else + return syncs.get(0).period; + } else + return SYNC_INTERVAL_MANUALLY; } - - + + public void setContactsSyncInterval(long seconds) { + if (seconds == SYNC_INTERVAL_MANUALLY) { + ContentResolver.setSyncAutomatically(account, ContactsContract.AUTHORITY, false); + } else { + ContentResolver.setSyncAutomatically(account, ContactsContract.AUTHORITY, true); + ContentResolver.addPeriodicSync(account, ContactsContract.AUTHORITY, new Bundle(), seconds); + } + } + + public Long getCalendarsSyncInterval() { + if (ContentResolver.getIsSyncable(account, CalendarContract.AUTHORITY) <= 0) + return null; + + if (ContentResolver.getSyncAutomatically(account, CalendarContract.AUTHORITY)) { + List syncs = ContentResolver.getPeriodicSyncs(account, CalendarContract.AUTHORITY); + if (syncs.isEmpty()) + return SYNC_INTERVAL_MANUALLY; + else + return syncs.get(0).period; + } else + return SYNC_INTERVAL_MANUALLY; + } + + public void setCalendarsSyncInterval(long seconds) { + if (seconds == SYNC_INTERVAL_MANUALLY) { + ContentResolver.setSyncAutomatically(account, CalendarContract.AUTHORITY, false); + } else { + ContentResolver.setSyncAutomatically(account, CalendarContract.AUTHORITY, true); + ContentResolver.addPeriodicSync(account, CalendarContract.AUTHORITY, new Bundle(), seconds); + } + } + + // address book (CardDAV) settings public String getAddressBookURL() { diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/AddAccountActivity.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/AddAccountActivity.java index b10c4016..37719e3c 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/AddAccountActivity.java +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/AddAccountActivity.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.syncadapter; import android.app.Activity; @@ -28,7 +28,7 @@ public class AddAccountActivity extends Activity { if (savedInstanceState == null) { // first call getFragmentManager().beginTransaction() - .add(R.id.fragment_container, new LoginTypeFragment(), "login_type") + .add(R.id.right_pane, new LoginTypeFragment(), "login_type") .commit(); } } diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/CalendarsSyncAdapterService.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/CalendarsSyncAdapterService.java index ede9927d..0d6f7ecb 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/CalendarsSyncAdapterService.java +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/CalendarsSyncAdapterService.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.syncadapter; import android.accounts.Account; diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/ContactsSyncAdapterService.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/ContactsSyncAdapterService.java index 1e932955..6e814d75 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/ContactsSyncAdapterService.java +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/ContactsSyncAdapterService.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.syncadapter; import android.accounts.Account; diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/DavSyncAdapter.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/DavSyncAdapter.java index 19741f09..656e767a 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/DavSyncAdapter.java +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/DavSyncAdapter.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.syncadapter; import android.accounts.Account; diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/LoginEmailFragment.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/LoginEmailFragment.java index 523447ed..8cde2a01 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/LoginEmailFragment.java +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/LoginEmailFragment.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.syncadapter; import android.app.DialogFragment; diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/LoginTypeFragment.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/LoginTypeFragment.java index 3a6cafdb..e2037909 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/LoginTypeFragment.java +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/LoginTypeFragment.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.syncadapter; import android.app.Fragment; @@ -47,7 +47,7 @@ public class LoginTypeFragment extends Fragment { case R.id.next: Fragment loginFragment = btnTypeEmail.isChecked() ? new LoginEmailFragment() : new LoginURLFragment(); getFragmentManager().beginTransaction() - .replace(R.id.fragment_container, loginFragment) + .replace(R.id.right_pane, loginFragment) .addToBackStack(null) .commitAllowingStateLoss(); return true; diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/LoginURLFragment.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/LoginURLFragment.java index e47efec9..1704e7e6 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/LoginURLFragment.java +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/LoginURLFragment.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.syncadapter; import android.app.DialogFragment; diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/QueryServerDialogFragment.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/QueryServerDialogFragment.java index 83eb19b7..c4b86462 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/QueryServerDialogFragment.java +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/QueryServerDialogFragment.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.syncadapter; import android.app.DialogFragment; @@ -27,10 +27,6 @@ import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.security.cert.CertPathValidatorException; -import java.security.cert.CertificateException; - -import javax.net.ssl.SSLHandshakeException; -import javax.net.ssl.SSLPeerUnverifiedException; import at.bitfire.davdroid.R; import at.bitfire.davdroid.resource.DavResourceFinder; @@ -81,7 +77,7 @@ public class QueryServerDialogFragment extends DialogFragment implements LoaderC selectCollections.setArguments(arguments); getFragmentManager().beginTransaction() - .replace(R.id.fragment_container, selectCollections) + .replace(R.id.right_pane, selectCollections) .addToBackStack(null) .commitAllowingStateLoss(); } diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/SelectCollectionsAdapter.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/SelectCollectionsAdapter.java index ae750bb1..206938f2 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/SelectCollectionsAdapter.java +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/SelectCollectionsAdapter.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.syncadapter; import android.annotation.SuppressLint; diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/SelectCollectionsFragment.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/SelectCollectionsFragment.java index ce2c7a09..887ccd27 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/SelectCollectionsFragment.java +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/SelectCollectionsFragment.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.syncadapter; import android.app.ListFragment; @@ -102,7 +102,7 @@ public class SelectCollectionsFragment extends ListFragment { accountDetails.setArguments(arguments); getFragmentManager().beginTransaction() - .replace(R.id.fragment_container, accountDetails) + .replace(R.id.right_pane, accountDetails) .addToBackStack(null) .commitAllowingStateLoss(); break; diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsAccountFragment.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsAccountFragment.java new file mode 100644 index 00000000..685aef04 --- /dev/null +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsAccountFragment.java @@ -0,0 +1,117 @@ +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Public License v3.0 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/gpl.html + */ + +package at.bitfire.davdroid.syncadapter; + +import android.accounts.Account; +import android.accounts.AccountManager; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.preference.CheckBoxPreference; +import android.preference.EditTextPreference; +import android.preference.ListPreference; +import android.preference.Preference; +import android.preference.PreferenceFragment; + +import at.bitfire.davdroid.R; + +public class SettingsAccountFragment extends PreferenceFragment { + final static String KEY_ACCOUNT = "account"; + + protected Account account; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + addPreferencesFromResource(R.xml.account_prefs); + + account = getArguments().getParcelable(KEY_ACCOUNT); + readFromAccount(); + } + + public void readFromAccount() { + final AccountSettings settings = new AccountSettings(getActivity(), account); + + final EditTextPreference prefUserName = (EditTextPreference)findPreference("username"); + prefUserName.setSummary(settings.getUserName()); + prefUserName.setText(settings.getUserName()); + prefUserName.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + settings.setUserName((String)newValue); + readFromAccount(); + return true; + } + }); + + final EditTextPreference prefPassword = (EditTextPreference)findPreference("password"); + prefPassword.setText(settings.getPassword()); + prefPassword.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + settings.setPassword((String)newValue); + readFromAccount(); + return true; + } + }); + + final CheckBoxPreference prefPreemptive = (CheckBoxPreference)findPreference("preemptive"); + prefPreemptive.setChecked(settings.getPreemptiveAuth()); + prefPreemptive.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + settings.setPreemptiveAuth((Boolean)newValue); + readFromAccount(); + return true; + } + }); + + final ListPreference prefSyncContacts = (ListPreference)findPreference("sync_interval_contacts"); + final Long syncIntervalContacts = settings.getContactsSyncInterval(); + if (syncIntervalContacts != null) { + prefSyncContacts.setValue(syncIntervalContacts.toString()); + if (syncIntervalContacts == AccountSettings.SYNC_INTERVAL_MANUALLY) + prefSyncContacts.setSummary(R.string.settings_sync_summary_manually); + else + prefSyncContacts.setSummary(getString(R.string.settings_sync_summary_periodically, syncIntervalContacts / 60)); + prefSyncContacts.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + settings.setContactsSyncInterval(Long.parseLong((String)newValue)); + readFromAccount(); + return true; + } + }); + } else { + prefSyncContacts.setEnabled(false); + prefSyncContacts.setSummary(R.string.settings_sync_summary_not_available); + } + + final ListPreference prefSyncCalendars = (ListPreference)findPreference("sync_interval_calendars"); + final Long syncIntervalCalendars = settings.getCalendarsSyncInterval(); + if (syncIntervalCalendars != null) { + prefSyncCalendars.setValue(syncIntervalCalendars.toString()); + if (syncIntervalCalendars == AccountSettings.SYNC_INTERVAL_MANUALLY) + prefSyncCalendars.setSummary(R.string.settings_sync_summary_manually); + else + prefSyncCalendars.setSummary(getString(R.string.settings_sync_summary_periodically, syncIntervalCalendars / 60)); + prefSyncCalendars.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + settings.setCalendarsSyncInterval(Long.parseLong((String)newValue)); + readFromAccount(); + return true; + } + }); + } else { + prefSyncCalendars.setEnabled(false); + prefSyncCalendars.setSummary(R.string.settings_sync_summary_not_available); + } + } +} diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsActivity.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsActivity.java new file mode 100644 index 00000000..cf2d8979 --- /dev/null +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsActivity.java @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Public License v3.0 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/gpl.html + */ + +package at.bitfire.davdroid.syncadapter; + +import android.accounts.Account; +import android.app.Activity; +import android.app.Fragment; +import android.app.FragmentManager; +import android.app.FragmentTransaction; +import android.os.Bundle; +import android.util.Log; + +import at.bitfire.davdroid.R; + +public class SettingsActivity extends Activity { + private final static String KEY_SELECTED_ACCOUNT = "selected_account"; + + protected Account selectedAccount; + boolean tabletLayout; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setContentView(R.layout.activity_settings); + + tabletLayout = findViewById(R.id.right_pane) != null; + if (!tabletLayout) + getFragmentManager().beginTransaction() + .add(R.id.content_pane, new SettingsScopeFragment()) + .commit(); + + if (savedInstanceState != null) { + selectedAccount = savedInstanceState.getParcelable(KEY_SELECTED_ACCOUNT); + if (selectedAccount != null) + showAccountSettings(selectedAccount); + } + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + outState.putParcelable(KEY_SELECTED_ACCOUNT, selectedAccount); + super.onSaveInstanceState(outState); + } + + void showAccountSettings(Account account) { + selectedAccount = account; + + FragmentManager fm = getFragmentManager(); + Fragment settingsFragment = new SettingsAccountFragment(); + Bundle args = new Bundle(); + args.putParcelable(SettingsAccountFragment.KEY_ACCOUNT, account); + settingsFragment.setArguments(args); + + FragmentTransaction ft = fm + .beginTransaction() + .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); + + if (tabletLayout) + ft .replace(R.id.right_pane, settingsFragment); + else // phone layout + ft .replace(R.id.content_pane, settingsFragment) + .addToBackStack(null); + + ft.commit(); + } +} diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsScopeFragment.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsScopeFragment.java new file mode 100644 index 00000000..0686374c --- /dev/null +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsScopeFragment.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Public License v3.0 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/gpl.html + */ + +package at.bitfire.davdroid.syncadapter; + +import android.accounts.Account; +import android.accounts.AccountManager; +import android.app.ListFragment; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.ListView; + +import at.bitfire.davdroid.Constants; +import at.bitfire.davdroid.R; + +public class SettingsScopeFragment extends ListFragment { + Account[] accounts; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + final AccountManager manager = AccountManager.get(this.getActivity()); + accounts = manager.getAccountsByType(Constants.ACCOUNT_TYPE); + + final String[] accountNames = new String[accounts.length]; + for (int i = 0; i < accounts.length; i++) + accountNames[i] = accounts[i].name; + setListAdapter(new ArrayAdapter(this.getActivity(), android.R.layout.simple_list_item_activated_1, accountNames)); + + return super.onCreateView(inflater, container, savedInstanceState); + } + + @Override + public void onViewCreated(View view, Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + setEmptyText(getString(R.string.settings_no_accounts)); + } + + @Override + public void onListItemClick(ListView l, View v, int position, long id) { + l.clearChoices(); + ((SettingsActivity)getActivity()).showAccountSettings(accounts[position]); + l.setItemChecked(position, true); + } +} diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/SyncManager.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/SyncManager.java index 21bdbfbb..165a5a4f 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/SyncManager.java +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/SyncManager.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.syncadapter; import android.content.SyncResult; diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/WebDavResourceAdapter.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/WebDavResourceAdapter.java index 57b73162..26892a07 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/WebDavResourceAdapter.java +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/WebDavResourceAdapter.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.syncadapter; import android.content.Context; diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/DavAddressbookMultiget.java b/app/src/main/java/at/bitfire/davdroid/webdav/DavAddressbookMultiget.java index 9b32960f..06785082 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/DavAddressbookMultiget.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/DavAddressbookMultiget.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; import org.simpleframework.xml.Namespace; diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/DavCalendarMultiget.java b/app/src/main/java/at/bitfire/davdroid/webdav/DavCalendarMultiget.java index 75a7ce71..9d9640dd 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/DavCalendarMultiget.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/DavCalendarMultiget.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; import org.simpleframework.xml.Namespace; diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/DavException.java b/app/src/main/java/at/bitfire/davdroid/webdav/DavException.java index 506af6da..fcd5d51f 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/DavException.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/DavException.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; public class DavException extends Exception { diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/DavHref.java b/app/src/main/java/at/bitfire/davdroid/webdav/DavHref.java index 438c4e49..05dbf662 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/DavHref.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/DavHref.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; import org.simpleframework.xml.Namespace; diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/DavHttpClient.java b/app/src/main/java/at/bitfire/davdroid/webdav/DavHttpClient.java index e3c3f9a3..6c917b7e 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/DavHttpClient.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/DavHttpClient.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; import android.util.Log; diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/DavHttpRequestRetryHandler.java b/app/src/main/java/at/bitfire/davdroid/webdav/DavHttpRequestRetryHandler.java index c26fac93..9aa6c610 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/DavHttpRequestRetryHandler.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/DavHttpRequestRetryHandler.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; import org.apache.commons.lang.ArrayUtils; diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/DavIncapableException.java b/app/src/main/java/at/bitfire/davdroid/webdav/DavIncapableException.java index 794865ec..b82850c6 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/DavIncapableException.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/DavIncapableException.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; public class DavIncapableException extends DavException { diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/DavMultiget.java b/app/src/main/java/at/bitfire/davdroid/webdav/DavMultiget.java index d9d3fb31..beebb04a 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/DavMultiget.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/DavMultiget.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; import org.simpleframework.xml.Element; diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/DavMultistatus.java b/app/src/main/java/at/bitfire/davdroid/webdav/DavMultistatus.java index e4b8e8eb..091b41c6 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/DavMultistatus.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/DavMultistatus.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; import org.simpleframework.xml.ElementList; diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/DavNoContentException.java b/app/src/main/java/at/bitfire/davdroid/webdav/DavNoContentException.java index 6e3464b9..b73b3a05 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/DavNoContentException.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/DavNoContentException.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; public class DavNoContentException extends DavException { diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/DavNoMultiStatusException.java b/app/src/main/java/at/bitfire/davdroid/webdav/DavNoMultiStatusException.java index 07eb6e18..36f08a7e 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/DavNoMultiStatusException.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/DavNoMultiStatusException.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; public class DavNoMultiStatusException extends DavException { diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/DavProp.java b/app/src/main/java/at/bitfire/davdroid/webdav/DavProp.java index b6b724c0..0bc37c7c 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/DavProp.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/DavProp.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; import org.simpleframework.xml.Attribute; diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/DavPropfind.java b/app/src/main/java/at/bitfire/davdroid/webdav/DavPropfind.java index abf4104e..aa68f392 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/DavPropfind.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/DavPropfind.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; import org.simpleframework.xml.Element; diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/DavPropstat.java b/app/src/main/java/at/bitfire/davdroid/webdav/DavPropstat.java index 74ee66d6..7aa88afc 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/DavPropstat.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/DavPropstat.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; import org.simpleframework.xml.Element; diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/DavRedirectStrategy.java b/app/src/main/java/at/bitfire/davdroid/webdav/DavRedirectStrategy.java index 3dc547d5..6dc75596 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/DavRedirectStrategy.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/DavRedirectStrategy.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; import android.util.Log; diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/DavResponse.java b/app/src/main/java/at/bitfire/davdroid/webdav/DavResponse.java index 5dc67f38..851121c0 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/DavResponse.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/DavResponse.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; import org.simpleframework.xml.Element; diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/HttpException.java b/app/src/main/java/at/bitfire/davdroid/webdav/HttpException.java index 79b48164..9469c2a2 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/HttpException.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/HttpException.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; import lombok.Getter; diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/HttpPropfind.java b/app/src/main/java/at/bitfire/davdroid/webdav/HttpPropfind.java index c0a39216..239acd98 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/HttpPropfind.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/HttpPropfind.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; import android.util.Log; diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/HttpReport.java b/app/src/main/java/at/bitfire/davdroid/webdav/HttpReport.java index c9e902d3..20aefc4a 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/HttpReport.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/HttpReport.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; import android.util.Log; diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/NotAuthorizedException.java b/app/src/main/java/at/bitfire/davdroid/webdav/NotAuthorizedException.java index 4eab6adb..7a09cc52 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/NotAuthorizedException.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/NotAuthorizedException.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; import org.apache.http.HttpStatus; diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/NotFoundException.java b/app/src/main/java/at/bitfire/davdroid/webdav/NotFoundException.java index f612d733..6b845de2 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/NotFoundException.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/NotFoundException.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; import org.apache.http.HttpStatus; diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/PreconditionFailedException.java b/app/src/main/java/at/bitfire/davdroid/webdav/PreconditionFailedException.java index 064ff38a..49a2889e 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/PreconditionFailedException.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/PreconditionFailedException.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; import org.apache.http.HttpStatus; diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/TlsSniSocketFactory.java b/app/src/main/java/at/bitfire/davdroid/webdav/TlsSniSocketFactory.java index ceadc3b7..049b96fc 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/TlsSniSocketFactory.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/TlsSniSocketFactory.java @@ -1,10 +1,11 @@ /* - * Copyright (c) 2015 Ricki Hirner (bitfire web engineering). + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html */ + package at.bitfire.davdroid.webdav; import android.os.Build; diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/WebDavResource.java b/app/src/main/java/at/bitfire/davdroid/webdav/WebDavResource.java index 1ad7d2c6..46c6bee7 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/WebDavResource.java +++ b/app/src/main/java/at/bitfire/davdroid/webdav/WebDavResource.java @@ -1,10 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2014 Ricki Hirner (bitfire web engineering). +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html - ******************************************************************************/ + */ package at.bitfire.davdroid.webdav; import android.util.Log; diff --git a/app/src/main/res/drawable-hdpi/ic_action_settings.png b/app/src/main/res/drawable-hdpi/ic_action_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..0eb78f7c7341b7a4e8f2fa63bb42068ab72b1ae7 GIT binary patch literal 953 zcmV;q14jIbP))n4Ni}Vxl$aDGpk&`o z-$|#_`F!rq-hiL<35!N;xSu1DtsT=t+36NWyh zR;%H1xm@R7h2Z2aF0Y_x&^a^|RfYF=46j^Ta({w%zbId>!LJv|`(6WJb@`AmOq9s) z3@(B`mgN%~(7_IWmpEo+2=F6<2z{5)Uc&PU^e40n9Vkwg6lXje z3}E%es=c%f8FD3s<4plp6M&(0=ria!^eY3oZyF1nM8L_yR~6b#aK6b^t2o#aW8Ofw z`894cr+WabE*mkA<*wR^0q}%s%I6Mqe-dLma4EUv6aapwt*}U$0|L9EIX(giFAWPZ z&;ToJ92#s3nZm}<3kHyj*T~6V`1wM)eFA+1-O`*t#Ke)o#u_$GIewG3MgHHgO4ZXk zpK2%OimFEE25K<2u}wZ3X}1NCr>b37=TlP&7@jJ>LoFRHU1~QMLQStgOSeg8Tu22K zb6S-!g{d=xU72HB(Qe7nudn(>}YJyET`(&62EQC*nOR z+nLa5Od@vL=h_}}u9eXyO63$K^TyII43sijBKdowl+lJOjYz|V`i9*$V2|5T_>6FH z3l3btfye;Vw}y@En0Pw%WW^|GOFk%{_m>K)I7dI{%361-zyXQbW^ zw&;)xlN|dz;PrYk$FgV3-O%^xbQWi$b6WuanvJ@MZS%SCJz1`QaJZhf6;encg%pyT b{1#vU%aSg@hL7wY00000NkvXXu0mjfhD literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_action_settings.png b/app/src/main/res/drawable-mdpi/ic_action_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..c290e5902fd96e62a0a15c6a88d90c5d261b64b2 GIT binary patch literal 594 zcmV-Y0N@uc4+U<6{Uax;_Qov!pg~0@dGS8KwLAcfmQXM0 z^@7F>#_J%}i$PzJ{wX5ChCe~XT;n!$3yhIT>#jNlmY1A*%BanB`sRE z=TfQtu@7)wm&k2{a^0ewFAO9M1qm5UgUge-WU7GNDnJE{3~lyOcqY4HPcS}fR@Yhz z$3(`&rVJn8xjf_z2m1wFi4X~?laTRyTMkULxewzr7||ty=b-`MWZTO~iAK~!X|cg? zLDDP@3DT4OGbr-@ahvPd)2>&W>o`F8-LB&TU?V}g&231Ap8xBQC@$%Odk3)4T5RG9 gppr@sF24c{01P0jsq^4BjQ{`u07*qoM6N<$f<^ZV0{{R3 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_action_settings.png b/app/src/main/res/drawable-xhdpi/ic_action_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..999d0f0d8c1571d3f90be129c8e4c95e895ee7b9 GIT binary patch literal 1231 zcmV;=1Tg!FP)hghH17Mrn&ZDP&C4ukZN0TjEU&^6R3zQYP-+@eq8oMeYFz?O9Lg#v&({fS28uqHIV zBZTqbhuah8N1lBfaT@o1NvAnU}e*7 z6Mu~c1GYh9DTcoSaJFgO(b})HZc5)@8tk=tb92)x+yZcl4FlFTPIAw}3G#_{5JHXi zB+&Xrhrt~Ko*tAxv`{|E2M!^to71yp2LNFwDL#+r6uLP1AdU}rewa}Fu#A0<0^p6K z3jEW(UV$b+I!F`Sg=DE7bEO!7&k3NOknBlePLLeUm>g56@#F(ODVqPFi2wXhr!;>_ zGNuZ-QyM>L?GUo(6!pP3INu--`A z8UU$r5qa`|a{nwnJ~+vdCK8Et#Qc4h!z;q~siuStE#yx%+2W&Zi9I;71>i4J)Rd$v z7V_tFwy4|zs7M)`>H*6rakF%h z@{3ZLJVvszAuUQETcbrpCXJa|44`SPQ@&=h+WP3qX+Y08u&I#7oe)R(L2_ zN>Z84sdSrU9vQUAnrRZRR6c<2*&VmH653%4#IuNY)?$pclm*4h2_^0+$=X%;7S%O5 zD>@2X81V3mjU7HUO;KY?y!Hh3g~^MR^TMM5S-~xx#+pG&T7@OF5gk?&PFlVm9qt|A z={)M99!4(~cvP)Kkc;{%mH!%A@PLg{Gg+>9% zA;vkmP+=jQ#Pr0zK-9kzU#lSu)=KG`sSI$d@Gz(diN{cMgig)RNEsoXt6F1YMaEb~ zhNt51V2=QNH349r|CqHWVEb~EA7ZN893Zikyh(BYWhdBG$;aLd#L(tHMNa-CrFfB= zM66KD=B@98>IdKi(}csm3*}umLzyOgz tRnh7415chjdGh4RlP6D}3ZUNt3;-0k%aSxwCl>$!002ovPDHLkV1nmLGUWgO literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_settings.png b/app/src/main/res/drawable-xxhdpi/ic_action_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..530227e2d02e54f6434ad23c857249f2998f2369 GIT binary patch literal 1863 zcmV-N2e|l&P)NHaz<2#8664H95#fe=$06vQx7mXHD!1W44Rz@`casE9pt2I)*i3X~bU;7EZ4 zLi(QiF5ReiyQ}><-P!M(*^%ws-tE2b?R#(EzEy-^Fc=I5gTY`h7z_r3!C){L323-oP94y z0c_SSn9^|e1>UM6NSMNqgqirSV!=dUGg=pn6wjZMIT?|OInbE1G}0Q-y5q?T=I_FX z@V!St17UNj-HE^=KOJgc*4G@F?iG;itpQ3Q2JdM^#JB$PS_Q{0hp@TD# zu8lQjXY5;6A$P=HlLr6K`O;@oV{xM z%+Ms5j%A#q3_?-{d2Gx1pFt=&1>FInH%qa+e5DIax*l1k7zT ze9h&A%{xOtMigW!Snr1`bT(e$Bj%MQfL6PC1WXJTMn0iicVtFAJ{E)PG(krSO;o*D zJA*t|bajrGOkZtjyxmF?K>Gt()4pXe15gNi9>=n;NqfW!`+uN|+DbOo9v}tO` znrLX(M{G{Qd!o7QT4AP;xT63wG7JGUWmVc6NgDN5XTn^xPbxuC32#ihVyd$U_;1G{ zNO%xH_&tM5V~UP#NRWzyb$!z;r>>$S3PFO;vJ~9jduAGDHX04oyuS^0qOhC< zYkD@IVL8c1oz}y3KZt+JTXe$0y3T`OQ3b?!W2zT3b<0zB>()?#DcB^B76toGv zP)F!%ftp0bchIm1>?8D@OF~D%JSLO#$l&?77<_|*gnmzj`B`MIB>38tx5=O2PE?1S zai7eEPGf82+`A-rmsChv64R7SqAAjHcIUj27au^W1)ISfqOF$pZ;Q$iEl$ah={d6K zpZKbh_UVLew(M#|LXB3Op-I4dFE-Xm_{YMo63^TAq&FuF_Amjv*b=K($bGV@I1}LW zcliB#;lDl~lmyT$ur2#W61vd;FML6Yj>cpn>INZV<|2!n?IL0!hx;S6hql26-0N4LG7IsA zP3J;=I8NsiaP=FLqr@3CkZOopLVcJn4F>)Y(#F2W10Mt5!YcD2y;OtGvo>&+4(cU} zYj(tHb)R{-2vHlfj$^8*l^;k`r}X=dMmwiO#>C*TcUmRg6zV;I^!bs2uR(HOR_2(h zB#1Q3!xzPjW1J^I!-{6z!q3EMXI5HE#AThtd>LwECiGVo)TM=*$@RVu=NX%{jB&Jy zj5tJ1XdwhR61VS>2qVF-1Ev1nP{%XJL7k^Bl>PgHek;j6?kxe=j{T=)G&_|cz~In? ziR~9mfE!#0m@onEuodDgbWzp4Ab@Omau>C~Dl;HWMKA#sGegrVyja!#0|!hI==K^g z6+N$l{bw*33 + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/account_details.xml b/app/src/main/res/layout/account_details.xml index 40790aba..95ab4421 100644 --- a/app/src/main/res/layout/account_details.xml +++ b/app/src/main/res/layout/account_details.xml @@ -1,4 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/add_account.xml b/app/src/main/res/layout/add_account.xml index 5bf370dd..cec27c46 100644 --- a/app/src/main/res/layout/add_account.xml +++ b/app/src/main/res/layout/add_account.xml @@ -1,6 +1,14 @@ + + diff --git a/app/src/main/res/layout/address_books_heading.xml b/app/src/main/res/layout/address_books_heading.xml index f97ecb90..36186841 100644 --- a/app/src/main/res/layout/address_books_heading.xml +++ b/app/src/main/res/layout/address_books_heading.xml @@ -1,4 +1,12 @@ + + + + + + diff --git a/app/src/main/res/layout/login_type.xml b/app/src/main/res/layout/login_type.xml index 8ce0277e..f0fb7647 100644 --- a/app/src/main/res/layout/login_type.xml +++ b/app/src/main/res/layout/login_type.xml @@ -1,4 +1,12 @@ + + + + diff --git a/app/src/main/res/layout/query_server.xml b/app/src/main/res/layout/query_server.xml index 5e3f83eb..60959228 100644 --- a/app/src/main/res/layout/query_server.xml +++ b/app/src/main/res/layout/query_server.xml @@ -1,4 +1,12 @@ + + + + + + + diff --git a/app/src/main/res/menu/account_details.xml b/app/src/main/res/menu/account_details.xml index e3bfc0b9..424a4789 100644 --- a/app/src/main/res/menu/account_details.xml +++ b/app/src/main/res/menu/account_details.xml @@ -1,4 +1,12 @@ + + + + + + - + + diff --git a/app/src/main/res/menu/only_next.xml b/app/src/main/res/menu/only_next.xml index bd075ce5..b46b39a2 100644 --- a/app/src/main/res/menu/only_next.xml +++ b/app/src/main/res/menu/only_next.xml @@ -1,4 +1,12 @@ + + + + diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 52d79bc2..3159c144 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -1,4 +1,12 @@ + + diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 409aac8e..781b44d7 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -1,8 +1,15 @@ + + DAVdroid - DAVdroid-Website Weiter Hilfe @@ -102,6 +109,34 @@ Präemptive Authentifizierung (empfohlen, aber nicht kompatibel mit Digest-Auth.) Passwort: + + Einstellungen + Keine DAVdroid-Konten gefunden + Anmeldeinformationen + Benutzername + Benutzername eingeben: + Passwort + Aktualisieren Sie Ihr Passwort gemäß den Server-Einstellungen. + Passwort eingeben: + Präemptive Authentifizierung + Anmeldeinformationen werden bei jeder Anfrage gesendet (empfohlen) + Anmeldeinformationen werden nur auf Anforderung gesendet + Synchronisierung + Häufigkeit der Kontakte-Synchronisierung + Nur manuell + Alle %d Minuten + sofort bei lokalen Änderungen + Nicht verfügbar + Häufigkeit der Kalender-Synchronisierung + + Nur manuell + Alle 5 Minuten + Alle 10 Minuten + Alle 15 Minuten + Stündlich + Alle 2 Stunden + Alle 4 Stunden + Täglich + DAVdroid: Ordner auswählen An dieser Adresse konnte kein CalDAV- oder CardDAV-Dienst gefunden werden. diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index e1970073..da7c83c9 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -1,4 +1,12 @@ + + DAVdroid diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 537c97f2..c50be593 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -1,4 +1,12 @@ + + DAVdroid diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 2b1e1a6b..2105f511 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -1,4 +1,12 @@ + + diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 1110c9e0..a469df2b 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -1,4 +1,12 @@ + + diff --git a/app/src/main/res/values-zh-rcn/strings.xml b/app/src/main/res/values-zh-rcn/strings.xml index 6f577395..827161b1 100644 --- a/app/src/main/res/values-zh-rcn/strings.xml +++ b/app/src/main/res/values-zh-rcn/strings.xml @@ -1,4 +1,12 @@ + + diff --git a/app/src/main/res/values/dimen.xml b/app/src/main/res/values/dimen.xml new file mode 100644 index 00000000..fc0104a5 --- /dev/null +++ b/app/src/main/res/values/dimen.xml @@ -0,0 +1,12 @@ + + + + + 300dp + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7fdc21bf..c2e99059 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,10 +1,16 @@ + + DAVdroid - - DAVdroid Web site Next Help @@ -16,7 +22,7 @@ Manage sync accounts - + Thank you for buying DAVdroid via Google Play and thus supporting the project. Unfortunately, there are two issues with Google Play:

@@ -67,11 +73,11 @@ or purchasing it.

License

-

Copyright © 2013 – 2014 Ricki Hirner, Bernhard Stockmann (bitfire web engineering). All rights reserved. +

Copyright © 2013 – 2015 Ricki Hirner, Bernhard Stockmann (bitfire web engineering). All rights reserved. This program and the accompanying materials are made available under the terms of the GNU Public License v3.0 which accompanies this distribution, and is available at http://www.gnu.org/licenses/gpl.html. As far as Google Play, Samsung - Store, AndroidPit App Center or Amazon Appstore require other terms, the respective terms apply for versions + Store or Amazon Appstore require other terms, the respective terms apply for versions that are downloaded via these services.

Translation for German is provided by the authors. Translations to other languages have been contributed by @@ -106,7 +112,45 @@ Preemptive authentication (recommended, but incompatible with Digest auth) Password: - + + Settings + No DAVdroid accounts found + Authentication + User name + Enter user name: + Password + Update the password according to your server. + Enter your password: + Pre-emptive authentication + Credentials are sent with every request (recommended) + Credentials are sent after server requests them + Synchronization + Contacts sync. interval + Only manually + Every %d minutes + immediately on local changes + Not available + Calendars sync. interval + + -1 + 300 + 600 + 900 + 3600 + 7200 + 14400 + 86400 + + + Only manually + Every 5 minutes + Every 10 minutes + Every 15 minutes + Every hour + Every 2 hours + Every 4 hours + Once a day + + DAVdroid: Select collections No CalDAV-/CardDAV service is available at this location. Add account diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index a9661327..37a2b8ff 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,3 +1,11 @@ + + + + android:accountPreferences="@xml/sync_prefs" /> diff --git a/app/src/main/res/xml/account_prefs.xml b/app/src/main/res/xml/account_prefs.xml index 7648e8ac..ccac57b7 100644 --- a/app/src/main/res/xml/account_prefs.xml +++ b/app/src/main/res/xml/account_prefs.xml @@ -1,11 +1,55 @@ - - - - - + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/contacts.xml b/app/src/main/res/xml/contacts.xml index 10d6eb36..91dcb48e 100644 --- a/app/src/main/res/xml/contacts.xml +++ b/app/src/main/res/xml/contacts.xml @@ -1,4 +1,12 @@ + + diff --git a/app/src/main/res/xml/sync_calendars.xml b/app/src/main/res/xml/sync_calendars.xml index d2ac9b79..7adc91e9 100644 --- a/app/src/main/res/xml/sync_calendars.xml +++ b/app/src/main/res/xml/sync_calendars.xml @@ -1,3 +1,11 @@ + + + + + + + + + + + + diff --git a/build.gradle b/build.gradle index d6af282e..7c3f7687 100644 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,11 @@ +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Public License v3.0 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/gpl.html + */ + // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0c71e760..ec6ce241 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,3 +1,11 @@ +# +# Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the GNU Public License v3.0 +# which accompanies this distribution, and is available at +# http://www.gnu.org/licenses/gpl.html +# + #Wed Apr 10 15:27:10 PDT 2013 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists diff --git a/res/drawable-hdpi/addressbook.png b/res/drawable-hdpi/addressbook.png deleted file mode 100644 index 79655934efd520b62f1b1cc08a702d19d2a5a882..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1212 zcmV;t1Vj6YP)0Qsv{h@hdR2lgYQc{R$6Bp!igf8lbm2-xurXR_D(FI7DhjS# zXf_q9MNDH*8*PhN@uNXY`CAl3uvA?65QHqMNu$Y(oAcy$c$3VVkEE12Ffb%{-us_( zfA^ew4s@(z9qX8xT@p@gFtc4|*1M996Fgu@DgyfKjWCBLuR%W7^xBY zLWEjsUBDvns-$06@(^#2#2cL7g39$Aq;A076V;Z(|tPY9t8cmlWvn36PMX7@Pr zREe(u{lH=1AYi~i)lQV%u{%Quzet)fGm<1}tpic!*$M0f-jnp9M}F9&S&c})pN&IF zlFWt>egp2$Sl4iND&`SyX6t~5fP<2zT>O*HakZ!(;IO23{TVm-&Q&tjHjGm-XWD!m z_*Bvn$7aM2Vl_5>z!dONB!1M-&4N4ElaWMnXQx6Agf;_1lD_cBkJP}X&#_4(zY%y2 zSnoU43w#Zn_A5qdiR|>+a(Aavj@*A<(wPXGLJe%DB)uO+elKtp@UM$M0lXvW_YlH7 zaBIdZ7u|{NA%xROlALQgjY^s`vwIuB=1MPi>wuHM0Z9v9OYU2OjDFxtAZZw(ls{*& zS!}+OH0J*w1fB#9?{)sbx`qsZ@ZZ06HD5^x}GJ%MLk{A@-L zyMZIXL_N(dcZ0fE9A%u;<-5K|mYk@yP2y?(b;EJeg~lBDd|yx@`lCj*-v zuk7O?1VRY8Cl*~aW<|f(%m5p_NcH5vrr_`X1ek1Q)Y7N}i!NflM|J@CHUpdMGO#Il zxAwNAj8?;R~=?smWZ)UtR=G0iQ{l_OzFU)0!IM zQ*4g6dceD!1A~#k%Yi{ND|o@GEO9Q{icKSDpyD&meZV;%)>i7k^8##IExz78BCJekgCPMMQ1@Pk`ITm|bh_R}mo$!%X)p^eF5ZSK)%!Fb1F>OK@GN909 z;Bk!mKdiOSV{)(5$Tp6F*VfuE1EG+Jw5hWOl;e&Okzz!)*uhz4U`<3SX=oIr;XW`6 zTyo?gNb!3~1;(NNPkH3f%*$J<4V;G=ZwV>;FVRJv9X^#>!?= z)PY42nTkZ#8KneGs|c(EBPqQf#R#x2B5#0(k0F7t_ko&vKP%k0v+ z*Q=}+dqkiFJW@k_j^2mBXJgDcW6Y=~{&n@NYjHUMt{7w9hhf-ET1IavZ+$&j1)jz3 zRT4C~N!8(Y?4_3YFgM*`mdH?_b07*qoM6N<$ Ef=HizN&o-= diff --git a/res/drawable-hdpi/calendar.png b/res/drawable-hdpi/calendar.png deleted file mode 100644 index 3b5f92c35825f6bc3193d8b688a3bc482a6bb958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1429 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVip)Y8@5)!e|;$-u?X(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19ytk=!b*vY~Xr(RHE$SnZc?2=lPS(cjOR+OKs0QR(1 zCQi4Qx#Bbrsy79zTR{FWbHk}uALtl;P}CwtHB1PYen3ok!Ub~RNk26YnBI$k3Hw!J zm=gm76T7F2V@SoVH<8g8WQw z>P?2^rIq)q_I_h-F#Ed1L##@roo2M@kDS)a{@>IVPYc#$`nLO$%d-_S$&a*of{OlB z=e_yQ-VmLt?-Dz0Me$!t2N!F`S&3(TPJiq^!ss8m=vSPgV4d@AW0j*qv#(#VlWMRv zT4lg6*WnHSqy3qg^*oFVymK=on^y=wW>LAdo+ti-z^kCyOCSCZ`qp{WUVuSTFT4MT z?h3BLtIu-oWP5G8z01y5>&oO?CRfYdPIwdrPIjA}m?8Qqi2v1ewu73T^;7mv+{ka3 zx`p=*my6gFv#29n3k}O|Epz(iyZRjKd4)B6vu)JaW8T>?DHiAdSbCb$S zK~!ko?U~POTvZguKl74F6H~BFp*RO>5W4A7FIbAjWhk^1b>${VtxKVQfd7QxA5ca2 z4Mm}3S%Z?mX`xiI&9$_Z$zP_2H!aFd`o5OwQ+;i{u{2ZvM zrkZN1=~bW*!dTW8QDYRFcK818Dd0Tt4$uUqwX_X%fP28IyYCEo|IiEwA>=oG3}^vY zfs4Qvurok*510aGfED025Z!%yzs#{3uy6C{fDeJQK&B;s1J8lSz+d8>08Z1KtHD1eK@2x4<8|g$}T*<&%QcEN})`1m*;-Jz&kqH-S?zMvpO)mp3v92{so6iSL0Wckdiz@IgHBo4^Oa6+v#L z44fuXPG2W-4){pyb>JJIGwifO2-9XZZ)S65w&m`-gXEi87x)!;OMYQy_Ir%+&y-sz zG{DR-vtz)gQt(2s*&HT3gpdIr1D^oz1FxCc!x&?4kg+kwu9>X^7Zea$g4bS=0a=j& zy7rbr<+L33S;1>f;0-}ySI^A?JSXMaBq_eQ>Xe9W+6!4uA)K{KxEV+=|kU_oF&=~&R@#o4Ji$#V{COGwxjZ3vqU91rx-u4=hWhGQ@VDfo2mvh z1+^zYr$nvN8}eKfFgnuJD02K%1NtTL^IUB+PTG~OyzWW{90es;2q^}%b0zWQA#8pU zczvJlN(OX<;nP5Kl0)PS#uwK(dj!ho`6QBJ(#?%PGWvVP}1v4 zXJPq~C7w)F1KtKMg%D0AI)6JiQYq4NQY~g%x?;*rXNk_W4ct->d>ptQLO3WQ^?)Vd z3w@S`W#bS+zbm^g*?XE)Y>#{@k=jz0lv$~z%*r^J1h0yH1-Q|N)60w&_3jPH>H$CZ zH=immX)2MQ5}4To;1pnTxC>_1bN5I4`{+Tvbxz)bVAIl)pMbApjNLM0m2nKVHdGS7 zT7#_;qs1*%lTUJ0Wq!0cExkuKTKr!RcZWE4zJD$nudn4dosz5$g^ubEj+$z!sivAL Z(La80+4kw-k9hz9002ovPDHLkV1mw7^E3be diff --git a/res/drawable-hdpi/ic_action_new_account.png b/res/drawable-hdpi/ic_action_new_account.png deleted file mode 100644 index 9a41829f6dc9044443dbac1e670b889d87f782dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 962 zcmV;z13mnSP)ztmYI&Mbp%#NzTFV;5d@By?1F6$RBP|ooJ-|m`LPS2K5kyZ)V@D`hlaK=Y0_o-x!1M z`z@Ey6<}MP+f`s5_yKGOcI)>A;IfGPY1s-W`4M2G&TSWXEh6K-?@xK2_XOCZE7b>N zJkOi8SpnCQd=@y|V4O|B?TFmUz$CD&`Edxy*|?Hxxd0o1y%EjFv7|{IP1YfGr2rTN z25b^JV;MkJFB$}J+!*5n?|_5AvDo`_HUu&>AN{~tprpFbM(owGH4@tZmem>?nL!X+ zsUY_I1sejcMFIo-Rf|kAjsp~d*4U`;`}n?J@jNdZCTfCrKLw^d&r4j)T#MPq7&8Ej zCLE^#JQR_@#)aG@2N&TZZwlXHexL#Kn@WuQR^XC|yjksJqy^VPHesLdgydI~kZF={7(flT8IF)I z0(syQa3dtY7IJBA{G9}{ae>FcUA51}q_b*_ae>po05B;cGpQx9o+iX)Q_`T9fTD;5 zDdgaO-Kou`?LzzXDnwp30en>n1u4lm(3K3DVWaU1`&~rx?Q|ZMSz&qINTM%kL24^B zveDmKIcI=r;AVIX(kTJF2d)9v^?IJf#~TGKB9(~t%Sm0J=`hBO^8cu@8cSYRyV+i? zD?e*+D(UJMTeT-fi{MC|SuSW`VIVU=E=;F0=#P(#9}w2(ajW^2g0+GyXL zSqJ%`)|;l|!dZCUDz)=SpR10nXsYJ>s0~aC( k0-b}7{42JLF4_?P0H#(vhRG5TmH+?%07*qoM6N<$g0B;%*8l(j diff --git a/res/drawable-hdpi/ic_action_new_event.png b/res/drawable-hdpi/ic_action_new_event.png deleted file mode 100644 index 5a5d55878ddcfa53078e18f26f9b1432bc1eaee3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 409 zcmV;K0cQS*P)e(6rKz{t}7`Tx&vf&c&jz$HR`l4V&! zk9cOiXqra&L?HT^=QPrp^)-#kCjtlVDa4*Yv~vB4>LfMnLrHbj*&=XM!z5yx5qQ#g z7;;<+Mq)dKq>Q#Eyr)#`QN$w=D7BnSRG2&U{Zj*5i`Y~IM+xX^K#mTt{a}>7-3{2h zx|GqH^*KP1s8|!A6uNCSNSjc&Orex@1PBH98fbkZfOeW&4eSbarOnrkLnO`&#;UEDaLnF9e3fQ%Z&%g1{+006)=-U18&KiW*HU+T?Z00000NkvXXu0mjf D!qTR` diff --git a/res/drawable-hdpi/ic_launcher.png b/res/drawable-hdpi/ic_launcher.png deleted file mode 100644 index dce11e1ceec99ed1361a59de5dcfc8547750b31f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5274 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 diff --git a/res/drawable-hdpi/ic_read_only.png b/res/drawable-hdpi/ic_read_only.png deleted file mode 100644 index aca46301e9644cd1c78dc5eae5c4c3a7220bc4a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1438 zcmV;P1!4M$P)2;5i=~v_D4dD3^a7PqE*%(@gs2oGHr%8jpkSgV`eJ-CA(1y9NPJQs zcoKsqctH^nFik)npenNT&`_YY^ujH}04E;vpaAc0^ zng0rV97cZj8(ULYehy2S61ChxirJAsBCV5ZDxHp>OiJszsmd z7F`&mp^(8Yt1lsdBh-9XC?6ZOcJrb~o+0{J!ekbRQjXKeZ1R~a?#PRxjA^9vnQR}! zDjo}EeyuH|*qyUdJ8yP?o+iqLpS$vs_=#EMA*iH@Mi!Duv1p`~dKx(HH4R^)G}OLl z2{YWisMngzPVp*lu#|FfPxe^9iwM;eQp!m>SzvgguCkasg#1+$QOba5rb!MYaZ?Y(-`Y3KW7aSWWww2re!xayhA0r{ z_ZJ2&Lp&%~pq)OCgGNR)lDf{VCLg zm~-(XHB`7}Q$dg(=e(AP9IHi~Wg~+kK%3X%QU(BXs7O@|Ws(D+DATw@zr$jhXqUG{ zK0(gNp%g1x%&Fb1EVH|mA|>1Xqm+Bx2OynX(ZnU>=&el|K!1%|!bI$AO0JUQuuzo} z`nd<#sDk|5cvVn$6C! z0hELcCQ!vwEToF)1WZ?JmFaG8fcn5M<7S}OiIb`q)lU$X2!32 z2?6wMwo=M`%Ec*qv8jmSsSvVXS8F^@yGlD@ULDUS7crFxK?Nm^CZC_$W>L)92$L^= z6Akia95Wx(_Or;nf%sXW$>`f)6azgCebkE~18AicVvC`}BE%+-P}v+Z)+S^i^4Q>6 ze+F6XXD=t@l_XW~09Ed7FpWB`S8F!ozHnwSkszQF;y&l(zSJHefk(zh4ztqfPM{D4 zJB}CWyYQ1vKNkqd=JCDKj2wPo1rTOO;N!Svr`PfhJ$y?WebJYv6d|(M%R1f+e3{5U s-_}?ByCl3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVi#&Ct}+$imdr$-u?X(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1OzjUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+d7PlC? zn3-5OIXVK(v%u~ah~5<3ZZW~>7JZ;&^g&UJ6xA>xVEO?u;RzSWfhYacJYae+0w(OB zPunsW7#L@Hx;TbZ+F}XRH$BVJ_~tbB>ux&w{i&Jpl6k3-y`NvKHk21q zV1%GG?pIzqOj6l*_t-(U9qjp;vo`HwN=}ep)5vUa_N7?Rr}hN4ng+Fwoh&_BpW+wD z&uL8OV?3O|erD1ih8>LjGWVRk>cn-L{3q>ay)F~Cc;}xn`8m#J@(k z@^-_wj*fK>KI!`&dhL6Y6 diff --git a/res/drawable-hdpi/navigation_forward.png b/res/drawable-hdpi/navigation_forward.png deleted file mode 100644 index 812b3aaf48b3b140a17343d317d2ef7985735e62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1304 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVit(Am`4(%9M5$-u?X(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1OecUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dZnrq% zG!Lpb1-DzAaO%|uIz}H9wMbD769T3m5EGtofgE_!Pt60S_ab1z77){EW?*3K@^o@a_5?y~}!)#fxe&fZt$}{a4q5e zyjq9j8_%9cUzr5#cPxvt-pKeuK#U=TLz_XWMU{c|kd%Y$A@&BX7X1dUMFO!*iw;z2 zcc?X(w#dFd`QNvM|8k}{kgI*sENDvLx@i}#u3RAMB79(1hOq4{0mZc9Y|$f<=Yr0k z{^_9nRr8lY#=_p6vu_^$J=--p!$XcXQP<{&O|d_I1|kfaCUQXf`3V0!J--I?+;AN zXlPjqVkn<8SDsUuH~B!_9o^TAx+bYJ^tF5c3%fUP2rw!g2x9)jX~1wNq4KVD(EUxI OvdYud&t;ucLK6U1mCcF( diff --git a/res/drawable-hdpi/show_sync_settings.png b/res/drawable-hdpi/show_sync_settings.png deleted file mode 100644 index 4a6fb5b5982798b4183b93efc21e26f94a57a2ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1550 zcmV+p2J!icP)?1)E7k zK~!ko?U`$6990y@e|L7%ST}vQwoV@?A`ua7ayKEZ4+J3}M8Ei55Uhx3OCO4eTC`}f zwc1uh`auh#g@Ooz6~PYy3$4xWoW)wJ6-=w9&DJKZt)@+r?C$l0XX?0g^VrElF$abu zcV_PV&%OWiKj)snlug-`jk#HCM>O`Y16>Z%TAQ-griObij+wCnFCtiLrvZzBhk&NY zBT3+EU?1>`uU{G?OpRbYOF+a;hAI0q~Mmgsmd@REr9F=;!X;8y}G zE8O;g??hxZYITFqnw;D}WL7TO}G6hJPG=3l=8Eb8=7H!w7W8FZfh+K@$H=zfbGTIc&z|R9- z6p>>iU5s*TY;45yJc1w?I|>a$o3PF|A^1uG86EdLFC442)^4`e?z7fz$>nkcK|ng4 zzVd8yb940$Tt#h`MZjMIx`30wdm;F%t!!i-4NGcD9^AxBGM%y=SM1o>2w+q zISzcP8Mq&K7T6BV2JQw@BJvurMo)1G;FWAPdny{#qjexuneZCWgfyze7YWKGnmcv@ z9s2W0;C|pKYwbJ6m`-ENYGArCCKY|ZlEMu|q2D!g_A6b!3fmyVt$uTJGnq^#JTs?& z2H*}=t}lUYz;#-R9|T%~WzM+`#bR-DB9ZvnIrp%&HffB>l}e>cB2pTy11EqTkz_SE z($t^HWWrz9=`pfackxHf&I^GaW6Y)?2s*8``+=8%*4oFFVt%Y{mmaL&D{tG`~A zXM?VMpYBpEuu-Y|F7OHPp@BemIG!g=x%NJUe*LRPrG)#zy%%qLPXvk&(`8d zj-UlV6zBzG%nRD+I;tJ*rNCU^o9^!JJB=|LH7+gynUMbz8pIXK>2xBIIGV|1`V>^k zIro+Zc6TzFT+`m(KB)KR8)Lj|HhX5c#5obI#n6cW2+snPN+qMoaoS&{|KG)b5ClC# zDbIulaRsN0_LOb_PKihx|79EN|6Wenl>J}qPf43dyh|hhZ~y=R07*qoM6N<$f@ML- A>i_@% diff --git a/res/drawable-hdpi/view_website.png b/res/drawable-hdpi/view_website.png deleted file mode 100644 index 9edbb1b585e93e9ab662c42455f490bc98809b56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1917 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 I&MBb@0Obk&82|tP diff --git a/res/drawable-mdpi/extra_actions_about.png b/res/drawable-mdpi/extra_actions_about.png deleted file mode 100644 index 25d68263f402556fa22d663722e81f82ef41c481..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 671 zcmV;Q0$}}#P)4lD#gEc^o$ZAB}^`Wi`L zcm3I1BjE!JArR1z6Ltwii8<03BsOnxId=B;mNQt~2LsFQ%=^BbdGCD#3oI}ry!WNP zg-|IeVijluHGB077)ts!cLCmeB;mbZ23kNDSOdNrF(%|1FamnOo}|-cZD|21@^#=Y za07^dcfb!|Y*Xt%6W9VAZ~(lQv@=aar2zSD;4$zM=t~+*5#0ecfvdnPNuTpXEQJEa zah&}5Bj79WLej4Ho;Z&4MDIK2J_5IZ4d+}WDJruA%fJ&m-)EAJ(|_Wl+A(CoNEq8%P(qNL@<{Sba zY#gS0KuW~GlD1n|fGu9NQrk}6P0q2SIk!;@%)w%;SDcQI04?+ zILRPym?<4ttWtKo4m>b3dL3xV1jru(H-Wd3c0wFWQ|vf$&V2zkfIH5)GfDeX9JB-6 z2d)DzC4I_s(6SejZR>FV?n3fkT*)rtQaaab`2q`+!5@hj7xbvI8I%A3002ovPDHLk FV1g1m7*+rP diff --git a/res/drawable-mdpi/ic_action_new_account.png b/res/drawable-mdpi/ic_action_new_account.png deleted file mode 100644 index 10e17d08fa5f1630badcc4b379e77f4d5e4c1111..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 666 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 diff --git a/res/drawable-mdpi/show_sync_settings.png b/res/drawable-mdpi/show_sync_settings.png deleted file mode 100644 index 9e7a77563e145b6b44359435b20d86e50b5f2503..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 910 zcmV;919AL`P)Z{%Nt=6|L|Mg${ga0x_ z5s{+bqfWeXB34yIq!L&Jv;nitMh|cic%rJ=f^HnC7=qJBfqLL4;F|+gzz(2QMA}s~ z9oJa0%;*mQ(}BDlC4gSwKJd*lGT%A(&^Z_QzF*RIB8~%gc|9-#2tr4bfRn0v4Y&Y& z0vs?aZV3`)q<$JuJ!tP6u+Y9I0OPEz)8ZN}2Ls6>pv?kXMPw;36{sXC4uKUDj$ zR054wn!?J&HCj#y-UDAE&ce9JneMPVumq?pp)&?}27HXmjukQ6Z!@p~7zp7ZKPd8Q zYsU^%4TgmWeBVbzRsvh>@`B+92EYOkKLEE>^_p`oAE*C+OT`h92S!4NRJF_W3TV$3 z>-#vAoQx6qj}Xw>Rkce*@O>ZO_XnJF1K~?VWUh1WvU9FpRUe0)DVCW;u@P&Lw;A96 z0L}x)fUdz&S*A9L$ST{a0{VbjvsEJ^J58^22}EQuu+J_|8`ob@)l9LJipWIZtg&DZ zFb8-JOaZ!qdB9BIjH+HQSpw%=GqAv%yKF1xoGV&S-}n2SbKij#K&NFY3EVaZwp##~ z;_^Tt?OEWfs!~`{e?-RpFM%6C2e1t|ZROYl)HF3UB>|e7n@g6U)(GdjO}8Kl$s)2I zSPe7)_kdY84^9AUfZd5iqBWn-p96Y5&%2sRr8*;t$ZFhYAd1sQbynX>>yjGav#O>= zWdE kRlEP$b8XZ=+5VdR0ujSAgp{^u?f?J)07*qoM6N<$f@#^2L;wH) diff --git a/res/drawable-mdpi/view_website.png b/res/drawable-mdpi/view_website.png deleted file mode 100644 index 7a27476bffcd95139be3c192ba27fe468c005475..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1144 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 aE*_x%^A9#2=*;5*cB#UnlqW)y^Zx-0G=Vz+ diff --git a/res/drawable-xhdpi/extra_actions_about.png b/res/drawable-xhdpi/extra_actions_about.png deleted file mode 100644 index 69cacb79da36f6b2414cfa2406221ef42c6808a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1455 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 diff --git a/res/drawable-xhdpi/ic_read_only.png b/res/drawable-xhdpi/ic_read_only.png deleted file mode 100644 index 43d966175793c9669525d4b9f8a927eeadb877b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1895 zcmV-t2blPYP)4wld%Z%ck>5UW3$}e<-I>4^RwAZGwGbA z5k5+r95n;uGT_$pB5k7=2l#xcEI5jVJVgdS;^r-$(HDbDR>=GUUdoz>l|1jxFVX!t z_tHl^tQmlEzEf}uT*X)TYT*8STJ4TvH^Q-`Oy4pmOqX_X( z>|c86Nb_^p#5!q~3ueF^mmU@}i!_ZakORh-9u`xTwb!i=k5hA-qSxFw-RPu-pzE@2A9}q|H?~+ zc0a{F-sL_NDVkX+XY^&+Pc4n4X_9jDrWueH<^qFkF+)WI@G{;mdj@OrSjfhL6O&p| zddS=~y=I%#QxC*hFTMJL9AY8Wq_IVt8}cse$?yw(wurMJ0AicK1r}*sIjb+oepZuUItg>gT#--n8?B2vj6x8$+ZCZ$7_AFVJL~a@)4+q0 zl0K6*mqfFQGJMv^VSPp3VlB`j+e})@dCf2Z0O0Mkg(V>tR@7DCj-GcuK8v|e4x3x% zh8$ouWu#do-TI2yG~jdAoR@#-sN<;^0N`!6>sTJFj@AbM7@6#KhP(K<9591sNDi}> z7?otq2|2+dz&qx&8AErhxMRlN!8BR}EW}j3-_J-u*D5(^2F(pQ%}QXAdBu##LQeBX z<1;w`UdHRRYgm!Xf~vGy{Np(+K%9@sUNdYi$vxCy$#v5!{dDQ{*qVz30AP1;jZX&u zt(yFkfl42vMfRJt9N`f%Tr|hbRg)>C)hZr9a)jsn?V*NhPV9+*6FyC}f*#}z6yEq+ zOJD%%+B5U8RBa#}V@iCF;T#CdWS1F{tDMn$rxbwG&U%%?Q`1ykfQ3q{*6+`O0CP-_ zxnj;1qcv87`E|GR-uG0cst&MFp&I;C*>LoU%im18IK5W!-hU8mnLYlIP%Ko%9;Py< z)1FqWW3ke_&q6RN919gn{L^GmjIc$&KZO9CcGeRjRQbNA;;J^VmauH!<1$a{OT|Z4 ztaR_QES!&EVXk`W;5$<|9XlI&oMC*3oOG~UwKTLeKy`9>${3Jy93@49>y$-3>z`LM zRaL-^G9HR*+$O|;GfQ8~{%+&TL>5)$T45HFJeE8=X$G9R{6H20)iSvP$CX&uB3tToYEXpShN5IG4JlL68U z)8@={lh)@-%b1Am!GvK{y z$3sp0JU%f#3u6Olr#2_`X0c2Tnqe?nMp&8+$2eQ{+oK!5hw{)s*T8bS!@D+tEpTSD zG7$3_>Uhq1z$ph#W?`rJ(SOWCGQ}o-98$EFx7=wHiGj~>GcVLKe4WPtGYTNiPd+dY zko1$Ad7j|pG?S#;SRw!?!J^2V&u~BJG^bEO?{h$WiDyGg%Xn$*7d_DoG-jvSFblPg z059izpCjL6YY4u}@7<;nf>7G28AExRIVLHW*`xalbkH4n88M&L(HRkotbk82RzFjQ zCHwSn?mLdi4!VmOc^R=HsyaphkcVlGIQuMaagG=C?@X$wIikZZW8L^H<64Uzvem?KL6sVesS{O3|z%CIV^PZXwnpj0ePGT5_I!h zw(Db4@zKJ=?jpe|6tIu>WPbq$oH$S7@fUrSDHT`oG~dnlKEDFQoC-b^ai_cAb{Fv9 h6jyOa?#Tb9{2OSllaQM4uAl$_002ovPDHLkV1mYKcDn!o diff --git a/res/drawable-xhdpi/navigation_accept.png b/res/drawable-xhdpi/navigation_accept.png deleted file mode 100644 index b8915716e06792d926f397a7b17346f656c86aa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1546 zcmaJ>eM}Q~7(NOZ>jx?|Mx7)_1qW{Q?n+DPg;FVn(PM_rcwjwgk7z zaExq;FcCM$1T(WNW-4=WI(1VrnIo~NbIM>M*htY0#}vP^FxeFW{X=%i-TV8!d7tO~ zdUEwS*{>~}w{ji;01FLSdXr$+1>d=Igzo{O;<{i~@EK-4moDL57>fgGHrj%N1`;d9 zO*m%rRCM7f01z5Ogb|R~a#dE8&^Q=`4tJ)^jrh+MMR3IR69s}KEImMxFjdYS170y97Bn2l! zc!x&%v?#MN2TZ3~98}8S1S_0`fJq7&qJY&3^{b#9Mqmh$L$E3Vfl;Ljg%NP-kqX&Z zTM25?XHMl3ZW^hb=NS}&TrQW)l_;axQV3D2)etO)%@DX$DNsRmu?1h*=3L=$S+q zji`a*c#N{*2E9fqaL5S4h9>Hh6v?`@WTg&HMvx3dtw7Wn3SD|yrV>#pbjUPTPg|WN zPVv)N+cT_sR%}oVBqLvOnw4(~Yn#0m)vQ=ZC?~O*G{jdJEH8vU^=Avr+i|X?`*2LY9 z7jHvHE29PrBH!kINN(*uSt$Oev6h7iu1N7t^Bcq8%eH4kerw;l_*m?|A2AK`y6?34 zP`@{J#lYB+FlJ}1sp{bG{!_iCO_Q1c_7CzZkyMzhv`>@qo7TfY@Gmt3uSG*tgxNWQc=v|JYQSD*fn7li5 z#PB$#i7UEVf00h?$hp1uLQj2zQtZFGsWX7jD_#?wJrFj3Z4#6Vd{fyGdK_MQaQVc! gtQRZb>MwglC=~>3@2<3zJ17=r0mOtC4d1}7AMS~u4vrHSI9daBXx)X5fyM`V!Q zs*~;0m=F_VpltTttt?g3T4}blHd!#MY-b@<;Kl_32gQ?++i}Fn;clI5MHd&&;b&L| ztw8uDo$QgRT2mEdpjisiC=rDP$wi@DwGve$m>SywsSp%_Q5B466)1vhv^au7t4k(C zW33H%HBq`6OStJ|HlAm27`4OW*cD?!!Q_8!77zPKqxqmlPBE@CzrOSKv0~8 zwKKe(c0yrAvYu|{buz)}qZAy>x~!91Et60%*iAApszkymtpQD@|A#sp>u8RzrXKtK zPhrmNVJNto;^=19A~dccEgXu$4J<|SG;5~mBWqQxve7)v*=Pnb)M%6_WFjqgXZU4> zVKU)HC&!ac3uPp9GC@OWw_9-)YS0+4oIFi2LZD~~im6eoL|tqsD%GG`buqfeC1^{t zgL3j~Tlwjnn>3=T$!Oi--7g|e2iv;$g68ncuwVubxAtGH zUV9SeCwyEVT;Z}l`jk_ccUBneb9vYt0FiPdQDk;c{^A=c6BQ-ggwf*e~W(*o!KugSD5?ziMQt;##SV}PH?IDIgJf7uju1ig1^5w z{KAg29kY2UcfQ2HrWx>zSHyt0>k)b0!+i&p?eBi38k8K;8=B8g*p?qwOnIe*E7o@_ z`C!uZJ`$x;NrH?6mVZ& zD}uVkAAlRD>b7`m6Z=JyZt-2vmXVqbaO1_$V(+%zK#+SnkhpXy=H-~C`|NA2^4rPR zp3MciSo8ge0rDy1M|UjPhIe% zkEIK2Xq*VmEq~=7Z%mCa24_jE=Zsj)O|?e0<U3$ zL#KcyI3U-Ld+v$f9L^7Pc7`UU+u4vq5xg1^$WZMoc&YIA@>}MRuiX2?a^|j)v5@;T zKQ)%AA1c>$8;s{Y*>Lfa?r!#ypN;$T^KZiaT5n$3{^`gV&@=Z(()S+yX&@|PNhNW) HxUTIVM0g1d diff --git a/res/drawable-xhdpi/show_sync_settings.png b/res/drawable-xhdpi/show_sync_settings.png deleted file mode 100644 index 64bcc5f7d9d19e0bf2ca04cd83d56d828d7f5c6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2038 zcmV`e|L8MNSxMg+)_L#xFCn1C?t;WY+^RWX?Z0<>W4~IC4~5f010RX zZBzkmh(b$1^g%_xAcR!GhYE-)9)UpA3K5E9<2fV_Eg<5i35dFh+dPOLYkNJH4|}E= zESs+F-OXCvBaOV8$G!JF{^xbCp++^TQH^R;ql%KXwy1lRAX90^MI`>c61WC%Kwd=7 z&-LE27eLI6wblc!2R;hCAGj8X60bU-7x+E!l8EFhAqZ0;%{KvG0B#0Svlvg3r-FD5 zcuGY6QEnlm%BlI`;bE+`Hv@ZB`?03yqxjiM;1=Ka&xy#tm#qa@Yi|Vh={#-&X> z99&icP>iedh{z&;V#uNHGMp`1G4 zv*ikvri|wQ6fjwY0{$Q(Kb+(HAEjH$(1Y~^Q9|7uo-~Sk}V;%_oad>!mtd#3bS3zwQX_9oeI^}2{=3S9~ z<*ExH56mp^8&||P6F{!&eSnBK;Gbm}djc3=E>Yl!hPYC$^OT6pRJ{PSdK&^>E@7gT z27XfYc|fA}{{Zl=MHWDFt?_3fGEvp3@GRy(St8~EMzlVdDo0-+T?Xbq1B{hOIpe@% zA~IF380?in^QBXg$n$N2_-=Ni}6>aU&;AoG6_DfcY@*=@_v9&Mw9bw{6>2pUdTb3H(QItv1Fy0Uwd5Q(pV2l|obuExq2J^G-Pie+BwotR5r!BTmAyBW(TlncLMLFu+28&dEQS4 z1_qwA*8Up!whl82JkiGUb!6wnw&(FaSO3F_g7jk7AZ(;_mwlq6^S_U(+0j^0G! zn9Mc`Cr3Qsl4gCaYTl6w;Kw3z&|146=+JefMC1-@?VakV4RFR7^CRcnC0*y_l6-(V zxuf&t2aBbNi3tz*ibk18HSd7SB687MyGt3GF~&R+hT$MUI-PzXpU>|H-VHQmGMSs4 zbI&>FKCQy@opWE+gy}wwE~WPYC93M;5SC9^Slsz-(|gm-xmPi%{%IyS~L@g~X4!EfOf#yU+X$XR#&NFMFfkt4;$@vA}VOD?Thvt~dY;WfZ3A~NXv zzSCr9R9k7cCA2zejM?M+z5zZ#;WWzkMC4F%{4;0HR3`*x`;ssWCxHRg>=!ec%nho^ z$JMz_a%F#T*z>&m!Z3W@Ik!{&#U;=4{<6^dt6_JTwQJYX*4Adm#>V1^a5;*i$Achv zBn-nt*4pQR)r#*+Q52mO5ofLal3GX}XmZXqQ8;5*nXYgNAwXAGSJoJ_dsfYH9q?P= zSHJ~*w!#>5y>sqvb)L!h>wvo!vX5Y@!2+zcn}9uu)Y_@WC%CfRKB3R+fcU7)wF-@~ z1f++IF?$qJ)f)z5TDNW;A~HzfXk6S@8*XiF-9h2_+}~6PjTBCh)}wm|Q51c|7_(PP z@dg#t(PEje3Jb_)vy6|AlS-vL;C^GwLFe3yA`)pws3D4?{lGikShO*ZhGE#3u%H%W z%nsmW7>0k|v}qHAgM-Tl0!2XN9-v1dkOOv$$g2RGH*e)*5_Glxm8M2Ds!@$<^j4t%0?4j0 U0zg+iiU0rr07*qoM6N<$f_f_4xBvhE diff --git a/res/drawable-xhdpi/view_website.png b/res/drawable-xhdpi/view_website.png deleted file mode 100644 index aba86f0b891a0ee2057ddfe3a70d8923d45ccd14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2638 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 diff --git a/res/drawable-xxhdpi/addressbook.png b/res/drawable-xxhdpi/addressbook.png deleted file mode 100644 index c23e339e8b07b243fca2344bac0460495714ebd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2817 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 diff --git a/res/drawable-xxhdpi/extra_actions_about.png b/res/drawable-xxhdpi/extra_actions_about.png deleted file mode 100644 index c01120fd392f9ffbce1611255b42d2bf7c6e5259..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1436 zcmV;N1!MY&P)pFeXt-> z762An>s$yZr}#dA0f4^apPmDlX|3l%0B`LB07D8fK9K>K5*hiECm>0Z0e}(3^(v7A zm}sqMPm+KnNxA?onPj?6VM~hX0B}dv4Dy;&0LS!uXL}Hu0vKzp(gzNjedoLcJfU$oYL*HwubW0p#(e*nB>NH_xUQYm$7jQQki49`5vXe%>Q z0PpH5{Wd{kct>L@;-OS-o(E8=`Ks55WO9x#J%%1Gsl9ihe5zuG8{sXb@-;h@gd|DcTPn6o3RPi;AgV0B zWnO)7k#I@*R{*}IC5RZn3jhO3n5zTB(Y;dYo+(jJlv0^7W*KYk)tzm5mDkziF-i z^Dsa73Xk`rkBl+5!IYttnEDoL^)-9_wW4Tr!^~;=p@kss#6sG{*l)=NsU_qFGZEtm z@Up_WvAM!pt0&TDc)X_7vy`f}5Wr2-7oLnVhJ8EpU&~U$p;(lZIhYWXhp^J=IOpUg zyuNw@C?piIMEkHTDSPD}zzrg8ApvPg*()c2TN_!mkbqT5*()c2OGbAsB;d|RBKEZ< znYEArFETxYpjP-IAa0?qx}g%lRR^anBp~up?YSU;TN*xYApyrFWv`rotSWa6Fa%|_ z6JS~VI%^>TXC-B?B?%W7t0G_LXzBpT677(=Rsy(W)N7IT_k1K^pB?}>K0Qz~1|?+< zih!<*)xrS6Ps}A?SM9D&2%zJJ+>SCO5M9|eA~0y z`2ml6gF%zZpMAH~%4HoqGOSx_n}1nH$vFE^rpk3S6_6koHq}MIhC=qevTU($IFKvL z$|>moT-ujneNa{|?Q>X($hDOLOoZg()u8m8M`|k%~fFGSJfD(Bb|a8yy+gz({FJH@J|U6uMAX zDygXhMh0?`+$_IpJHF4k_d#t^+sXT!?>nE*1tEkGLI@#*5JHIBXf^RepPij`f$q}F zGay;~;+&I!ibEd)1E3FdHvDMPEca4?Aohj3W+%A#m)+|B06{04{fE;Sx|00}G>?#!f{9B#T+V%z%LVXazXu z5(5GrWAB2dF(2Q8fJwk(rv$!V9J_#V^rIj@Sr$S<2K&bQwFxK@ ze#U%h$uaX)(z^~yj&_XUTcWM-o7n~J68;$Ywe;G(BCogzZy;5{-D3?95+DJ> zu7HfNOAezJ5cS+nU8A784ew19{+0YU;KKuCZD2nmn?Apwo! uND*+u{F&ngGeshV5JCtcgb+fA1LYrz!UJr1@D&UI0000sy~D}K$kM>TG$BsB#Ps5+b8G_5&Rb5m2Xehw z(EGO8x5tSqh}qzn$QI8Jv(ld%)-eX&>AJE=zW1QF7t<02CJqM1T?@Qxjz?UVsqXvu z<@xLH64eji1UQr!?EkoF^-Gm!Q}f@h-W{L1z3}1lU(eL*)}N2L&Ul(--TFU^J)#<< z92%rP#IH_}{*=bRxFeLyE5-bc#L9yCOB+0;b|>y`JGw-Kg~@GhQ_zfG$LCyUeAhFr z31}h6wFS+k2Oe0~&of=Wu>Ai|W!9Bo8y&zV2skisoM7L+-2AiPV{ZutFlZ1g5K3T367}x3y}0xl ONXXOG&t;ucLK6U0_1k~| diff --git a/res/drawable-xxhdpi/ic_launcher.png b/res/drawable-xxhdpi/ic_launcher.png deleted file mode 100644 index 126ae37e05ea4a5aaaaf89b1b0de891cab92fbc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12150 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 T&KWc200000NkvXXu0mjfH;u0r diff --git a/res/drawable-xxhdpi/navigation_accept.png b/res/drawable-xxhdpi/navigation_accept.png deleted file mode 100644 index 6fda89ec7d8d2ef1caa50a1191c1b2f9a0e65e2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 649 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGok|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n6y1z978H@y_vn&?@)k*!|Ik+M|N2r&hGUM-TIHt7{92t zFt#xG%y-U5#fNXrtdgR_gu;*6Ol=dkEd74(-v0M@Q3OilarG)?VsosHc6X{kFE8|r_utCc zb^hr(TDA9H+1%eud(S;t@AFLE!QrP&)2yfd=O*mmGSR;w?dN&j*=t???S5Na$gyg= zeb&VN1s`izI5g%nG(Htp*igg7GHtz`L&ncl%tsXBa~mR_tmYAzTvN)JG(^Jy*f2`2a7taYt1E~`Fiv++F%=bn3Gp8Vp#eT5CeKiL;`Oqf)& zn8EbZ;*JTk{%}p+uaf_5ao?*sCnY~sSFxVB_gA_4XZxMn35IKKo_VdU82aa~Rq{bZG@b+P#Mt@iqco6CE4p82`js^K+H4XA>%&#t@~3O;?3l3o zPaN|Nw+jmUzcVZo+;U?5hi}uL?37nb)!BODyVL^bme|veZ=U#G#9?G1!wVFWTj0zh z`l*@4pl8C;KM9OhZYRR(E-<9KortRYz@RI*X}Y{?!z>Q1C+@-zR1Qt;*~#`3B_4sC cpP$qZFdVVp7yd2n{x6WEr>mdKI;Vst0Qu`3kN^Mx diff --git a/res/drawable-xxhdpi/navigation_forward.png b/res/drawable-xxhdpi/navigation_forward.png deleted file mode 100644 index a4e6f382532da28c765c9a5b6394cb80e501574d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 578 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 diff --git a/res/drawable-xxhdpi/view_website.png b/res/drawable-xxhdpi/view_website.png deleted file mode 100644 index 05de707e2afbec67b7395e20a0490d356d43633f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2703 zcmV;A3UKv_P)Zh7CLyuefjH(P(yeW_M;KTl+OSPP;oh zzwiGy-^>9$_0&^OJ@wR6Pd)Y2Q%^nhbdzY~ZG36Yc?=-dzRrXYSg>f zV9&dv48U9naekv1KoUQ)1U@6v5d+vFUm%1K(-NNnGGX`Vuk9GKtI&vzj)9K>OdOnP z4&VsDHh>)ktV1D0?l9&901qupTnb>?rH|O?5d0l7H<5*XPUyNNML@A8tw&8jA`LmP zVESALv3MsKz&VcqjBBK?kmd-$2?0M;q`r(!g%ERxcNtkcQx$|0TTN?9n}NaK0Yt%;1s~z!dWMQq+e%pFecpU5c~|l_dp8&W+ zs{U_^bZ!eFW>U&jO8J5@28v+HMU=5KDdlSmKQw7Et=j-TVvIePQog#j8c+lNp%9`l zDMb#z04zxIIe?WC%Yz*3NtN@ibCLx9zGHHBN+vP5CfxD}egt5T5+L2|d@qE^IOj2A zYy#jT`u-&W{5dh?Ie=Zp7-x*Vlu~9=$`xbmF982A4ErA`Wm+Q;dk)TeCWQExlrm+E z{Q}@a0Pky>aGx>uOP$tTg$9fb6U|9-CYV@9(m}Kdp=87h87r>teQ=v-kG2Q=}fq4a(dP!kbmW)x2 zY3yirE}1$ZM9w)s2JnS8{(y77<0Dzy^Z7k0hOpZuV{BbifG6HGOtAyws9$WzxE! ziDqOPo@lLNRh>GEYOryyS#IreVM< zF!IWPs4WAk+W$y>cN^4o>VTiBc?y}5i2~LM)}3?v1}2k-0qM_*{(BJKK211hJy@O4(GN#08g*ST&f^72Gbd=HyxrirFCV{bkpxE-508J?iSGyl#LpaGO%se1RTo$#Z zHCTDkfDk?WBZS`@AjmAtN`&AH>-7ZY5rY_)*A2WD<9wKefrr?>)&bYmb}G6b3I{8& zUIRE1LOk{Tf^B@j9f}6(8lw`d8>sYk*Kr4Yo;s964wW+ds;iBCZ5Y7FaeZ5nH9juX zmUCW6)VyU$!IqqNN7h9>ob$vtV_Zy-$)?4$l4NqOj}11Hp~dQvYxo)9nT*aodn=L z*FhY!n<&GS*rHoD(s6;Z9B!QQ8J}}vAD4EL^as63?@n%@B*A@qP_;RjESvyLN`PtFTV%GGmp*H2{Ioxad zY17Dr?mI6uh-&v^4`JuPMJr8v$k3vNzHu>*OoOWy-0|oimRNT(wAKR0>xTyEKku9Y zM6TH_b8X$Lp}PS>$tvmJGT8oB8UCgRDRhl}cRey-+ru*=8=)xa;7Hq^Gv{MHVCv`; z6OURj=a6d0?DOB@ccB}ld%LiHI&SHl2`(_Q=lYr4Ui?(@CwoM>Yd zJ*#>X@6>0N)$5UEQp#71vFBJH$aLE#0+CV*2jC;d*yjk-+VVkh{24KLPn$z=f{XMy zsP{AD9GQ^WGC(=pBSAQN!5I4(>jOd%8hqbAKs84a>r=6OwXhf9hi>HEGbCEUzz@a% zjR~uk;1>x{*Gr9s!wm+0PzESWIIaj$w=BZZ5w51uYl-zvDK^iuFNHOT#^* zj)8x-4(~Q(uT{s_XIL-3EU~Vfe%Uej@9y#ShU~J7-7&UwGk(CKB%$hm!sM!{{}G>S zLjBKJT{G%`$nE+v=AHQ|!=8HTsi&TL>Zzxmdg`gCo_e}j^nV*KUpz31;^F`R002ov JPDHLkV1l>j?LGhi diff --git a/res/layout/account_details.xml b/res/layout/account_details.xml deleted file mode 100644 index 40790aba..00000000 --- a/res/layout/account_details.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/res/layout/activity_main.xml b/res/layout/activity_main.xml deleted file mode 100644 index 1337c4e4..00000000 --- a/res/layout/activity_main.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/res/layout/add_account.xml b/res/layout/add_account.xml deleted file mode 100644 index 5bf370dd..00000000 --- a/res/layout/add_account.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/res/layout/address_books_heading.xml b/res/layout/address_books_heading.xml deleted file mode 100644 index f97ecb90..00000000 --- a/res/layout/address_books_heading.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/res/layout/calendars_heading.xml b/res/layout/calendars_heading.xml deleted file mode 100644 index 770eb099..00000000 --- a/res/layout/calendars_heading.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/res/layout/login_email.xml b/res/layout/login_email.xml deleted file mode 100644 index 8e5a0a78..00000000 --- a/res/layout/login_email.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/res/layout/login_type.xml b/res/layout/login_type.xml deleted file mode 100644 index 8ce0277e..00000000 --- a/res/layout/login_type.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - diff --git a/res/layout/login_url.xml b/res/layout/login_url.xml deleted file mode 100644 index a712b08f..00000000 --- a/res/layout/login_url.xml +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/res/layout/query_server.xml b/res/layout/query_server.xml deleted file mode 100644 index 5e3f83eb..00000000 --- a/res/layout/query_server.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - diff --git a/res/layout/select_collections_header.xml b/res/layout/select_collections_header.xml deleted file mode 100644 index 521dc124..00000000 --- a/res/layout/select_collections_header.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/res/menu/account_details.xml b/res/menu/account_details.xml deleted file mode 100644 index e3bfc0b9..00000000 --- a/res/menu/account_details.xml +++ /dev/null @@ -1,11 +0,0 @@ - -

- - - - - diff --git a/res/menu/add_account.xml b/res/menu/add_account.xml deleted file mode 100644 index 6892f08d..00000000 --- a/res/menu/add_account.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/res/menu/debug_settings.xml b/res/menu/debug_settings.xml deleted file mode 100644 index 40f8ba75..00000000 --- a/res/menu/debug_settings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/res/menu/main_activity.xml b/res/menu/main_activity.xml deleted file mode 100644 index 132a9981..00000000 --- a/res/menu/main_activity.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/res/menu/only_next.xml b/res/menu/only_next.xml deleted file mode 100644 index bd075ce5..00000000 --- a/res/menu/only_next.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml deleted file mode 100644 index 64132a6c..00000000 --- a/res/values-ca/strings.xml +++ /dev/null @@ -1,142 +0,0 @@ - - - - - DAVdroid - - Lloc web de DAVdroid - Següent - Ajuda - - Error HTTP: %s - Falten capacitats: %s - Error E/S: %s - URI invàlida: %s - - - Gestioneu els comptes a sincronitzar - Gràcies per comprar DAVDroid a travès de Google Play i així donar suport al projecte. De totes formes, hi ha dos incidències amb el Google Play:

- -

1. Les comptes poden desaparèixer desprès de reiniciar

-

Podeu trobar-vos amb el problema de que totes les vostres comptes de DAVdroid (contactes i events inclosos) han desaparegut - desprès de reiniciar el dispositiu. La raó és un error de Android - que causa que totes les comptes de les aplicacións de pagament s\'eliminen al iniciar perquè els fitxers (encriptats) APK es - carreguen desprès de revisar si existeixen comptes orfanes.

-

Usuaris afectats:
- * Tots els usuaris de Android 4.1 que han obtingut el DAVdroid del Play Store;
- * El usuaris de Android 4.2 que han obtingut el DAVdroid del Play Store només en alguns dispositius (per exemple, la majoria de dispositius Samsung)

- -

2. Els comptes poden desaparèixer desprès d\'actualitar el DAVdroid

-

Podeu trobar-vos amb el problema de que totes les vostres comptes de DAVdroid (contactes i events inclosos) han desaparegut quan el Play Store - actualitza el DAVdroid. La raó és unaltre error de Android - que causa que les comptes del les aplicacións de pagament s\'esborrin al actualitzar per alguna raó similar.

-

Usuaris afectats: alguns de Android 4.4.2 que han obtingut el DAVdroid desde el Play Store (es coneix per dispositius Nexus i Moto G)

- -

Si esteu afectats per algun d\'aquests errors, sisuplau instaleu el - DAVdroid JB Workaround.

- ]]>
- Benvingut a DAVdroid/%s! - -

DAVdroid es un adaptador de Android 4+ per la sincronització de CalDAV/CardDAV. Per a utilitzar-lo afegieu una compte de DAVdroid - pel vostre servidor de CalDAV/CardDAV i els vostres contactes/esdeveiments es sincronitzaràn de forma bidireccional.

- -

Per mes informació, podeu visitar la pàgina web de DAVdroid. - També hi ha una guia de configuració. El DAVdroid respecta - la teva privacitat, feu una ullada a la nostra politica de privacitat.

- -

Si feu servir CyanogenMod, "Privacy Guard" ha d\'estar deshabilitat pel DAVdroid. Si no es així, el DAVdroid no pot accedir ni sincronitzar - els vostres contactes i events.

- -

En cas de problemes, sisplau llegiu el FAQ primer. - Si trobeu una errada que està clarament relacionada amb el DAVdroid, afegiu-la directament a - Github en comptes de contactar-nos directament o de donar una - valoració pobra de l\'aplicació.

- -

Codi Obert

-

DAVdroid està disenyat per a ser un proejcte de codi obert desde bon principi. Sempres es possible compilar l\'aplicació per la vostra part - i utilitzar-la gratuitament sense cap obligació. El codi font es troba - app yourself and use it for free without any obligations. The source code is - disponible a Github, i també podeu - descarregar l\'aplicació al F-droid.

- -

De totes formes, es va fer molta feina per crear aquesta applicació, així que vam decidir ficar-la a les tendes comercials per un petit import. - Si voleu suportar aquest project, siusplau considereu fer una donació a DAVdroid - o comprar-lo.

- -

Llicència

-

Copyright (c) 2013 – 2014 Ricki Hirner (bitfire web engineering). Tots els drets reservats. - Aquest programa i tots els materials que l\'acompanyen estan disponibles sota els termes de la GNU Public License v3.0 que acompanya - aquesta distribució i està disponible a http://www.gnu.org/licenses/gpl.html. Respecte al Google Play, Samsung - Store, AndroidPit App Center o Amazon Appstore que requereixen altres condicions, els termes respectius apliquen per les versions - que s\'han descàrregat a travès d\'aquests serveis.

- -

La traducció alemana es realitzada pels mateixos autors. Les traduccions a altres idiomes han estat contribucións de varies persones que es mencionen en el seu idioma específic. -

-

Traducció: - Català: Sergi Almacellas Abellana -

- -

Llibraries de tercers utilitzades

-

- * iCal4j (New BSD License)
- * ez-vcard (New BSD License)
- * Simple XML Serialization (Apache License, Version 2.0)
- * Project Lombok (MIT License)

- * dnsjavaBSD License

- ]]>
- - - Entra amb una adreça de correu electrònic - Els detalls del servei es detectaran automàticament amb el nom del servidor. Per exemple: elmeucompte@icloud.com - Entra amb una URL i un nom d\'usuari - Els detalls del servei es detectaran de forma automàtica amb al URL inicial i el nom d\'usuari. Normalment utilitzat per servers allotjats en servidors propis. - - Si us plau, introduïu la vostra adreça de correu electrònic. El seu nom de domini s\'utiltizara per auto-detectar la configuració dels serveis. - Correu electrònic: - - http:// - https:// - - - "Si no feu servir cap encriptació (HTTPS), altres usuaris poden interceptar fàcilment les vostres credencials, contactes i events." - Nom d\'usuari: - URL Arrel (les coleccions es detecten automàticament): - Autentificació preferent (recomanat però incompatible amb l\'autentificació Digest) - Contrasenya: - DAVdroid: Seleccioneu col·leccions - Ni CalDAV ni CardDAV estan disponibles a aquesta ubicació. - - Afegir compte - Contactant servidor. Espereu sisuplau. - Quines col·leccions s\'han de sincronitzar? - Llibretes de contactes - Llibreta de contactes - Calendaris - Calendari - Seleccioneu com a molt una llibreta de contactes (Polseu de nou per deseleccionar): - Seleccioneu els vostres calendaris: - - Detalls del compte - Nom del compte: - El meu compte CalDAV/CardDAV - Correu electrònic: - "ORGANITZADOR dels teus events. Es requereix si feu servir la informació dels assitents" - "Podeu fer servir la vostra addreça de correu electrònic com a nom de la compta ja que el Android utiltizar el nom de la compta com a camp ORGANITZADOR pels events que vosaltres creeu. No podeu tenir dos comptes amb el mateix nom. - només-lectura - - - Configuració general - Configuració deputarció - Desactiva compressió HTTP - La compressió HTTP està desactivada (mode depuració) - La compressió HTTP s\'utilitza quan es possible. - Registra el tràfic de xarxa - Tot el tràfic de xarxa es reigstra (mode depuració) - No es registra el tràfic de xarxa - Informa d\'un error - - -
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml deleted file mode 100644 index c74d42dc..00000000 --- a/res/values-cs/strings.xml +++ /dev/null @@ -1,141 +0,0 @@ - - - - - DAVdroid - - Webová stránka DAVdroid - Další - Pomoc - - HTTP chyba: %s - Chybějící možnosti: %s - I/O chyba: %s - Neplatné URI: %s - - - Spravovat synchronizované účty - - Thank you for buying DAVdroid via Google Play and thus supporting the project. Unfortunately, there are two issues with Google Play:

- -

1. Accounts may be gone after a reboot

-

You may encounter the problem that all your DAVdroid accounts (including contacts and events) are gone - after rebooting your device. The reason is a bug in Android - that causes accounts of paid apps to be removed on start-up because the (encrypted) APK files are - loaded after checking for orphaned accounts.

-

Affected users:
- * all Android 4.1 users who have got DAVdroid from Play Store;
- * Android 4.2 users who have got DAVdroid from Play Store only with certain devices (for instance, most Samsung devices)

- -

2. Accounts may be gone after upgrading DAVdroid

-

You may encounter the problem that all your DAVdroid accounts (including contacts and events) when Play Store - updates DAVdroid. The reason is another bug in Android - that causes accounts of paid apps to be removed when upgrading for a similar reason.

-

Affected users: some Android 4.4.2 users who have got DAVdroid from Play Store (known for Nexus devices and Moto G)

- -

If you\'re affected by one of these bugs, please install the - DAVdroid JB Workaround.

- ]]>
- Vítejte do aplikace DAVdroid/%s! - -

DAVdroid je aplikace pro Android 4+ na synchronizaci CalDAV/CardDAV účtů. Stačí přidat účet DAVdroid - pro CalDAV/CardDAV server a vaše kontakty/události budou synchronizovány oběma směry.

- -

Pro více informací se podívejte na domovskou stránku aplikace DAVdroid. - Najdete tam i návod pro nastavení. DAVdroid respektuje - vaše soukromí, přečtěte si naši Privacy Policy.

- -

If you use CyanogenMod, "Privacy Guard" must be disabled for DAVdroid. Otherwise, DAVdroid is not allowed to access - and synchronize your contacts and events.

- -

In case of problems, please read the FAQ first. - If you encounter a bug that is clearly related to DAVdroid, enter it on - Github issues instead of contacting us directly or giving a poor - rating for the app.

- -

Open-source

-

DAVdroid is designed to be an open-source project from the very first beginning. It is always possible to compile the - app yourself and use it for free without any obligations. The source code is - available on Github, and you can - download the app on F-droid.

- -

However, it was much work to create this app, so we have decided to put it into the commercial stores for a small fee. - If you want to support this project, please consider donating to DAVdroid - or purchasing it.

- -

License

-

Copyright (c) 2013 – 2014 Ricki Hirner, Bernhard Stockmann (bitfire web engineering). All rights reserved. - This program and the accompanying materials are made available under the terms of the GNU Public License v3.0 which - accompanies this distribution, and is available at http://www.gnu.org/licenses/gpl.html. As far as Google Play, Samsung - Store, AndroidPit App Center or Amazon Appstore require other terms, the respective terms apply for versions - that are downloaded via these services.

- -

Překlad. - Čeština: Jaroslav Lichtblau -

- -

Použité knihovny třetích stran

-

- * Apache HttpClient (httpclientandroidlib flavour) – Apache License, Version 2.0
- * iCal4jNew BSD License)
- * ez-vcardNew BSD License
- * Simple XML SerializationApache License, Version 2.0
- * Project LombokMIT License
- * dnsjavaBSD License

- ]]>
- - - Přihlášení s emailovou adresou - Detaily účtu budou automaticky detekovány podle doménového jména. Příkald: mujucet@icloud.com - Přihlášení s URL a uživatelským jménem - Detaily účtu budou automaticky rozpoznány podle URL a uživatelského jména. Nejčastější volba pro vlastní servery. - - Vložte prosím svou emailovou adresu. Její doménová adresa bude použita pro automatické zjištění nastavení služby. - Email: - - - http:// - https:// - - "Pokud nepoužijete šifrované připojení (HTTPS), ostatní budou moci lehce získat vaše přihlašovací údaje, kontakty a události." - Uživatelské jméno: - Kořenová URL (sbírky budou detekovány automaticky): - Preemptivní ověření (doporučeno, ale není kompatibilní s Digest ověřením) - - Heslo: - - DAVdroid: Vybrat sbírky - V tomto umístění není CalDAV-/CardDAV služba dostupná. - Přidat účet - Probíhá komunikace se serverem. Chvilku strpení… - Které sbírky mají být synchronizovány? - Adresáře - Adresář - Kalendáře - Kalendář - Vybrat alespoň jeden adresář (opakovaně tapnout pro odebrání): - Vybrat své kalendáře: - - Detaily účtu - Jméno účtu: - Můj CalDAV/CardDAV účet - Emailová adresa: - "ORGANIZÁTOR událostí; vyžadováno pokud budete přidávat účastníky" - "Použijte svou emailovou adresu jako jméno účtu. Android bude používat tuto hodnotu jako jméno ORGANIZÁTORA událostí které vytvoříte. Nelze mít dva účty se stejným jménem. - pouze pro čtení - - - Obecná nastavení - Ladící nastavení - Vypnout HTTP kompresi - HTTP komprese je vypnuta (ladící mód) - HTTP komprese je použita všude kde možno - Logovat síťový provoz - Veškerý síťový provoz je detailně logován (ladící mód) - Síťový provoz není logován - Nahlásit problém - -
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml deleted file mode 100644 index d77ccd47..00000000 --- a/res/values-de/strings.xml +++ /dev/null @@ -1,138 +0,0 @@ - - - - - DAVdroid-Website - Weiter - Hilfe - - HTTP-Fehler: %s - Fehlende Server-Unterstützung: %s - E/A-Fehler: %s - URI ungültig: %s - - - Sync-Konten anzeigen - - Vielen Dank, dass Sie DAVdroid im Play Store erworben haben und das Projekt dadurch unterstützen. - Leider gibt es derzeit zwei Probleme, die vom Play Store verursacht werden:

- -

1. DAVdroid-Accounts verschwinden nach einem Neustart

-

Möglicherweise verschwinden alle Ihre DAVdroid-Accounts samt Kontakten und Terminen nach einem Neustart - des Geräts. Die Ursache ist ein Fehler in Android, - der zur irrtümlichen Entfernung von Accounts von Bezahlapps bei einem Neustart führt, da die Prüfung auf verwaiste - und damit zu löschende Accounts schon *vor* dem Entschlüsseln der App erfolgt.

-

Betroffene Benutzer*Innen:
- * alle mit Android 4.1, die DAVdroid über Play Store bezogen haben;
- * einige mit Android 4.2, die DAVdroid über Play Store bezogen und bestimmte Geräte haben (zB die meisten Samsung-Geräte)

- -

2. DAVdroid-Accounts verschwinden nach einer DAVdroid-Aktualisierung

-

Möglicherweise verschwinden alle Ihre DAVdroid-Accounts samt Kontakten und Terminen während eines - DAVdroid-Updates, das von Play Store durchgeführt wird. Die Ursache ist ein - anderer Fehler in Android, - der zur irrtümlichen Entfernung von Accounts von Bezahlapps bei der Aktualisierung dieser Apps führt.

-

Betroffene Benutzer*Innen:
- einige mit Android 4.4.2, die DAVdroid über Play Store bezogen haben (bekannt sind Nexus-Geräte und Moto G)

- -

Sollten Sie von einem dieser Fehler betroffen sein, installieren - Sie den DAVdroid JB Workaround.

- ]]>
- Willkommen bei DAVdroid/%s! - -

DAVdroid ist ein Android 4+-CalDAV/CardDAV-Sync-Adapter. Um ihn zu verwenden, müssen Sie ein DAVdroid-Konto - für Ihren Server hinzufügen. Die Kontakte/Termine werden dann automatisch in beide Richtungen synchronisiert.

- -

Wenn Sie CyanogenMod benutzen, muss die "Datenschutz"-Funktion für DAVdroid deaktiviert sein, da DAVdroid sonst - keinen Zugriff auf die Kontakte und Kalendar hat und auch nicht synchronisieren kann.

- -

Weitere Informationen erhalten Sie auf der DAVdroid-Homepage. - Dort finden Sie auch eine Anleitung zum Einrichten. - DAVdroid respektiert Ihre Privatsphäre (siehe Datenschutzrichtlinie).

- -

Bei Problemen lesen Sie bitte die häufig gestellten Fragen. - Im Falle eines Fehlers, der eindeutig durch DAVdroid verursacht wird, berichten Sie diesen wenn möglich auf - Github Issues, anstatt uns direkt zu kontaktieren oder die App - schlecht zu bewerten.

- -

Open-Source

-

DAVdroid ist von Anfang an als Open-Source-Projekt ausgelegt. Der Quellcode kann jederzeit selbst kompiliert und - die App unter den Bedingungen der GPLv3 verwendet werden. Der Quellcode ist - auf Github verfügbar, die App kann auch - über F-Droid bezogen werden.

- -

Es ist jedoch viel Arbeit, die App zu entwickeln und besser zu machen. Daher haben wir uns entschlossen, sie - auch gegen eine kleine Gebühr in die kommerziellen App-Stores zu stellen. Wenn Sie das Projekt unterstützen wollen, können Sie - für DAVdroid spenden oder die App kaufen.

- -

Lizenz

-

Copyright (c) 2013 – 2014 Ricki Hirner, Bernhard Stockmann (bitfire web engineering), alle Rechte - vorbehalten. Dieses Programm ist freie Software. Sie können es unter den Bedingungen der GNU - General Public License Version 3, wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren. - Sofern Google Play oder Samsung Store andere Bedingungen benötigen, gelten für über den jeweiligen Markt heruntergeladene - Apps diese Bedingungen.

- -

Die Übersetzung auf Deutsch wird von den Autoren zur Verfügung gestellt. Übersetzungen für andere Sprachen - wurden von verschiedenen Leuten beigetragen, die in der jeweiligen Sprachversion erwähnt sind.

- -

Verwendete Bibliotheken

-

- * Apache HttpClient (mittels httpclientandroidlib) – Apache License, Version 2.0
- * iCal4jNew BSD License
- * ez-vcardNew BSD License
- * Simple XML SerializationApache License, Version 2.0
- * Project LombokMIT License
- * dnsjavaBSD License

- ]]>
- - - Mit Email-Adresse anmelden - Domänenname wird verwendet, um die Servereinstellungen herauszufinden. Beispiel: myaccount@icloud.com - Mit URL und Benutzername anmelden - Basis-URL und Benutzername werden verwendet, um die Servereinstellungen herauszufinden; z.B. bei einem eigenen Server. - - Geben Sie Ihre Email-Adresse ein. Der Domänenname wird verwendet, um die Servereinstellungen herauszufinden. - Email: - - Ohne Verschlüsselung (HTTPS) können Ihre Zugangsdaten, Kontakte und Termine leicht abgefangen werden. - Benutzername: - Basis-URL (Ordner werden automatisch gefunden): - Präemptive Authentifizierung (empfohlen, aber nicht kompatibel mit Digest-Auth.) - - Passwort: - - DAVdroid: Ordner auswählen - An dieser Adresse konnte kein CalDAV- oder CardDAV-Dienst gefunden werden. - Konto hinzufügen - Daten werden vom Server abgefragt. Bitte warten… - Welche Ordner sollen synchronisiert werden? - Adressbücher - Adressbuch - Kalender - Kalender - Ein oder kein Adressbuch auswählen (nochmal berühren, um abzuwählen): - Kalender zur Synchronisation auswählen: - - Konto-Details - Kontoname: - Mein CalDAV/CardDAV-Konto - Email-Adresse: - "ORGANIZER der von Ihnen angelegten Termine; notwendig für Teilnehmer-Info" - "Verwenden Sie Ihre Email-Adresse als Kontoname, da Android den Kontonamen als ORGANIZER-Feld in Terminen benutzt. Sie können keine zwei Konten mit dem gleichen Namen anlegen. - schreibgeschützt - - - Hilfe zu DAVdroid - - Allgemeine Einstellungen - Einstellungen zur Fehlersuche - HTTP-Komprimierung deaktivieren - HTTP-Komprimierung ist deaktiviert (zur Fehlersuche) - HTTP-Komprimierung wird verwendet, falls möglich - Netzwerkverkehr aufzeichnen - Der gesamte Netzwerkverkehr wird in den Android-Logs mitgeschrieben (zur Fehlersuche) - Netzwerkverkehr wird nicht aufgezeichnet - Problem berichten - -
\ No newline at end of file diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml deleted file mode 100644 index da7c99c6..00000000 --- a/res/values-es/strings.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - DAVdroid - Ajustes - - - http:// - https:// - - - "Si no usas encriptación (HTTPS), otras personas pueden interceptar fácilmente tus datos de ingreso, contactos y eventos." - Nombre de usuario: - Contraseña: - URL raiz (colecciones autodetectadas): - Siguiente - Ayuda - URL base no válida: - DAVdroid: Selecciona las colecciones - I/O error: %s - URI no válida: %s - Se han perdido capacidades: %s - Ni CalDAV ni CardDAV están disponibles - Añadir cuenta - Consultando el servidor. Espera, por favor… - error HTTP: %s - Qué colecciones quieres sincronizar? - Agendas - Calendarios - Seleciona una agenda (pulsar de nuevo para desmarcar): - Selecciona tus calendarios: - Autentificación preferente (recomendado, pero incompatible con la autentificación de Digest) - - Ayuda de DAVdroid - Administrar las cuentas sincronizadas - Sitio web de DAVdroid - ¡Bienvenido a DAVdroid/%s! - -

DAVdroid es un adaptador de sincronización entre Android 4+ y CalDAV/CardDAV. Para usarlo, simplemente añade una cuenta DAVdroid para tu servidor de CalDAV/CardDAV, así tus contactos y eventos serán sincronizados en ambas direcciones.

- -

Si usas CyanogenMod, debes desactivar "Privacy Guard" para DAVdroid. De otro modo, DAVdroid no tendrá autorización para acceder y sincronizar tus contactos y eventos.

- -

Para más información, por favor lee la página de DAVdroid. - También hay una Guía de configuración. DAVdroid respeta tu privacidad, lee nuestra Politica de Privacidad.

- -

Si tienes problemas, por favor lee las FAQ primero. - Si te encuentras un bug que esté claramente relacionado con DAVdroid, entra en - Github issues en lugar de contactar con nosotros directamente o de darle una mala votación a la aplicación.

- -

Código abierto

-

DAVdroid ha sido diseñado como un proyecto de código abierto desde sus inicios. Siempre es posible compilar la app por ti mismo y usarla de forma gratuita sin ninguna obligación. El código fuente está disponible en Github, y puedes descargar la app desde F-droid.

- -

Sin embargo, hay mucho trabajo detrás de la creación de esta aplicación, así que hemos decidido ponerla en las tiendas (Google Play, - Samsung Store) a cambio de un pequeño pago. - Si quieres apoyar este proyecto, por favor piensa en hacer una donación a DAVdroid - o en comprar la app.

- -

Licencia

-

Copyright (c) 2013 – 2014 Richard Hirner (bitfire web engineering). Todos los derechos reservados. - Este programa y los materiales que la acompañan está disponible bajo las condiciones de la GNU Public License v3.0 que acompaña a esta distribución, y está a tu disposición en http://www.gnu.org/licenses/gpl.html. En lo relativo a Google Play or Samsung requieren otras condiciones, éstas han sido descargadas a través de estos servicios.

- -

Translations. - Catalanian: @pokoli, - Chinese (simplified): @phy25, - Czech: Jaroslav Lichtblau, - Serbian: @pejakm, - Spanish: @xphnx -

- -

Librerías third-party usadas

-

- * iCal4j (Licencia New BSD)
- * ez-vcard (Licencia New BSD)
- * Simple XML Serialization (Licencia Apache Version 2.0)
- * Project Lombok (Licencia MIT)

- ]]>
- Detalles de la cuenta - Nombre de la cuenta: - Mi cuenta CalDAV/CardDAV - Dirección de correo: - "ORGANIZADOR de tus eventos; se necesita si se usa información de los asistentes" - "Usa tu dirección de correo electrónico como nombre de cuenta porque Android usará el nombre de cuenta como campo de ORGANIZADOR para los eventos que crees. No puedes tener dos cuentas con el mismo nombre. - -
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml deleted file mode 100644 index c6a8aa2f..00000000 --- a/res/values-fr/strings.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - DAVdroid - Paramètres - - - http:// - https:// - - - Si vous n\'utilisez pas de chiffrement(HTTPS), d\'autres personnes peuvent facilement intercepter vos informations de connexion, contacts et événements. - Utilisateur: - Mot de passe: - URL racine(les collections seront autodétectées): - Suivant - Aide - Racine de l\'URL incorrecte: - DAVdroid: Sélectionnez les collections - Erreur I/O: %s - URI incorrecte: %s - Capacités manquantes: %s - Aucun CalDAV ou CardDAV disponible - Ajouter un compte - Interroge le serveur. Patientez svp. - Erreur HTTP: %s - Quelles collections doivent être synchronisées ? - Carnets d\'adresses - Agendas - Choisissez un carnet d\'adresses(toucher à nouveau pour désélectionner): - Choisissez vos agendas: - Authentification préventive(recommandé, mais incompatible avec l\'authentification Digest) - - Aide de DAVdroid - Gérer les comptes synchronisés - Site Web de DAVdroid - Bienvenue dans DAVdroid/%s! - -

DAVdroid est un connecteur de synhronisation entre Android 4+ et CalDAV/CardDAV. Pour l\'utiliser, il suffit d\'ajouter un compte DAVdroid - pour votre serveur CalDAV/CardDAV, et vos contacts/évènements seront synchronisés dans les deux sens.

- -

Si vous utilisez CyanogenMod, "Privacy Guard" doit être désactivé pour DAVdroid. Sinon DAVdroid ne sera pas en mesure d\'accéder - et synchroniser vos contacts et évènements

- -

Pour plus d\'informations, visitez la page d\'accueil de DAVdroid. - Il y a Un guide d\'installation également. DAVdroid respecte - votre vie privée, see our Politique de confidentialité.

- -

En cas de problème, merci de lire la FAQ en premier lieu. - Si vous rencontrer un bug qui est clairement lié à DAVdroid, svp saisissez le sur - Github issues au lieu de nous contacter directement ou d\'attribuer une mauvaise appréciation à l\'application.

- -

Open-source

-

DAVdroid est conçu depuis le début comme étant open-source. Il est toujours possible de le compiler vous-même l\'application - et l\'utiliser gratuitement sans autre obligation. Le code source est - disponible sur Github, et vous pouvez - télécharger l\'application sur F-droid.

- -

Néanmoins étant donné que créer cette application nécessite du travail, nous avons décidé de la mettre sur les Stores (Google Play, - Samsung Store) pour un faible coût. - Si vous voulez aider ce projet faites un don à DAVdroid ou achetez le

- -

License

-

Copyright (c) 2013 – 2014 Ricki Hirner (bitfire web engineering). All rights reserved. - Ce programme et les documents qui l\'accompagnent sont mis à disposition sous les termes de la Licence Public GNU v3.0 qui - accompagne cette distribution, et est disponible à http://www.gnu.org/licenses/gpl.html. En ce qui concerne Google Play ou Samsung Store, les conditions respectives s\'appliquent pour les versions qui sont téléchargées via ces services.

- -

Translations. - Catalanian: @pokoli, - Chinese (simplified): @phy25, - Czech: Jaroslav Lichtblau, - Serbian: @pejakm, - Spanish: @xphnx -

- -

Bibliothèques tiers

-

- * iCal4j (New BSD License)
- * ez-vcard (New BSD License)
- * Simple XML Serialization (Apache License, Version 2.0)
- * Project Lombok (MIT License)

- ]]>
- Détails du compte - Nom du compte: - Mon compte CalDAV/CardDAV - Adresse Email: - ORGANISATEUR de vos événements; nécessaire pour l\'information des participants - Utilisez votre adresse email en tant que nom de compte car Android utilise ce nom pour le champ ORGANISATEUR des évènements que vous créez." - Vous ne pouvez pas avoir deux comptes du même nom. - -
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml deleted file mode 100644 index e8d159dd..00000000 --- a/res/values-hu/strings.xml +++ /dev/null @@ -1,147 +0,0 @@ - - - - - DAVdroid - - DAVdroid web oldal - Tovább - Súgó - - HTTP hiba: %s - Hiányzó szolgáltatás: %s - I/O hiba: %s - Érvénytelen URI: %s - - - Szinkronizációs fiókok kezelése - - Köszönjük, hogy megvásárolta a DAVdroid alkalmazást a Google Play áruházban, támogatva ezzel a projektet. Sajnos, - a Google Play áruházzal két probléma is van:

-

1. A fiókok az eszköz újraindítása után eltűnhetnek

-

Előfordulhat, hogy az eszköz újraindítása után az összes DAVdroid fiók (beleértve hozzájuk tartozó - névjegyeket és eseményeket) eltűnik. Ezt egy - Android szoftverhiba okozza, melynek - következtében a nem ingyenes alkalmazásokhoz tartozó fiókok az eszköz indításakor törlődnek. A hiba hátterében az áll, - hogy a (kódolt) APK fájlok a létrehozó nélküli ("megárvult") fiókok törlése után töltődnek be.

-

Érintett felhasználók:
- * minden Android 4.1 felhasználó, aki a DAVdroid alkalmazást a Google Play áruházból töltötte le;
- * egyes Android 4.2 felhasználók, akik a DAVdroid alkalmazást a Google Play áruházból töltötték le, a használt eszköz - típusától függően (például egyes Samsung eszközök felhasználói)

-

2. A fiókok a DAVdroid frissítése után eltűnhetnek

-

Előfordulhat, hogy az összes DAVdroid fiók (beleértve a hozzájuk tartozó névjegyeket és eseményeket) - eltűnik, miután a Google Play áruház frissítette a DAVdroid alkalmazást. Ezt szintén egy, az előzőhöz hasonló, - Android szoftverhiba okozza. -

Érintett felhasználók:
- * egyes Android 4.4.2 felhasználók, akik a DAVdroid alkalmazást a Google Play áruházból töltötték le, a használt eszköz - típusától függően (például Nexus és Moto G eszközök felhasználói)

-

A probléma a JB DAVdroid gyorsjavítás - telepítésével kiküszöbölhető.

- ]]>
- Üdvözöljük a DAVdroid/%s felhasználók között! -

DAVdroid egy Android 4+ CalDAV/CardDAV szinkronizációs adapter. Használatához hozzon létre egy DAVdroid fiókot a használni - kívánt CalDAV/CardDav szerverhez. Ezt követően a névjegyek és események szinkronizálva lesznek, mindkét irányban.

-

További információkat a DAVdroid - honlap tartalmaz. A beállításokkal kapcsolatban a - beállítások oldalon - találhat információkat. A DAVdroid tiszteletben tartja adatait bizalmasságát, részleteket az - adatkezelési nyilatkozat - tartalmaz.

-

Ha Ön CyanogenMod felhasználó, vonja ki a DAVdroidot a "Privacy Guard" hatálya alól, különben a DAVdroid nem fog tudni - hozzáférni a névjegyekhez és eseményekhez.

-

Probléma esetén olvassa el a - GYIK-et. Ha - egyértelműen a DAVdroidhoz köthető hibába ütközik, ahelyett, hogy közvetlenül keresne minket, vagy lepontozná az alkalmazást, - inkább a Problémák oldalon jelentse be.

-

Nyílt forráskód

-

A DAVdroid kezdettől fogva nyílt forráskódú projekt. Bármikor lehetősége van az alkalmazást lefordítani és használni, - mindenféle kötelezettség nélkül. A forráskód elérhető a Githubon, a - lefordított alkalmazás pedig az - F-droidon.

-

Mindemellett, az alkalmazás kifejlesztése sok munkát igényelt, ezért úgy döntöttünk, hogy az alkalmazást más áruházakban - is elérhetővé tesszük, egy szerény díj ellenében. Ha szeretné támogatni ezt a projektet, kérjük, fontolja meg az alkalmazás - megvásárlását vagy közvetlen - támogatását.

-

Licenc

-

Copyright (c) 2013 – 2014 Ricki Hirner (bitfire web engineering). Minden jog fenntartva. - Ez a program és a kapcsolódó anyagok a GNU Public License v3.0 hatálya alatt állnak, amely részét képezi a jelen csomagnak, és - amely elérhető - http://www.gnu.org/licenses/gpl.html oldalon. Amennyiben a Google Play, Samsung - Store, AndroidPit App Center vagy Amazon Appstore áruház eltérő feltételeket szab, akkor annak az áruháznak a szabályai - irányadóak, ahonnan az alkalmazást letöltötte.

-

Fordítások. - cseh: Jaroslav Lichtblau, - katalán: @pokoli, - kínai (egyszerűsített): @phy25, - magyar: Gábor J.Tóth, - szerb: @pejakm, - spanyol: @xphnx. -

-

Harmadik felek által fejlesztett programcsomagok

-

- * Apache HttpClient ( - httpclientandroidlib változat) – Apache License, Version 2.0
- * iCal4j - New BSD License
- * ez-vcard - New BSD License
- * Simple XML Serialization - Apache License, Version 2.0
- * Project LombokMIT License

- ]]>
- - - Bejelentkezés email cím segítségével - A szolgáltatás részleteinek automatikus detektálása a tartománynév alapján történik. Példa: myaccount@icloud.com - Bejelentkezés URL és felhasználónév segítségével - A szolgáltatás részleteinek automatikus detektálása a kiinduló URL és a felhasználónév alapján történik. Elsősorban privát szolgáltatásoknál ajánlott. - - Kérjük, adja meg email címét. A szolgáltatás részleteinek automatikus detektálása ennek - tartománynév-része alapján fog történni. - Email: - - - http:// - https:// - - "Titkosítás (HTTPS) nélkül a bejelentkezési azonosítókat, névjegyeket és eseményeket könnyen megismerhetik mások is." - Felhasználónév: - Fiók URL (a gyűjtemények detektálása automatikus): - Preemptív authentikáció (ajánlott, de Digest authentikációval nem működik) - - Jelszó: - - DAVdroid: Gyűjtemény kiválasztása - Nincs CalDAV-/CardDAV szolgáltatás a megadott helyen. - Fiók hozzáadása - Kapcsolódás a szerverhez. Egy pillanat… - Melyik gyűjtemények legyenek szinkronizálva? - Címjegyzékek - Címjegyzék - Naptárak - Naptár - Egy címjegyzék választható (a kijelölés visszavonása újbóli érintéssel vagy másik tétel kiválasztásával): - Naptárak kiválasztása: - - További beállítások - A fiók neve: - CalDAV/CardDAV fiók - Email cím: - "Szervező (ORGANIZER mező értéke), résztvevők kezelése esetén" - "Használja az email címet fióknévként, mert később a létrehozandó események szervezőjeként (ORGANIZER mező) az Android ezt fogja használni. Két fiókot nem lehet azonos néven létrehozni. - csak olvasható - - - Általános beállítások - Hibakeresési beállítások - HTTP tömörítés kikapcsolása - HTTP tömörítés kikapcsolva (hibakeresés) - HTTP tömörítés bekapcsolva (ahol csak lehetséges) - Hálózati forgalom naplózása - A teljes hálózati forgalom részletes naplózása (hibakeresés) - A hálózati forgalom naplózása kikapcsolva - Probléma bejelentése - -
\ No newline at end of file diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml deleted file mode 100644 index ebf462b7..00000000 --- a/res/values-sr/strings.xml +++ /dev/null @@ -1,136 +0,0 @@ - - - - - ДАВдроид - - ДАВдроид вебсајт - Следеће - Помоћ - - ХТТП грешка: %s - Недостају могућности: %s - У/И грешка: %s - Неисправан УРИ: %s - - - Управљај налозима синхронизације - - Хвала вам што сте купили ДАВдроид преко Google Play сервиса и тиме подржали овај пројекат. Нажалост, постоје два проблема са Google Play сервисом:

- -

1. Налози могу нестати након поновног покретања

-

Може вам се десити да сви ваши ДАВдроид налози (укључујући контакте и догађаје) нестану након - поновног покретања вашег уређаја. Разлог је грешка у Андроиду - која узрокује уклањање налога плаћених апликација приликом покретања јер се (шифровани) АПК фајлови - учитавају након провере за налоге без апликација.

-

Захваћени корисници:
- * сви корисници Андроида 4.1 који су инсталирали ДАВдроид са Play Store сервиса;
- * корисници Андроида 4.2 који су инсталирали ДАВдроид са Play Store сервиса само на неким уређајима (нпр. већина Самсунгових уређаја)

- -

2. Налози могу да нестану након надоградње ДАВдроида

-

Може вам се десити да сви ваши ДАВдроид налози (укључујући контакте и догађаје) нестану након - надоградње ДАВдроида. Разлог је опет грешка у Андроиду - која узрокује уклањање налога плаћених апликација приликом надоградње из сличног разлога.

-

Захваћени корисници: неки корисници Андроида 4.4.2 који су инсталирали ДАВдроид са Play Store сервиса (Нексус и Мото Г уређаји)

- -

Ако имате један од наведених проблема, инсталирајте „DAVdroid JB Workaround“.

- ]]>
- Добро дошли у ДАВдроид/%s! - -

ДАВдроид (DAVdroid) је Андроид 4+ адаптер синхронизације за КалДАВ/КардДАВ (CalDAV/CardDAV). Да бисте га користили, - само додајте ДАВдроид налог за ваш КалДАВ/КардДАВ сервер и ваши контакти/догађаји ће бити синхронизовани у оба смера.

- -

За више информација погледајте ДАВдроид вебсајт. - Постоји и водич за поставку. ДАВдроид поштује - вашу приватност, погледајте нашу политику приватности.

- -

Ако користите Цијаноген Мод, „Privacy Guard“ мора бити онемогућен за ДАВдроид. У супротном, ДАВдроиду неће бити дозвољени - приступ и синхронизација ваших контаката и догађаја.

- -

У случају проблема, најпре прочитајте најчешћа питања. - Ако вам се деси грешка која је сигурно везана за ДАВдроид, поднесите пријаву на - Гитхабовом пратиоцу уместо да нас контактирате директно или да апликацији дате лошу оцену.

- -

Отворени код

-

ДАВдроид је испочетка дизајниран као пројекат отвореног кода. Увек је могуће да сами компајлирате - апликацију и да је слободно користите без икаквих обавеза. Изворни код је - доступан на Гитхабу, а можете и - преузети апликацију са Ф-Дроида.

- -

Међутим, уложено је много рада у ову апликацију па смо одлучили да је ставимо у комерцијалне продавнице за малу накнаду. - Ако желите да подржите овај пројекат, донирајте ДАВдроиду - или га купите.

- -

Лиценца

-

Ауторско право © 2013 – 2014 Рики Хирнер (Ricki Hirner), Бернхарт Стокман (Bernhard Stockmann) (Битфајер веб инжињеринг). Сва права задржана. - Овај програм и пратећи материјали су доступни под условима ГНУ-ове Јавне Лиценце в3.0 која је приложена, - и доступна на http://www.gnu.org/licenses/gpl.html. Ако сервиси „Google Play“, - „Samsung Store“, „AndroidPit App Center“ или „Amazon Appstore“ захтевају друге услове, исти важе за издања преузета са ових сервиса.

- -

Превод на српски: @pejakm. Превод на немачки: аутори. Остале преводе - допринели су људи поменути у преводима одговарајућих језика.

- -

Коришћене друге библиотеке

-

- * Апачи ХТТП клијент (httpclientandroidlib издање) – Апачи лиценца, издање 2.0
- * iCal4jНова БСД лиценца)
- * ez-vcardНова БСД лиценца
- * Симпле ИксМЛ серијализацијаАпачи лиценца, издање 2.0
- * Пројекат ЛомбокМИТ лиценца

- * dnsjavaБСД лиценца

- ]]>
- - - Пријавите се адресом е-поште - Детаљи сервиса ће бити аутоматски откривени по имену домена. Пример: mojnalog@icloud.com - Пријавите се УРЛ-ом и корисничким именом - Детаљи сервиса ће бити аутоматски откривени по почетном УРЛ-у и корисничком имену. Углавном се користи за самохостоване сервисе. - - Унесите вашу адресу е-поште. Име домена ће бити коришћено за аутоматско откривање поставки сервиса. - Е-адреса: - - - http:// - https:// - - "Ако не користите шифровање (ХТТПС), други људи вам лако могу пресрести детаље пријаве, контакте и догађаје." - Корисничко име: - Корени УРЛ (збирке ће бити аутоматски откривене): - Превентивна аутентификација (препоручено, али некомпатибилно са Дигест аутентификацијом) - - Лозинка: - - ДАВдроид: Изаберите збирке - Нема доступног КалДАВ/КардДАВ сервиса на овој локацији. - Додај налог - Шаљем упит серверу. Сачекајте… - Које збирке да синхронизујем? - Адресари - Адресар - Календари - Календар - Изаберите један адресар (додирните поново да поништите избор): - Изаберите ваше календаре: - - Детаљи налога - Име налога: - Мој КалДАВ/КардДАВ налог - Е-адреса: - "ОРГАНИЗАТОР ваших догађаја; потребно ако користите податке о учеснику" - "Користите вашу е-адресу као име налога јер Андроид користи име налога за поље ОРГАНИЗАТОР за догађаје које направите. Не можете имати два налога истог имена. - само-за-читање - - - Опште поставке - Поставке проналаска грешака - Онемогући ХТТП компресију - ХТТП компресија је онемогућена (режим проналаска грешака) - ХТТП компресија се користи кад год је могуће - Бележи мрежни саобраћај - Сав мрежни саобраћај се исцрпно бележи у дневник (режим проналаска грешака) - Мрежни саобраћај се не бележи у дневник - Пријави грешку - -
diff --git a/res/values-zh-rcn/strings.xml b/res/values-zh-rcn/strings.xml deleted file mode 100644 index 48694a4c..00000000 --- a/res/values-zh-rcn/strings.xml +++ /dev/null @@ -1,126 +0,0 @@ - - - - - DAVdroid - - DAVdroid 网站 - 继续 - 帮助 - - HTTP 错误: %s - 服务器缺少功能: %s - I/O 错误: %s - URI 无效: %s - - - 管理同步账户 - - 感谢您在 Google Play 上购买 DAVdroid 支持本项目。然而 Google Play 版应用有两个问题:

- -

1. 账户可能在重启后消失

-

您可能会遇到以下问题:您所有的 DAVdroid 同步账户(包括通讯录和日历)在设备重启后消失。这是由于 Android 系统的一个 BUG,开机时,在检查完孤立账户后才会载入(加密的)程序文件,从而导致了付费应用创建的账户被移除。

-

受影响的用户:
- * 从 Play 商店安装 DAVdroid 的所有 Android 4.1 用户;
- * 从 Play 商店安装 DAVdroid 的部分设备(如大部分的三星设备)的 Android 4.2 用户。

- -

2. 账户可能会在升级 DAVdroid 后消失

-

您可能会遇到以下问题:您所有的 DAVdroid 同步账户(包括通讯录和日历)在使用 Play 商店升级 DAVdroid 后消失。这是 Android 系统的另一个 BUG,由于相似的原因,使得在升级应用后,付费应用创建的账户被移除。

-

受影响的用户:从 Play 商店安装 DAVdroid 的部分 Android 4.4.2 用户(如 Nexus 设备和 Moto G)。

- -

如果您遇到了这些问题,请安装 - DAVdroid JB 修复程序

- ]]>
- 欢迎使用 DAVdroid/%s! - -

DAVdroid 是一个 Android 4+ 的 CalDAV/CardDAV 同步程序。开始使用本程序,只需增加一个 DAVdroid 账户,在其中设置 CalDAV/CardDAV 服务器,您的通讯录和日程就可以被双向同步了。

- -

更多信息请查阅 DAVdroid 英文主页,其中包括首次使用的配置指南。DAVdroid 尊重您的隐私,请查阅我们的隐私政策

- -

如果您使用 CyanogenMod 等修改版系统,请停用针对 DAVdroid 的“隐私防护”功能,否则 DAVdroid 无法访问、同步您的通讯录和日程。

- -

如果您在使用中遇到问题,请先阅读 FAQ。如果您遇到了明显与 DAVdroid 有关的 BUG,请在 Github issues 上提交,不要直接联系我们,甚至给应用差评。

- -

开源

-

DAVdroid 从一开始就是开源项目。您可以自己编译应用,并可以没有限制地免费使用。源代码 - 存放在 Github 上,您也可以 - 在 F-droid 上下载应用

- -

然而,编写这个应用是一个大工程,所以我们已经决定把它作为付费应用放在应用商店上,收一笔小费。 - 如果您想支持这个项目,请考虑 给 DAVdroid 捐款 或购买其付费版。

- -

许可

-

Copyright (c) 2013 – 2014 Ricki Hirner (bitfire web engineering). All rights reserved. - This program and the accompanying materials are made available under the terms of the GNU Public License v3.0 which - accompanies this distribution, and is available at http://www.gnu.org/licenses/gpl.html. As far as Google Play, Samsung - Store, AndroidPit App Center or Amazon Appstore require other terms, the respective terms apply for versions - that are downloaded via these services.

- -

Translation for German is provided by the authors. Translation for Chinese Simplified is by @phy25. Translations to other languages have been contributed by - various people which are mentioned in their respective language version.

- -

使用的第三方程序库

-

- * Apache HttpClient (httpclientandroidlib flavour) – Apache License, Version 2.0
- * iCal4jNew BSD License)
- * ez-vcardNew BSD License
- * Simple XML SerializationApache License, Version 2.0
- * Project LombokMIT License
- * dnsjavaBSD License

- ]]>
- - - 使用邮箱地址登录 - 服务器信息会通过域名进行发现。例如: myaccount@icloud.com - 使用 URL 和用户名登录 - 服务器信息会通过 URL 和用户名进行发现。个人搭建的服务通常使用此项。 - - 请输入您的邮箱地址。邮箱的域名会被用来自动发现服务器信息。 - Email: - - - http:// - https:// - - "如果不使用加密连接 (HTTPS),其他人将很容易获取到你的登录信息、通讯录和日程。" - 用户名: - 服务器根地址(集合会自动检测): - 抢先认证模式(推荐使用,但不兼容 Digest 认证方式) - - 密码: - - DAVdroid: 选择同步项 - 找不到可用的 CalDAV-/CardDAV 服务。 - 增加账户 - 正在请求,请稍等… - 需要同步哪些集合? - 通讯录 - 通讯录 - 日历 - 日历 - 最多选择一个通讯录:(再次点按可取消选择) - 选择日历: - - 账户信息 - 账户显示名: - 我的 CalDAV/CardDAV 账户 - Email 地址: - "日程的组织者 (ORGANIZER);如果您使用参与者信息,则必填" - "请使用您的 E-mail 地址作为账户名,因为 Android 会将帐户名用于您创建的日程的参与者 (ORGANIZER) 项。您不能有两个重名的账户。 - 只读 - - - 普通设置 - 调试设置 - 停用 HTTP 压缩 - HTTP 压缩已停用(调试模式) - HTTP 压缩会在可用时使用 - 记录网络传输 - 传输内容会被日志记录(调试模式) - 传输内容不会被日志记录 - 报告问题 - -
diff --git a/res/values/strings.xml b/res/values/strings.xml deleted file mode 100644 index 91a64e75..00000000 --- a/res/values/strings.xml +++ /dev/null @@ -1,140 +0,0 @@ - - - - - DAVdroid - - DAVdroid Web site - Next - Help - - HTTP error: %s - Missing capabilities: %s - I/O error: %s - Invalid URI: %s - - - Manage sync accounts - - Thank you for buying DAVdroid via Google Play and thus supporting the project. Unfortunately, there are two issues with Google Play:

- -

1. Accounts may be gone after a reboot

-

You may encounter the problem that all your DAVdroid accounts (including contacts and events) are gone - after rebooting your device. The reason is a bug in Android - that causes accounts of paid apps to be removed on start-up because the (encrypted) APK files are - loaded after checking for orphaned accounts.

-

Affected users:
- * all Android 4.1 users who have got DAVdroid from Play Store;
- * Android 4.2 users who have got DAVdroid from Play Store only with certain devices (for instance, most Samsung devices)

- -

2. Accounts may be gone after upgrading DAVdroid

-

You may encounter the problem that all your DAVdroid accounts (including contacts and events) when Play Store - updates DAVdroid. The reason is another bug in Android - that causes accounts of paid apps to be removed when upgrading for a similar reason.

-

Affected users: some Android 4.4.2 users who have got DAVdroid from Play Store (known for Nexus devices and Moto G)

- -

If you\'re affected by one of these bugs, please install the - DAVdroid JB Workaround.

- ]]>
- Welcome to DAVdroid/%s! - -

DAVdroid is an Android 4+ sync adapter for CalDAV/CardDAV. To use it, just add a DAVdroid account - for your CalDAV/CardDAV server and your contacts/events will be synchronized in both directions.

- -

For more information, please see the DAVdroid homepage. - There\'s a Setup guide, too. DAVdroid respects - your privacy, see our Privacy Policy.

- -

If you use CyanogenMod, "Privacy Guard" must be disabled for DAVdroid. Otherwise, DAVdroid is not allowed to access - and synchronize your contacts and events.

- -

In case of problems, please read the FAQ first. - If you encounter a bug that is clearly related to DAVdroid, enter it on - Github issues instead of contacting us directly or giving a poor - rating for the app.

- -

Open-source

-

DAVdroid is designed to be an open-source project from the very first beginning. It is always possible to compile the - app yourself and use it for free without any obligations. The source code is - available on Github, and you can - download the app on F-droid.

- -

However, it was much work to create this app, so we have decided to put it into the commercial stores for a small fee. - If you want to support this project, please consider donating to DAVdroid - or purchasing it.

- -

License

-

Copyright (c) 2013 – 2014 Ricki Hirner, Bernhard Stockmann (bitfire web engineering). All rights reserved. - This program and the accompanying materials are made available under the terms of the GNU Public License v3.0 which - accompanies this distribution, and is available at http://www.gnu.org/licenses/gpl.html. As far as Google Play, Samsung - Store, AndroidPit App Center or Amazon Appstore require other terms, the respective terms apply for versions - that are downloaded via these services.

- -

Translation for German is provided by the authors. Translations to other languages have been contributed by - various people which are mentioned in their respective language version.

- -

Used third-party libraries

-

- * Apache HttpClient (httpclientandroidlib flavour) – Apache License, Version 2.0
- * iCal4jNew BSD License)
- * ez-vcardNew BSD License
- * Simple XML SerializationApache License, Version 2.0
- * Project LombokMIT License
- * dnsjavaBSD License

- ]]>
- - - Login with email address - Service details will be auto-detected by domain name. Example: myaccount@icloud.com - Login with URL and user name - Service details will be auto-detected by initial URL and user name. Mostly used for self-hosted services. - - Please enter your email address. Its domain name will be used to auto-detect service settings. - Email: - - - http:// - https:// - - "If you don't use encryption (HTTPS), other people may easily intercept your login details, contacts and events." - User name: - Base URL (collections will be auto-detected): - Preemptive authentication (recommended, but incompatible with Digest auth) - - Password: - - DAVdroid: Select collections - No CalDAV-/CardDAV service is available at this location. - Add account - Querying server. Please wait… - Which collections shall be synchronized? - Address books - Address book - Calendars - Calendar - Select up to one address book (tap again to unselect): - Select your calendars: - - Account details - Account name: - My CalDAV/CardDAV Account - Email address: - "ORGANIZER of your events; required if you use attendee info" - "Use your email address as account name because Android will use the account name as ORGANIZER field for events you create. You can't have two accounts with the same name. - read-only - - - General settings - Debug settings - Disable HTTP compression - HTTP compression is disabled (debug mode) - HTTP compression is used whenever possible - Log network traffic - All network traffic is being logged verbosely (debug mode) - Network traffic is not being logged - Report an issue - -
diff --git a/res/values/styles.xml b/res/values/styles.xml deleted file mode 100644 index a9661327..00000000 --- a/res/values/styles.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/res/xml/account_authenticator.xml b/res/xml/account_authenticator.xml deleted file mode 100644 index 542950e6..00000000 --- a/res/xml/account_authenticator.xml +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/res/xml/account_prefs.xml b/res/xml/account_prefs.xml deleted file mode 100644 index 7648e8ac..00000000 --- a/res/xml/account_prefs.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/res/xml/contacts.xml b/res/xml/contacts.xml deleted file mode 100644 index 10d6eb36..00000000 --- a/res/xml/contacts.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/res/xml/general_settings.xml b/res/xml/general_settings.xml deleted file mode 100644 index be95c323..00000000 --- a/res/xml/general_settings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/res/xml/sync_calendars.xml b/res/xml/sync_calendars.xml deleted file mode 100644 index d2ac9b79..00000000 --- a/res/xml/sync_calendars.xml +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/res/xml/sync_contacts.xml b/res/xml/sync_contacts.xml deleted file mode 100644 index 3a35ac92..00000000 --- a/res/xml/sync_contacts.xml +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/settings.gradle b/settings.gradle index e7b4def4..874f90b7 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1,9 @@ +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Public License v3.0 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/gpl.html + */ + include ':app' From 12cb0ff8fe6915690a5b60c6b8ad7d6410ad6c2f Mon Sep 17 00:00:00 2001 From: phy25 Date: Mon, 9 Mar 2015 20:28:52 +0800 Subject: [PATCH 03/11] Translations in zh-rcn for v0.7. --- app/src/main/res/values-zh-rcn/strings.xml | 65 +++++++++++++++++----- 1 file changed, 52 insertions(+), 13 deletions(-) diff --git a/app/src/main/res/values-zh-rcn/strings.xml b/app/src/main/res/values-zh-rcn/strings.xml index 827161b1..12b661ed 100644 --- a/app/src/main/res/values-zh-rcn/strings.xml +++ b/app/src/main/res/values-zh-rcn/strings.xml @@ -11,11 +11,10 @@ DAVdroid - - DAVdroid 网站 继续 帮助 - + + 证书路径中出现不信任的证书,更多信息请查看帮助 HTTP 错误: %s 服务器缺少功能: %s I/O 错误: %s @@ -28,7 +27,7 @@

感谢您在 Google Play 上购买 DAVdroid 支持本项目。然而 Google Play 版应用有两个问题:

1. 账户可能在重启后消失

-

您可能会遇到以下问题:您所有的 DAVdroid 同步账户(包括通讯录和日历)在设备重启后消失。这是由于 Android 系统的一个 BUG,开机时,在检查完孤立账户后才会载入(加密的)程序文件,从而导致了付费应用创建的账户被移除。

+

您可能会遇到以下问题:您所有的 DAVdroid 同步账户(包括通讯录和日历)在设备重启后消失。这是由于 Android 系统的一个 BUG,开机时,系统先检查账户是否有效,再加载加密的程序,从而导致了付费应用创建的账户被移除。

受影响的用户:
* 从 Play 商店安装 DAVdroid 的所有 Android 4.1 用户;
* 从 Play 商店安装 DAVdroid 的部分设备(如大部分的三星设备)的 Android 4.2 用户。

@@ -60,11 +59,11 @@ 如果您想支持这个项目,请考虑 给 DAVdroid 捐款 或购买其付费版。

许可

-

Copyright (c) 2013 – 2014 Ricki Hirner (bitfire web engineering). All rights reserved. +

Copyright (c) 2013 – 2015 Ricki Hirner, Bernhard Stockmann (bitfire web engineering). All rights reserved. This program and the accompanying materials are made available under the terms of the GNU Public License v3.0 which accompanies this distribution, and is available at http://www.gnu.org/licenses/gpl.html. As far as Google Play, Samsung - Store, AndroidPit App Center or Amazon Appstore require other terms, the respective terms apply for versions + Store or Amazon Appstore require other terms, the respective terms apply for versions that are downloaded via these services.

Translation for German is provided by the authors. Translation for Chinese Simplified is by @phy25. Translations to other languages have been contributed by @@ -82,11 +81,11 @@ 使用邮箱地址登录 - 服务器信息会通过域名进行发现。例如: myaccount@icloud.com + 服务器连接信息由域名本身提供。例如: myaccount@icloud.com 使用 URL 和用户名登录 - 服务器信息会通过 URL 和用户名进行发现。个人搭建的服务通常使用此项。 + 服务器连接通过 URL 和用户名进行。个人搭建的服务通常使用此项。 - 请输入您的邮箱地址。邮箱的域名会被用来自动发现服务器信息。 + 请输入您的邮箱地址。邮箱的域名会被用来自动连接服务器。 Email: @@ -96,14 +95,52 @@ "如果不使用加密连接 (HTTPS),其他人将很容易获取到你的登录信息、通讯录和日程。" 用户名: 服务器根地址(集合会自动检测): - 抢先认证模式(推荐使用,但不兼容 Digest 认证方式) + 强制认证模式(推荐使用,但不兼容 Digest 认证方式) 密码: - + + 设置 + 找不到 DAVdroid 账户 + 认证 + 用户名 + 输入用户名 + 密码 + 点按以修改密码 + 输入密码 + 强制认证模式 + 认证信息在每次请求中发送(推荐) + 认证信息在服务器要求后才发送 + 同步 + 通讯录自动同步间隔 + 手动同步 + 每 %d 分钟或本地修改后 + 不可用 + 日历自动同步间隔 + + -1 + 300 + 600 + 900 + 3600 + 7200 + 14400 + 86400 + + + 手动同步 + 每 5 分钟 + 每 10 分钟 + 每 15 分钟 + 每 1 小时 + 每 2 小时 + 每 4 小时 + 每 24 小时 + + DAVdroid: 选择同步项 - 找不到可用的 CalDAV-/CardDAV 服务。 + 找不到可用的 CalDAV/CardDAV 服务。 增加账户 - 正在请求,请稍等… + 正在尝试,请稍等… 需要同步哪些集合? 通讯录 日历 @@ -118,4 +155,6 @@ "请使用您的 E-mail 地址作为账户名,因为 Android 会将帐户名用于您创建的日程的参与者 (ORGANIZER) 项。您不能有两个重名的账户。 只读 + 同步失败 + From d98a9d36733edc4affbd4e6d6152c86a2337aef4 Mon Sep 17 00:00:00 2001 From: Jaroslav Lichtblau Date: Mon, 9 Mar 2015 16:34:06 +0100 Subject: [PATCH 04/11] Czech translation update for v0.7 --- app/src/main/res/values-cs/strings.xml | 99 +++++++++++++++++--------- 1 file changed, 67 insertions(+), 32 deletions(-) diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 3159c144..b86d0ce5 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -11,11 +11,10 @@ DAVdroid - - Webová stránka DAVdroid Další Pomoc - + + Nedůvěryhodný certifikát ve vybrané cestě. Pro více informací přečtěte FAQ. HTTP chyba: %s Chybějící možnosti: %s I/O chyba: %s @@ -23,7 +22,7 @@ Spravovat synchronizované účty - + Thank you for buying DAVdroid via Google Play and thus supporting the project. Unfortunately, there are two issues with Google Play:

@@ -45,24 +44,22 @@

If you\'re affected by one of these bugs, please install the DAVdroid JB Workaround.

]]> - Vítejte do aplikace DAVdroid/%s! - -

DAVdroid je aplikace pro Android 4+ na synchronizaci CalDAV/CardDAV účtů. Stačí přidat účet DAVdroid - pro CalDAV/CardDAV server a vaše kontakty/události budou synchronizovány oběma směry.

- -

Pro více informací se podívejte na domovskou stránku aplikace DAVdroid. - Najdete tam i návod pro nastavení. DAVdroid respektuje - vaše soukromí, přečtěte si naši Privacy Policy.

- -

If you use CyanogenMod, "Privacy Guard" must be disabled for DAVdroid. Otherwise, DAVdroid is not allowed to access - and synchronize your contacts and events.

- -

In case of problems, please read the FAQ first. - If you encounter a bug that is clearly related to DAVdroid, enter it on - Github issues instead of contacting us directly or giving a poor - rating for the app.

- + Vítejte do aplikace DAVdroid/%s! + +

DAVdroid je aplikace pro Android 4+ na synchronizaci CalDAV/CardDAV účtů. Stačí přidat účet DAVdroid + pro CalDAV/CardDAV server a vaše kontakty/události budou synchronizovány oběma směry.

+ +

Pro více informací se podívejte na domovskou stránku aplikace DAVdroid. + Najdete tam i návod pro nastavení. DAVdroid respektuje + vaše soukromí, přečtěte si naši Privacy Policy.

+ +

Pokud používáte CyanogenMod, "Privacy Guard" musí být pro DAVdroid vypnut. Jinak nebude DAVdroid moci přistupovat ke kontaktům + a událostem a synchronizovat je.

+ +

V případě jakýchkoliv problémů si prosím nejdříve přečtěte FAQ. + Pokud narazíte na chybu v aplikaci DAVdroid, nahlaste ji na portálu + Github místo přímého kontaktování vývojářů nebo vyplnění špatného hodnocení.

+

Open-source

DAVdroid is designed to be an open-source project from the very first beginning. It is always possible to compile the app yourself and use it for free without any obligations. The source code is @@ -81,9 +78,7 @@ Store, AndroidPit App Center or Amazon Appstore require other terms, the respective terms apply for versions that are downloaded via these services.

-

Překlad. - Čeština: Jaroslav Lichtblau -

+

Čeština: Jaroslav Lichtblau

Použité knihovny třetích stran

@@ -97,7 +92,7 @@ Přihlášení s emailovou adresou - Detaily účtu budou automaticky detekovány podle doménového jména. Příkald: mujucet@icloud.com + Detaily účtu budou automaticky rozpoznány podle doménového jména. Příklad: mujucet@icloud.com Přihlášení s URL a uživatelským jménem Detaily účtu budou automaticky rozpoznány podle URL a uživatelského jména. Nejčastější volba pro vlastní servery. @@ -114,16 +109,54 @@ Preemptivní ověření (doporučeno, ale není kompatibilní s Digest ověřením) Heslo: - + + Nastavení + Nebyl nalezen účet DAVdroid + Ověření + Uživatelské jméno + Zadat uživatelské jméno + Heslo + Aktualizovat heslo dle svého serveru. + Vložit své heslo: + Preemptivní ověření + Přihlašovací údaje jsou zasílány s každým požadavkem (doporučeno) + Přihlašovací údaje jsou zasílány po vyžádání serverem + Synchronizace + Interval synchronizace kontaktů + Pouze manuálně + Každých %d minut a ihned při lokálních změnách + Nedostupný + Interval synchronizace kalendáře + + -1 + 300 + 600 + 900 + 3600 + 7200 + 14400 + 86400 + + + Pouze manuálně + Každých 5 minut + Každých 10 minut + Každých 15 minut + Každou hodinu + Každé 2 hodiny + Každé 4 hodiny + Jednou za den + + DAVdroid: Vybrat sbírky - V tomto umístění není CalDAV-/CardDAV služba dostupná. + V tomto umístění není služba Cal-/CardDAV dostupná. Přidat účet - Probíhá komunikace se serverem. Chvilku strpení… + Dotazování serveru. Chvíli strpení… Které sbírky mají být synchronizovány? Adresáře Kalendáře - Vybrat alespoň jeden adresář (opakovaně tapnout pro odebrání): - Vybrat své kalendáře: + Vybrat nejvýše jeden adresář (opakovaně tapnout pro odebrání): + Vyberte své kalendáře: Detaily účtu Jméno účtu: @@ -133,4 +166,6 @@ "Použijte svou emailovou adresu jako jméno účtu. Android bude používat tuto hodnotu jako jméno ORGANIZÁTORA událostí které vytvoříte. Nelze mít dva účty se stejným jménem. pouze pro čtení - + Synchronizace selhala + + \ No newline at end of file From 986213dda5e7319c654ba136f16c3ee36765654d Mon Sep 17 00:00:00 2001 From: Ricki Hirner Date: Wed, 11 Mar 2015 14:01:43 +0100 Subject: [PATCH 05/11] Fix Settings rendering issues * fix Settings rendering issues (fixes #459) * version bump to 0.7.1 --- app/src/androidTest/assets/reference.vcf | 2 +- .../at/bitfire/davdroid/TestConstants.java | 2 +- app/src/main/AndroidManifest.xml | 8 +- .../java/at/bitfire/davdroid/Constants.java | 2 +- .../at/bitfire/davdroid/MainActivity.java | 2 +- .../davdroid/syncadapter/AccountSettings.java | 6 +- .../syncadapter/SettingsActivity.java | 73 ------------------- .../davdroid/ui/settings/AccountActivity.java | 43 +++++++++++ .../settings/AccountFragment.java} | 16 ++-- .../ui/settings/SettingsActivity.java | 57 +++++++++++++++ .../settings}/SettingsScopeFragment.java | 11 ++- ...ity_settings.xml => settings_activity.xml} | 4 +- ...ings.xml => settings_account_activity.xml} | 10 +-- ...ttings_scope.xml => settings_activity.xml} | 10 +-- ...t_prefs.xml => settings_account_prefs.xml} | 0 15 files changed, 139 insertions(+), 107 deletions(-) delete mode 100644 app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsActivity.java create mode 100644 app/src/main/java/at/bitfire/davdroid/ui/settings/AccountActivity.java rename app/src/main/java/at/bitfire/davdroid/{syncadapter/SettingsAccountFragment.java => ui/settings/AccountFragment.java} (91%) create mode 100644 app/src/main/java/at/bitfire/davdroid/ui/settings/SettingsActivity.java rename app/src/main/java/at/bitfire/davdroid/{syncadapter => ui/settings}/SettingsScopeFragment.java (81%) rename app/src/main/res/layout-sw720dp/{activity_settings.xml => settings_activity.xml} (89%) rename app/src/main/res/layout/{activity_settings.xml => settings_account_activity.xml} (68%) rename app/src/main/res/layout/{settings_scope.xml => settings_activity.xml} (60%) rename app/src/main/res/xml/{account_prefs.xml => settings_account_prefs.xml} (100%) diff --git a/app/src/androidTest/assets/reference.vcf b/app/src/androidTest/assets/reference.vcf index 401d0791..cfa7759f 100644 --- a/app/src/androidTest/assets/reference.vcf +++ b/app/src/androidTest/assets/reference.vcf @@ -4,7 +4,7 @@ N:Gump;Forrest;Mr. FN:Forrest Gump ORG:Bubba Gump Shrimp Co. TITLE:Shrimp Man -PHOTO;VALUE=URL;TYPE=PNG:http://10.0.0.11:3000/assets/davdroid-logo-192.png +PHOTO;VALUE=URL;TYPE=PNG:http://192.168.0.11:3000/assets/davdroid-logo-192.png TEL;TYPE=WORK,VOICE:(111) 555-1212 TEL;TYPE=HOME,VOICE:(404) 555-1212 ADR;TYPE=WORK:;;100 Waters Edge;Baytown;LA;30314;United States of America diff --git a/app/src/androidTest/java/at/bitfire/davdroid/TestConstants.java b/app/src/androidTest/java/at/bitfire/davdroid/TestConstants.java index 0f7cb842..bb2f4fdb 100644 --- a/app/src/androidTest/java/at/bitfire/davdroid/TestConstants.java +++ b/app/src/androidTest/java/at/bitfire/davdroid/TestConstants.java @@ -14,7 +14,7 @@ import java.net.URISyntaxException; import android.util.Log; public class TestConstants { - public static final String ROBOHYDRA_BASE = "http://10.0.0.11:3000/"; + public static final String ROBOHYDRA_BASE = "http://192.168.0.11:3000/"; public static URI roboHydra; static { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d8cf83a6..2099a5b9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,7 +9,7 @@ + + diff --git a/app/src/main/java/at/bitfire/davdroid/Constants.java b/app/src/main/java/at/bitfire/davdroid/Constants.java index 320089d3..a84d5789 100644 --- a/app/src/main/java/at/bitfire/davdroid/Constants.java +++ b/app/src/main/java/at/bitfire/davdroid/Constants.java @@ -9,7 +9,7 @@ package at.bitfire.davdroid; public class Constants { public static final String - APP_VERSION = "0.7", + APP_VERSION = "0.7.1", ACCOUNT_TYPE = "bitfire.at.davdroid", WEB_URL_HELP = "https://davdroid.bitfire.at/configuration?pk_campaign=davdroid-app", WEB_URL_VIEW_LOGS = "https://github.com/bitfireAT/davdroid/wiki/How-to-view-the-logs"; diff --git a/app/src/main/java/at/bitfire/davdroid/MainActivity.java b/app/src/main/java/at/bitfire/davdroid/MainActivity.java index c5524280..d64221f4 100644 --- a/app/src/main/java/at/bitfire/davdroid/MainActivity.java +++ b/app/src/main/java/at/bitfire/davdroid/MainActivity.java @@ -21,7 +21,7 @@ import android.view.View; import android.widget.TextView; import at.bitfire.davdroid.syncadapter.AddAccountActivity; -import at.bitfire.davdroid.syncadapter.SettingsActivity; +import at.bitfire.davdroid.ui.settings.SettingsActivity; public class MainActivity extends Activity { diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/AccountSettings.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/AccountSettings.java index 2636242b..99e38fdd 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/AccountSettings.java +++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/AccountSettings.java @@ -89,15 +89,15 @@ public class AccountSettings { public String getUserName() { return accountManager.getUserData(account, KEY_USERNAME); } - void setUserName(String userName) { accountManager.setUserData(account, KEY_USERNAME, userName); } + public void setUserName(String userName) { accountManager.setUserData(account, KEY_USERNAME, userName); } public String getPassword() { return accountManager.getPassword(account); } - void setPassword(String password) { accountManager.setPassword(account, password); } + public void setPassword(String password) { accountManager.setPassword(account, password); } public boolean getPreemptiveAuth() { return Boolean.parseBoolean(accountManager.getUserData(account, KEY_AUTH_PREEMPTIVE)); } - void setPreemptiveAuth(boolean preemptive) { accountManager.setUserData(account, KEY_AUTH_PREEMPTIVE, Boolean.toString(preemptive)); } + public void setPreemptiveAuth(boolean preemptive) { accountManager.setUserData(account, KEY_AUTH_PREEMPTIVE, Boolean.toString(preemptive)); } // sync. settings diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsActivity.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsActivity.java deleted file mode 100644 index cf2d8979..00000000 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsActivity.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the GNU Public License v3.0 - * which accompanies this distribution, and is available at - * http://www.gnu.org/licenses/gpl.html - */ - -package at.bitfire.davdroid.syncadapter; - -import android.accounts.Account; -import android.app.Activity; -import android.app.Fragment; -import android.app.FragmentManager; -import android.app.FragmentTransaction; -import android.os.Bundle; -import android.util.Log; - -import at.bitfire.davdroid.R; - -public class SettingsActivity extends Activity { - private final static String KEY_SELECTED_ACCOUNT = "selected_account"; - - protected Account selectedAccount; - boolean tabletLayout; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - setContentView(R.layout.activity_settings); - - tabletLayout = findViewById(R.id.right_pane) != null; - if (!tabletLayout) - getFragmentManager().beginTransaction() - .add(R.id.content_pane, new SettingsScopeFragment()) - .commit(); - - if (savedInstanceState != null) { - selectedAccount = savedInstanceState.getParcelable(KEY_SELECTED_ACCOUNT); - if (selectedAccount != null) - showAccountSettings(selectedAccount); - } - } - - @Override - protected void onSaveInstanceState(Bundle outState) { - outState.putParcelable(KEY_SELECTED_ACCOUNT, selectedAccount); - super.onSaveInstanceState(outState); - } - - void showAccountSettings(Account account) { - selectedAccount = account; - - FragmentManager fm = getFragmentManager(); - Fragment settingsFragment = new SettingsAccountFragment(); - Bundle args = new Bundle(); - args.putParcelable(SettingsAccountFragment.KEY_ACCOUNT, account); - settingsFragment.setArguments(args); - - FragmentTransaction ft = fm - .beginTransaction() - .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); - - if (tabletLayout) - ft .replace(R.id.right_pane, settingsFragment); - else // phone layout - ft .replace(R.id.content_pane, settingsFragment) - .addToBackStack(null); - - ft.commit(); - } -} diff --git a/app/src/main/java/at/bitfire/davdroid/ui/settings/AccountActivity.java b/app/src/main/java/at/bitfire/davdroid/ui/settings/AccountActivity.java new file mode 100644 index 00000000..d31f2022 --- /dev/null +++ b/app/src/main/java/at/bitfire/davdroid/ui/settings/AccountActivity.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Public License v3.0 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/gpl.html + */ + +package at.bitfire.davdroid.ui.settings; + +import android.accounts.Account; +import android.app.Activity; +import android.app.FragmentManager; +import android.os.Bundle; +import android.util.Log; + +import at.bitfire.davdroid.R; + +public class AccountActivity extends Activity { + static final String EXTRA_ACCOUNT = "account"; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setContentView(R.layout.settings_account_activity); + + final FragmentManager fm = getFragmentManager(); + + AccountFragment fragment = (AccountFragment)fm.findFragmentById(R.id.account_fragment); + if (fragment == null) { + fragment = new AccountFragment(); + final Bundle args = new Bundle(1); + Account account = getIntent().getExtras().getParcelable(EXTRA_ACCOUNT); + args.putParcelable(AccountFragment.ARG_ACCOUNT, account); + fragment.setArguments(args); + + getFragmentManager().beginTransaction() + .add(R.id.account_fragment, fragment) + .commit(); + } + } +} diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsAccountFragment.java b/app/src/main/java/at/bitfire/davdroid/ui/settings/AccountFragment.java similarity index 91% rename from app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsAccountFragment.java rename to app/src/main/java/at/bitfire/davdroid/ui/settings/AccountFragment.java index 685aef04..cbaba0ff 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsAccountFragment.java +++ b/app/src/main/java/at/bitfire/davdroid/ui/settings/AccountFragment.java @@ -6,11 +6,9 @@ * http://www.gnu.org/licenses/gpl.html */ -package at.bitfire.davdroid.syncadapter; +package at.bitfire.davdroid.ui.settings; import android.accounts.Account; -import android.accounts.AccountManager; -import android.content.SharedPreferences; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.EditTextPreference; @@ -19,19 +17,21 @@ import android.preference.Preference; import android.preference.PreferenceFragment; import at.bitfire.davdroid.R; +import at.bitfire.davdroid.syncadapter.AccountSettings; +import lombok.Setter; -public class SettingsAccountFragment extends PreferenceFragment { - final static String KEY_ACCOUNT = "account"; +public class AccountFragment extends PreferenceFragment { + final static String ARG_ACCOUNT = "account"; - protected Account account; + Account account; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.account_prefs); + addPreferencesFromResource(R.xml.settings_account_prefs); - account = getArguments().getParcelable(KEY_ACCOUNT); + account = getArguments().getParcelable(ARG_ACCOUNT); readFromAccount(); } diff --git a/app/src/main/java/at/bitfire/davdroid/ui/settings/SettingsActivity.java b/app/src/main/java/at/bitfire/davdroid/ui/settings/SettingsActivity.java new file mode 100644 index 00000000..1c333854 --- /dev/null +++ b/app/src/main/java/at/bitfire/davdroid/ui/settings/SettingsActivity.java @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2013 – 2015 Ricki Hirner (bitfire web engineering). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Public License v3.0 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/gpl.html + */ + +package at.bitfire.davdroid.ui.settings; + +import android.accounts.Account; +import android.app.Activity; +import android.app.FragmentTransaction; +import android.app.ListFragment; +import android.content.Intent; +import android.os.Bundle; +import android.widget.ListView; + +import at.bitfire.davdroid.R; + +public class SettingsActivity extends Activity { + private final static String KEY_SELECTED_ACCOUNT = "selected_account"; + + boolean tabletLayout; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setContentView(R.layout.settings_activity); + + tabletLayout = findViewById(R.id.right_pane) != null; + if (tabletLayout) { + SettingsScopeFragment scope = (SettingsScopeFragment)getFragmentManager().findFragmentById(R.id.settings_scope); + scope.setLayout(true); + } + } + + void showAccountSettings(Account account) { + if (tabletLayout) { + AccountFragment fragment = new AccountFragment(); + + Bundle args = new Bundle(1); + args.putParcelable(AccountFragment.ARG_ACCOUNT, account); + fragment.setArguments(args); + + getFragmentManager().beginTransaction() + .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) + .replace(R.id.right_pane, fragment) + .commit(); + } else { // phone layout + Intent intent = new Intent(getApplicationContext(), AccountActivity.class); + intent.putExtra(AccountActivity.EXTRA_ACCOUNT, account); + startActivity(intent); + } + } +} diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsScopeFragment.java b/app/src/main/java/at/bitfire/davdroid/ui/settings/SettingsScopeFragment.java similarity index 81% rename from app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsScopeFragment.java rename to app/src/main/java/at/bitfire/davdroid/ui/settings/SettingsScopeFragment.java index 0686374c..f43c556f 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/SettingsScopeFragment.java +++ b/app/src/main/java/at/bitfire/davdroid/ui/settings/SettingsScopeFragment.java @@ -6,7 +6,7 @@ * http://www.gnu.org/licenses/gpl.html */ -package at.bitfire.davdroid.syncadapter; +package at.bitfire.davdroid.ui.settings; import android.accounts.Account; import android.accounts.AccountManager; @@ -26,17 +26,22 @@ public class SettingsScopeFragment extends ListFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - final AccountManager manager = AccountManager.get(this.getActivity()); + final AccountManager manager = AccountManager.get(getActivity()); accounts = manager.getAccountsByType(Constants.ACCOUNT_TYPE); final String[] accountNames = new String[accounts.length]; for (int i = 0; i < accounts.length; i++) accountNames[i] = accounts[i].name; - setListAdapter(new ArrayAdapter(this.getActivity(), android.R.layout.simple_list_item_activated_1, accountNames)); + setListAdapter(new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_activated_1, accountNames)); return super.onCreateView(inflater, container, savedInstanceState); } + public void setLayout(boolean tabletLayout) { + if (tabletLayout) + getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); + } + @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); diff --git a/app/src/main/res/layout-sw720dp/activity_settings.xml b/app/src/main/res/layout-sw720dp/settings_activity.xml similarity index 89% rename from app/src/main/res/layout-sw720dp/activity_settings.xml rename to app/src/main/res/layout-sw720dp/settings_activity.xml index 1cf7aa2b..d1f63173 100644 --- a/app/src/main/res/layout-sw720dp/activity_settings.xml +++ b/app/src/main/res/layout-sw720dp/settings_activity.xml @@ -16,8 +16,8 @@ + android:id="@+id/settings_scope" + android:name="at.bitfire.davdroid.ui.settings.SettingsScopeFragment" /> - - \ No newline at end of file + android:layout_width="match_parent" + android:layout_height="match_parent" + android:id="@+id/account_fragment" /> diff --git a/app/src/main/res/layout/settings_scope.xml b/app/src/main/res/layout/settings_activity.xml similarity index 60% rename from app/src/main/res/layout/settings_scope.xml rename to app/src/main/res/layout/settings_activity.xml index a749e777..4423b86e 100644 --- a/app/src/main/res/layout/settings_scope.xml +++ b/app/src/main/res/layout/settings_activity.xml @@ -7,8 +7,8 @@ ~ http://www.gnu.org/licenses/gpl.html --> - + diff --git a/app/src/main/res/xml/account_prefs.xml b/app/src/main/res/xml/settings_account_prefs.xml similarity index 100% rename from app/src/main/res/xml/account_prefs.xml rename to app/src/main/res/xml/settings_account_prefs.xml From 38a4f3f53c1220f542cf85c5bad108460865ae4f Mon Sep 17 00:00:00 2001 From: Ricki Hirner Date: Wed, 11 Mar 2015 14:34:13 +0100 Subject: [PATCH 06/11] Minor UI changes * always notify user on SSL/TLS exceptions (closes #447) * re-organize UI classes to separate ui package * re-organize layout and menu resources * make MANAGE_NETWORK_USAGE intent filter work --- app/src/main/AndroidManifest.xml | 5 ++-- .../AccountAuthenticatorService.java | 2 ++ .../davdroid/syncadapter/DavSyncAdapter.java | 25 +++++++++++++------ .../davdroid/{ => ui}/MainActivity.java | 8 +++--- .../davdroid/ui/settings/AccountActivity.java | 2 +- .../setup}/AccountDetailsFragment.java | 7 +++--- .../setup}/AddAccountActivity.java | 8 +++--- .../setup}/LoginEmailFragment.java | 4 +-- .../setup}/LoginTypeFragment.java | 4 +-- .../setup}/LoginURLFragment.java | 4 +-- .../setup}/QueryServerDialogFragment.java | 4 +-- .../setup}/SelectCollectionsAdapter.java | 7 +++--- .../setup}/SelectCollectionsFragment.java | 4 +-- .../setup}/WebDavResourceAdapter.java | 2 +- .../{activity_main.xml => main_activity.xml} | 0 ..._details.xml => setup_account_details.xml} | 0 ...{add_account.xml => setup_add_account.xml} | 0 ...ng.xml => setup_address_books_heading.xml} | 0 ...eading.xml => setup_calendars_heading.xml} | 0 ...{login_email.xml => setup_login_email.xml} | 0 .../{login_type.xml => setup_login_type.xml} | 0 .../{login_url.xml => setup_login_url.xml} | 0 ...uery_server.xml => setup_query_server.xml} | 0 ...ml => setup_select_collections_header.xml} | 0 ..._details.xml => setup_account_details.xml} | 0 ...{add_account.xml => setup_add_account.xml} | 0 26 files changed, 51 insertions(+), 35 deletions(-) rename app/src/main/java/at/bitfire/davdroid/{ => ui}/MainActivity.java (92%) rename app/src/main/java/at/bitfire/davdroid/{syncadapter => ui/setup}/AccountDetailsFragment.java (95%) rename app/src/main/java/at/bitfire/davdroid/{syncadapter => ui/setup}/AddAccountActivity.java (85%) rename app/src/main/java/at/bitfire/davdroid/{syncadapter => ui/setup}/LoginEmailFragment.java (96%) rename app/src/main/java/at/bitfire/davdroid/{syncadapter => ui/setup}/LoginTypeFragment.java (93%) rename app/src/main/java/at/bitfire/davdroid/{syncadapter => ui/setup}/LoginURLFragment.java (97%) rename app/src/main/java/at/bitfire/davdroid/{syncadapter => ui/setup}/QueryServerDialogFragment.java (97%) rename app/src/main/java/at/bitfire/davdroid/{syncadapter => ui/setup}/SelectCollectionsAdapter.java (95%) rename app/src/main/java/at/bitfire/davdroid/{syncadapter => ui/setup}/SelectCollectionsFragment.java (97%) rename app/src/main/java/at/bitfire/davdroid/{syncadapter => ui/setup}/WebDavResourceAdapter.java (97%) rename app/src/main/res/layout/{activity_main.xml => main_activity.xml} (100%) rename app/src/main/res/layout/{account_details.xml => setup_account_details.xml} (100%) rename app/src/main/res/layout/{add_account.xml => setup_add_account.xml} (100%) rename app/src/main/res/layout/{address_books_heading.xml => setup_address_books_heading.xml} (100%) rename app/src/main/res/layout/{calendars_heading.xml => setup_calendars_heading.xml} (100%) rename app/src/main/res/layout/{login_email.xml => setup_login_email.xml} (100%) rename app/src/main/res/layout/{login_type.xml => setup_login_type.xml} (100%) rename app/src/main/res/layout/{login_url.xml => setup_login_url.xml} (100%) rename app/src/main/res/layout/{query_server.xml => setup_query_server.xml} (100%) rename app/src/main/res/layout/{select_collections_header.xml => setup_select_collections_header.xml} (100%) rename app/src/main/res/menu/{account_details.xml => setup_account_details.xml} (100%) rename app/src/main/res/menu/{add_account.xml => setup_add_account.xml} (100%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2099a5b9..9d2e9a17 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -71,7 +71,7 @@ @@ -79,7 +79,7 @@ + remote collection pairs Map, RemoteCollection> syncCollections = getSyncPairs(account, provider); @@ -142,34 +144,41 @@ public abstract class DavSyncAdapter extends AbstractThreadedSyncAdapter impleme try { for (Map.Entry, RemoteCollection> entry : syncCollections.entrySet()) new SyncManager(entry.getKey(), entry.getValue()).synchronize(extras.containsKey(ContentResolver.SYNC_EXTRAS_MANUAL), syncResult); + } catch (DavException ex) { - exceptionToShow = ex; syncResult.stats.numParseExceptions++; Log.e(TAG, "Invalid DAV response", ex); + exceptionToShow = ex; + } catch (HttpException ex) { if (ex.getCode() == HttpStatus.SC_UNAUTHORIZED) { - exceptionToShow = ex; Log.e(TAG, "HTTP Unauthorized " + ex.getCode(), ex); syncResult.stats.numAuthExceptions++; // hard error - } else if (ex.isClientError()) { + exceptionToShow = ex; + exceptionIntent = new Intent(context, AccountActivity.class); + exceptionIntent.putExtra(AccountActivity.EXTRA_ACCOUNT, account); + } else if (ex.isClientError()) { Log.e(TAG, "Hard HTTP error " + ex.getCode(), ex); syncResult.stats.numParseExceptions++; // hard error + exceptionToShow = ex; } else { Log.w(TAG, "Soft HTTP error " + ex.getCode() + " (Android will try again later)", ex); syncResult.stats.numIoExceptions++; // soft error } } catch (LocalStorageException ex) { - exceptionToShow = ex; syncResult.databaseError = true; // hard error Log.e(TAG, "Local storage (content provider) exception", ex); + exceptionToShow = ex; } catch (IOException ex) { syncResult.stats.numIoExceptions++; // soft error Log.e(TAG, "I/O error (Android will try again later)", ex); + if (ex instanceof SSLException) // always notify on SSL/TLS errors + exceptionToShow = ex; } catch (URISyntaxException ex) { - exceptionToShow = ex; syncResult.stats.numParseExceptions++; // hard error Log.e(TAG, "Invalid URI (file name) syntax", ex); + exceptionToShow = ex; } } finally { // allow httpClient shutdown @@ -178,8 +187,10 @@ public abstract class DavSyncAdapter extends AbstractThreadedSyncAdapter impleme // show sync errors as notification if (exceptionToShow != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { - Intent intentHelp = new Intent(Intent.ACTION_VIEW, Uri.parse(Constants.WEB_URL_VIEW_LOGS)); - PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intentHelp, 0); + if (exceptionIntent == null) + exceptionIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(Constants.WEB_URL_VIEW_LOGS)); + + PendingIntent contentIntent = PendingIntent.getActivity(context, 0, exceptionIntent, 0); Notification.Builder builder = new Notification.Builder(context) .setSmallIcon(R.drawable.ic_launcher) .setPriority(Notification.PRIORITY_LOW) diff --git a/app/src/main/java/at/bitfire/davdroid/MainActivity.java b/app/src/main/java/at/bitfire/davdroid/ui/MainActivity.java similarity index 92% rename from app/src/main/java/at/bitfire/davdroid/MainActivity.java rename to app/src/main/java/at/bitfire/davdroid/ui/MainActivity.java index d64221f4..ae08b4d4 100644 --- a/app/src/main/java/at/bitfire/davdroid/MainActivity.java +++ b/app/src/main/java/at/bitfire/davdroid/ui/MainActivity.java @@ -5,7 +5,7 @@ * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html */ -package at.bitfire.davdroid; +package at.bitfire.davdroid.ui; import android.app.Activity; import android.content.Intent; @@ -20,7 +20,9 @@ import android.view.MenuItem; import android.view.View; import android.widget.TextView; -import at.bitfire.davdroid.syncadapter.AddAccountActivity; +import at.bitfire.davdroid.Constants; +import at.bitfire.davdroid.R; +import at.bitfire.davdroid.ui.setup.AddAccountActivity; import at.bitfire.davdroid.ui.settings.SettingsActivity; public class MainActivity extends Activity { @@ -29,7 +31,7 @@ public class MainActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); + setContentView(R.layout.main_activity); TextView tvWorkaround = (TextView)findViewById(R.id.text_workaround); if (fromPlayStore()) { diff --git a/app/src/main/java/at/bitfire/davdroid/ui/settings/AccountActivity.java b/app/src/main/java/at/bitfire/davdroid/ui/settings/AccountActivity.java index d31f2022..561c0c7c 100644 --- a/app/src/main/java/at/bitfire/davdroid/ui/settings/AccountActivity.java +++ b/app/src/main/java/at/bitfire/davdroid/ui/settings/AccountActivity.java @@ -17,7 +17,7 @@ import android.util.Log; import at.bitfire.davdroid.R; public class AccountActivity extends Activity { - static final String EXTRA_ACCOUNT = "account"; + public static final String EXTRA_ACCOUNT = "account"; @Override protected void onCreate(Bundle savedInstanceState) { diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/AccountDetailsFragment.java b/app/src/main/java/at/bitfire/davdroid/ui/setup/AccountDetailsFragment.java similarity index 95% rename from app/src/main/java/at/bitfire/davdroid/syncadapter/AccountDetailsFragment.java rename to app/src/main/java/at/bitfire/davdroid/ui/setup/AccountDetailsFragment.java index 61390115..e03cdad7 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/AccountDetailsFragment.java +++ b/app/src/main/java/at/bitfire/davdroid/ui/setup/AccountDetailsFragment.java @@ -5,7 +5,7 @@ * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html */ -package at.bitfire.davdroid.syncadapter; +package at.bitfire.davdroid.ui.setup; import android.accounts.Account; import android.accounts.AccountManager; @@ -31,6 +31,7 @@ import at.bitfire.davdroid.R; import at.bitfire.davdroid.resource.LocalCalendar; import at.bitfire.davdroid.resource.LocalStorageException; import at.bitfire.davdroid.resource.ServerInfo; +import at.bitfire.davdroid.syncadapter.AccountSettings; public class AccountDetailsFragment extends Fragment implements TextWatcher { public static final String KEY_SERVER_INFO = "server_info"; @@ -42,7 +43,7 @@ public class AccountDetailsFragment extends Fragment implements TextWatcher { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View v = inflater.inflate(R.layout.account_details, container, false); + View v = inflater.inflate(R.layout.setup_account_details, container, false); serverInfo = (ServerInfo)getArguments().getSerializable(KEY_SERVER_INFO); @@ -61,7 +62,7 @@ public class AccountDetailsFragment extends Fragment implements TextWatcher { @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { - inflater.inflate(R.menu.account_details, menu); + inflater.inflate(R.menu.setup_account_details, menu); } @Override diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/AddAccountActivity.java b/app/src/main/java/at/bitfire/davdroid/ui/setup/AddAccountActivity.java similarity index 85% rename from app/src/main/java/at/bitfire/davdroid/syncadapter/AddAccountActivity.java rename to app/src/main/java/at/bitfire/davdroid/ui/setup/AddAccountActivity.java index 37719e3c..e205554c 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/AddAccountActivity.java +++ b/app/src/main/java/at/bitfire/davdroid/ui/setup/AddAccountActivity.java @@ -5,7 +5,7 @@ * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html */ -package at.bitfire.davdroid.syncadapter; +package at.bitfire.davdroid.ui.setup; import android.app.Activity; import android.content.Intent; @@ -24,11 +24,11 @@ public class AddAccountActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.add_account); + setContentView(R.layout.setup_add_account); if (savedInstanceState == null) { // first call getFragmentManager().beginTransaction() - .add(R.id.right_pane, new LoginTypeFragment(), "login_type") + .add(R.id.right_pane, new LoginTypeFragment()) .commit(); } } @@ -36,7 +36,7 @@ public class AddAccountActivity extends Activity { @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.add_account, menu); + inflater.inflate(R.menu.setup_add_account, menu); return true; } diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/LoginEmailFragment.java b/app/src/main/java/at/bitfire/davdroid/ui/setup/LoginEmailFragment.java similarity index 96% rename from app/src/main/java/at/bitfire/davdroid/syncadapter/LoginEmailFragment.java rename to app/src/main/java/at/bitfire/davdroid/ui/setup/LoginEmailFragment.java index 8cde2a01..37f73690 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/LoginEmailFragment.java +++ b/app/src/main/java/at/bitfire/davdroid/ui/setup/LoginEmailFragment.java @@ -5,7 +5,7 @@ * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html */ -package at.bitfire.davdroid.syncadapter; +package at.bitfire.davdroid.ui.setup; import android.app.DialogFragment; import android.app.Fragment; @@ -33,7 +33,7 @@ public class LoginEmailFragment extends Fragment implements TextWatcher { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View v = inflater.inflate(R.layout.login_email, container, false); + View v = inflater.inflate(R.layout.setup_login_email, container, false); editEmail = (EditText)v.findViewById(R.id.email_address); editEmail.addTextChangedListener(this); diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/LoginTypeFragment.java b/app/src/main/java/at/bitfire/davdroid/ui/setup/LoginTypeFragment.java similarity index 93% rename from app/src/main/java/at/bitfire/davdroid/syncadapter/LoginTypeFragment.java rename to app/src/main/java/at/bitfire/davdroid/ui/setup/LoginTypeFragment.java index e2037909..0844241f 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/LoginTypeFragment.java +++ b/app/src/main/java/at/bitfire/davdroid/ui/setup/LoginTypeFragment.java @@ -5,7 +5,7 @@ * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html */ -package at.bitfire.davdroid.syncadapter; +package at.bitfire.davdroid.ui.setup; import android.app.Fragment; import android.os.Bundle; @@ -26,7 +26,7 @@ public class LoginTypeFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View v = inflater.inflate(R.layout.login_type, container, false); + View v = inflater.inflate(R.layout.setup_login_type, container, false); btnTypeEmail = (RadioButton)v.findViewById(R.id.login_type_email); btnTypeURL = (RadioButton)v.findViewById(R.id.login_type_url); diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/LoginURLFragment.java b/app/src/main/java/at/bitfire/davdroid/ui/setup/LoginURLFragment.java similarity index 97% rename from app/src/main/java/at/bitfire/davdroid/syncadapter/LoginURLFragment.java rename to app/src/main/java/at/bitfire/davdroid/ui/setup/LoginURLFragment.java index 1704e7e6..ae1db7c8 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/LoginURLFragment.java +++ b/app/src/main/java/at/bitfire/davdroid/ui/setup/LoginURLFragment.java @@ -5,7 +5,7 @@ * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html */ -package at.bitfire.davdroid.syncadapter; +package at.bitfire.davdroid.ui.setup; import android.app.DialogFragment; import android.app.Fragment; @@ -45,7 +45,7 @@ public class LoginURLFragment extends Fragment implements TextWatcher { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View v = inflater.inflate(R.layout.login_url, container, false); + View v = inflater.inflate(R.layout.setup_login_url, container, false); // protocol selection spinner textHttpWarning = (TextView)v.findViewById(R.id.http_warning); diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/QueryServerDialogFragment.java b/app/src/main/java/at/bitfire/davdroid/ui/setup/QueryServerDialogFragment.java similarity index 97% rename from app/src/main/java/at/bitfire/davdroid/syncadapter/QueryServerDialogFragment.java rename to app/src/main/java/at/bitfire/davdroid/ui/setup/QueryServerDialogFragment.java index c4b86462..ed34b07b 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/QueryServerDialogFragment.java +++ b/app/src/main/java/at/bitfire/davdroid/ui/setup/QueryServerDialogFragment.java @@ -5,7 +5,7 @@ * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html */ -package at.bitfire.davdroid.syncadapter; +package at.bitfire.davdroid.ui.setup; import android.app.DialogFragment; import android.app.LoaderManager.LoaderCallbacks; @@ -57,7 +57,7 @@ public class QueryServerDialogFragment extends DialogFragment implements LoaderC @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.query_server, container, false); + return inflater.inflate(R.layout.setup_query_server, container, false); } @Override diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/SelectCollectionsAdapter.java b/app/src/main/java/at/bitfire/davdroid/ui/setup/SelectCollectionsAdapter.java similarity index 95% rename from app/src/main/java/at/bitfire/davdroid/syncadapter/SelectCollectionsAdapter.java rename to app/src/main/java/at/bitfire/davdroid/ui/setup/SelectCollectionsAdapter.java index 206938f2..eb0d0fce 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/SelectCollectionsAdapter.java +++ b/app/src/main/java/at/bitfire/davdroid/ui/setup/SelectCollectionsAdapter.java @@ -5,7 +5,7 @@ * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html */ -package at.bitfire.davdroid.syncadapter; +package at.bitfire.davdroid.ui.setup; import android.annotation.SuppressLint; import android.content.Context; @@ -19,7 +19,6 @@ import android.widget.ListAdapter; import at.bitfire.davdroid.R; import at.bitfire.davdroid.resource.ServerInfo; -import at.bitfire.davdroid.resource.ServerInfo.ResourceInfo.Type; import lombok.Getter; public class SelectCollectionsAdapter extends BaseAdapter implements ListAdapter { @@ -104,14 +103,14 @@ public class SelectCollectionsAdapter extends BaseAdapter implements ListAdapter LayoutInflater inflater = LayoutInflater.from(parent.getContext()); switch (getItemViewType(position)) { case TYPE_ADDRESS_BOOKS_HEADING: - v = inflater.inflate(R.layout.address_books_heading, parent, false); + v = inflater.inflate(R.layout.setup_address_books_heading, parent, false); break; case TYPE_ADDRESS_BOOKS_ROW: v = inflater.inflate(android.R.layout.simple_list_item_single_choice, null); v.setPadding(0, 8, 0, 8); break; case TYPE_CALENDARS_HEADING: - v = inflater.inflate(R.layout.calendars_heading, parent, false); + v = inflater.inflate(R.layout.setup_calendars_heading, parent, false); break; case TYPE_CALENDARS_ROW: v = inflater.inflate(android.R.layout.simple_list_item_multiple_choice, null); diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/SelectCollectionsFragment.java b/app/src/main/java/at/bitfire/davdroid/ui/setup/SelectCollectionsFragment.java similarity index 97% rename from app/src/main/java/at/bitfire/davdroid/syncadapter/SelectCollectionsFragment.java rename to app/src/main/java/at/bitfire/davdroid/ui/setup/SelectCollectionsFragment.java index 887ccd27..eaddb345 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/SelectCollectionsFragment.java +++ b/app/src/main/java/at/bitfire/davdroid/ui/setup/SelectCollectionsFragment.java @@ -5,7 +5,7 @@ * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html */ -package at.bitfire.davdroid.syncadapter; +package at.bitfire.davdroid.ui.setup; import android.app.ListFragment; import android.os.Bundle; @@ -47,7 +47,7 @@ public class SelectCollectionsFragment extends ListFragment { final ListView listView = getListView(); listView.setPadding(20, 30, 20, 30); - View header = getActivity().getLayoutInflater().inflate(R.layout.select_collections_header, getListView(), false); + View header = getActivity().getLayoutInflater().inflate(R.layout.setup_select_collections_header, getListView(), false); listView.addHeaderView(header, getListView(), false); final ServerInfo serverInfo = (ServerInfo)getArguments().getSerializable(KEY_SERVER_INFO); diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/WebDavResourceAdapter.java b/app/src/main/java/at/bitfire/davdroid/ui/setup/WebDavResourceAdapter.java similarity index 97% rename from app/src/main/java/at/bitfire/davdroid/syncadapter/WebDavResourceAdapter.java rename to app/src/main/java/at/bitfire/davdroid/ui/setup/WebDavResourceAdapter.java index 26892a07..73231e09 100644 --- a/app/src/main/java/at/bitfire/davdroid/syncadapter/WebDavResourceAdapter.java +++ b/app/src/main/java/at/bitfire/davdroid/ui/setup/WebDavResourceAdapter.java @@ -5,7 +5,7 @@ * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html */ -package at.bitfire.davdroid.syncadapter; +package at.bitfire.davdroid.ui.setup; import android.content.Context; import android.view.LayoutInflater; diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/main_activity.xml similarity index 100% rename from app/src/main/res/layout/activity_main.xml rename to app/src/main/res/layout/main_activity.xml diff --git a/app/src/main/res/layout/account_details.xml b/app/src/main/res/layout/setup_account_details.xml similarity index 100% rename from app/src/main/res/layout/account_details.xml rename to app/src/main/res/layout/setup_account_details.xml diff --git a/app/src/main/res/layout/add_account.xml b/app/src/main/res/layout/setup_add_account.xml similarity index 100% rename from app/src/main/res/layout/add_account.xml rename to app/src/main/res/layout/setup_add_account.xml diff --git a/app/src/main/res/layout/address_books_heading.xml b/app/src/main/res/layout/setup_address_books_heading.xml similarity index 100% rename from app/src/main/res/layout/address_books_heading.xml rename to app/src/main/res/layout/setup_address_books_heading.xml diff --git a/app/src/main/res/layout/calendars_heading.xml b/app/src/main/res/layout/setup_calendars_heading.xml similarity index 100% rename from app/src/main/res/layout/calendars_heading.xml rename to app/src/main/res/layout/setup_calendars_heading.xml diff --git a/app/src/main/res/layout/login_email.xml b/app/src/main/res/layout/setup_login_email.xml similarity index 100% rename from app/src/main/res/layout/login_email.xml rename to app/src/main/res/layout/setup_login_email.xml diff --git a/app/src/main/res/layout/login_type.xml b/app/src/main/res/layout/setup_login_type.xml similarity index 100% rename from app/src/main/res/layout/login_type.xml rename to app/src/main/res/layout/setup_login_type.xml diff --git a/app/src/main/res/layout/login_url.xml b/app/src/main/res/layout/setup_login_url.xml similarity index 100% rename from app/src/main/res/layout/login_url.xml rename to app/src/main/res/layout/setup_login_url.xml diff --git a/app/src/main/res/layout/query_server.xml b/app/src/main/res/layout/setup_query_server.xml similarity index 100% rename from app/src/main/res/layout/query_server.xml rename to app/src/main/res/layout/setup_query_server.xml diff --git a/app/src/main/res/layout/select_collections_header.xml b/app/src/main/res/layout/setup_select_collections_header.xml similarity index 100% rename from app/src/main/res/layout/select_collections_header.xml rename to app/src/main/res/layout/setup_select_collections_header.xml diff --git a/app/src/main/res/menu/account_details.xml b/app/src/main/res/menu/setup_account_details.xml similarity index 100% rename from app/src/main/res/menu/account_details.xml rename to app/src/main/res/menu/setup_account_details.xml diff --git a/app/src/main/res/menu/add_account.xml b/app/src/main/res/menu/setup_add_account.xml similarity index 100% rename from app/src/main/res/menu/add_account.xml rename to app/src/main/res/menu/setup_add_account.xml From 7e592d7647d88f39ba65eb7ed3c1bc284c7e01f1 Mon Sep 17 00:00:00 2001 From: Ricki Hirner Date: Wed, 11 Mar 2015 14:56:39 +0100 Subject: [PATCH 07/11] Bug fixes * show "Settings" in Android Settings/Accounts again --- .../bitfire/davdroid/resource/LocalCalendarTest.java | 10 +++++----- app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/sync_prefs.xml | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/app/src/androidTest/java/at/bitfire/davdroid/resource/LocalCalendarTest.java b/app/src/androidTest/java/at/bitfire/davdroid/resource/LocalCalendarTest.java index 28249209..81c56656 100644 --- a/app/src/androidTest/java/at/bitfire/davdroid/resource/LocalCalendarTest.java +++ b/app/src/androidTest/java/at/bitfire/davdroid/resource/LocalCalendarTest.java @@ -33,7 +33,7 @@ import at.bitfire.davdroid.resource.LocalStorageException; public class LocalCalendarTest extends InstrumentationTestCase { private static final String - TAG = "davroid.LocalCalendarTest", + TAG = "davroid.test", calendarName = "DAVdroid_Test"; ContentProviderClient providerClient; @@ -76,13 +76,13 @@ public class LocalCalendarTest extends InstrumentationTestCase { providerClient = resolver.acquireContentProviderClient(CalendarContract.AUTHORITY); long id; - + @Cleanup Cursor cursor = providerClient.query(Calendars.CONTENT_URI, - new String[] { Calendars._ID }, + new String[]{Calendars._ID}, Calendars.ACCOUNT_TYPE + "=? AND " + Calendars.NAME + "=?", - new String[] { CalendarContract.ACCOUNT_TYPE_LOCAL, calendarName }, + new String[]{ CalendarContract.ACCOUNT_TYPE_LOCAL, calendarName }, null); - if (cursor.moveToNext()) { + if (cursor != null && cursor.moveToNext()) { // found local test calendar id = cursor.getLong(0); Log.d(TAG, "Found test calendar with ID " + id); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c2e99059..9ae04405 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -113,6 +113,7 @@ Password: + Settings No DAVdroid accounts found Authentication diff --git a/app/src/main/res/xml/sync_prefs.xml b/app/src/main/res/xml/sync_prefs.xml index 707ec8f0..5c1aa923 100644 --- a/app/src/main/res/xml/sync_prefs.xml +++ b/app/src/main/res/xml/sync_prefs.xml @@ -9,10 +9,10 @@ - + From a021b973fe4cd2b28b006f477abcb02c089a3890 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20J=2ET=C3=B3th?= Date: Thu, 12 Mar 2015 18:48:02 +0100 Subject: [PATCH 08/11] Updated Hungarian translation. --- app/src/main/res/values-hu/strings.xml | 41 +++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 2105f511..3e159851 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -118,6 +118,45 @@ Preemptív authentikáció (ajánlott, de Digest authentikációval nem működik) Jelszó: + + + Beállítások + Nem található DAVdroid fiók + Authentikáció + Felhasználónév + Adja meg a felhasználónevet: + Jelszó + Adja meg a szerveren érvényes új jelszót. + Adja meg a jelszót: + >Preemptív authentikáció + A hitelesítő adatok elküldése minden kérésnél (ajánlott) + A hitelesítő adatok elküldése, csak ha a szerver azt igényli + Szinkronizálás + Névjegyszinkronizálás sűrűsége + Manuális + Minden %d percben + az eszközön történt módosítás után + Nem elérhető + Naptárszinkronizálás sűrűsége + + -1 + 300 + 600 + 900 + 3600 + 7200 + 14400 + 86400 + + + Manuális + 5 percenként + 10 percenként + 15 percenként + Óránként + 2 óránként + 4 óránként + Naponta + DAVdroid: Gyűjtemény kiválasztása Nincs CalDAV-/CardDAV szolgáltatás a megadott helyen. @@ -137,4 +176,4 @@ "Használja az email címet fióknévként, mert később a létrehozandó események szervezőjeként (ORGANIZER mező) az Android ezt fogja használni. Két fiókot nem lehet azonos néven létrehozni. csak olvasható - \ No newline at end of file + From a15185372d9f6cd0aa0951621ed3f0c881e075bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mladen=20Pejakovi=C4=87?= Date: Fri, 13 Mar 2015 15:47:18 +0100 Subject: [PATCH 09/11] Update Serbian translation --- app/src/main/res/values-sr/strings.xml | 63 +++++++++++++++++++------- 1 file changed, 47 insertions(+), 16 deletions(-) diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index a469df2b..ad56fbae 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -11,11 +11,10 @@ ДАВдроид - - ДАВдроид вебсајт Следеће Помоћ - + + Непоуздан сертификат у путањи сертификата: Погледајте ЧПП за више информација. ХТТП грешка: %s Недостају могућности: %s У/И грешка: %s @@ -23,9 +22,9 @@ Управљај налозима синхронизације - + Хвала вам што сте купили ДАВдроид преко Google Play сервиса и тиме подржали овај пројекат. Нажалост, постоје два проблема са Google Play сервисом:

+

Хвала вам што сте купили ДАВдроид преко Гугловог Плеј сервиса и тиме подржали овај пројекат. Нажалост, постоје два проблема са Гугловим Плеј сервисом:

1. Налози могу нестати након поновног покретања

Може вам се десити да сви ваши ДАВдроид налози (укључујући контакте и догађаје) нестану након @@ -33,14 +32,14 @@ која узрокује уклањање налога плаћених апликација приликом покретања јер се (шифровани) АПК фајлови учитавају након провере за налоге без апликација.

Захваћени корисници:
- * сви корисници Андроида 4.1 који су инсталирали ДАВдроид са Play Store сервиса;
- * корисници Андроида 4.2 који су инсталирали ДАВдроид са Play Store сервиса само на неким уређајима (нпр. већина Самсунгових уређаја)

+ * сви корисници Андроида 4.1 који су инсталирали ДАВдроид са Плеј продавнице;
+ * корисници Андроида 4.2 који су инсталирали ДАВдроид са Плеј продавнице само на неким уређајима (нпр. већина Самсунгових уређаја)

2. Налози могу да нестану након надоградње ДАВдроида

Може вам се десити да сви ваши ДАВдроид налози (укључујући контакте и догађаје) нестану након надоградње ДАВдроида. Разлог је опет грешка у Андроиду која узрокује уклањање налога плаћених апликација приликом надоградње из сличног разлога.

-

Захваћени корисници: неки корисници Андроида 4.4.2 који су инсталирали ДАВдроид са Play Store сервиса (Нексус и Мото Г уређаји)

+

Захваћени корисници: неки корисници Андроида 4.4.2 који су инсталирали ДАВдроид са Плеј продавнице (Нексус и Мото Г уређаји)

Ако имате један од наведених проблема, инсталирајте „DAVdroid JB Workaround“.

]]>
@@ -57,7 +56,7 @@

Ако користите Цијаноген Мод, „Privacy Guard“ мора бити онемогућен за ДАВдроид. У супротном, ДАВдроиду неће бити дозвољени приступ и синхронизација ваших контаката и догађаја.

-

У случају проблема, најпре прочитајте најчешћа питања. +

У случају проблема, најпре прочитајте често постављана питања. Ако вам се деси грешка која је сигурно везана за ДАВдроид, поднесите пријаву на Гитхабовом пратиоцу уместо да нас контактирате директно или да апликацији дате лошу оцену.

@@ -65,7 +64,7 @@

ДАВдроид је испочетка дизајниран као пројекат отвореног кода. Увек је могуће да сами компајлирате апликацију и да је слободно користите без икаквих обавеза. Изворни код је доступан на Гитхабу, а можете и - преузети апликацију са Ф-Дроида.

+ преузети апликацију са Ф-дроида.

Међутим, уложено је много рада у ову апликацију па смо одлучили да је ставимо у комерцијалне продавнице за малу накнаду. Ако желите да подржите овај пројекат, донирајте ДАВдроиду @@ -77,7 +76,7 @@ и доступна на http://www.gnu.org/licenses/gpl.html. Ако сервиси „Google Play“, „Samsung Store“, „AndroidPit App Center“ или „Amazon Appstore“ захтевају друге услове, исти важе за издања преузета са ових сервиса.

-

Превод на српски: @pejakm. Превод на немачки: аутори. Остале преводе +

Превод на српски: @pejakm. Превод на немачки: аутори. Остале преводе допринели су људи поменути у преводима одговарајућих језика.

Коришћене друге библиотеке

@@ -86,7 +85,7 @@ * iCal4jНова БСД лиценца)
* ez-vcardНова БСД лиценца
* Симпле ИксМЛ серијализацијаАпачи лиценца, издање 2.0
- * Пројекат ЛомбокМИТ лиценца

+ * Пројекат ЛомбокМИТ лиценца
* dnsjavaБСД лиценца

]]>
@@ -109,7 +108,37 @@ Превентивна аутентификација (препоручено, али некомпатибилно са Дигест аутентификацијом) Лозинка: - + + + Поставке + Нема ДАВдроид налога + Аутентификација + Корисничко име + Унесите корисничко име: + Лозинка + Ажурирајте лозинку за ваш сервер. + Унесите лозинку: + Превентивна аутентификација + Слање акредитива са сваким захтевом (препоручено) + Слање акредитива по захтеву сервера + Синхронизација + Интервал синх. контаката + Само ручно + Сваких %d минута + одмах по локалним изменама + Није доступно + Интервал синх. календара + + + Само ручно + Сваких 5 минута + Сваких 10 минута + Сваких 15 минута + Сваког сата + Свака 2 сата + Свака 4 сата + Једном дневно + + ДАВдроид: Изаберите збирке Нема доступног КалДАВ/КардДАВ сервиса на овој локацији. Додај налог @@ -117,15 +146,17 @@ Које збирке да синхронизујем? Адресари Календари - Изаберите један адресар (додирните поново да поништите избор): + Изаберите један адресар (тапните поново за поништење): Изаберите ваше календаре: Детаљи налога - Име налога: + Назив налога: Мој КалДАВ/КардДАВ налог Е-адреса: "ОРГАНИЗАТОР ваших догађаја; потребно ако користите податке о учеснику" - "Користите вашу е-адресу као име налога јер Андроид користи име налога за поље ОРГАНИЗАТОР за догађаје које направите. Не можете имати два налога истог имена. + "Користите вашу е-адресу за назив налога јер Андроид користи назив налога за поље ОРГАНИЗАТОР за догађаје које направите. Не можете имати два налога истог назива. само-за-читање + Синхронизација није успела +
From caf7adb18aa191d4469258c312f8d53486926953 Mon Sep 17 00:00:00 2001 From: xphnx Date: Mon, 23 Mar 2015 15:27:27 +0100 Subject: [PATCH 10/11] Update spanish translation --- app/src/main/res/values-es/strings.xml | 223 ++++++++++++++++--------- 1 file changed, 143 insertions(+), 80 deletions(-) diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index da7c83c9..24779e4b 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -1,72 +1,70 @@ - +~ Copyright (c) 2013 - 2015 Ricki Hirner (bitfire web engineering). +~ All rights reserved. This program and the accompanying materials +~ are made available under the terms of the GNU Public License v3.0 +~ which accompanies this distribution, and is available at +~ http://www.gnu.org/licenses/gpl.html +--> + +DAVdroid +Siguiente +Ayuda +El certificado de la ruta de certificados no es de confianza. Mira las FAQ para más información. +error HTTP: %s +Se han perdido capacidades: %s +error I/O: %s +URI no válida: %s + +Administrar las cuentas sincronizadas +Gracias por haber comprado DAVdroid a través de Google Play y de esta manera apoyar este proyecto. Desafortunadamente, hay dos problemas con Google Play:

+

1. Las cuentas pueden desaparecer después de un reinicio

+

Puedes encontrar el problema de que todas tus cuentas de DAVdroid (incluyendo contactos y eventos) han desaparecido +después de reiniciar tu dispositivo. La causa es un bug en Android +que ocasiona que las cuentas de las aplicaciones de pago se eliminen al inicio porque los ficheros APK (cifrados) son +cargados después de la comprobación de cuentas huérfanas.

+

Usuarios afectados:
+* todos los usuarios de Android 4.1 que hayan instalado DAVdroid desde Play Store;
+* los usuarios de Android 4.2 que hayan instalado DAVdroid desde Play Store solo en ciertos dispositivos (por ejemplo, la mayoría de dispositivos Samsung)

+

2. Las cuentas pueden desaparecer despues de actualizar DAVdroid

+

Puedes encontrar el problema de que todos tus cuentas de DAVdroid (incluyendo contactos y eventos) han desaparecido cuando Play Store +actualiza DAVdroid. La causa es otro bug en Android +que ocasiona que las cuentas de las aplicaciones de pago se eliminen cuando se actualiza por una razón parecida.

+

Usuarios afectados: algunos usuarios de Android 4.4.2 que hayan instalado DAVdroid desde Play Store (conocido en dispositivos Nexus y Moto G)

+

Si estás afectado por uno de estos bugs, por favor instala +DAVdroid JB Workaround.

+]]>
+Bienvenido a DAVdroid/%s! +

DAVdroid es un adaptador de sincronización entre Android 4+ y CalDAV/CardDAV. Para usarlo, simplemente añade una cuenta DAVdroid +para tu servidor de CalDAV/CardDAV, así tus contactos y eventos serán sincronizados en ambas direcciones.

+

Para más información, por favor, visita la web de DAVdroid. +Hay una Guía de configuración, también. DAVdroid respeta +tu privacidad, lee nuestra Política de Privacidad.

+

Si usas CyanogenMod, debes desactivar "Privacy Guard" para DAVdroid. De otro modo, DAVdroid no tendrá autorización para acceder y sincronizar tus contactos y eventos.

+

Si tienes problemas, por favor lee primero las FAQ. +Si te encuentras un bug que esté claramente relacionado con DAVdroid, entra en +Github issues en lugar de contactar con nosotros directamente o de darle una mala +votación a la aplicación.

+

Código abierto

+

DAVdroid ha sido diseñado como un proyecto de código abierto desde sus inicios. Siempre es posible compilar la +app por ti mismo y usarla de forma gratuita sin ninguna obligación. El código fuente está +disponible en Github, y puedes +descargar la app desde F-droid.

+

Sin embargo, hay mucho trabajo detrás de la creación de esta aplicación, así que hemos decidido ponerla en las tiendas a cambio de un pequeño pago. +Si quieres apoyar este proyecto, por favor piensa en hacer una donación a DAVdroid +o en comprar la app.

+

Licencia

+

Copyright © 2013 – 2014 Ricki Hirner (bitfire web engineering). Todos los derechos reservados. +Este programa y los materiales que la acompañan está disponible bajo las condiciones de la GNU Public License v3.0 +que acompaña a esta distribución, y está a tu disposición en http://www.gnu.org/licenses/gpl.html. En lo relativo a Google Play, Samsung +Store y Amazon Appstore requiren de otras condiciones, las condiciones respectivas se aplican para las versiones +que se descarguen a través de estos servicios.

- DAVdroid - - - http:// - https:// - - - "Si no usas encriptación (HTTPS), otras personas pueden interceptar fácilmente tus datos de ingreso, contactos y eventos." - Nombre de usuario: - Contraseña: - URL raiz (colecciones autodetectadas): - Siguiente - Ayuda - DAVdroid: Selecciona las colecciones - I/O error: %s - URI no válida: %s - Se han perdido capacidades: %s - Ni CalDAV ni CardDAV están disponibles - Añadir cuenta - Consultando el servidor. Espera, por favor… - error HTTP: %s - Qué colecciones quieres sincronizar? - Agendas - Calendarios - Seleciona una agenda (pulsar de nuevo para desmarcar): - Selecciona tus calendarios: - Autentificación preferente (recomendado, pero incompatible con la autentificación de Digest) - - Administrar las cuentas sincronizadas - Sitio web de DAVdroid - ¡Bienvenido a DAVdroid/%s! - -

DAVdroid es un adaptador de sincronización entre Android 4+ y CalDAV/CardDAV. Para usarlo, simplemente añade una cuenta DAVdroid para tu servidor de CalDAV/CardDAV, así tus contactos y eventos serán sincronizados en ambas direcciones.

- -

Si usas CyanogenMod, debes desactivar "Privacy Guard" para DAVdroid. De otro modo, DAVdroid no tendrá autorización para acceder y sincronizar tus contactos y eventos.

- -

Para más información, por favor lee la página de DAVdroid. - También hay una Guía de configuración. DAVdroid respeta tu privacidad, lee nuestra Politica de Privacidad.

- -

Si tienes problemas, por favor lee las FAQ primero. - Si te encuentras un bug que esté claramente relacionado con DAVdroid, entra en - Github issues en lugar de contactar con nosotros directamente o de darle una mala votación a la aplicación.

- -

Código abierto

-

DAVdroid ha sido diseñado como un proyecto de código abierto desde sus inicios. Siempre es posible compilar la app por ti mismo y usarla de forma gratuita sin ninguna obligación. El código fuente está disponible en Github, y puedes descargar la app desde F-droid.

- -

Sin embargo, hay mucho trabajo detrás de la creación de esta aplicación, así que hemos decidido ponerla en las tiendas (Google Play, - Samsung Store) a cambio de un pequeño pago. - Si quieres apoyar este proyecto, por favor piensa en hacer una donación a DAVdroid - o en comprar la app.

- -

Licencia

-

Copyright © 2013 – 2014 Ricki Hirner (bitfire web engineering). Todos los derechos reservados. - Este programa y los materiales que la acompañan está disponible bajo las condiciones de la GNU Public License v3.0 que acompaña a esta distribución, y está a tu disposición en http://www.gnu.org/licenses/gpl.html. En lo relativo a Google Play or Samsung requieren otras condiciones, éstas han sido descargadas a través de estos servicios.

- -

Translations. +

Translations. Catalanian: @pokoli, Chinese (simplified): @phy25, Czech: Jaroslav Lichtblau, @@ -74,19 +72,84 @@ Spanish: @xphnx

-

Librerías third-party usadas

-

- * Apache HttpClient (Android port) – Apache License, Version 2.0
- * iCal4j (Licencia New BSD)
- * ez-vcard (Licencia New BSD)
- * Simple XML Serialization (Licencia Apache Version 2.0)
- * Project Lombok (Licencia MIT)

- ]]>
- Detalles de la cuenta - Nombre de la cuenta: - Mi cuenta CalDAV/CardDAV - Dirección de correo: - "ORGANIZADOR de tus eventos; se necesita si se usa información de los asistentes" - "Usa tu dirección de correo electrónico como nombre de cuenta porque Android usará el nombre de cuenta como campo de ORGANIZADOR para los eventos que crees. No puedes tener dos cuentas con el mismo nombre. - +

Librerías de terceros usadas

+

+* Apache HttpClient (Android port) – Licencia Apache Versión 2.0
+* iCal4j - Licencia New BSD
+* ez-vcard - Licencia New BSD
+* Simple XML Serialization - Licencia Apache Versión 2.0
+* Project Lombok - Licencia MIT

+* dnsjava - Licencia BSD

+]]>
+ +Acceder con cuenta de correo +Los detalles del servicio serán detectados automáticamente por el nombre de dominio. Ejemplo: myaccount@icloud.com +Acceder con URL y nombre de usuario +Los detalles del servicio serán detectados automáticamente por la URL de inicio y el nombre de usuario. En su mayoría usado por servicios alojados por uno mismo. +Por favor, introduce tu dirección de correo electrónico. Su nombre de dominio será usado para detectar automáticamente los ajustes del servicio. +Email: + +http:// +https:// + +"Si no usas cifrados (HTTPS), otras personas pueden interceptar fácilmente tus detalles de acceso, contactos y eventos." +Nombre de usuario: +URL base (las recopilaciones serán detectadas automáticamente): +Autenticación preferente (recomendado, pero incompatible con Digest auth) +Contraseña: + +Ajustes +No se han encontrado cuentas de DAVdroid +Autenticación +Nombre de usuario +Introduce tu nombre de usuario: +Contraseña +Actualiza la contraseña de acuerdo a tu servidor. +Introduce tu contraseña: +Autenticación preferente +Las credenciales se envían en cada petición (recomendado) +Las credenciales se envían después de que el servidor las pida +Sincronización +Intervalo de sincronización de contactos +Solo manualmente +Cada %d minutos + inmediatamente con cambios locales +No disponible +Intervalo de sincronización de calendarios + +-1 +300 +600 +900 +3600 +7200 +14400 +86400 + + +Solo manualmente +Cada 5 minutes +Cada 10 minutes +Cada 15 minutes +Cada hour +Cada 2 hours +Cada 4 hours +Una vez al día + +DAVdroid: Selecciona recopilaciones +Ningún servicio CalDAV-/CardDAV está disponible en esta ubicación. +Añadir cuenta +Consultando el servidor. Por favor, espera… +¿Qué recopilaciones deben ser sincronizadas? +Agendas +Calendarios +Selecciona como máximo una agenda (pulsa de nuevo para cancelar la selección): +Selecciona tus calendarios: +Detalles de la cuenta +Nombre de la cuenta: +Mi cuenta CalDAV/CardDAV +Dirección de email: +"ORGANIZADOR de tus eventos; se necesita si se usa información de los asistentes" +"Usa tu dirección de correo electrónico como nombre de cuenta porque Android usará el nombre de cuenta como campo de ORGANIZADOR para los eventos que crees. No puedes tener dos cuentas con el mismo nombre. +solo lectura +La sincronización ha fallado
From 8d5f815be577f008eba27cef5c0663fb7efee8b0 Mon Sep 17 00:00:00 2001 From: Marc de Hoop Date: Sat, 28 Mar 2015 10:15:40 +0100 Subject: [PATCH 11/11] Time zone guessing improved, fixes 'Assuming time zone Etc/GMT for Etc/GMT-2' --- .../at/bitfire/davdroid/resource/Event.java | 51 ++++++++++++------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/at/bitfire/davdroid/resource/Event.java b/app/src/main/java/at/bitfire/davdroid/resource/Event.java index 122e0f75..bf77a545 100644 --- a/app/src/main/java/at/bitfire/davdroid/resource/Event.java +++ b/app/src/main/java/at/bitfire/davdroid/resource/Event.java @@ -341,25 +341,38 @@ public class Event extends Resource { /* guess matching Android timezone ID */ protected static void validateTimeZone(DateProperty date) { - if (date.isUtc() || !hasTime(date)) - return; - - String tzID = getTzId(date); - if (tzID == null) - return; - - String localTZ = Time.TIMEZONE_UTC; - - String availableTZs[] = SimpleTimeZone.getAvailableIDs(); - for (String availableTZ : availableTZs) - if (tzID.indexOf(availableTZ, 0) != -1) { - localTZ = availableTZ; - break; - } - - Log.d(TAG, "Assuming time zone " + localTZ + " for " + tzID); - date.setTimeZone(tzRegistry.getTimeZone(localTZ)); - } + if (date.isUtc() || !hasTime(date)) + return; + + String tzID = getTzId(date); + if (tzID == null) + return; + + String localTZ = Time.TIMEZONE_UTC; + boolean foundMatch = false; + String availableTZs[] = SimpleTimeZone.getAvailableIDs(); + + // Try to find an exact match + for (String availableTZ : availableTZs) { + if (tzID.equals(availableTZ)) { + localTZ = availableTZ; + foundMatch = true; + break; + } + } + + if (!foundMatch) { + // Try to find something else that matches + for (String availableTZ : availableTZs) { + if (tzID.indexOf(availableTZ, 0) != -1) { + localTZ = availableTZ; + break; + } + } + } + Log.d(TAG, "Assuming time zone " + localTZ + " for " + tzID); + date.setTimeZone(tzRegistry.getTimeZone(localTZ)); + } public static String TimezoneDefToTzId(String timezoneDef) throws IllegalArgumentException { try {