diff --git a/CHANGELOG.md b/CHANGELOG.md index b5ba08d13..20fa5ea88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,19 @@ Changelog ========== +Version 6.8.3 *(2019-12-29)* +---------------------------- + + * Fixed a glitch at events repeating every X weeks + * Added an extra check to avoid showing reminders of deleted event repetition instances + * Some stability and translation improvements + +Version 6.8.2 *(2019-12-18)* +---------------------------- + + * Improved some holidays + * Added a few stability and translation improvements + Version 6.8.1 *(2019-12-11)* ---------------------------- diff --git a/app/build.gradle b/app/build.gradle index c98fd6392..b8597957c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,11 @@ apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' apply plugin: 'de.timfreiheit.resourceplaceholders' +def keystorePropertiesFile = rootProject.file("keystore.properties") +def keystoreProperties = new Properties() +if (keystorePropertiesFile.exists()) { + keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) +} android { compileSdkVersion 28 @@ -13,13 +18,24 @@ android { applicationId "com.simplemobiletools.calendar.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 168 - versionName "6.8.1" + versionCode 170 + versionName "6.8.3" multiDexEnabled true setProperty("archivesBaseName", "calendar") vectorDrawables.useSupportLibrary = true } + signingConfigs { + if (keystorePropertiesFile.exists()) { + release { + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile file(keystoreProperties['storeFile']) + storePassword keystoreProperties['storePassword'] + } + } + } + buildTypes { debug { applicationIdSuffix ".debug" @@ -27,6 +43,9 @@ android { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + if (keystorePropertiesFile.exists()) { + signingConfig signingConfigs.release + } } } @@ -45,7 +64,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.20.10' + implementation 'com.simplemobiletools:commons:5.21.9' implementation 'joda-time:joda-time:2.10.1' implementation 'androidx.multidex:multidex:2.0.1' implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2' @@ -53,9 +72,4 @@ dependencies { kapt 'androidx.room:room-compiler:2.2.2' implementation 'androidx.room:room-runtime:2.2.2' annotationProcessor 'androidx.room:room-compiler:2.2.2' - implementation "androidx.core:core-ktx:+" - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" -} -repositories { - mavenCentral() } diff --git a/app/src/main/assets/southkorea.ics b/app/src/main/assets/southkorea.ics index 014e7487d..36b09edcb 100755 --- a/app/src/main/assets/southkorea.ics +++ b/app/src/main/assets/southkorea.ics @@ -23,8 +23,8 @@ END:VEVENT BEGIN:VEVENT SUMMARY:설날 Lunar New Year's Day UID:3d064a26-70f2-431a-985a-ffd27be9e210 -DTSTART;VALUE=DATE:20190205 -DTEND;VALUE=DATE:20190206 +DTSTART;VALUE=DATE:20190204 +DTEND;VALUE=DATE:20190207 STATUS:CONFIRMED END:VEVENT BEGIN:VEVENT @@ -44,8 +44,15 @@ END:VEVENT BEGIN:VEVENT SUMMARY:추석(한가위) Harvest Festival UID:14bd697c-a319-47fd-9abc-fdff74be58e5 -DTSTART;VALUE=DATE:20201001 -DTEND;VALUE=DATE:20201002 +DTSTART;VALUE=DATE:20200930 +DTEND;VALUE=DATE:20201003 +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SUMMARY:추석(한가위) Harvest Festival +UID:14bd697c-a319-47fd-9abc-fdffse58aa +DTSTART;VALUE=DATE:20210920 +DTEND;VALUE=DATE:20210923 STATUS:CONFIRMED END:VEVENT BEGIN:VEVENT @@ -65,14 +72,6 @@ STATUS:CONFIRMED RRULE:FREQ=YEARLY;INTERVAL=1 END:VEVENT BEGIN:VEVENT -SUMMARY:식목일 Arbor Day -UID:5ae39a0f-5ef9-44d9-9dd5-e90049578e07 -DTSTART;VALUE=DATE:20000405 -DTEND;VALUE=DATE:20000406 -STATUS:CONFIRMED -RRULE:FREQ=YEARLY;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT SUMMARY:어린이 날 Children's Day UID:5a0c39c0-da3b-407d-824b-890c6b82bd95 DTSTART;VALUE=DATE:20000505 @@ -81,22 +80,6 @@ STATUS:CONFIRMED RRULE:FREQ=YEARLY;INTERVAL=1 END:VEVENT BEGIN:VEVENT -SUMMARY:어버이 날 Paren't Day -UID:741d7127-995f-43e0-a014-04280dcbb661 -DTSTART;VALUE=DATE:20000510 -DTEND;VALUE=DATE:20000511 -STATUS:CONFIRMED -RRULE:FREQ=YEARLY;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT -SUMMARY:스승의 날 Teacher's Day -UID:5309e45c-acca-4b4f-b7c4-fe7b3ddd545f -DTSTART;VALUE=DATE:20000515 -DTEND;VALUE=DATE:20000516 -STATUS:CONFIRMED -RRULE:FREQ=YEARLY;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT SUMMARY:현충일 Memorial Day UID:c67d164c-c91c-4b46-a0fa-bff756119cde DTSTART;VALUE=DATE:20000606 @@ -105,22 +88,6 @@ STATUS:CONFIRMED RRULE:FREQ=YEARLY;INTERVAL=1 END:VEVENT BEGIN:VEVENT -SUMMARY:6-25 사변일 6/25 War Memorial -UID:c5907e9d-4314-423f-9441-d7309d39db45 -DTSTART;VALUE=DATE:20000625 -DTEND;VALUE=DATE:20000626 -STATUS:CONFIRMED -RRULE:FREQ=YEARLY;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT -SUMMARY:제헌절 Constitution Day -UID:4f97c701-816b-4c23-a71e-13d2d2419c8f -DTSTART;VALUE=DATE:20000717 -DTEND;VALUE=DATE:20000718 -STATUS:CONFIRMED -RRULE:FREQ=YEARLY;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT SUMMARY:광복절 Liberation Day UID:1aba5d05-a8a7-4253-a6d2-66665bd2490d DTSTART;VALUE=DATE:20000815 @@ -129,14 +96,6 @@ STATUS:CONFIRMED RRULE:FREQ=YEARLY;INTERVAL=1 END:VEVENT BEGIN:VEVENT -SUMMARY:국군의 날 Armed Forces Day -UID:99c12465-6366-4c9e-99c8-8635969cc7ee -DTSTART;VALUE=DATE:20001001 -DTEND;VALUE=DATE:20001002 -STATUS:CONFIRMED -RRULE:FREQ=YEARLY;INTERVAL=1 -END:VEVENT -BEGIN:VEVENT SUMMARY:개천절 Foundation Day UID:220f5ee6-10a6-4227-87ca-197628adb976 DTSTART;VALUE=DATE:20001003 diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt index bd7f6dd6c..97853314c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt @@ -827,8 +827,7 @@ class EventActivity : SimpleActivity() { event_caldav_calendar_email.text = currentCalendar.accountName ensureBackgroundThread { - val calendarColor = eventsHelper.getEventTypeWithCalDAVCalendarId(currentCalendar.id)?.color - ?: currentCalendar.color + val calendarColor = eventsHelper.getEventTypeWithCalDAVCalendarId(currentCalendar.id)?.color ?: currentCalendar.color runOnUiThread { event_caldav_calendar_color.setFillWithStroke(calendarColor, config.backgroundColor) @@ -916,7 +915,8 @@ class EventActivity : SimpleActivity() { val offset = if (!config.allowChangingTimeZones || mEvent.getTimeZoneString().equals(mOriginalTimeZone, true)) { 0 } else { - (DateTimeZone.forID(mEvent.timeZone).getOffset(System.currentTimeMillis()) - DateTimeZone.forID(mOriginalTimeZone).getOffset(System.currentTimeMillis())) / 1000L + val original = if (mOriginalTimeZone.isEmpty()) DateTimeZone.getDefault().id else mOriginalTimeZone + (DateTimeZone.forID(mEvent.getTimeZoneString()).getOffset(System.currentTimeMillis()) - DateTimeZone.forID(original).getOffset(System.currentTimeMillis())) / 1000L } val newStartTS = mEventStartDateTime.withSecondOfMinute(0).withMillisOfSecond(0).seconds() - offset diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/adapters/DayEventsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/adapters/DayEventsAdapter.kt index 321bf1b0a..0fbab41de 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/adapters/DayEventsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/adapters/DayEventsAdapter.kt @@ -58,7 +58,7 @@ class DayEventsAdapter(activity: SimpleActivity, val events: ArrayList, r override fun onActionModeDestroyed() {} - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyRecyclerViewAdapter.ViewHolder { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val layoutId = when (viewType) { ITEM_EVENT -> R.layout.event_item_day_view else -> R.layout.event_item_day_view_simple @@ -66,7 +66,7 @@ class DayEventsAdapter(activity: SimpleActivity, val events: ArrayList, r return createViewHolder(layoutId, parent) } - override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) { + override fun onBindViewHolder(holder: ViewHolder, position: Int) { val event = events[position] holder.bindView(event, true, true) { itemView, layoutPosition -> setupView(itemView, event) diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/extensions/Context.kt index 682a0c314..862c7bea0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/extensions/Context.kt @@ -198,7 +198,9 @@ fun Context.notifyEvent(originalEvent: Event) { val notification = getNotification(pendingIntent, event, content) val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager try { - notificationManager.notify(event.id!!.toInt(), notification) + if (notification != null) { + notificationManager.notify(event.id!!.toInt(), notification) + } } catch (e: Exception) { showErrorToast(e) } @@ -206,7 +208,7 @@ fun Context.notifyEvent(originalEvent: Event) { } @SuppressLint("NewApi") -fun Context.getNotification(pendingIntent: PendingIntent, event: Event, content: String, publicVersion: Boolean = false): Notification { +fun Context.getNotification(pendingIntent: PendingIntent, event: Event, content: String, publicVersion: Boolean = false): Notification? { var soundUri = config.reminderSoundUri if (soundUri == SILENT) { soundUri = "" @@ -245,7 +247,12 @@ fun Context.getNotification(pendingIntent: PendingIntent, event: Event, content: lightColor = event.color enableVibration(config.vibrateOnReminder) setSound(Uri.parse(soundUri), audioAttributes) - notificationManager.createNotificationChannel(this) + try { + notificationManager.createNotificationChannel(this) + } catch (e: Exception) { + showErrorToast(e) + return null + } } } @@ -271,7 +278,10 @@ fun Context.getNotification(pendingIntent: PendingIntent, event: Event, content: } if (!publicVersion) { - builder.setPublicVersion(getNotification(pendingIntent, event, content, true)) + val notification = getNotification(pendingIntent, event, content, true) + if (notification != null) { + builder.setPublicVersion(notification) + } } val notification = builder.build() diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/IcsImporter.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/IcsImporter.kt index 775afbbff..7bf358760 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/IcsImporter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/IcsImporter.kt @@ -11,6 +11,7 @@ import com.simplemobiletools.calendar.pro.models.EventType import com.simplemobiletools.calendar.pro.models.Reminder import com.simplemobiletools.commons.extensions.areDigitsOnly import com.simplemobiletools.commons.extensions.showErrorToast +import org.joda.time.DateTimeZone import java.io.File class IcsImporter(val activity: SimpleActivity) { @@ -180,7 +181,7 @@ class IcsImporter(val activity: SimpleActivity) { val source = if (calDAVCalendarId == 0 || eventType?.isSyncedEventType() == false) SOURCE_IMPORTED_ICS else "$CALDAV-$calDAVCalendarId" val event = Event(null, curStart, curEnd, curTitle, curLocation, curDescription, reminders[0].minutes, reminders[1].minutes, reminders[2].minutes, reminders[0].type, reminders[1].type, reminders[2].type, curRepeatInterval, curRepeatRule, - curRepeatLimit, curRepeatExceptions, "", curImportId, "", curFlags, curEventTypeId, 0, curLastModified, source) + curRepeatLimit, curRepeatExceptions, "", curImportId, DateTimeZone.getDefault().id, curFlags, curEventTypeId, 0, curLastModified, source) if (event.getIsAllDay() && curEnd > curStart) { event.endTS -= DAY diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/models/Event.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/models/Event.kt index 026cb63ae..5f8df9041 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/models/Event.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/models/Event.kt @@ -147,12 +147,12 @@ data class Event( fun getCalDAVCalendarId() = if (source.startsWith(CALDAV)) (source.split("-").lastOrNull() ?: "0").toString().toInt() else 0 - // check if its the proper week, for events repeating every x weeks + // check if it's the proper week, for events repeating every x weeks // get the week number since 1970, not just in the current year fun isOnProperWeek(startTimes: LongSparseArray): Boolean { - val initialWeekNumber = Formatter.getDateTimeFromTS(startTimes[id!!]!!).millis / (7 * 24 * 60 * 60 * 1000) - val currentWeekNumber = Formatter.getDateTimeFromTS(startTS).millis / (7 * 24 * 60 * 60 * 1000) - return (initialWeekNumber - currentWeekNumber) % (repeatInterval / WEEK) == 0L + val initialWeekNumber = Formatter.getDateTimeFromTS(startTimes[id!!]!!).withTimeAtStartOfDay().millis / (7 * 24 * 60 * 60 * 1000f) + val currentWeekNumber = Formatter.getDateTimeFromTS(startTS).withTimeAtStartOfDay().millis / (7 * 24 * 60 * 60 * 1000f) + return (Math.round(initialWeekNumber) - Math.round(currentWeekNumber)) % (repeatInterval / WEEK) == 0 } fun updateIsPastEvent() { diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/receivers/NotificationReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/receivers/NotificationReceiver.kt index 59a11a018..ae5fafc40 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/receivers/NotificationReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/receivers/NotificationReceiver.kt @@ -32,7 +32,7 @@ class NotificationReceiver : BroadcastReceiver() { context.updateListWidget() val event = context.eventsDB.getEventWithId(id) - if (event == null || event.getReminders().none { it.type == REMINDER_NOTIFICATION }) { + if (event == null || event.getReminders().none { it.type == REMINDER_NOTIFICATION } || event.repetitionExceptions.contains(Formatter.getTodayCode())) { return } diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index a049f2004..12b08a023 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -945,9 +945,9 @@ android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" android:paddingStart="@dimen/normal_margin" - android:paddingTop="@dimen/bigger_margin" + android:paddingTop="@dimen/activity_margin" android:paddingEnd="@dimen/normal_margin" - android:paddingBottom="@dimen/bigger_margin"> + android:paddingBottom="@dimen/activity_margin"> + android:paddingBottom="@dimen/activity_margin"> - Calendario Simple - Calendar + Simple Calendar + Calendario Cambiar vista Vista diaria Vista semanal @@ -104,13 +104,13 @@ Añadir otros asistentes Mi estado: - Voy - No voy - Quizás voy + Iré + No iré + Quizás iré Invitado - Enter a country or time zone + Ingresa un país o zona horaria Importar eventos @@ -192,7 +192,7 @@ El último usado Otro momento Destacar los fines de semana en algunas vistas - Allow changing event time zones + Permitir cambiar zona horaria del evento CalDAV @@ -234,20 +234,20 @@ Los eventos creados de esa manera tienen un tipo de evento llamado \"Días Festivos\". Puede seleccionarlos todos desde Ajustes->Gestionar tipos de eventos, y usar una pulsación larga para eliminar el tipo de evento y todos sus eventos pulsando en la papelera. ¿Puedo sincronizar mis eventos a través de Google Calendar, o otros servicios que soporten CalDAV? - Yes, just toggle \"CalDAV sync\" in the app settings and select the calendars you want to sync. However, you will need some third party app handling the synchronization between the device and servers. - In case you want to synchronize a Google calendar, their official Calendar app will do the job. For other calendars you will need a third party sync adapter, for example DAVx5. - I see the visual reminders, but hear no audio. What can I do? - Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings, - pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted. - Does the app support time zones? - Yes, it does. By default all events are created in your current time zone. If you want to change an events\' time zone, - you will first have to enable the time zone picker at the app settings, then change it at the Event Details screen. It is disabled by default as most people won\'t need it. + Sí, Solamente activa \"Sincronizar CalDAV\" en los ajustes de la aplicación y selecciona los calendarios que quieras sincronizar. Sin embargo, vas a necesitar algúna aplicación externa para manejar la sincronización entre el dispositivo y los servidores. + En caso de que quieras sincronizar un calendario de Google, su aplicación oficial de Calendario hará el trabajo. Para otros calendarios, necesitarás un sincronizador externo, por ejemplo: DAVx5. + Veo los recordatorios visuales, pero no oigo audio. ¿Qué puedo hacer? + No solo mostrar el recordatorio, si no también reproducir el sonido, es altamente afectado por el sistema. Si no puedes escuchar ningún sonido, prueba ir a los ajustes de la aplicación, + presionar la opción de \"Sonido usado en recordatorios\" y cambiarlo a un valor diferente. Si continúa fallando, verifica tus opciones de sonido, si el sonido en particular no está silenciado. + ¿La aplicación soporta zonas horarias? + Sí, lo hace. Por defecto, todos los eventos son creados en tu zona horaria actual. Si quieres cambiar la zona horaria de un evento, + primero vas a tener que activar el seleccionador de zona horaria en los ajustes de la app, después, cambiarlo en la pantalla de Detalles del Evento. Está desactivado por defecto porque la mayoría de las personas no lo necesita. - Calendario Simple Pro - Eventos & Recordatorios + Calendario Simple Pro - Eventos y Recordatorios - Be notified of the important moments in your life. + Se notificado de los momentos importantes en tu vida. Calendario Simple Pro es un calendario fuera de línea, totalmente personalizable y diseñado para hacer exactamente lo que debe hacer un calendario. ¡Sin funcionalidades complicadas, permisos innecesarios y sin anuncios! @@ -256,11 +256,11 @@ Las vistas diarias, semanales y mensuales permiten verificar tus próximos eventos y citas con facilidad. Incluso puedes ver todos los eventos como si se tratara de una lista en lugar de usar un calendario, para que sepas exactamente lo que está sucediendo en tu vida y cuándo. ---------------------------------------------------------- - Calendario Simple Pro – Características & beneficios + Calendario Simple Pro – Características y beneficios ---------------------------------------------------------- ✔️ Sin anuncios ni ventanas emergentes - ✔️ No requiere acceso a internet, dándote más privacidad & seguridad + ✔️ No requiere acceso a internet, dándote más privacidad y seguridad ✔️ Solo se requieren los permisos mínimos para que funcione la aplicación ✔️ Énfasis en la simplicidad – hace lo que un calendario debería hacer ✔️ Código abierto (Open source) @@ -269,14 +269,14 @@ ✔️ Exporta tu configuración a un fichero .txt para importarlo a otro dispositivo ✔️ Soporte de CalDAV para sincronizar tus eventos entre múltiples dispositivos ✔️ Vista diaria, semanal, mensual, anual y de eventos en el calendario - ✔️ Soporte a la exportación & importación de eventos a través de ficheros .ics + ✔️ Soporte a la exportación y importación de eventos a través de ficheros .ics ✔️ Establece múltiples recordatorios de eventos, personalice el sonido y la vibración ✔️ Opción para posponer recordatorios ✔️ Añade fácilmente días festivos, cumpleaños, aniversarios y citas ✔️ Personalización de eventos: hora de inicio, duración, recordatorios, etc. ✔️ Añade asistentes para cada evento ✔️ Utilizalo como un calendario personal o de trabajo - ✔️ Escoge entre recordatorios & notificaciones de correo para recordarte los eventos + ✔️ Escoge entre recordatorios y notificaciones de correo para recordarte los eventos DESCARGA CALENDARIO SIMPLE PRO - EL CALENDARIO SIMPLE, OFFLINE Y SIN ANUNCIOS! diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 58aa395e4..078b3b6c9 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -110,7 +110,7 @@ Invited - Enter a country or time zone + Angi et land eller tidssone Importer hendelser @@ -192,7 +192,7 @@ Den sist brukte Annen tid Fremhev helger på noen visninger - Allow changing event time zones + Tillat å endre hendelsestidssoner CalDAV diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index b50637ece..df65773d7 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -192,7 +192,7 @@ Última utilizada Outra Destacar fim de semana em algumas vistas - Allow changing event time zones + Permitir alteração do fuso horário dos eventos CalDAV @@ -273,7 +273,7 @@ ✔️ Possibilidade de definir diversos lembretes e personalização de sons e vibração para os mesmos ✔️ Opção Snooze ✔️ Possibilidade de importar, feriados, aniversários e datas de nascimento - ✔️ Personalização de eventos – data/hora inicial, duração dos eventos, lemvretes... + ✔️ Personalização de eventos – data/hora inicial, duração dos eventos, lembretes... ✔️ Possibilidade de adicionar convidados para os eventos ✔️ Passível de ser utilizado como calendário pessoal mas também empresarial ✔️ Escolha entre lembretes e notificações por e-mail diff --git a/fastlane/metadata/android/en-US/changelogs/169.txt b/fastlane/metadata/android/en-US/changelogs/169.txt new file mode 100644 index 000000000..ed4425af1 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/169.txt @@ -0,0 +1,2 @@ + * Improved some holidays + * Added a few stability and translation improvements diff --git a/fastlane/metadata/android/en-US/changelogs/170.txt b/fastlane/metadata/android/en-US/changelogs/170.txt new file mode 100644 index 000000000..e8f8ef2cd --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/170.txt @@ -0,0 +1,3 @@ +Fixed a glitch at events repeating every X weeks +Added an extra check to avoid showing reminders of deleted event repetition instances +Some stability and translation improvements diff --git a/fastlane/metadata/android/es/full_description.txt b/fastlane/metadata/android/es/full_description.txt index 3505b0a34..abb9e7fa6 100644 --- a/fastlane/metadata/android/es/full_description.txt +++ b/fastlane/metadata/android/es/full_description.txt @@ -5,11 +5,11 @@ Ya sea que estes organizando eventos individuales o recurrentes, cumpleaños, an Las vistas diarias, semanales y mensuales permiten verificar tus próximos eventos y citas con facilidad. Incluso puedes ver todos los eventos como si se tratara de una lista en lugar de usar un calendario, para que sepas exactamente lo que está sucediendo en tu vida y cuándo. ---------------------------------------------------------- -Calendario Simple Pro – Características & beneficios +Calendario Simple Pro – Características y beneficios ---------------------------------------------------------- ✔️ Sin anuncios ni ventanas emergentes -✔️ No requiere acceso a internet, dándote más privacidad & seguridad +✔️ No requiere acceso a internet, dándote más privacidad y seguridad ✔️ Solo se requieren los permisos mínimos para que funcione la aplicación ✔️ Énfasis en la simplicidad – hace lo que un calendario debería hacer ✔️ Código abierto (Open source) @@ -18,14 +18,14 @@ Las vistas diarias, semanales y mensuales permiten verificar tus próximos event ✔️ Exporta tu configuración a un fichero .txt para importarlo a otro dispositivo ✔️ Soporte de CalDAV para sincronizar tus eventos entre múltiples dispositivos ✔️ Vista diaria, semanal, mensual, anual y de eventos en el calendario -✔️ Soporte a la exportación & importación de eventos a través de ficheros .ics +✔️ Soporte a la exportación y importación de eventos a través de ficheros .ics ✔️ Establece múltiples recordatorios de eventos, personalice el sonido y la vibración ✔️ Opción para posponer recordatorios ✔️ Añade fácilmente días festivos, cumpleaños, aniversarios y citas ✔️ Personalización de eventos: hora de inicio, duración, recordatorios, etc. ✔️ Añade asistentes para cada evento ✔️ Utilizalo como un calendario personal o de trabajo -✔️ Escoge entre recordatorios & notificaciones de correo para recordarte los eventos +✔️ Escoge entre recordatorios y notificaciones de correo para recordarte los eventos DESCARGA CALENDARIO SIMPLE PRO - EL CALENDARIO SIMPLE, OFFLINE Y SIN ANUNCIOS! diff --git a/fastlane/metadata/android/es/short_description.txt b/fastlane/metadata/android/es/short_description.txt index 19c9a25da..0953071f6 100644 --- a/fastlane/metadata/android/es/short_description.txt +++ b/fastlane/metadata/android/es/short_description.txt @@ -1 +1 @@ -Un bonito calendario sin anuncios, garantía del 100% en la devolución del dinero +Se notificado de los momentos importantes en tu vida. diff --git a/fastlane/metadata/android/es/title.txt b/fastlane/metadata/android/es/title.txt index 408f3b313..6a59e560c 100644 --- a/fastlane/metadata/android/es/title.txt +++ b/fastlane/metadata/android/es/title.txt @@ -1 +1 @@ -Calendario Simple Pro - Eventos & Recordatorios +Calendario Simple Pro - Eventos y Recordatorios diff --git a/fastlane/metadata/android/pt/full_description.txt b/fastlane/metadata/android/pt/full_description.txt index c18e0e6fc..d392440e0 100644 --- a/fastlane/metadata/android/pt/full_description.txt +++ b/fastlane/metadata/android/pt/full_description.txt @@ -22,7 +22,7 @@ As vistas diária, semanal e mensal ajudam o utilizador a verificar os próximos ✔️ Possibilidade de definir diversos lembretes e personalização de sons e vibração para os mesmos ✔️ Opção Snooze ✔️ Possibilidade de importar, feriados, aniversários e datas de nascimento -✔️ Personalização de eventos – data/hora inicial, duração dos eventos, lemvretes... +✔️ Personalização de eventos – data/hora inicial, duração dos eventos, lembretes... ✔️ Possibilidade de adicionar convidados para os eventos ✔️ Passível de ser utilizado como calendário pessoal mas também empresarial ✔️ Escolha entre lembretes e notificações por e-mail