diff --git a/README.md b/README.md index fe71c69d5..81a849b5d 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,11 @@ A simple calendar with events and a customizable widget. -An offline calendar without any other calendar integration. You can easily create recurring events and setup reminders, it can also display week numbers. +A simple calendar with optional CalDAV synchronization. You can easily create recurring events and setup reminders, it can also display week numbers. -Contains a resizable 4x4 widget where you can customize the color of the text, as well as the alpha and the color of the background. +Contains a monthly view and an event list widget where you can customize the color of the text, as well as the alpha and the color of the background. -Contains no ads or unnecessary permissions. It is fully open-source, provides customizable colors. +Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors. The Storage permission is needed only for exporting or importing events from .ics files. diff --git a/app/build.gradle b/app/build.gradle index 2da62d372..e8c358022 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -46,7 +46,7 @@ ext { } dependencies { - implementation 'com.simplemobiletools:commons:4.1.7' + implementation 'com.simplemobiletools:commons:4.3.27' implementation 'joda-time:joda-time:2.9.9' implementation 'com.facebook.stetho:stetho:1.5.0' implementation 'com.android.support:multidex:1.0.3' diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/EventActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/EventActivity.kt index 42eef0c2d..a6894ada9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/EventActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/EventActivity.kt @@ -17,6 +17,7 @@ import com.simplemobiletools.calendar.helpers.* import com.simplemobiletools.calendar.helpers.Formatter import com.simplemobiletools.calendar.models.CalDAVCalendar import com.simplemobiletools.calendar.models.Event +import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.dialogs.RadioGroupDialog import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.* @@ -101,7 +102,17 @@ class EventActivity : SimpleActivity() { event_repetition_rule_holder.setOnClickListener { showRepetitionRuleDialog() } event_repetition_limit_holder.setOnClickListener { showRepetitionTypePicker() } - event_reminder_1.setOnClickListener { showReminder1Dialog() } + event_reminder_1.setOnClickListener { + if (config.wasAlarmWarningShown) { + showReminder1Dialog() + } else { + ConfirmationDialog(this, messageId = R.string.reminder_warning, positive = R.string.ok, negative = 0) { + config.wasAlarmWarningShown = true + showReminder1Dialog() + } + } + } + event_reminder_2.setOnClickListener { showReminder2Dialog() } event_reminder_3.setOnClickListener { showReminder3Dialog() } @@ -146,7 +157,9 @@ class EventActivity : SimpleActivity() { event_title.setText(mEvent.title) event_location.setText(mEvent.location) event_description.setText(mEvent.description) - event_description.movementMethod = LinkMovementMethod.getInstance() + if (event_description.value.isNotEmpty()) { + event_description.movementMethod = LinkMovementMethod.getInstance() + } mReminder1Minutes = mEvent.reminder1Minutes mReminder2Minutes = mEvent.reminder2Minutes @@ -175,7 +188,9 @@ class EventActivity : SimpleActivity() { event_title.setText(intent.getStringExtra("title")) event_location.setText(intent.getStringExtra("eventLocation")) event_description.setText(intent.getStringExtra("description")) - event_description.movementMethod = LinkMovementMethod.getInstance() + if (event_description.value.isNotEmpty()) { + event_description.movementMethod = LinkMovementMethod.getInstance() + } } else { val startTS = intent.getIntExtra(NEW_EVENT_START_TS, 0) val dateTime = Formatter.getDateTimeFromTS(startTS) @@ -616,9 +631,9 @@ class EventActivity : SimpleActivity() { } val reminders = sortedSetOf(mReminder1Minutes, mReminder2Minutes, mReminder3Minutes).filter { it != REMINDER_OFF } - val reminder1 = reminders.getOrElse(0, { REMINDER_OFF }) - val reminder2 = reminders.getOrElse(1, { REMINDER_OFF }) - val reminder3 = reminders.getOrElse(2, { REMINDER_OFF }) + val reminder1 = reminders.getOrElse(0) { REMINDER_OFF } + val reminder2 = reminders.getOrElse(1) { REMINDER_OFF } + val reminder3 = reminders.getOrElse(2) { REMINDER_OFF } config.apply { defaultReminderMinutes = reminder1 diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/SettingsActivity.kt index df198de7a..0e7f12da2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/SettingsActivity.kt @@ -58,6 +58,7 @@ class SettingsActivity : SimpleActivity() { setupWeeklyEnd() setupVibrate() setupReminderSound() + setupReminderAudioStream() setupUseSameSnooze() setupLoopReminders() setupSnoozeTime() @@ -295,7 +296,7 @@ class SettingsActivity : SimpleActivity() { settings_reminder_sound.text = config.reminderSoundTitle settings_reminder_sound_holder.setOnClickListener { - SelectAlarmSoundDialog(this, config.reminderSoundUri, AudioManager.STREAM_ALARM, GET_RINGTONE_URI, ALARM_SOUND_TYPE_NOTIFICATION, false, + SelectAlarmSoundDialog(this, config.reminderSoundUri, config.reminderAudioStream, GET_RINGTONE_URI, ALARM_SOUND_TYPE_NOTIFICATION, false, onAlarmPicked = { if (it != null) { updateReminderSound(it) @@ -315,6 +316,27 @@ class SettingsActivity : SimpleActivity() { settings_reminder_sound.text = alarmSound.title } + private fun setupReminderAudioStream() { + settings_reminder_audio_stream.text = getAudioStreamText() + settings_reminder_audio_stream_holder.setOnClickListener { + val items = arrayListOf( + RadioItem(AudioManager.STREAM_ALARM, res.getString(R.string.alarm_stream)), + RadioItem(AudioManager.STREAM_SYSTEM, res.getString(R.string.system_stream)), + RadioItem(AudioManager.STREAM_NOTIFICATION, res.getString(R.string.notification_stream))) + + RadioGroupDialog(this@SettingsActivity, items, config.reminderAudioStream) { + config.reminderAudioStream = it as Int + settings_reminder_audio_stream.text = getAudioStreamText() + } + } + } + + private fun getAudioStreamText() = getString(when (config.reminderAudioStream) { + AudioManager.STREAM_ALARM -> R.string.alarm_stream + AudioManager.STREAM_SYSTEM -> R.string.system_stream + else -> R.string.notification_stream + }) + private fun setupVibrate() { settings_vibrate.isChecked = config.vibrateOnReminder settings_vibrate_holder.setOnClickListener { diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/DayEventsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/DayEventsAdapter.kt index aa949f3ab..2bd308693 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/DayEventsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/DayEventsAdapter.kt @@ -36,10 +36,10 @@ class DayEventsAdapter(activity: SimpleActivity, val events: ArrayList, r override fun prepareActionMode(menu: Menu) {} - override fun prepareItemSelection(view: View) {} + override fun prepareItemSelection(viewHolder: ViewHolder) {} - override fun markItemSelection(select: Boolean, view: View?) { - view?.event_item_frame?.isSelected = select + override fun markViewHolderSelection(select: Boolean, viewHolder: ViewHolder?) { + viewHolder?.itemView?.event_item_frame?.isSelected = select } override fun actionItemPressed(id: Int) { @@ -51,11 +51,13 @@ class DayEventsAdapter(activity: SimpleActivity, val events: ArrayList, r override fun getSelectableItemCount() = events.size + override fun getIsItemSelectable(position: Int) = true + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.event_item_day_view, parent) override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) { val event = events[position] - val view = holder.bindView(event) { itemView, layoutPosition -> + val view = holder.bindView(event, true, true) { itemView, layoutPosition -> setupView(itemView, event) } bindViewHolder(holder, position, view) diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/EventListAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/EventListAdapter.kt index c9aa81d38..43cda31b9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/EventListAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/EventListAdapter.kt @@ -62,10 +62,10 @@ class EventListAdapter(activity: SimpleActivity, var listItems: ArrayList R.layout.event_list_item @@ -88,7 +90,7 @@ class EventListAdapter(activity: SimpleActivity, var listItems: ArrayList + val view = holder.bindView(listItem, true, allowLongClick) { itemView, layoutPosition -> if (listItem is ListSection) { setupListSection(itemView, listItem, position) } else if (listItem is ListEvent) { diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/ManageEventTypesAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/ManageEventTypesAdapter.kt index 97553d605..d8fcf08bb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/ManageEventTypesAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/adapters/ManageEventTypesAdapter.kt @@ -31,10 +31,10 @@ class ManageEventTypesAdapter(activity: SimpleActivity, val eventTypes: ArrayLis override fun prepareActionMode(menu: Menu) {} - override fun prepareItemSelection(view: View) {} + override fun prepareItemSelection(viewHolder: ViewHolder) {} - override fun markItemSelection(select: Boolean, view: View?) { - view?.event_item_frame?.isSelected = select + override fun markViewHolderSelection(select: Boolean, viewHolder: ViewHolder?) { + viewHolder?.itemView?.event_item_frame?.isSelected = select } override fun actionItemPressed(id: Int) { @@ -45,11 +45,13 @@ class ManageEventTypesAdapter(activity: SimpleActivity, val eventTypes: ArrayLis override fun getSelectableItemCount() = eventTypes.size + override fun getIsItemSelectable(position: Int) = true + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_event_type, parent) override fun onBindViewHolder(holder: ViewHolder, position: Int) { val eventType = eventTypes[position] - val view = holder.bindView(eventType) { itemView, layoutPosition -> + val view = holder.bindView(eventType, true, true) { itemView, layoutPosition -> setupView(itemView, eventType) } bindViewHolder(holder, position, view) diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/extensions/Context.kt index 4a0319c3c..c9b2a6f46 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/extensions/Context.kt @@ -11,7 +11,6 @@ import android.content.Intent import android.content.res.Resources import android.database.ContentObserver import android.media.AudioAttributes -import android.media.AudioManager import android.net.Uri import android.os.Bundle import android.provider.CalendarContract @@ -200,7 +199,7 @@ fun Context.getNotification(pendingIntent: PendingIntent, event: Event, content: val audioAttributes = AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_ALARM) .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) - .setLegacyStreamType(AudioManager.STREAM_ALARM) + .setLegacyStreamType(config.reminderAudioStream) .setFlags(AudioAttributes.FLAG_AUDIBILITY_ENFORCED) .build() @@ -228,7 +227,7 @@ fun Context.getNotification(pendingIntent: PendingIntent, event: Event, content: .setPriority(NotificationCompat.PRIORITY_MAX) .setDefaults(Notification.DEFAULT_LIGHTS) .setAutoCancel(true) - .setSound(Uri.parse(soundUri), AudioManager.STREAM_ALARM) + .setSound(Uri.parse(soundUri), config.reminderAudioStream) .setChannelId(channelId) .addAction(R.drawable.ic_snooze, getString(R.string.snooze), getSnoozePendingIntent(this, event)) diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Config.kt index 4e80731a5..a5d17c122 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Config.kt @@ -1,6 +1,7 @@ package com.simplemobiletools.calendar.helpers import android.content.Context +import android.media.AudioManager import com.simplemobiletools.calendar.R import com.simplemobiletools.calendar.extensions.scheduleCalDAVSync import com.simplemobiletools.commons.extensions.getDefaultAlarmTitle @@ -94,6 +95,10 @@ class Config(context: Context) : BaseConfig(context) { get() = prefs.getInt(LAST_USED_LOCAL_EVENT_TYPE_ID, DBHelper.REGULAR_EVENT_TYPE_ID) set(lastUsedLocalEventTypeId) = prefs.edit().putInt(LAST_USED_LOCAL_EVENT_TYPE_ID, lastUsedLocalEventTypeId).apply() + var reminderAudioStream: Int + get() = prefs.getInt(REMINDER_AUDIO_STREAM, AudioManager.STREAM_ALARM) + set(reminderAudioStream) = prefs.edit().putInt(REMINDER_AUDIO_STREAM, reminderAudioStream).apply() + var replaceDescription: Boolean get() = prefs.getBoolean(REPLACE_DESCRIPTION, false) set(replaceDescription) = prefs.edit().putBoolean(REPLACE_DESCRIPTION, replaceDescription).apply() diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Constants.kt index cfcf35e2f..3107f0e96 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Constants.kt @@ -53,6 +53,7 @@ const val LOOP_REMINDERS = "loop_reminders" const val DIM_PAST_EVENTS = "dim_past_events" const val LAST_SOUND_URI = "last_sound_uri" const val LAST_REMINDER_CHANNEL_ID = "last_reminder_channel_ID" +const val REMINDER_AUDIO_STREAM = "reminder_audio_stream" // repeat_rule for monthly and yearly repetition const val REPEAT_SAME_DAY = 1 // i.e. 25th every month, or 3rd june (if yearly repetition) diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/views/MonthView.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/views/MonthView.kt index 6cf0494ce..39ed95476 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/views/MonthView.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/views/MonthView.kt @@ -124,7 +124,7 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con } addWeekDayLetters(canvas) - if (showWeekNumbers) { + if (showWeekNumbers && days.isNotEmpty()) { addWeekNumbers(canvas) } diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 1cbb9b137..1fd52386b 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -246,6 +246,40 @@ + + + + + + + + Loop reminders until dismissed Dim past events Events + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-br/strings.xml b/app/src/main/res/values-br/strings.xml index 383383936..4f30c4e7c 100644 --- a/app/src/main/res/values-br/strings.xml +++ b/app/src/main/res/values-br/strings.xml @@ -159,6 +159,10 @@ Loop reminders until dismissed Dim past events Events + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 27a2dbd41..2bb24c6a0 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -159,6 +159,10 @@ Loop reminders until dismissed Dim past events Events + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index aba991e5c..4e8da2128 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -159,6 +159,10 @@ Fortsæt påmindelser indtil jeg stopper dem Nedton gamle begivenheder Begivenheder + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 1809832c8..93798cbea 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -159,6 +159,10 @@ Erinnerungen wiederholen bis sie verworfen werden Vergangene Termine ausgrauen Termine + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 48add30eb..ba2b0af9c 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -159,6 +159,10 @@ Loop reminders until dismissed Dim past events Events + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 02462868c..5e5a4bbc4 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -159,6 +159,10 @@ Boucles de rappel jusqu\'à ce qu\'il soit rejeté Diminuer l\'affichage des événements passés Evénements + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 1559926d4..516ca0c06 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -159,6 +159,10 @@ Loop reminders until dismissed Dim past events Events + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml index ce50644eb..103cd4ec0 100644 --- a/app/src/main/res/values-hi-rIN/strings.xml +++ b/app/src/main/res/values-hi-rIN/strings.xml @@ -160,6 +160,10 @@ Loop reminders until dismissed Dim past events Events + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 836667195..3da823e2b 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -159,6 +159,10 @@ Loop reminders until dismissed Dim past events Events + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index ac2a39aec..2137739fb 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -159,6 +159,10 @@ Loop reminders until dismissed Dim past events Events + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 704a30c9c..586bd010e 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -159,6 +159,10 @@ Loop reminders until dismissed Dim past events Events + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index 00fdcd70c..7d09cba56 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -160,6 +160,10 @@ Loop reminders until dismissed Dim past events Events + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 44358fbf6..48b87be10 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -3,30 +3,30 @@ シンプル カレンダー カレンダー ビューの変更 - Daily view - Weekly view - 月ビュー - 年ビュー - シンプル イベント リスト - Seems like you don\'t have any upcoming events. - Go to today + + + + + シンプル 予定 リスト + 今後の予定はありません。 + 今日へ移動 カレンダー月 - カレンダー イベント リスト + カレンダー 予定 リスト - イベント - イベントを編集 - 新しいイベント - Create a new event - Duplicate event + 予定 + 予定を編集 + 新しい予定 + 新しい予定を作成 + 予定を複製 タイトルは空にできません - イベントの終了は開始よりも前にできません - イベントを正常に追加しました - イベントを正常に更新しました - Filter events by type - Please fill in a location to be shown on a map + 予定の終了は開始よりも前にできません + 予定を正常に追加しました + 予定を正常に更新しました + 種類によって予定をフィルタリング + 地図上に表示する場所を入力してください An event is upcoming @@ -36,9 +36,9 @@ 毎週 毎月 毎年 - weeks - months - years + + + Repeat till Forever The event is repeatable @@ -80,52 +80,52 @@ last - Birthdays - Add contact birthdays - No birthdays have been found - Birthdays added successfully + 誕生日 + 連絡先の誕生日を追加 + 誕生日は見つかりませんでした + 誕生日が正常に追加されました - Anniversaries - Add contact anniversaries - No anniversaries have been found - Anniversaries added successfully + 記念日 + 連絡先の記念日を追加 + 記念日は見つかりませんでした + 記念日が正常に追加されました リマインダー Add another reminder - Event reminders + 予定のリマインダー - Import events - Export events - Import events from an .ics file - Export events to an .ics file - Default event type - Export past events too - Include event types - Filename (without .ics) - Override event types in the file + 予定をインポート + 予定をエクスポート + .ics ファイルから予定をインポートする + .ics ファイルに予定をエクスポートする + 既定の予定の種類 + 過去の予定もエクスポートする + 予定の種類を含める + ファイル名 (.ics を除く) + ファイル内の予定の種類を上書きする タイトル - Location + 場所 説明 - All-day + 終日 - Week + - Event types - Add a new type - Edit type - Type with this title already exists - Color - Regular event + 予定の種類 + 新しい種類を追加 + 種類を編集 + このタイトルの種類は既に存在します + + 通常の予定 Default event type cannot be deleted - Select an event type + 予定の種類を選択 Move affected events into the default event type Permanently remove affected events To remove a CalDAV calendar you have to unsynchronize it @@ -140,7 +140,7 @@ Importing holidays failed - Manage event types + 予定の種類を管理 Start day at End day at 週番号を表示 @@ -157,20 +157,24 @@ Are you sure you want to delete all events? This will leave your event types and other settings intact. Show a grid Loop reminders until dismissed - Dim past events - Events + 過去の予定を薄い色で表示 + 予定 + Audio stream used by reminders + System + Alarm + Notification CalDAV - Select calendars to sync - Manage synced calendars - Store locally only - Refresh CalDAV calendars - Refreshing… - Refreshing complete - Editing calendar failed - Syncing… - Sync completed + 同期するカレンダーを選択 + 同期したカレンダーの管理 + 端末内にのみ保存 + CalDAVカレンダーを更新 + 更新中… + 更新が完了しました + カレンダーを編集できませんでした + 同期中… + 同期が完了しました @@ -202,17 +206,17 @@ - イベント、カスタマイズ可能なウィジェットのあるシンプルなカレンダー。広告はありません。 + 予定、カスタマイズ可能なウィジェットのあるシンプルなカレンダー。広告はありません。 - 他のカレンダーとは統合されていないオフラインカレンダー。 簡単に定期的なイベントを作成し、リマインダーを設定することができます。また、週番号も表示することができます。 + CalDAVとの同期オプションも備えた、シンプルなカレンダー。 簡単に定期的な予定を作成し、リマインダーを設定することができます。また、週番号も表示することができます。 - サイズ変更が可能な 4x4 ウィジェットが含まれており、文字の色や背景のアルファや色をカスタマイズすることができます。 + サイズ変更が可能な 4x4 ウィジェットが含まれており、文字色や背景色、透明度をカスタマイズすることができます。 - 広告や不要なアクセス許可は含まれていません。 完全にオープンソースで、ダークテーマも提供しています。 + 広告や不要なアクセス権限は含まれていません。 完全にオープンソースで、ダークテーマも提供しています。 - The Storage permission is needed only for exporting or importing events from .ics files. + ストレージへのアクセス権限は、.icsファイルから予定をインポート/エクスポートするために必要です。 - The Contacts permission is used only at importing contact birthdays and anniversaries. + 連絡先へのアクセス権限は、誕生日や記念日をインポートするために必要です。 このアプリは、大きな一連のアプリの一つです。 他のアプリは https://www.simplemobiletools.com で見つけることができます diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index ad792ac2e..991b68727 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -159,6 +159,10 @@ Loop reminders until dismissed Dim past events Events + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 288fd384e..5557925a6 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -159,6 +159,10 @@ Loop reminders until dismissed Dim past events Events + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 06dde0ddc..462b718b3 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -159,6 +159,10 @@ Gjenta påminnelser inntil avvist Dim tidligere hendelser Hendelser + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 535b4cf99..20a43670a 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -159,6 +159,10 @@ Herinneringen blijven herhalen totdat ze zijn uitgezet Afgelopen afspraken dimmen Afspraken + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-no/strings.xml b/app/src/main/res/values-no/strings.xml index 193a20550..390dd1ee2 100644 --- a/app/src/main/res/values-no/strings.xml +++ b/app/src/main/res/values-no/strings.xml @@ -159,6 +159,10 @@ Loop reminders until dismissed Dim past events Events + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 23ce2b7a4..5d9508508 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -1,7 +1,7 @@ - Prosty Kalendarz - Prosty Kalendarz + Prosty kalendarz + Prosty kalendarz Zmień widok Dzień Tydzień @@ -19,15 +19,15 @@ Wydarzenie Edytuj wydarzenie Nowe wydarzenie - Create a new event - Duplicate event + Utwórz nowe wydarzenie + Skopiuj wydarzenie Tytuł nie może być pusty Wydarzenie nie może zakończyć się wcześniej, niż się zaczyna Wydarzenie zostało dodane Wydarzenie zostało zaktualizowane Filtruj wydarzenia według typu    Wpisz lokalizację, która ma być pokazana na mapie - An event is upcoming + Nadchodzi wydarzenie Powtórzenie @@ -44,7 +44,7 @@ Wydarzenie jest powtarzalne Wybór zawiera powtarzające się wydarzenia Usuń tylko wybrane wystąpienie - Delete this and all future occurrences + Usuń to i wyszystkie przyszłe wystąpienia Usuń wszystkie wystąpienia Zaktualizuj tylko wybrane wystąpienia Zaktualizuj wszystkie wystąpienia @@ -106,7 +106,7 @@ Eksportuj także wydarzenia z przeszłości Dołącz typy wydarzeń Nazwa pliku (bez końcówki \".ics\") - Override event types in the file + Nadpisz typy wydarzeń w pliku Tytuł @@ -135,7 +135,7 @@ Dodaj święto Święta państwowe Święta religijne - Holidays have been successfully imported into the \"Holidays\" event type + Święta zostały pomyślnie zaimportowane do kategorii wydarzeń \"Święta\" Importowanie niektórych świąt nie powiodło się Importowanie świąt nie powiodło się @@ -155,10 +155,14 @@    Zamieniaj opis wydarzenia na lokalizację    Usuń wszystkie wydarzenia    Czy na pewno mam usunąć wszystkie wydarzenia? Nie naruszy to typów wydarzeń i innych ustawień. - Show a grid - Loop reminders until dismissed - Dim past events - Events + Pokazuj siatkę + Powtarzaj przypomnienia aż do ich wyłączenia + Przyciemniaj przeszłe wydarzenia + Wydarzenia + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index ef86efa1c..6884411cf 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -3,7 +3,7 @@ Simple Calendar Calendário Mudar vista - Daily view + Vista diária Vista semanal Vista mensal Vista anual @@ -19,15 +19,15 @@ Evento Editar evento Novo evento - Create a new event + Crie um novo evento Duplicate event O título não pode ficar vazio O evento não pode terminar antes de iniciar Evento adicionado com sucesso Evento atualizado com sucesso Filtrar eventos por tipo - Please fill in a location to be shown on a map - An event is upcoming + Por favor, preencha um local para ser mostrado em um mapa + Um evento está próximo Repetição @@ -41,10 +41,10 @@ anos Repetir até Eternamente - The event is repeatable + O evento é repetitivo A seleção contém eventos recorrentes Apagar a ocorrência selecionada - Delete this and all future occurrences + Exclua essa e todas as ocorrências futuras Apagar todas as ocorrências Atualizar a ocorrência selecionada Atualizar todas as ocorrências @@ -56,12 +56,12 @@ Repetir Todo dia Em dias selecionados - The same day - The last day - Repeat on the same day each month - Repeat on the last day of the month - Repeat on the same day every year - Repeat every + O mesmo dia + O último dia + Repita no mesmo dia a cada mês + Repita no último dia do mês + Repita no mesmo dia todos os anos + Repita todos A cada primeiro segundo @@ -71,46 +71,46 @@ - Repeat every - Every - first - second - third - fourth - last + Repita todos + todo + primeiro + segundo + terceiro + quarto + ultimo - Birthdays - Add contact birthdays - No birthdays have been found - Birthdays added successfully + Aniversários + Adicionar aniversários dos contatos + Nenhum aniversário foi encontrado + Aniversários adicionados com sucesso - Anniversaries - Add contact anniversaries - No anniversaries have been found - Anniversaries added successfully + Aniversários + Adicionar aniversários dos contatos + Nenhum aniversário foi encontrado + Aniversários adicionados com sucesso Lembrete antes Adicionar outro lembrete - Event reminders + Lembretes de eventos Importar eventos Exportar eventos Importar eventos de um arquivo .ics - Export events to an .ics file + Exportar eventos para um arquivo .ics Tipo de evento padrão - Export past events too - Include event types - Filename (without .ics) - Override event types in the file + Exportar eventos passados também + Incluir tipos de eventos + Nome do arquivo (sem .ics) + Substituir os tipos de eventos no arquivo Título - Location + Localização Descrição O dia todo @@ -126,18 +126,18 @@ Evento regular O tipo de evento padrão não pode ser apagado Selecione um tipo de evento - Move affected events into the default event type - Permanently remove affected events - To remove a CalDAV calendar you have to unsynchronize it + Mover eventos afetados para o tipo de evento padrão + Remover permanentemente eventos afetados + Para remover um calendário do CalDAV, você deve desassincroná-lo - Holidays - Add holidays - National holidays - Religious holidays - Holidays have been successfully imported into the \"Holidays\" event type - Importing some events failed - Importing holidays failed + Ferias + Adicionar Ferias + feriados nacionais + Feriados religiosos + Os feriados foram importados com sucesso para o tipo de evento \ "Feriados \" + A importação de alguns eventos falhou + A importação de feriados falhou Gerenciar tipos de eventos @@ -150,37 +150,41 @@ Nenhum O dia final não pode ser antes do início CalDAV sync - Event lists - Display events from the past - Replace event description with location - Delete all events - Are you sure you want to delete all events? This will leave your event types and other settings intact. - Show a grid - Loop reminders until dismissed - Dim past events - Events + Listas de eventos + Exibir eventos do passado + Substituir descrição do evento por localização + Delete todos eventos + Tem certeza de que deseja excluir todos os eventos? Isso deixará seus tipos de eventos e outras configurações intactas. + Mostrar uma grid + Lembretes de loop até que seja dispensado + Escurecer passado eventos + Eventos + Audio stream used by reminders + System + Alarm + Notification CalDAV - Select calendars to sync - Manage synced calendars - Store locally only - Refresh CalDAV calendars - Refreshing… - Refreshing complete - Editing calendar failed - Syncing… - Sync completed + Selecione calendários para sincronizar + Gerenciar calendários sincronizados + Armazenar apenas localmente + Recarregar Calendarios CalDAV + Recarregando… + Carregamento completo + O calendário de edição falhou + Sincronizando… + Sincronização completa - Monday - Tuesday - Wednesday - Thursday - Friday - Saturday - Sunday + Segunda + Terça + Quarta + Quinta + Sexta + Sabado + Domingo Ir ao ginásio @@ -193,12 +197,12 @@ Beber um café - How can I remove the holidays imported via the \"Add holidays\" button? - Holidays created that way are inserted in a new event type called \"Holidays\". You can go in Settings -> Manage Event Types, - long press the given event type and delete it by selecting the trashbin. - Can I sync my events via Google Calendar, or other service supporting 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 DAVdroid. + Como posso remover os feriados importados por meio do botão \ "Adicionar feriados \"? + Os feriados criados dessa maneira são inseridos em um novo tipo de evento chamado \ "Feriados \". Você pode ir em Configurações -> Gerenciar tipos de eventos, + pressione e segure o tipo de evento fornecido e exclua-o selecionando a lixeira. + Posso sincronizar meus eventos por meio do Google Agenda ou de outro serviço de suporte CalDAV? + Sim, basta ativar \ "CalDAV sync \" nas configurações do aplicativo e selecionar os calendários que você deseja sincronizar. No entanto, você precisará de algum aplicativo de terceiros que manipule a sincronização entre o dispositivo e os servidores. + Caso você queira sincronizar um calendário do Google, o aplicativo oficial do Google Agenda fará o trabalho. Para outros calendários, você precisará de um adaptador de sincronização de terceiros, por exemplo, o DAVdroid. @@ -212,7 +216,7 @@ A permissão de armazenamento é necessária apenas para importar eventos dos arquivos .ics. - The Contacts permission is used only at importing contact birthdays and anniversaries. + A permissão de Contatos é usada apenas na importação de aniversários e aniversários de contato. Este aplicativo é apenas parte de um conjunto mais vasto de aplicações. Saiba mais em https://www.simplemobiletools.com diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index e3d17b06b..a57999d63 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -159,6 +159,10 @@ Mostrar lembretes até serem descartados Desvanecer eventos passados Eventos + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 7817ab5d4..164bd2db4 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -159,6 +159,10 @@ Циклические напоминания до отключения Прошедшие события отображать тусклыми События + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 19984115b..d9f0734a8 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -159,6 +159,10 @@ Opakovať pripomienky až po odstránenie Stlmiť minulé udalosti Udalosti + Zvukový kanál používaný pripomienkami + Systémový + Výstražný + Pripomienkový CalDAV diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 2755888aa..c576607f7 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -159,6 +159,10 @@ Upprepa påminnelser tills de tas bort Tona ned tidigare händelser Händelser + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 8adb9cdad..7ee8ac3cb 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -44,7 +44,7 @@ Etkinlik tekrarlanabilir Seçim tekrarlanan etkinlikleri içeriyor Yalnızca seçilen etkinlikleri sil - Delete this and all future occurrences + Bu ve gelecekteki tüm etkinlikleri sil Tüm tekrarlanan etkinlikleri sil Yalnızca seçilen etkinlikleri güncelle Tüm etkinlikleri güncelle @@ -159,6 +159,10 @@ Kapatılana kadar hatırlatıcıları tekrarla Geçmiş etkinlikleri karart Etkinlikler + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 40206d891..b2abb6e9b 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -44,7 +44,7 @@ 這是個重複活動 選擇的項目含有重複活動 只刪除選擇的事件 - Delete this and all future occurrences + 刪除這個及全部未來的事件 刪除全部事件 只更新選擇的事件 更新全部事件 @@ -159,6 +159,10 @@ 不斷重複提醒直到解除 淡化過去的活動 活動 + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 07033f025..3deb45e6d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -159,6 +159,10 @@ Loop reminders until dismissed Dim past events Events + Audio stream used by reminders + System + Alarm + Notification CalDAV diff --git a/build.gradle b/build.gradle index 7cbfad621..ce1386288 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.2.41' + ext.kotlin_version = '1.2.50' repositories { jcenter()