Merge remote-tracking branch 'upstream/master'
# Conflicts: # app/build.gradle
This commit is contained in:
commit
97dca61a40
19 changed files with 113 additions and 112 deletions
13
CHANGELOG.md
13
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)*
|
||||
----------------------------
|
||||
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -58,7 +58,7 @@ class DayEventsAdapter(activity: SimpleActivity, val events: ArrayList<Event>, 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<Event>, 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)
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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<Long>): 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() {
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_dim_past_events"
|
||||
|
@ -964,12 +964,11 @@
|
|||
android:id="@+id/settings_allow_changing_time_zones_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
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">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_allow_changing_time_zones"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">Calendario Simple</string>
|
||||
<string name="app_launcher_name">Calendar</string>
|
||||
<string name="app_name">Simple Calendar</string>
|
||||
<string name="app_launcher_name">Calendario</string>
|
||||
<string name="change_view">Cambiar vista</string>
|
||||
<string name="daily_view">Vista diaria</string>
|
||||
<string name="weekly_view">Vista semanal</string>
|
||||
|
@ -104,13 +104,13 @@
|
|||
<!-- Event attendees -->
|
||||
<string name="add_another_attendee">Añadir otros asistentes</string>
|
||||
<string name="my_status">Mi estado:</string>
|
||||
<string name="going">Voy</string>
|
||||
<string name="not_going">No voy</string>
|
||||
<string name="maybe_going">Quizás voy</string>
|
||||
<string name="going">Iré</string>
|
||||
<string name="not_going">No iré</string>
|
||||
<string name="maybe_going">Quizás iré</string>
|
||||
<string name="invited">Invitado</string>
|
||||
|
||||
<!-- Time zones -->
|
||||
<string name="enter_a_country">Enter a country or time zone</string>
|
||||
<string name="enter_a_country">Ingresa un país o zona horaria</string>
|
||||
|
||||
<!-- Export / Import -->
|
||||
<string name="import_events">Importar eventos</string>
|
||||
|
@ -192,7 +192,7 @@
|
|||
<string name="last_used_one">El último usado</string>
|
||||
<string name="other_time">Otro momento</string>
|
||||
<string name="highlight_weekends">Destacar los fines de semana en algunas vistas</string>
|
||||
<string name="allow_changing_time_zones">Allow changing event time zones</string>
|
||||
<string name="allow_changing_time_zones">Permitir cambiar zona horaria del evento</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -234,20 +234,20 @@
|
|||
<string name="faq_1_text">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.</string>
|
||||
<string name="faq_2_title">¿Puedo sincronizar mis eventos a través de Google Calendar, o otros servicios que soporten CalDAV?</string>
|
||||
<string name="faq_2_text">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.</string>
|
||||
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
|
||||
<string name="faq_3_text">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.</string>
|
||||
<string name="faq_4_title">Does the app support time zones?</string>
|
||||
<string name="faq_4_text">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.</string>
|
||||
<string name="faq_2_text">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.</string>
|
||||
<string name="faq_3_title">Veo los recordatorios visuales, pero no oigo audio. ¿Qué puedo hacer?</string>
|
||||
<string name="faq_3_text">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.</string>
|
||||
<string name="faq_4_title">¿La aplicación soporta zonas horarias?</string>
|
||||
<string name="faq_4_text">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.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- App title has to have less than 50 characters. If you cannot squeeze it, just remove a part of it -->
|
||||
<string name="app_title">Calendario Simple Pro - Eventos & Recordatorios</string>
|
||||
<string name="app_title">Calendario Simple Pro - Eventos y Recordatorios</string>
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">Be notified of the important moments in your life.</string>
|
||||
<string name="app_short_description">Se notificado de los momentos importantes en tu vida.</string>
|
||||
<string name="app_long_description">
|
||||
Calendario Simple Pro es un calendario fuera de línea, totalmente personalizable y diseñado para hacer exactamente lo que debe hacer un calendario. <b> ¡Sin funcionalidades complicadas, permisos innecesarios y sin anuncios! </b>
|
||||
|
||||
|
@ -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 <b> sepas exactamente lo que está sucediendo en tu vida y cuándo. </b>
|
||||
|
||||
----------------------------------------------------------
|
||||
<b>Calendario Simple Pro – Características & beneficios</b>
|
||||
<b>Calendario Simple Pro – Características y beneficios</b>
|
||||
----------------------------------------------------------
|
||||
|
||||
✔️ 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!
|
||||
|
||||
|
|
|
@ -110,7 +110,7 @@
|
|||
<string name="invited">Invited</string>
|
||||
|
||||
<!-- Time zones -->
|
||||
<string name="enter_a_country">Enter a country or time zone</string>
|
||||
<string name="enter_a_country">Angi et land eller tidssone</string>
|
||||
|
||||
<!-- Export / Import -->
|
||||
<string name="import_events">Importer hendelser</string>
|
||||
|
@ -192,7 +192,7 @@
|
|||
<string name="last_used_one">Den sist brukte</string>
|
||||
<string name="other_time">Annen tid</string>
|
||||
<string name="highlight_weekends">Fremhev helger på noen visninger</string>
|
||||
<string name="allow_changing_time_zones">Allow changing event time zones</string>
|
||||
<string name="allow_changing_time_zones">Tillat å endre hendelsestidssoner</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
|
|
@ -192,7 +192,7 @@
|
|||
<string name="last_used_one">Última utilizada</string>
|
||||
<string name="other_time">Outra</string>
|
||||
<string name="highlight_weekends">Destacar fim de semana em algumas vistas</string>
|
||||
<string name="allow_changing_time_zones">Allow changing event time zones</string>
|
||||
<string name="allow_changing_time_zones">Permitir alteração do fuso horário dos eventos</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -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
|
||||
|
|
2
fastlane/metadata/android/en-US/changelogs/169.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/169.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
* Improved some holidays
|
||||
* Added a few stability and translation improvements
|
3
fastlane/metadata/android/en-US/changelogs/170.txt
Normal file
3
fastlane/metadata/android/en-US/changelogs/170.txt
Normal file
|
@ -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
|
|
@ -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 <b> sepas exactamente lo que está sucediendo en tu vida y cuándo. </b>
|
||||
|
||||
----------------------------------------------------------
|
||||
<b>Calendario Simple Pro – Características & beneficios</b>
|
||||
<b>Calendario Simple Pro – Características y beneficios</b>
|
||||
----------------------------------------------------------
|
||||
|
||||
✔️ 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!
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -1 +1 @@
|
|||
Calendario Simple Pro - Eventos & Recordatorios
|
||||
Calendario Simple Pro - Eventos y Recordatorios
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue