commit
4551a750cc
73 changed files with 1345 additions and 542 deletions
39
CHANGELOG.md
39
CHANGELOG.md
|
@ -1,6 +1,45 @@
|
|||
Changelog
|
||||
==========
|
||||
|
||||
Version 3.3.2 *(2018-02-21)*
|
||||
----------------------------
|
||||
|
||||
* Try fixing the off-by-one issue at CalDAV syncing all-day events
|
||||
* Couple stability improvements
|
||||
|
||||
Version 3.3.1 *(2018-02-19)*
|
||||
----------------------------
|
||||
|
||||
* Improved CalDAV all-day event importing (by angelsl)
|
||||
* Added a FAQ section with a couple initial items
|
||||
* Once again fixed some cases of blank or duplicate views
|
||||
|
||||
Version 3.3.0 *(2018-02-10)*
|
||||
----------------------------
|
||||
|
||||
* Fixed blank or duplicate views in some cases (yes, again)
|
||||
* Fixed off-by-one day error at syncing all-day events via Nextcloud
|
||||
* Make default filenames at export more user-friendly
|
||||
* Improved the performance by removing some unnecessary redraws
|
||||
* Added a toggle for switching between default snooze interval or always showing an interval picker
|
||||
|
||||
Version 3.2.4 *(2018-02-05)*
|
||||
----------------------------
|
||||
|
||||
* Fixed blank screens in some cases
|
||||
* Misc smaller improvements
|
||||
|
||||
Version 3.2.3 *(2018-02-01)*
|
||||
----------------------------
|
||||
|
||||
* Fixed blank screens in some cases
|
||||
* Make sure the Add New Event button works when opening the app from a widget
|
||||
* Removed the "Default event reminder" from settings, remember last used values
|
||||
* Allow selecting Snooze interval at pressing Snooze
|
||||
* Allow disabling displaying of What's New
|
||||
* Add a Back button at the actionmenu when opening a subview
|
||||
* Allow deleting all events at once without reseting event types and other settings
|
||||
|
||||
Version 3.2.2 *(2018-01-27)*
|
||||
----------------------------
|
||||
|
||||
|
|
|
@ -10,8 +10,8 @@ android {
|
|||
applicationId "com.simplemobiletools.calendar"
|
||||
minSdkVersion 16
|
||||
targetSdkVersion 27
|
||||
versionCode 110
|
||||
versionName "3.2.2"
|
||||
versionCode 115
|
||||
versionName "3.3.2"
|
||||
multiDexEnabled true
|
||||
setProperty("archivesBaseName", "calendar")
|
||||
}
|
||||
|
@ -21,6 +21,9 @@ android {
|
|||
}
|
||||
|
||||
buildTypes {
|
||||
debug {
|
||||
applicationIdSuffix ".debug"
|
||||
}
|
||||
release {
|
||||
minifyEnabled true
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
|
@ -43,7 +46,7 @@ ext {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
implementation 'com.simplemobiletools:commons:3.8.11'
|
||||
implementation 'com.simplemobiletools:commons:3.12.16'
|
||||
implementation 'joda-time:joda-time:2.9.9'
|
||||
implementation 'com.facebook.stetho:stetho:1.5.0'
|
||||
implementation 'com.android.support:multidex:1.0.2'
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_launcher_name">Calendar_debug</string>
|
||||
<string name="leak_canary_display_activity_label">Calendar Leaks</string>
|
||||
</resources>
|
|
@ -96,6 +96,11 @@
|
|||
android:label="@string/third_party_licences"
|
||||
android:parentActivityName="com.simplemobiletools.commons.activities.AboutActivity"/>
|
||||
|
||||
<activity
|
||||
android:name="com.simplemobiletools.commons.activities.FAQActivity"
|
||||
android:label="@string/frequently_asked_questions"
|
||||
android:parentActivityName="com.simplemobiletools.commons.activities.AboutActivity"/>
|
||||
|
||||
<activity
|
||||
android:name=".activities.EventActivity"
|
||||
android:parentActivityName=".activities.MainActivity">
|
||||
|
@ -119,6 +124,10 @@
|
|||
android:label="@string/event_types"
|
||||
android:parentActivityName=".activities.SettingsActivity"/>
|
||||
|
||||
<activity
|
||||
android:name=".activities.SnoozeReminderActivity"
|
||||
android:theme="@style/Theme.Transparent"/>
|
||||
|
||||
<receiver
|
||||
android:name=".helpers.MyWidgetMonthlyProvider"
|
||||
android:icon="@drawable/img_widget_monthly_preview"
|
||||
|
|
|
@ -66,8 +66,8 @@ class EventActivity : SimpleActivity() {
|
|||
} else {
|
||||
mEvent = Event()
|
||||
mReminder1Minutes = config.defaultReminderMinutes
|
||||
mReminder2Minutes = -1
|
||||
mReminder3Minutes = -1
|
||||
mReminder2Minutes = config.defaultReminderMinutes3
|
||||
mReminder3Minutes = config.defaultReminderMinutes2
|
||||
setupNewEvent()
|
||||
}
|
||||
|
||||
|
@ -450,7 +450,7 @@ class EventActivity : SimpleActivity() {
|
|||
event_caldav_calendar_holder.beVisible()
|
||||
event_caldav_calendar_divider.beVisible()
|
||||
|
||||
val calendars = CalDAVHandler(applicationContext).getCalDAVCalendars().filter {
|
||||
val calendars = CalDAVHandler(applicationContext).getCalDAVCalendars(this).filter {
|
||||
it.canWrite() && config.getSyncedCalendarIdsAsList().contains(it.id.toString())
|
||||
}
|
||||
updateCurrentCalendarInfo(if (mEventCalendarId == STORED_LOCALLY_ONLY) null else getCalendarWithId(calendars, getCalendarId()))
|
||||
|
@ -551,14 +551,24 @@ 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 })
|
||||
|
||||
config.apply {
|
||||
defaultReminderMinutes = reminder1
|
||||
defaultReminderMinutes2 = reminder2
|
||||
defaultReminderMinutes3 = reminder3
|
||||
}
|
||||
|
||||
mEvent.apply {
|
||||
startTS = newStartTS
|
||||
endTS = newEndTS
|
||||
title = newTitle
|
||||
description = event_description.value
|
||||
reminder1Minutes = reminders.elementAtOrElse(0) { REMINDER_OFF }
|
||||
reminder2Minutes = reminders.elementAtOrElse(1) { REMINDER_OFF }
|
||||
reminder3Minutes = reminders.elementAtOrElse(2) { REMINDER_OFF }
|
||||
reminder1Minutes = reminder1
|
||||
reminder2Minutes = reminder2
|
||||
reminder3Minutes = reminder3
|
||||
repeatInterval = mRepeatInterval
|
||||
importId = newImportId
|
||||
flags = if (event_all_day.isChecked) (mEvent.flags or FLAG_ALL_DAY) else (mEvent.flags.removeFlag(FLAG_ALL_DAY))
|
||||
|
|
|
@ -13,7 +13,6 @@ import android.os.Handler
|
|||
import android.provider.ContactsContract
|
||||
import android.support.v4.view.MenuItemCompat
|
||||
import android.support.v7.widget.SearchView
|
||||
import android.util.SparseIntArray
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import android.widget.Toast
|
||||
|
@ -35,6 +34,7 @@ import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
|||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.commons.helpers.*
|
||||
import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener
|
||||
import com.simplemobiletools.commons.models.FAQItem
|
||||
import com.simplemobiletools.commons.models.RadioItem
|
||||
import com.simplemobiletools.commons.models.Release
|
||||
import kotlinx.android.synthetic.main.activity_main.*
|
||||
|
@ -55,7 +55,6 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||
private var mSearchMenuItem: MenuItem? = null
|
||||
private var shouldGoToTodayBeVisible = false
|
||||
private var goToTodayButton: MenuItem? = null
|
||||
private var eventTypeColors = SparseIntArray()
|
||||
private var currentFragments = ArrayList<MyFragmentHolder>()
|
||||
|
||||
private var mStoredTextColor = 0
|
||||
|
@ -72,7 +71,11 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||
appLaunched()
|
||||
checkWhatsNewDialog()
|
||||
calendar_fab.beVisibleIf(config.storedView != YEARLY_VIEW)
|
||||
calendar_fab.setOnClickListener {
|
||||
launchNewEventIntent(currentFragments.last().getNewEventDayCode())
|
||||
}
|
||||
|
||||
storeStateVariables()
|
||||
if (resources.getBoolean(R.bool.portrait_only)) {
|
||||
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
|
||||
}
|
||||
|
@ -93,8 +96,9 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||
}
|
||||
}
|
||||
|
||||
storeStateVariables()
|
||||
updateViewPager()
|
||||
if (!checkOpenIntents()) {
|
||||
updateViewPager()
|
||||
}
|
||||
|
||||
if (!hasPermission(PERMISSION_WRITE_CALENDAR) || !hasPermission(PERMISSION_READ_CALENDAR)) {
|
||||
config.caldavSync = false
|
||||
|
@ -103,11 +107,6 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||
if (config.caldavSync) {
|
||||
refreshCalDAVCalendars(false)
|
||||
}
|
||||
|
||||
calendar_fab.setOnClickListener {
|
||||
launchNewEventIntent(currentFragments.last().getNewEventDayCode())
|
||||
}
|
||||
checkOpenIntents()
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
|
@ -123,10 +122,7 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||
}
|
||||
|
||||
dbHelper.getEventTypes {
|
||||
eventTypeColors.clear()
|
||||
it.map { eventTypeColors.put(it.id, it.color) }
|
||||
mShouldFilterBeVisible = eventTypeColors.size() > 1 || config.displayEventTypes.isEmpty()
|
||||
invalidateOptionsMenu()
|
||||
mShouldFilterBeVisible = it.size > 1 || config.displayEventTypes.isEmpty()
|
||||
}
|
||||
|
||||
if (config.storedView == WEEKLY_VIEW) {
|
||||
|
@ -137,7 +133,10 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||
|
||||
storeStateVariables()
|
||||
updateWidgets()
|
||||
updateTextColors(calendar_coordinator)
|
||||
if (config.storedView != EVENTS_LIST_VIEW) {
|
||||
updateTextColors(calendar_coordinator)
|
||||
}
|
||||
calendar_fab.setColors(config.textColor, getAdjustedPrimaryColor(), config.backgroundColor)
|
||||
search_holder.background = ColorDrawable(config.backgroundColor)
|
||||
}
|
||||
|
||||
|
@ -159,13 +158,20 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||
goToTodayButton = findItem(R.id.go_to_today)
|
||||
findItem(R.id.filter).isVisible = mShouldFilterBeVisible
|
||||
findItem(R.id.go_to_today).isVisible = shouldGoToTodayBeVisible && config.storedView != EVENTS_LIST_VIEW
|
||||
findItem(R.id.refresh_caldav_calendars).isVisible = config.caldavSync
|
||||
}
|
||||
|
||||
setupSearch(menu)
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onPrepareOptionsMenu(menu: Menu?): Boolean {
|
||||
menu!!.apply {
|
||||
findItem(R.id.refresh_caldav_calendars).isVisible = config.caldavSync
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
R.id.change_view -> showViewDialog()
|
||||
|
@ -179,6 +185,7 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||
R.id.export_events -> tryExportEvents()
|
||||
R.id.settings -> launchSettings()
|
||||
R.id.about -> launchAbout()
|
||||
android.R.id.home -> onBackPressed()
|
||||
else -> return super.onOptionsItemSelected(item)
|
||||
}
|
||||
return true
|
||||
|
@ -241,12 +248,10 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||
}
|
||||
|
||||
private fun closeSearch() {
|
||||
if (mSearchMenuItem != null) {
|
||||
MenuItemCompat.collapseActionView(mSearchMenuItem)
|
||||
}
|
||||
mSearchMenuItem?.collapseActionView()
|
||||
}
|
||||
|
||||
private fun checkOpenIntents() {
|
||||
private fun checkOpenIntents(): Boolean {
|
||||
val dayCodeToOpen = intent.getStringExtra(DAY_CODE) ?: ""
|
||||
val openMonth = intent.getBooleanExtra(OPEN_MONTH, false)
|
||||
intent.removeExtra(OPEN_MONTH)
|
||||
|
@ -255,7 +260,7 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||
calendar_fab.beVisible()
|
||||
config.storedView = if (openMonth) MONTHLY_VIEW else DAILY_VIEW
|
||||
updateViewPager(dayCodeToOpen)
|
||||
return
|
||||
return true
|
||||
}
|
||||
|
||||
val eventIdToOpen = intent.getIntExtra(EVENT_ID, 0)
|
||||
|
@ -269,16 +274,17 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||
startActivity(this)
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
private fun showViewDialog() {
|
||||
val res = resources
|
||||
val items = arrayListOf(
|
||||
RadioItem(DAILY_VIEW, res.getString(R.string.daily_view)),
|
||||
RadioItem(WEEKLY_VIEW, res.getString(R.string.weekly_view)),
|
||||
RadioItem(MONTHLY_VIEW, res.getString(R.string.monthly_view)),
|
||||
RadioItem(YEARLY_VIEW, res.getString(R.string.yearly_view)),
|
||||
RadioItem(EVENTS_LIST_VIEW, res.getString(R.string.simple_event_list)))
|
||||
RadioItem(DAILY_VIEW, getString(R.string.daily_view)),
|
||||
RadioItem(WEEKLY_VIEW, getString(R.string.weekly_view)),
|
||||
RadioItem(MONTHLY_VIEW, getString(R.string.monthly_view)),
|
||||
RadioItem(YEARLY_VIEW, getString(R.string.yearly_view)),
|
||||
RadioItem(EVENTS_LIST_VIEW, getString(R.string.simple_event_list)))
|
||||
|
||||
RadioGroupDialog(this, items, config.storedView) {
|
||||
calendar_fab.beVisibleIf(it as Int != YEARLY_VIEW)
|
||||
|
@ -501,7 +507,7 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||
private fun updateViewPager(dayCode: String? = Formatter.getTodayCode(applicationContext)) {
|
||||
val fragment = getFragmentsHolder()
|
||||
currentFragments.forEach {
|
||||
supportFragmentManager.beginTransaction().remove(it).commit()
|
||||
supportFragmentManager.beginTransaction().remove(it).commitNow()
|
||||
}
|
||||
currentFragments.clear()
|
||||
currentFragments.add(fragment)
|
||||
|
@ -513,27 +519,37 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||
}
|
||||
|
||||
fragment.arguments = bundle
|
||||
supportFragmentManager.beginTransaction().add(R.id.fragments_holder, fragment).commit()
|
||||
supportFragmentManager.beginTransaction().add(R.id.fragments_holder, fragment).commitNow()
|
||||
}
|
||||
|
||||
fun openMonthFromYearly(dateTime: DateTime) {
|
||||
if (currentFragments.last() is MonthFragmentsHolder) {
|
||||
return
|
||||
}
|
||||
|
||||
val fragment = MonthFragmentsHolder()
|
||||
currentFragments.add(fragment)
|
||||
val bundle = Bundle()
|
||||
bundle.putString(DAY_CODE, Formatter.getDayCodeFromDateTime(dateTime))
|
||||
fragment.arguments = bundle
|
||||
supportFragmentManager.beginTransaction().add(R.id.fragments_holder, fragment).commit()
|
||||
supportFragmentManager.beginTransaction().add(R.id.fragments_holder, fragment).commitNow()
|
||||
resetActionBarTitle()
|
||||
calendar_fab.beVisible()
|
||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||
}
|
||||
|
||||
fun openDayFromMonthly(dateTime: DateTime) {
|
||||
if (currentFragments.last() is DayFragmentsHolder) {
|
||||
return
|
||||
}
|
||||
|
||||
val fragment = DayFragmentsHolder()
|
||||
currentFragments.add(fragment)
|
||||
val bundle = Bundle()
|
||||
bundle.putString(DAY_CODE, Formatter.getDayCodeFromDateTime(dateTime))
|
||||
fragment.arguments = bundle
|
||||
supportFragmentManager.beginTransaction().add(R.id.fragments_holder, fragment).commit()
|
||||
supportFragmentManager.beginTransaction().add(R.id.fragments_holder, fragment).commitNow()
|
||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||
}
|
||||
|
||||
private fun getThisWeekDateTime(): String {
|
||||
|
@ -561,11 +577,12 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||
updateActionBarTitle()
|
||||
}
|
||||
calendar_fab.beGoneIf(currentFragments.size == 1 && config.storedView == YEARLY_VIEW)
|
||||
supportActionBar?.setDisplayHomeAsUpEnabled(currentFragments.size > 1)
|
||||
}
|
||||
|
||||
private fun refreshViewPager() {
|
||||
if (!isActivityDestroyed()) {
|
||||
runOnUiThread {
|
||||
runOnUiThread {
|
||||
if (!isActivityDestroyed()) {
|
||||
currentFragments.last().refreshEvents()
|
||||
}
|
||||
}
|
||||
|
@ -649,8 +666,15 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||
}
|
||||
|
||||
private fun launchAbout() {
|
||||
val faqItems = arrayListOf(
|
||||
FAQItem(R.string.faq_1_title_commons, R.string.faq_1_text_commons),
|
||||
FAQItem(R.string.faq_2_title_commons, R.string.faq_2_text_commons),
|
||||
FAQItem(R.string.faq_4_title_commons, R.string.faq_4_text_commons),
|
||||
FAQItem(getString(R.string.faq_1_title), getString(R.string.faq_1_text)),
|
||||
FAQItem(getString(R.string.faq_2_title), getString(R.string.faq_2_text)))
|
||||
|
||||
startAboutActivity(R.string.app_name, LICENSE_KOTLIN or LICENSE_JODA or LICENSE_STETHO or LICENSE_MULTISELECT or LICENSE_LEAK_CANARY,
|
||||
BuildConfig.VERSION_NAME)
|
||||
BuildConfig.VERSION_NAME, faqItems)
|
||||
}
|
||||
|
||||
private fun searchQueryChanged(text: String) {
|
||||
|
|
|
@ -7,22 +7,24 @@ import android.net.Uri
|
|||
import android.os.Bundle
|
||||
import android.os.Parcelable
|
||||
import android.text.TextUtils
|
||||
import com.simplemobiletools.calendar.BuildConfig
|
||||
import com.simplemobiletools.calendar.R
|
||||
import com.simplemobiletools.calendar.dialogs.CustomEventReminderDialog
|
||||
import com.simplemobiletools.calendar.dialogs.SelectCalendarsDialog
|
||||
import com.simplemobiletools.calendar.dialogs.SnoozePickerDialog
|
||||
import com.simplemobiletools.calendar.extensions.*
|
||||
import com.simplemobiletools.calendar.helpers.CalDAVHandler
|
||||
import com.simplemobiletools.calendar.helpers.FONT_SIZE_LARGE
|
||||
import com.simplemobiletools.calendar.helpers.FONT_SIZE_MEDIUM
|
||||
import com.simplemobiletools.calendar.helpers.FONT_SIZE_SMALL
|
||||
import com.simplemobiletools.calendar.models.EventType
|
||||
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
||||
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CALENDAR
|
||||
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CALENDAR
|
||||
import com.simplemobiletools.commons.models.RadioItem
|
||||
import kotlinx.android.synthetic.main.activity_settings.*
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
|
||||
class SettingsActivity : SimpleActivity() {
|
||||
|
@ -47,14 +49,16 @@ class SettingsActivity : SimpleActivity() {
|
|||
setupManageEventTypes()
|
||||
setupHourFormat()
|
||||
setupSundayFirst()
|
||||
setupAvoidWhatsNew()
|
||||
setupDeleteAllEvents()
|
||||
setupReplaceDescription()
|
||||
setupWeekNumbers()
|
||||
setupWeeklyStart()
|
||||
setupWeeklyEnd()
|
||||
setupVibrate()
|
||||
setupReminderSound()
|
||||
setupUseSameSnooze()
|
||||
setupSnoozeDelay()
|
||||
setupEventReminder()
|
||||
setupDisplayPastEvents()
|
||||
setupFontSize()
|
||||
updateTextColors(settings_holder)
|
||||
|
@ -203,6 +207,24 @@ class SettingsActivity : SimpleActivity() {
|
|||
}
|
||||
}
|
||||
|
||||
private fun setupAvoidWhatsNew() {
|
||||
settings_avoid_whats_new.isChecked = config.avoidWhatsNew
|
||||
settings_avoid_whats_new_holder.setOnClickListener {
|
||||
settings_avoid_whats_new.toggle()
|
||||
config.avoidWhatsNew = settings_avoid_whats_new.isChecked
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupDeleteAllEvents() {
|
||||
settings_delete_all_events_holder.setOnClickListener {
|
||||
ConfirmationDialog(this, messageId = R.string.delete_all_events_confirmation) {
|
||||
Thread {
|
||||
dbHelper.deleteAllEvents()
|
||||
}.start()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupReplaceDescription() {
|
||||
settings_replace_description.isChecked = config.replaceDescription
|
||||
settings_replace_description_holder.setOnClickListener {
|
||||
|
@ -284,10 +306,20 @@ class SettingsActivity : SimpleActivity() {
|
|||
}
|
||||
}
|
||||
|
||||
private fun setupUseSameSnooze() {
|
||||
settings_snooze_delay_holder.beVisibleIf(config.useSameSnooze)
|
||||
settings_use_same_snooze.isChecked = config.useSameSnooze
|
||||
settings_use_same_snooze_holder.setOnClickListener {
|
||||
settings_use_same_snooze.toggle()
|
||||
config.useSameSnooze = settings_use_same_snooze.isChecked
|
||||
settings_snooze_delay_holder.beVisibleIf(config.useSameSnooze)
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupSnoozeDelay() {
|
||||
updateSnoozeText()
|
||||
settings_snooze_delay_holder.setOnClickListener {
|
||||
SnoozePickerDialog(this, config.snoozeDelay) {
|
||||
showEventReminderDialog(config.snoozeDelay, true) {
|
||||
config.snoozeDelay = it
|
||||
updateSnoozeText()
|
||||
}
|
||||
|
@ -298,18 +330,6 @@ class SettingsActivity : SimpleActivity() {
|
|||
settings_snooze_delay.text = res.getQuantityString(R.plurals.by_minutes, config.snoozeDelay, config.snoozeDelay)
|
||||
}
|
||||
|
||||
private fun setupEventReminder() {
|
||||
var reminderMinutes = config.defaultReminderMinutes
|
||||
settings_default_reminder.text = getFormattedMinutes(reminderMinutes)
|
||||
settings_default_reminder_holder.setOnClickListener {
|
||||
showEventReminderDialog(reminderMinutes) {
|
||||
config.defaultReminderMinutes = it
|
||||
reminderMinutes = it
|
||||
settings_default_reminder.text = getFormattedMinutes(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun getHoursString(hours: Int): String {
|
||||
return if (hours < 10) {
|
||||
"0$hours:00"
|
||||
|
@ -335,10 +355,11 @@ class SettingsActivity : SimpleActivity() {
|
|||
}
|
||||
|
||||
private fun getDisplayPastEventsText(displayPastEvents: Int): String {
|
||||
return if (displayPastEvents == 0)
|
||||
return if (displayPastEvents == 0) {
|
||||
getString(R.string.never)
|
||||
else
|
||||
} else {
|
||||
getFormattedMinutes(displayPastEvents, false)
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupFontSize() {
|
||||
|
@ -367,12 +388,20 @@ class SettingsActivity : SimpleActivity() {
|
|||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
if (resultCode == RESULT_OK) {
|
||||
if (requestCode == GET_RINGTONE_URI) {
|
||||
val uri = data?.getParcelableExtra<Parcelable>(RingtoneManager.EXTRA_RINGTONE_PICKED_URI)
|
||||
var uri = data?.getParcelableExtra<Parcelable>(RingtoneManager.EXTRA_RINGTONE_PICKED_URI)
|
||||
|
||||
if (uri == null) {
|
||||
config.reminderSound = ""
|
||||
} else {
|
||||
settings_reminder_sound.text = RingtoneManager.getRingtone(this, uri as Uri)?.getTitle(this)
|
||||
config.reminderSound = uri.toString()
|
||||
try {
|
||||
if ((uri as Uri).scheme == "file") {
|
||||
uri = getFilePublicUri(File(uri.path), BuildConfig.APPLICATION_ID)
|
||||
}
|
||||
settings_reminder_sound.text = RingtoneManager.getRingtone(this, uri)?.getTitle(this)
|
||||
config.reminderSound = uri.toString()
|
||||
} catch (e: Exception) {
|
||||
showErrorToast(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,90 +1,5 @@
|
|||
package com.simplemobiletools.calendar.activities
|
||||
|
||||
import com.simplemobiletools.calendar.R
|
||||
import com.simplemobiletools.calendar.dialogs.CustomEventReminderDialog
|
||||
import com.simplemobiletools.calendar.dialogs.CustomEventRepeatIntervalDialog
|
||||
import com.simplemobiletools.calendar.extensions.getFormattedMinutes
|
||||
import com.simplemobiletools.calendar.extensions.getRepetitionText
|
||||
import com.simplemobiletools.calendar.helpers.DAY
|
||||
import com.simplemobiletools.calendar.helpers.MONTH
|
||||
import com.simplemobiletools.calendar.helpers.WEEK
|
||||
import com.simplemobiletools.calendar.helpers.YEAR
|
||||
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
||||
import com.simplemobiletools.commons.extensions.hideKeyboard
|
||||
import com.simplemobiletools.commons.models.RadioItem
|
||||
import java.util.TreeSet
|
||||
import kotlin.collections.ArrayList
|
||||
|
||||
open class SimpleActivity : BaseSimpleActivity() {
|
||||
protected fun showEventReminderDialog(curMinutes: Int, callback: (minutes: Int) -> Unit) {
|
||||
hideKeyboard()
|
||||
val minutes = TreeSet<Int>()
|
||||
minutes.apply {
|
||||
add(-1)
|
||||
add(0)
|
||||
add(10)
|
||||
add(30)
|
||||
add(curMinutes)
|
||||
}
|
||||
|
||||
val items = ArrayList<RadioItem>(minutes.size + 1)
|
||||
minutes.mapIndexedTo(items, { index, value ->
|
||||
RadioItem(index, getFormattedMinutes(value), value)
|
||||
})
|
||||
|
||||
var selectedIndex = 0
|
||||
minutes.forEachIndexed { index, value ->
|
||||
if (value == curMinutes)
|
||||
selectedIndex = index
|
||||
}
|
||||
|
||||
items.add(RadioItem(-2, getString(R.string.custom)))
|
||||
|
||||
RadioGroupDialog(this, items, selectedIndex) {
|
||||
if (it == -2) {
|
||||
CustomEventReminderDialog(this) {
|
||||
callback(it)
|
||||
}
|
||||
} else {
|
||||
callback(it as Int)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected fun showEventRepeatIntervalDialog(curSeconds: Int, callback: (minutes: Int) -> Unit) {
|
||||
hideKeyboard()
|
||||
val seconds = TreeSet<Int>()
|
||||
seconds.apply {
|
||||
add(0)
|
||||
add(DAY)
|
||||
add(WEEK)
|
||||
add(MONTH)
|
||||
add(YEAR)
|
||||
add(curSeconds)
|
||||
}
|
||||
|
||||
val items = ArrayList<RadioItem>(seconds.size + 1)
|
||||
seconds.mapIndexedTo(items, { index, value ->
|
||||
RadioItem(index, getRepetitionText(value), value)
|
||||
})
|
||||
|
||||
var selectedIndex = 0
|
||||
seconds.forEachIndexed { index, value ->
|
||||
if (value == curSeconds)
|
||||
selectedIndex = index
|
||||
}
|
||||
|
||||
items.add(RadioItem(-1, getString(R.string.custom)))
|
||||
|
||||
RadioGroupDialog(this, items, selectedIndex) {
|
||||
if (it == -1) {
|
||||
CustomEventRepeatIntervalDialog(this) {
|
||||
callback(it)
|
||||
}
|
||||
} else {
|
||||
callback(it as Int)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
open class SimpleActivity : BaseSimpleActivity()
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
package com.simplemobiletools.calendar.activities
|
||||
|
||||
import android.os.Bundle
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import com.simplemobiletools.calendar.extensions.config
|
||||
import com.simplemobiletools.calendar.extensions.dbHelper
|
||||
import com.simplemobiletools.calendar.extensions.rescheduleReminder
|
||||
import com.simplemobiletools.calendar.extensions.showEventReminderDialog
|
||||
import com.simplemobiletools.calendar.helpers.EVENT_ID
|
||||
|
||||
class SnoozeReminderActivity : AppCompatActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
showEventReminderDialog(config.snoozeDelay, true, cancelCallback = { dialogCancelled() }) {
|
||||
val eventId = intent.getIntExtra(EVENT_ID, 0)
|
||||
val event = dbHelper.getEventWithId(eventId)
|
||||
config.snoozeDelay = it
|
||||
rescheduleReminder(event, it)
|
||||
finishActivity()
|
||||
}
|
||||
}
|
||||
|
||||
private fun dialogCancelled() {
|
||||
finishActivity()
|
||||
}
|
||||
|
||||
private fun finishActivity() {
|
||||
finish()
|
||||
overridePendingTransition(0, 0)
|
||||
}
|
||||
}
|
|
@ -25,18 +25,13 @@ class MyDayPagerAdapter(fm: FragmentManager, private val mCodes: List<String>, p
|
|||
fragment.mListener = mListener
|
||||
|
||||
mFragments.put(position, fragment)
|
||||
|
||||
return fragment
|
||||
}
|
||||
|
||||
fun checkDayEvents(pos: Int) {
|
||||
fun updateCalendars(pos: Int) {
|
||||
for (i in -1..1) {
|
||||
mFragments[pos + i]?.checkEvents()
|
||||
}
|
||||
}
|
||||
|
||||
fun destroyMultiselector(pos: Int) {
|
||||
for (i in -1..1) {
|
||||
mFragments[pos + i]?.getDayEventsAdapter()?.finishActMode()
|
||||
mFragments[pos + i]?.updateCalendar()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,11 +4,14 @@ import android.os.Bundle
|
|||
import android.support.v4.app.Fragment
|
||||
import android.support.v4.app.FragmentManager
|
||||
import android.support.v4.app.FragmentStatePagerAdapter
|
||||
import android.util.SparseArray
|
||||
import com.simplemobiletools.calendar.fragments.MonthFragment
|
||||
import com.simplemobiletools.calendar.helpers.DAY_CODE
|
||||
import com.simplemobiletools.calendar.interfaces.NavigationListener
|
||||
|
||||
class MyMonthPagerAdapter(fm: FragmentManager, private val mCodes: List<String>, private val mListener: NavigationListener) : FragmentStatePagerAdapter(fm) {
|
||||
private val mFragments = SparseArray<MonthFragment>()
|
||||
|
||||
override fun getCount() = mCodes.size
|
||||
|
||||
override fun getItem(position: Int): Fragment {
|
||||
|
@ -20,6 +23,14 @@ class MyMonthPagerAdapter(fm: FragmentManager, private val mCodes: List<String>,
|
|||
fragment.arguments = bundle
|
||||
fragment.listener = mListener
|
||||
|
||||
mFragments.put(position, fragment)
|
||||
|
||||
return fragment
|
||||
}
|
||||
|
||||
fun updateCalendars(pos: Int) {
|
||||
for (i in -1..1) {
|
||||
mFragments[pos + i]?.updateCalendar()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,4 +31,10 @@ class MyWeekPagerAdapter(fm: FragmentManager, val mWeekTimestamps: List<Int>, va
|
|||
mFragments[pos - 1]?.updateScrollY(y)
|
||||
mFragments[pos + 1]?.updateScrollY(y)
|
||||
}
|
||||
|
||||
fun updateCalendars(pos: Int) {
|
||||
for (i in -1..1) {
|
||||
mFragments[pos + i]?.updateCalendar()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,10 +4,13 @@ import android.os.Bundle
|
|||
import android.support.v4.app.Fragment
|
||||
import android.support.v4.app.FragmentManager
|
||||
import android.support.v4.app.FragmentStatePagerAdapter
|
||||
import android.util.SparseArray
|
||||
import com.simplemobiletools.calendar.fragments.YearFragment
|
||||
import com.simplemobiletools.calendar.helpers.YEAR_LABEL
|
||||
|
||||
class MyYearPagerAdapter(fm: FragmentManager, val mYears: List<Int>) : FragmentStatePagerAdapter(fm) {
|
||||
private val mFragments = SparseArray<YearFragment>()
|
||||
|
||||
override fun getCount() = mYears.size
|
||||
|
||||
override fun getItem(position: Int): Fragment {
|
||||
|
@ -18,6 +21,14 @@ class MyYearPagerAdapter(fm: FragmentManager, val mYears: List<Int>) : FragmentS
|
|||
val fragment = YearFragment()
|
||||
fragment.arguments = bundle
|
||||
|
||||
mFragments.put(position, fragment)
|
||||
|
||||
return fragment
|
||||
}
|
||||
|
||||
fun updateCalendars(pos: Int) {
|
||||
for (i in -1..1) {
|
||||
mFragments[pos + i]?.updateCalendar()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,17 +7,17 @@ import com.simplemobiletools.calendar.R
|
|||
import com.simplemobiletools.calendar.activities.SimpleActivity
|
||||
import com.simplemobiletools.calendar.adapters.FilterEventTypeAdapter
|
||||
import com.simplemobiletools.calendar.extensions.dbHelper
|
||||
import com.simplemobiletools.calendar.extensions.getNowSeconds
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import kotlinx.android.synthetic.main.dialog_export_events.view.*
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
|
||||
class ExportEventsDialog(val activity: SimpleActivity, val path: String, val callback: (exportPastEvents: Boolean, file: File, eventTypes: HashSet<String>) -> Unit) {
|
||||
|
||||
init {
|
||||
val view = (activity.layoutInflater.inflate(R.layout.dialog_export_events, null) as ViewGroup).apply {
|
||||
export_events_folder.text = activity.humanizePath(path)
|
||||
export_events_filename.setText("events_${activity.getNowSeconds()}")
|
||||
export_events_filename.setText("events_${activity.getCurrentFormattedDateTime()}")
|
||||
|
||||
activity.dbHelper.getEventTypes {
|
||||
val eventTypes = HashSet<String>()
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
package com.simplemobiletools.calendar.dialogs
|
||||
|
||||
import android.app.Activity
|
||||
import android.support.v7.app.AlertDialog
|
||||
import android.support.v7.widget.SwitchCompat
|
||||
import android.text.TextUtils
|
||||
import android.view.ViewGroup
|
||||
import android.widget.RelativeLayout
|
||||
import com.simplemobiletools.calendar.R
|
||||
import com.simplemobiletools.calendar.activities.SimpleActivity
|
||||
import com.simplemobiletools.calendar.extensions.config
|
||||
import com.simplemobiletools.calendar.helpers.CalDAVHandler
|
||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||
|
@ -14,14 +14,14 @@ import kotlinx.android.synthetic.main.calendar_item_account.view.*
|
|||
import kotlinx.android.synthetic.main.calendar_item_calendar.view.*
|
||||
import kotlinx.android.synthetic.main.dialog_select_calendars.view.*
|
||||
|
||||
class SelectCalendarsDialog(val activity: Activity, val callback: () -> Unit) {
|
||||
class SelectCalendarsDialog(val activity: SimpleActivity, val callback: () -> Unit) {
|
||||
var prevAccount = ""
|
||||
var dialog: AlertDialog
|
||||
var view = (activity.layoutInflater.inflate(R.layout.dialog_select_calendars, null) as ViewGroup)
|
||||
|
||||
init {
|
||||
val ids = activity.config.getSyncedCalendarIdsAsList()
|
||||
val calendars = CalDAVHandler(activity).getCalDAVCalendars()
|
||||
val calendars = CalDAVHandler(activity.applicationContext).getCalDAVCalendars(activity)
|
||||
val sorted = calendars.sortedWith(compareBy({ it.accountName }, { it.displayName }))
|
||||
sorted.forEach {
|
||||
if (prevAccount != it.accountName) {
|
||||
|
|
|
@ -19,7 +19,7 @@ class SelectEventTypeColorDialog(val activity: Activity, val eventType: EventTyp
|
|||
private val dialog: AlertDialog?
|
||||
private val radioGroup: RadioGroup
|
||||
private var wasInit = false
|
||||
private val colors = CalDAVHandler(activity).getAvailableCalDAVCalendarColors(eventType)
|
||||
private val colors = CalDAVHandler(activity.applicationContext).getAvailableCalDAVCalendarColors(eventType)
|
||||
|
||||
init {
|
||||
val view = activity.layoutInflater.inflate(R.layout.dialog_select_radio_group, null) as ViewGroup
|
||||
|
|
|
@ -1,13 +1,20 @@
|
|||
package com.simplemobiletools.calendar.extensions
|
||||
|
||||
import android.app.Activity
|
||||
import com.simplemobiletools.calendar.BuildConfig
|
||||
import com.simplemobiletools.calendar.R
|
||||
import com.simplemobiletools.calendar.helpers.IcsExporter
|
||||
import com.simplemobiletools.calendar.dialogs.CustomEventReminderDialog
|
||||
import com.simplemobiletools.calendar.dialogs.CustomEventRepeatIntervalDialog
|
||||
import com.simplemobiletools.calendar.helpers.*
|
||||
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||
import com.simplemobiletools.commons.extensions.getFilePublicUri
|
||||
import com.simplemobiletools.commons.extensions.shareUri
|
||||
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
||||
import com.simplemobiletools.commons.extensions.hideKeyboard
|
||||
import com.simplemobiletools.commons.extensions.sharePathIntent
|
||||
import com.simplemobiletools.commons.extensions.toast
|
||||
import com.simplemobiletools.commons.models.RadioItem
|
||||
import java.io.File
|
||||
import java.util.TreeSet
|
||||
import kotlin.collections.ArrayList
|
||||
|
||||
fun BaseSimpleActivity.shareEvents(ids: List<Int>) {
|
||||
val file = getTempFile()
|
||||
|
@ -19,8 +26,7 @@ fun BaseSimpleActivity.shareEvents(ids: List<Int>) {
|
|||
val events = dbHelper.getEventsWithIds(ids)
|
||||
IcsExporter().exportEvents(this, file, events) {
|
||||
if (it == IcsExporter.ExportResult.EXPORT_OK) {
|
||||
val uri = getFilePublicUri(file, BuildConfig.APPLICATION_ID)
|
||||
shareUri(uri, BuildConfig.APPLICATION_ID)
|
||||
sharePathIntent(file.absolutePath, BuildConfig.APPLICATION_ID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -36,3 +42,80 @@ fun BaseSimpleActivity.getTempFile(): File? {
|
|||
|
||||
return File(folder, "events.ics")
|
||||
}
|
||||
|
||||
fun Activity.showEventReminderDialog(curMinutes: Int, isSnoozePicker: Boolean = false, cancelCallback: (() -> Unit)? = null, callback: (minutes: Int) -> Unit) {
|
||||
hideKeyboard()
|
||||
val minutes = TreeSet<Int>()
|
||||
minutes.apply {
|
||||
if (!isSnoozePicker) {
|
||||
add(-1)
|
||||
add(0)
|
||||
}
|
||||
add(5)
|
||||
add(10)
|
||||
add(20)
|
||||
add(30)
|
||||
add(60)
|
||||
add(curMinutes)
|
||||
}
|
||||
|
||||
val items = ArrayList<RadioItem>(minutes.size + 1)
|
||||
minutes.mapIndexedTo(items, { index, value ->
|
||||
RadioItem(index, getFormattedMinutes(value, !isSnoozePicker), value)
|
||||
})
|
||||
|
||||
var selectedIndex = 0
|
||||
minutes.forEachIndexed { index, value ->
|
||||
if (value == curMinutes) {
|
||||
selectedIndex = index
|
||||
}
|
||||
}
|
||||
|
||||
items.add(RadioItem(-2, getString(R.string.custom)))
|
||||
|
||||
RadioGroupDialog(this, items, selectedIndex, showOKButton = isSnoozePicker, cancelCallback = cancelCallback) {
|
||||
if (it == -2) {
|
||||
CustomEventReminderDialog(this) {
|
||||
callback(it)
|
||||
}
|
||||
} else {
|
||||
callback(it as Int)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun Activity.showEventRepeatIntervalDialog(curSeconds: Int, callback: (minutes: Int) -> Unit) {
|
||||
hideKeyboard()
|
||||
val seconds = TreeSet<Int>()
|
||||
seconds.apply {
|
||||
add(0)
|
||||
add(DAY)
|
||||
add(WEEK)
|
||||
add(MONTH)
|
||||
add(YEAR)
|
||||
add(curSeconds)
|
||||
}
|
||||
|
||||
val items = ArrayList<RadioItem>(seconds.size + 1)
|
||||
seconds.mapIndexedTo(items, { index, value ->
|
||||
RadioItem(index, getRepetitionText(value), value)
|
||||
})
|
||||
|
||||
var selectedIndex = 0
|
||||
seconds.forEachIndexed { index, value ->
|
||||
if (value == curSeconds)
|
||||
selectedIndex = index
|
||||
}
|
||||
|
||||
items.add(RadioItem(-1, getString(R.string.custom)))
|
||||
|
||||
RadioGroupDialog(this, items, selectedIndex) {
|
||||
if (it == -1) {
|
||||
CustomEventRepeatIntervalDialog(this) {
|
||||
callback(it)
|
||||
}
|
||||
} else {
|
||||
callback(it as Int)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@ import com.simplemobiletools.calendar.BuildConfig
|
|||
import com.simplemobiletools.calendar.R
|
||||
import com.simplemobiletools.calendar.activities.EventActivity
|
||||
import com.simplemobiletools.calendar.activities.SimpleActivity
|
||||
import com.simplemobiletools.calendar.activities.SnoozeReminderActivity
|
||||
import com.simplemobiletools.calendar.helpers.*
|
||||
import com.simplemobiletools.calendar.helpers.Formatter
|
||||
import com.simplemobiletools.calendar.models.*
|
||||
|
@ -199,7 +200,10 @@ private fun getNotification(context: Context, pendingIntent: PendingIntent, even
|
|||
|
||||
var soundUri = Uri.parse(context.config.reminderSound)
|
||||
if (soundUri.scheme == "file") {
|
||||
soundUri = context.getFilePublicUri(File(soundUri.path), BuildConfig.APPLICATION_ID)
|
||||
try {
|
||||
soundUri = context.getFilePublicUri(File(soundUri.path), BuildConfig.APPLICATION_ID)
|
||||
} catch (ignored: Exception) {
|
||||
}
|
||||
}
|
||||
|
||||
val builder = NotificationCompat.Builder(context)
|
||||
|
@ -214,11 +218,13 @@ private fun getNotification(context: Context, pendingIntent: PendingIntent, even
|
|||
.setChannelId(channelId)
|
||||
.addAction(R.drawable.ic_snooze, context.getString(R.string.snooze), getSnoozePendingIntent(context, event))
|
||||
|
||||
if (context.isLollipopPlus())
|
||||
if (context.isLollipopPlus()) {
|
||||
builder.setVisibility(Notification.VISIBILITY_PUBLIC)
|
||||
}
|
||||
|
||||
if (context.config.vibrateOnReminder)
|
||||
if (context.config.vibrateOnReminder) {
|
||||
builder.setVibrate(longArrayOf(0, 300, 300, 300))
|
||||
}
|
||||
|
||||
return builder.build()
|
||||
}
|
||||
|
@ -233,10 +239,22 @@ private fun getPendingIntent(context: Context, event: Event): PendingIntent {
|
|||
}
|
||||
|
||||
private fun getSnoozePendingIntent(context: Context, event: Event): PendingIntent {
|
||||
val intent = Intent(context, SnoozeService::class.java).setAction("snooze")
|
||||
val snoozeClass = if (context.config.useSameSnooze) SnoozeService::class.java else SnoozeReminderActivity::class.java
|
||||
val intent = Intent(context, snoozeClass).setAction("Snoozeee")
|
||||
intent.putExtra(EVENT_ID, event.id)
|
||||
intent.putExtra(EVENT_OCCURRENCE_TS, event.startTS)
|
||||
return PendingIntent.getService(context, event.id, intent, PendingIntent.FLAG_UPDATE_CURRENT)
|
||||
return if (context.config.useSameSnooze) {
|
||||
PendingIntent.getService(context, event.id, intent, PendingIntent.FLAG_UPDATE_CURRENT)
|
||||
} else {
|
||||
PendingIntent.getActivity(context, event.id, intent, PendingIntent.FLAG_UPDATE_CURRENT)
|
||||
}
|
||||
}
|
||||
|
||||
fun Context.rescheduleReminder(event: Event?, minutes: Int) {
|
||||
if (event != null) {
|
||||
applicationContext.scheduleEventIn(System.currentTimeMillis() + minutes * 60000, event)
|
||||
val manager = applicationContext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||
manager.cancel(event.id)
|
||||
}
|
||||
}
|
||||
|
||||
fun Context.launchNewEventIntent(dayCode: String = Formatter.getTodayCode(this)) {
|
||||
|
@ -275,7 +293,10 @@ fun Context.scheduleCalDAVSync(activate: Boolean) {
|
|||
|
||||
if (activate) {
|
||||
val syncCheckInterval = 4 * AlarmManager.INTERVAL_HOUR
|
||||
alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + syncCheckInterval, syncCheckInterval, pendingIntent)
|
||||
try {
|
||||
alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + syncCheckInterval, syncCheckInterval, pendingIntent)
|
||||
} catch (ignored: SecurityException) {
|
||||
}
|
||||
} else {
|
||||
alarm.cancel(pendingIntent)
|
||||
}
|
||||
|
|
|
@ -52,7 +52,7 @@ class DayFragment : Fragment() {
|
|||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
checkEvents()
|
||||
updateCalendar()
|
||||
}
|
||||
|
||||
private fun setupButtons() {
|
||||
|
@ -82,8 +82,6 @@ class DayFragment : Fragment() {
|
|||
}
|
||||
}
|
||||
|
||||
fun getDayEventsAdapter() = mHolder.day_events?.adapter as? DayEventsAdapter
|
||||
|
||||
private fun pickDay() {
|
||||
activity!!.setTheme(context!!.getDialogTheme())
|
||||
val view = layoutInflater.inflate(R.layout.date_picker, null)
|
||||
|
@ -108,7 +106,7 @@ class DayFragment : Fragment() {
|
|||
mListener?.goToDateTime(newDateTime)
|
||||
}
|
||||
|
||||
fun checkEvents() {
|
||||
fun updateCalendar() {
|
||||
val startTS = Formatter.getDayStartTS(mDayCode)
|
||||
val endTS = Formatter.getDayEndTS(mDayCode)
|
||||
context!!.dbHelper.getEvents(startTS, endTS) {
|
||||
|
|
|
@ -22,7 +22,7 @@ class DayFragmentsHolder : MyFragmentHolder(), NavigationListener {
|
|||
private val PREFILLED_DAYS = 121
|
||||
|
||||
private var viewPager: MyViewPager? = null
|
||||
private var defaultDaylyPage = 0
|
||||
private var defaultDailyPage = 0
|
||||
private var todayDayCode = ""
|
||||
private var currentDayCode = ""
|
||||
private var isGoToTodayVisible = false
|
||||
|
@ -37,6 +37,7 @@ class DayFragmentsHolder : MyFragmentHolder(), NavigationListener {
|
|||
val view = inflater.inflate(R.layout.fragment_days_holder, container, false)
|
||||
view.background = ColorDrawable(context!!.config.backgroundColor)
|
||||
viewPager = view.fragment_days_viewpager
|
||||
viewPager!!.id = (System.currentTimeMillis() % 100000).toInt()
|
||||
setupFragment()
|
||||
return view
|
||||
}
|
||||
|
@ -44,7 +45,8 @@ class DayFragmentsHolder : MyFragmentHolder(), NavigationListener {
|
|||
private fun setupFragment() {
|
||||
val codes = getDays(currentDayCode)
|
||||
val dailyAdapter = MyDayPagerAdapter(activity!!.supportFragmentManager, codes, this)
|
||||
defaultDaylyPage = codes.size / 2
|
||||
defaultDailyPage = codes.size / 2
|
||||
|
||||
|
||||
viewPager!!.apply {
|
||||
adapter = dailyAdapter
|
||||
|
@ -64,7 +66,7 @@ class DayFragmentsHolder : MyFragmentHolder(), NavigationListener {
|
|||
}
|
||||
}
|
||||
})
|
||||
currentItem = defaultDaylyPage
|
||||
currentItem = defaultDailyPage
|
||||
}
|
||||
updateActionBarTitle()
|
||||
}
|
||||
|
@ -97,7 +99,7 @@ class DayFragmentsHolder : MyFragmentHolder(), NavigationListener {
|
|||
}
|
||||
|
||||
override fun refreshEvents() {
|
||||
setupFragment()
|
||||
(viewPager?.adapter as? MyDayPagerAdapter)?.updateCalendars(viewPager?.currentItem ?: 0)
|
||||
}
|
||||
|
||||
override fun shouldGoToTodayBeVisible() = currentDayCode != todayDayCode
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.simplemobiletools.calendar.fragments
|
||||
|
||||
import android.content.Intent
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
|
@ -26,7 +27,6 @@ import java.util.*
|
|||
class EventListFragment : MyFragmentHolder(), RefreshRecyclerViewListener {
|
||||
private var mEvents: List<Event> = ArrayList()
|
||||
private var prevEventsHash = 0
|
||||
private var lastHash = 0
|
||||
private var use24HourFormat = false
|
||||
lateinit var mView: View
|
||||
|
||||
|
@ -34,6 +34,8 @@ class EventListFragment : MyFragmentHolder(), RefreshRecyclerViewListener {
|
|||
mView = inflater.inflate(R.layout.fragment_event_list, container, false)
|
||||
val placeholderText = String.format(getString(R.string.two_string_placeholder), "${getString(R.string.no_upcoming_events)}\n", getString(R.string.add_some_events))
|
||||
mView.calendar_empty_list_placeholder.text = placeholderText
|
||||
mView.background = ColorDrawable(context!!.config.backgroundColor)
|
||||
mView.calendar_events_list_holder?.id = (System.currentTimeMillis() % 100000).toInt()
|
||||
use24HourFormat = context!!.config.use24hourFormat
|
||||
updateActionBarTitle()
|
||||
return mView
|
||||
|
@ -63,14 +65,9 @@ class EventListFragment : MyFragmentHolder(), RefreshRecyclerViewListener {
|
|||
}
|
||||
|
||||
private fun receivedEvents(events: MutableList<Event>) {
|
||||
if (context == null || activity == null)
|
||||
return
|
||||
|
||||
val newHash = events.hashCode()
|
||||
if (newHash == lastHash) {
|
||||
if (context == null || activity == null) {
|
||||
return
|
||||
}
|
||||
lastHash = newHash
|
||||
|
||||
val filtered = context!!.getFilteredEvents(events)
|
||||
val hash = filtered.hashCode()
|
||||
|
|
|
@ -78,7 +78,7 @@ class MonthFragment : Fragment(), MonthlyCalendar {
|
|||
updateCalendar()
|
||||
}
|
||||
|
||||
private fun updateCalendar() {
|
||||
fun updateCalendar() {
|
||||
mCalendar?.updateMonthlyCalendar(Formatter.getDateTimeFromCode(mDayCode))
|
||||
}
|
||||
|
||||
|
|
|
@ -37,6 +37,7 @@ class MonthFragmentsHolder : MyFragmentHolder(), NavigationListener {
|
|||
val view = inflater.inflate(R.layout.fragment_months_holder, container, false)
|
||||
view.background = ColorDrawable(context!!.config.backgroundColor)
|
||||
viewPager = view.fragment_months_viewpager
|
||||
viewPager!!.id = (System.currentTimeMillis() % 100000).toInt()
|
||||
setupFragment()
|
||||
return view
|
||||
}
|
||||
|
@ -98,7 +99,7 @@ class MonthFragmentsHolder : MyFragmentHolder(), NavigationListener {
|
|||
}
|
||||
|
||||
override fun refreshEvents() {
|
||||
setupFragment()
|
||||
(viewPager?.adapter as? MyMonthPagerAdapter)?.updateCalendars(viewPager?.currentItem ?: 0)
|
||||
}
|
||||
|
||||
override fun shouldGoToTodayBeVisible() = currentDayCode.getMonthCode() != todayDayCode.getMonthCode()
|
||||
|
|
|
@ -23,10 +23,7 @@ import com.simplemobiletools.calendar.interfaces.WeekFragmentListener
|
|||
import com.simplemobiletools.calendar.interfaces.WeeklyCalendar
|
||||
import com.simplemobiletools.calendar.models.Event
|
||||
import com.simplemobiletools.calendar.views.MyScrollView
|
||||
import com.simplemobiletools.commons.extensions.applyColorFilter
|
||||
import com.simplemobiletools.commons.extensions.beGone
|
||||
import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor
|
||||
import com.simplemobiletools.commons.extensions.getContrastColor
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import kotlinx.android.synthetic.main.fragment_week.*
|
||||
import kotlinx.android.synthetic.main.fragment_week.view.*
|
||||
import org.joda.time.DateTime
|
||||
|
@ -58,6 +55,7 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||
|
||||
lateinit var inflater: LayoutInflater
|
||||
lateinit var mView: View
|
||||
lateinit var mScrollView: MyScrollView
|
||||
lateinit var mCalendar: WeeklyCalendarImpl
|
||||
lateinit var mRes: Resources
|
||||
|
||||
|
@ -79,19 +77,16 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
this.inflater = inflater
|
||||
|
||||
mView = inflater.inflate(R.layout.fragment_week, container, false).apply {
|
||||
week_events_scrollview.setOnScrollviewListener(object : MyScrollView.ScrollViewListener {
|
||||
override fun onScrollChanged(scrollView: MyScrollView, x: Int, y: Int, oldx: Int, oldy: Int) {
|
||||
checkScrollLimits(y)
|
||||
}
|
||||
})
|
||||
mView = inflater.inflate(R.layout.fragment_week, container, false)
|
||||
mScrollView = mView.week_events_scrollview
|
||||
mScrollView.setOnScrollviewListener(object : MyScrollView.ScrollViewListener {
|
||||
override fun onScrollChanged(scrollView: MyScrollView, x: Int, y: Int, oldx: Int, oldy: Int) {
|
||||
checkScrollLimits(y)
|
||||
}
|
||||
})
|
||||
|
||||
week_events_scrollview.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
|
||||
override fun onGlobalLayout() {
|
||||
week_events_scrollview.viewTreeObserver.removeOnGlobalLayoutListener(this)
|
||||
updateScrollY(Math.max(mListener?.getCurrScrollY() ?: 0, minScrollY))
|
||||
}
|
||||
})
|
||||
mScrollView.onGlobalLayout {
|
||||
updateScrollY(Math.max(mListener?.getCurrScrollY() ?: 0, minScrollY))
|
||||
}
|
||||
|
||||
(0..6).map { inflater.inflate(R.layout.stroke_vertical_divider, mView.week_vertical_grid_holder) }
|
||||
|
@ -109,26 +104,24 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||
override fun onResume() {
|
||||
super.onResume()
|
||||
setupDayLabels()
|
||||
mCalendar.updateWeeklyCalendar(mWeekTimestamp)
|
||||
updateCalendar()
|
||||
|
||||
mView.week_events_scrollview.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
|
||||
override fun onGlobalLayout() {
|
||||
if (context == null)
|
||||
return
|
||||
|
||||
mView.week_events_scrollview.viewTreeObserver.removeOnGlobalLayoutListener(this)
|
||||
minScrollY = mRowHeight * context!!.config.startWeeklyAt
|
||||
maxScrollY = mRowHeight * context!!.config.endWeeklyAt
|
||||
|
||||
val bounds = Rect()
|
||||
week_events_holder.getGlobalVisibleRect(bounds)
|
||||
maxScrollY -= bounds.bottom - bounds.top
|
||||
if (minScrollY > maxScrollY)
|
||||
maxScrollY = -1
|
||||
|
||||
checkScrollLimits(mView.week_events_scrollview.scrollY)
|
||||
mScrollView.onGlobalLayout {
|
||||
if (context == null) {
|
||||
return@onGlobalLayout
|
||||
}
|
||||
})
|
||||
|
||||
minScrollY = mRowHeight * context!!.config.startWeeklyAt
|
||||
maxScrollY = mRowHeight * context!!.config.endWeeklyAt
|
||||
|
||||
val bounds = Rect()
|
||||
week_events_holder.getGlobalVisibleRect(bounds)
|
||||
maxScrollY -= bounds.bottom - bounds.top
|
||||
if (minScrollY > maxScrollY)
|
||||
maxScrollY = -1
|
||||
|
||||
checkScrollLimits(mScrollView.scrollY)
|
||||
}
|
||||
}
|
||||
|
||||
override fun setMenuVisibility(menuVisible: Boolean) {
|
||||
|
@ -136,10 +129,14 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||
isFragmentVisible = menuVisible
|
||||
if (isFragmentVisible && wasFragmentInit) {
|
||||
mListener?.updateHoursTopMargin(mView.week_top_holder.height)
|
||||
checkScrollLimits(mView.week_events_scrollview.scrollY)
|
||||
checkScrollLimits(mScrollView.scrollY)
|
||||
}
|
||||
}
|
||||
|
||||
fun updateCalendar() {
|
||||
mCalendar.updateWeeklyCalendar(mWeekTimestamp)
|
||||
}
|
||||
|
||||
private fun setupDayLabels() {
|
||||
var curDay = Formatter.getDateTimeFromTS(mWeekTimestamp)
|
||||
val textColor = context!!.config.textColor
|
||||
|
@ -172,9 +169,9 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||
|
||||
private fun checkScrollLimits(y: Int) {
|
||||
if (minScrollY != -1 && y < minScrollY) {
|
||||
mView.week_events_scrollview.scrollY = minScrollY
|
||||
mScrollView.scrollY = minScrollY
|
||||
} else if (maxScrollY != -1 && y > maxScrollY) {
|
||||
mView.week_events_scrollview.scrollY = maxScrollY
|
||||
mScrollView.scrollY = maxScrollY
|
||||
} else if (isFragmentVisible) {
|
||||
mListener?.scrollTo(y)
|
||||
}
|
||||
|
@ -233,18 +230,21 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||
if (newHash == lastHash) {
|
||||
return
|
||||
}
|
||||
|
||||
lastHash = newHash
|
||||
this.events = events
|
||||
updateEvents()
|
||||
}
|
||||
|
||||
private fun updateEvents() {
|
||||
if (mWasDestroyed)
|
||||
if (mWasDestroyed) {
|
||||
return
|
||||
}
|
||||
|
||||
activity!!.runOnUiThread {
|
||||
if (context != null && isAdded)
|
||||
if (context != null && isAdded) {
|
||||
addEvents()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -443,7 +443,8 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||
private fun getColumnWithId(id: Int) = mView.findViewById<ViewGroup>(mRes.getIdentifier("week_column_$id", "id", context!!.packageName))
|
||||
|
||||
fun updateScrollY(y: Int) {
|
||||
if (wasFragmentInit)
|
||||
mView.week_events_scrollview.scrollY = y
|
||||
if (wasFragmentInit) {
|
||||
mScrollView.scrollY = y
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.simplemobiletools.calendar.fragments
|
||||
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.os.Bundle
|
||||
import android.support.v4.view.ViewPager
|
||||
import android.view.LayoutInflater
|
||||
|
@ -39,6 +40,7 @@ class WeekFragmentsHolder : MyFragmentHolder(), WeekFragmentListener {
|
|||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
weekHolder = inflater.inflate(R.layout.fragment_week_holder, container, false) as ViewGroup
|
||||
weekHolder!!.background = ColorDrawable(context!!.config.backgroundColor)
|
||||
setupFragment()
|
||||
return weekHolder
|
||||
}
|
||||
|
@ -124,7 +126,8 @@ class WeekFragmentsHolder : MyFragmentHolder(), WeekFragmentListener {
|
|||
}
|
||||
|
||||
override fun refreshEvents() {
|
||||
setupFragment()
|
||||
val viewPager = weekHolder?.week_view_view_pager
|
||||
(viewPager?.adapter as? MyWeekPagerAdapter)?.updateCalendars(viewPager.currentItem)
|
||||
}
|
||||
|
||||
override fun shouldGoToTodayBeVisible() = currentWeekTS != thisWeekTS
|
||||
|
|
|
@ -37,6 +37,7 @@ class YearFragment : Fragment(), YearlyCalendar {
|
|||
setupMonths()
|
||||
|
||||
mCalendar = YearlyCalendarImpl(this, context!!, mYear)
|
||||
|
||||
return mView
|
||||
}
|
||||
|
||||
|
@ -52,10 +53,10 @@ class YearFragment : Fragment(), YearlyCalendar {
|
|||
mSundayFirst = sundayFirst
|
||||
setupMonths()
|
||||
}
|
||||
updateEvents()
|
||||
updateCalendar()
|
||||
}
|
||||
|
||||
fun updateEvents() {
|
||||
fun updateCalendar() {
|
||||
mCalendar?.getEvents(mYear)
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.simplemobiletools.calendar.fragments
|
||||
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.os.Bundle
|
||||
import android.support.v4.view.ViewPager
|
||||
import android.view.LayoutInflater
|
||||
|
@ -8,6 +9,7 @@ import android.view.ViewGroup
|
|||
import com.simplemobiletools.calendar.R
|
||||
import com.simplemobiletools.calendar.activities.MainActivity
|
||||
import com.simplemobiletools.calendar.adapters.MyYearPagerAdapter
|
||||
import com.simplemobiletools.calendar.extensions.config
|
||||
import com.simplemobiletools.calendar.helpers.Formatter
|
||||
import com.simplemobiletools.commons.views.MyViewPager
|
||||
import kotlinx.android.synthetic.main.fragment_years_holder.view.*
|
||||
|
@ -30,7 +32,9 @@ class YearFragmentsHolder : MyFragmentHolder() {
|
|||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
val view = inflater.inflate(R.layout.fragment_years_holder, container, false)
|
||||
view.background = ColorDrawable(context!!.config.backgroundColor)
|
||||
viewPager = view.fragment_years_viewpager
|
||||
viewPager!!.id = (System.currentTimeMillis() % 100000).toInt()
|
||||
setupFragment()
|
||||
return view
|
||||
}
|
||||
|
@ -79,7 +83,7 @@ class YearFragmentsHolder : MyFragmentHolder() {
|
|||
}
|
||||
|
||||
override fun refreshEvents() {
|
||||
setupFragment()
|
||||
(viewPager?.adapter as? MyYearPagerAdapter)?.updateCalendars(viewPager?.currentItem ?: 0)
|
||||
}
|
||||
|
||||
override fun shouldGoToTodayBeVisible() = currentYear != todayYear
|
||||
|
|
|
@ -17,7 +17,6 @@ import com.simplemobiletools.calendar.models.EventType
|
|||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CALENDAR
|
||||
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CALENDAR
|
||||
import org.joda.time.DateTimeZone
|
||||
import java.util.*
|
||||
import kotlin.collections.ArrayList
|
||||
|
||||
|
@ -197,7 +196,7 @@ class CalDAVHandler(val context: Context) {
|
|||
val fetchedEventIds = ArrayList<String>()
|
||||
val existingEvents = context.dbHelper.getEventsFromCalDAVCalendar(calendarId)
|
||||
existingEvents.forEach {
|
||||
importIdsMap.put(it.importId, it)
|
||||
importIdsMap[it.importId] = it
|
||||
}
|
||||
|
||||
val uri = CalendarContract.Events.CONTENT_URI
|
||||
|
@ -224,9 +223,8 @@ class CalDAVHandler(val context: Context) {
|
|||
val id = cursor.getLongValue(CalendarContract.Events._ID)
|
||||
val title = cursor.getStringValue(CalendarContract.Events.TITLE) ?: ""
|
||||
val description = cursor.getStringValue(CalendarContract.Events.DESCRIPTION) ?: ""
|
||||
var startTS = (cursor.getLongValue(CalendarContract.Events.DTSTART) / 1000).toInt()
|
||||
val startTS = (cursor.getLongValue(CalendarContract.Events.DTSTART) / 1000).toInt()
|
||||
var endTS = (cursor.getLongValue(CalendarContract.Events.DTEND) / 1000).toInt()
|
||||
val timeZone = cursor.getStringValue(CalendarContract.Events.EVENT_TIMEZONE) ?: "UTC"
|
||||
val allDay = cursor.getIntValue(CalendarContract.Events.ALL_DAY)
|
||||
val rrule = cursor.getStringValue(CalendarContract.Events.RRULE) ?: ""
|
||||
val location = cursor.getStringValue(CalendarContract.Events.EVENT_LOCATION) ?: ""
|
||||
|
@ -234,18 +232,6 @@ class CalDAVHandler(val context: Context) {
|
|||
val originalInstanceTime = cursor.getLongValue(CalendarContract.Events.ORIGINAL_INSTANCE_TIME)
|
||||
val reminders = getCalDAVEventReminders(id)
|
||||
|
||||
// make sure all-day events start at 5am in the users timezone
|
||||
if (allDay == 1 && timeZone == "UTC") {
|
||||
val offset = DateTimeZone.getDefault().getOffset(System.currentTimeMillis()) / 1000
|
||||
val FIVE_HOURS = 5 * 60 * 60
|
||||
startTS -= offset
|
||||
startTS += FIVE_HOURS
|
||||
if (endTS != 0) {
|
||||
endTS -= offset
|
||||
endTS += FIVE_HOURS
|
||||
}
|
||||
}
|
||||
|
||||
if (endTS == 0) {
|
||||
val duration = cursor.getStringValue(CalendarContract.Events.DURATION) ?: ""
|
||||
endTS = startTS + Parser().parseDurationSeconds(duration)
|
||||
|
@ -258,8 +244,12 @@ class CalDAVHandler(val context: Context) {
|
|||
reminders.getOrElse(1, { -1 }), reminders.getOrElse(2, { -1 }), repeatRule.repeatInterval,
|
||||
importId, allDay, repeatRule.repeatLimit, repeatRule.repeatRule, eventTypeId, source = source, location = location)
|
||||
|
||||
if (event.getIsAllDay() && endTS > startTS) {
|
||||
event.endTS -= DAY
|
||||
if (event.getIsAllDay()) {
|
||||
event.startTS = Formatter.getShiftedImportTimestamp(event.startTS)
|
||||
event.endTS = Formatter.getShiftedImportTimestamp(event.endTS)
|
||||
if (event.endTS > event.startTS) {
|
||||
event.endTS -= DAY
|
||||
}
|
||||
}
|
||||
|
||||
fetchedEventIds.add(importId)
|
||||
|
@ -292,7 +282,7 @@ class CalDAVHandler(val context: Context) {
|
|||
|
||||
if (title.isNotEmpty()) {
|
||||
context.dbHelper.insert(event, false) {
|
||||
importIdsMap.put(event.importId, event)
|
||||
importIdsMap[event.importId] = event
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -412,7 +402,6 @@ class CalDAVHandler(val context: Context) {
|
|||
try {
|
||||
context.contentResolver.delete(contentUri, null, null)
|
||||
} catch (ignored: Exception) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -53,7 +53,19 @@ class Config(context: Context) : BaseConfig(context) {
|
|||
|
||||
var defaultReminderMinutes: Int
|
||||
get() = prefs.getInt(REMINDER_MINUTES, 10)
|
||||
set(mins) = prefs.edit().putInt(REMINDER_MINUTES, mins).apply()
|
||||
set(defaultReminderMinutes) = prefs.edit().putInt(REMINDER_MINUTES, defaultReminderMinutes).apply()
|
||||
|
||||
var defaultReminderMinutes2: Int
|
||||
get() = prefs.getInt(REMINDER_MINUTES_2, REMINDER_OFF)
|
||||
set(defaultReminderMinutes2) = prefs.edit().putInt(REMINDER_MINUTES_2, defaultReminderMinutes2).apply()
|
||||
|
||||
var defaultReminderMinutes3: Int
|
||||
get() = prefs.getInt(REMINDER_MINUTES_3, REMINDER_OFF)
|
||||
set(defaultReminderMinutes3) = prefs.edit().putInt(REMINDER_MINUTES_3, defaultReminderMinutes3).apply()
|
||||
|
||||
var useSameSnooze: Boolean
|
||||
get() = prefs.getBoolean(USE_SAME_SNOOZE, false)
|
||||
set(useSameSnooze) = prefs.edit().putBoolean(USE_SAME_SNOOZE, useSameSnooze).apply()
|
||||
|
||||
var snoozeDelay: Int
|
||||
get() = prefs.getInt(SNOOZE_DELAY, 10)
|
||||
|
|
|
@ -2,139 +2,139 @@ package com.simplemobiletools.calendar.helpers
|
|||
|
||||
import com.simplemobiletools.calendar.R
|
||||
|
||||
val LOW_ALPHA = .3f
|
||||
val MEDIUM_ALPHA = .6f
|
||||
val STORED_LOCALLY_ONLY = 0
|
||||
const val LOW_ALPHA = .3f
|
||||
const val MEDIUM_ALPHA = .6f
|
||||
const val STORED_LOCALLY_ONLY = 0
|
||||
|
||||
val DAY_CODE = "day_code"
|
||||
val YEAR_LABEL = "year"
|
||||
val EVENT_ID = "event_id"
|
||||
val EVENT_OCCURRENCE_TS = "event_occurrence_ts"
|
||||
val NEW_EVENT_START_TS = "new_event_start_ts"
|
||||
val WEEK_START_TIMESTAMP = "week_start_timestamp"
|
||||
val NEW_EVENT_SET_HOUR_DURATION = "new_event_set_hour_duration"
|
||||
val WEEK_START_DATE_TIME = "week_start_date_time"
|
||||
val CALDAV = "Caldav"
|
||||
val OPEN_MONTH = "open_month"
|
||||
const val DAY_CODE = "day_code"
|
||||
const val YEAR_LABEL = "year"
|
||||
const val EVENT_ID = "event_id"
|
||||
const val EVENT_OCCURRENCE_TS = "event_occurrence_ts"
|
||||
const val NEW_EVENT_START_TS = "new_event_start_ts"
|
||||
const val WEEK_START_TIMESTAMP = "week_start_timestamp"
|
||||
const val NEW_EVENT_SET_HOUR_DURATION = "new_event_set_hour_duration"
|
||||
const val WEEK_START_DATE_TIME = "week_start_date_time"
|
||||
const val CALDAV = "Caldav"
|
||||
const val OPEN_MONTH = "open_month"
|
||||
|
||||
val MONTHLY_VIEW = 1
|
||||
val YEARLY_VIEW = 2
|
||||
val EVENTS_LIST_VIEW = 3
|
||||
val WEEKLY_VIEW = 4
|
||||
val DAILY_VIEW = 5
|
||||
const val MONTHLY_VIEW = 1
|
||||
const val YEARLY_VIEW = 2
|
||||
const val EVENTS_LIST_VIEW = 3
|
||||
const val WEEKLY_VIEW = 4
|
||||
const val DAILY_VIEW = 5
|
||||
|
||||
val REMINDER_OFF = -1
|
||||
const val REMINDER_OFF = -1
|
||||
|
||||
val DAY = 86400
|
||||
val WEEK = 604800
|
||||
val MONTH = 2592001 // exact value not taken into account, Joda is used for adding months and years
|
||||
val YEAR = 31536000
|
||||
const val DAY = 86400
|
||||
const val WEEK = 604800
|
||||
const val MONTH = 2592001 // exact value not taken into account, Joda is used for adding months and years
|
||||
const val YEAR = 31536000
|
||||
|
||||
val DAY_MINUTES = 24 * 60
|
||||
val DAY_SECONDS = 24 * 60 * 60
|
||||
val WEEK_SECONDS = 7 * DAY_SECONDS
|
||||
const val DAY_MINUTES = 24 * 60
|
||||
const val DAY_SECONDS = 24 * 60 * 60
|
||||
const val WEEK_SECONDS = 7 * DAY_SECONDS
|
||||
|
||||
// Shared Preferences
|
||||
val USE_24_HOUR_FORMAT = "use_24_hour_format"
|
||||
val SUNDAY_FIRST = "sunday_first"
|
||||
val WEEK_NUMBERS = "week_numbers"
|
||||
val START_WEEKLY_AT = "start_weekly_at"
|
||||
val END_WEEKLY_AT = "end_weekly_at"
|
||||
val VIBRATE = "vibrate"
|
||||
val REMINDER_SOUND = "reminder_sound"
|
||||
val VIEW = "view"
|
||||
val REMINDER_MINUTES = "reminder_minutes"
|
||||
val DISPLAY_EVENT_TYPES = "display_event_types"
|
||||
val FONT_SIZE = "font_size"
|
||||
val CALDAV_SYNC = "caldav_sync"
|
||||
val CALDAV_SYNCED_CALENDAR_IDS = "caldav_synced_calendar_ids"
|
||||
val LAST_USED_CALDAV_CALENDAR = "last_used_caldav_calendar"
|
||||
val SNOOZE_DELAY = "snooze_delay"
|
||||
val DISPLAY_PAST_EVENTS = "display_past_events"
|
||||
val REPLACE_DESCRIPTION = "replace_description"
|
||||
const val USE_24_HOUR_FORMAT = "use_24_hour_format"
|
||||
const val SUNDAY_FIRST = "sunday_first"
|
||||
const val WEEK_NUMBERS = "week_numbers"
|
||||
const val START_WEEKLY_AT = "start_weekly_at"
|
||||
const val END_WEEKLY_AT = "end_weekly_at"
|
||||
const val VIBRATE = "vibrate"
|
||||
const val REMINDER_SOUND = "reminder_sound"
|
||||
const val VIEW = "view"
|
||||
const val REMINDER_MINUTES = "reminder_minutes"
|
||||
const val REMINDER_MINUTES_2 = "reminder_minutes_2"
|
||||
const val REMINDER_MINUTES_3 = "reminder_minutes_3"
|
||||
const val DISPLAY_EVENT_TYPES = "display_event_types"
|
||||
const val FONT_SIZE = "font_size"
|
||||
const val CALDAV_SYNC = "caldav_sync"
|
||||
const val CALDAV_SYNCED_CALENDAR_IDS = "caldav_synced_calendar_ids"
|
||||
const val LAST_USED_CALDAV_CALENDAR = "last_used_caldav_calendar"
|
||||
const val SNOOZE_DELAY = "snooze_delay"
|
||||
const val DISPLAY_PAST_EVENTS = "display_past_events"
|
||||
const val REPLACE_DESCRIPTION = "replace_description"
|
||||
const val USE_SAME_SNOOZE = "use_same_snooze"
|
||||
|
||||
val letterIDs = intArrayOf(R.string.sunday_letter, R.string.monday_letter, R.string.tuesday_letter, R.string.wednesday_letter,
|
||||
R.string.thursday_letter, R.string.friday_letter, R.string.saturday_letter)
|
||||
|
||||
// repeat_rule for weekly repetition
|
||||
val MONDAY = 1
|
||||
val TUESDAY = 2
|
||||
val WEDNESDAY = 4
|
||||
val THURSDAY = 8
|
||||
val FRIDAY = 16
|
||||
val SATURDAY = 32
|
||||
val SUNDAY = 64
|
||||
val EVERY_DAY = 127
|
||||
const val MONDAY = 1
|
||||
const val TUESDAY = 2
|
||||
const val WEDNESDAY = 4
|
||||
const val THURSDAY = 8
|
||||
const val FRIDAY = 16
|
||||
const val SATURDAY = 32
|
||||
const val SUNDAY = 64
|
||||
const val EVERY_DAY = 127
|
||||
|
||||
// repeat_rule for monthly repetition
|
||||
val REPEAT_MONTH_SAME_DAY = 1 // ie 25th every month
|
||||
val REPEAT_MONTH_ORDER_WEEKDAY_USE_LAST = 2 // ie every xth sunday. 4th if a month has 4 sundays, 5th if 5
|
||||
val REPEAT_MONTH_LAST_DAY = 3 // ie every last day of the month
|
||||
val REPEAT_MONTH_ORDER_WEEKDAY = 4 // ie every 4th sunday, even if a month has 4 sundays only (will stay 4th even at months with 5)
|
||||
const val REPEAT_MONTH_SAME_DAY = 1 // ie 25th every month
|
||||
const val REPEAT_MONTH_ORDER_WEEKDAY_USE_LAST = 2 // ie every xth sunday. 4th if a month has 4 sundays, 5th if 5
|
||||
const val REPEAT_MONTH_LAST_DAY = 3 // ie every last day of the month
|
||||
const val REPEAT_MONTH_ORDER_WEEKDAY = 4 // ie every 4th sunday, even if a month has 4 sundays only (will stay 4th even at months with 5)
|
||||
|
||||
// special event flags
|
||||
val FLAG_ALL_DAY = 1
|
||||
const val FLAG_ALL_DAY = 1
|
||||
|
||||
// constants related to ICS file exporting / importing
|
||||
val BEGIN_CALENDAR = "BEGIN:VCALENDAR"
|
||||
val END_CALENDAR = "END:VCALENDAR"
|
||||
val CALENDAR_PRODID = "PRODID:-//Simple Mobile Tools//NONSGML Event Calendar//EN"
|
||||
val CALENDAR_VERSION = "VERSION:2.0"
|
||||
val BEGIN_EVENT = "BEGIN:VEVENT"
|
||||
val END_EVENT = "END:VEVENT"
|
||||
val BEGIN_ALARM = "BEGIN:VALARM"
|
||||
val END_ALARM = "END:VALARM"
|
||||
val DTSTART = "DTSTART"
|
||||
val DTEND = "DTEND"
|
||||
val LAST_MODIFIED = "LAST-MODIFIED"
|
||||
val DURATION = "DURATION:"
|
||||
val SUMMARY = "SUMMARY"
|
||||
val DESCRIPTION = "DESCRIPTION:"
|
||||
val UID = "UID:"
|
||||
val ACTION = "ACTION:"
|
||||
val TRIGGER = "TRIGGER:"
|
||||
val RRULE = "RRULE:"
|
||||
val CATEGORIES = "CATEGORIES:"
|
||||
val STATUS = "STATUS:"
|
||||
val EXDATE = "EXDATE"
|
||||
val BYDAY = "BYDAY"
|
||||
val BYMONTHDAY = "BYMONTHDAY"
|
||||
val LOCATION = "LOCATION:"
|
||||
const val BEGIN_CALENDAR = "BEGIN:VCALENDAR"
|
||||
const val END_CALENDAR = "END:VCALENDAR"
|
||||
const val CALENDAR_PRODID = "PRODID:-//Simple Mobile Tools//NONSGML Event Calendar//EN"
|
||||
const val CALENDAR_VERSION = "VERSION:2.0"
|
||||
const val BEGIN_EVENT = "BEGIN:VEVENT"
|
||||
const val END_EVENT = "END:VEVENT"
|
||||
const val BEGIN_ALARM = "BEGIN:VALARM"
|
||||
const val END_ALARM = "END:VALARM"
|
||||
const val DTSTART = "DTSTART"
|
||||
const val DTEND = "DTEND"
|
||||
const val LAST_MODIFIED = "LAST-MODIFIED"
|
||||
const val DURATION = "DURATION:"
|
||||
const val SUMMARY = "SUMMARY"
|
||||
const val DESCRIPTION = "DESCRIPTION:"
|
||||
const val UID = "UID:"
|
||||
const val ACTION = "ACTION:"
|
||||
const val TRIGGER = "TRIGGER:"
|
||||
const val RRULE = "RRULE:"
|
||||
const val CATEGORIES = "CATEGORIES:"
|
||||
const val STATUS = "STATUS:"
|
||||
const val EXDATE = "EXDATE"
|
||||
const val BYDAY = "BYDAY"
|
||||
const val BYMONTHDAY = "BYMONTHDAY"
|
||||
const val LOCATION = "LOCATION:"
|
||||
|
||||
// this tag isn't a standard ICS tag, but there's no official way of adding a category color in an ics file
|
||||
val CATEGORY_COLOR = "CATEGORY_COLOR:"
|
||||
const val CATEGORY_COLOR = "CATEGORY_COLOR:"
|
||||
|
||||
val DISPLAY = "DISPLAY"
|
||||
val FREQ = "FREQ"
|
||||
val UNTIL = "UNTIL"
|
||||
val COUNT = "COUNT"
|
||||
val INTERVAL = "INTERVAL"
|
||||
val CONFIRMED = "CONFIRMED"
|
||||
val VALUE = "VALUE"
|
||||
val DATE = "DATE"
|
||||
const val DISPLAY = "DISPLAY"
|
||||
const val FREQ = "FREQ"
|
||||
const val UNTIL = "UNTIL"
|
||||
const val COUNT = "COUNT"
|
||||
const val INTERVAL = "INTERVAL"
|
||||
const val CONFIRMED = "CONFIRMED"
|
||||
const val VALUE = "VALUE"
|
||||
const val DATE = "DATE"
|
||||
|
||||
val DAILY = "DAILY"
|
||||
val WEEKLY = "WEEKLY"
|
||||
val MONTHLY = "MONTHLY"
|
||||
val YEARLY = "YEARLY"
|
||||
const val DAILY = "DAILY"
|
||||
const val WEEKLY = "WEEKLY"
|
||||
const val MONTHLY = "MONTHLY"
|
||||
const val YEARLY = "YEARLY"
|
||||
|
||||
val MO = "MO"
|
||||
val TU = "TU"
|
||||
val WE = "WE"
|
||||
val TH = "TH"
|
||||
val FR = "FR"
|
||||
val SA = "SA"
|
||||
val SU = "SU"
|
||||
const val MO = "MO"
|
||||
const val TU = "TU"
|
||||
const val WE = "WE"
|
||||
const val TH = "TH"
|
||||
const val FR = "FR"
|
||||
const val SA = "SA"
|
||||
const val SU = "SU"
|
||||
|
||||
// font sizes
|
||||
val FONT_SIZE_SMALL = 0
|
||||
val FONT_SIZE_MEDIUM = 1
|
||||
val FONT_SIZE_LARGE = 2
|
||||
const val FONT_SIZE_SMALL = 0
|
||||
const val FONT_SIZE_MEDIUM = 1
|
||||
const val FONT_SIZE_LARGE = 2
|
||||
|
||||
val SOURCE_SIMPLE_CALENDAR = "simple-calendar"
|
||||
val SOURCE_IMPORTED_ICS = "imported-ics"
|
||||
val SOURCE_CONTACT_BIRTHDAY = "contact-birthday"
|
||||
val SOURCE_CONTACT_ANNIVERSARY = "contact-anniversary"
|
||||
|
||||
// deprecated
|
||||
val SOURCE_GOOGLE_CALENDAR = 1
|
||||
const val SOURCE_SIMPLE_CALENDAR = "simple-calendar"
|
||||
const val SOURCE_IMPORTED_ICS = "imported-ics"
|
||||
const val SOURCE_CONTACT_BIRTHDAY = "contact-birthday"
|
||||
const val SOURCE_CONTACT_ANNIVERSARY = "contact-anniversary"
|
||||
|
|
|
@ -38,7 +38,6 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
|||
private val COL_LAST_UPDATED = "last_updated"
|
||||
private val COL_EVENT_SOURCE = "event_source"
|
||||
private val COL_LOCATION = "location"
|
||||
private val COL_SOURCE = "source" // deprecated
|
||||
|
||||
private val META_TABLE_NAME = "events_meta"
|
||||
private val COL_EVENT_ID = "event_id"
|
||||
|
@ -65,9 +64,9 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
|||
private val mDb: SQLiteDatabase = writableDatabase
|
||||
|
||||
companion object {
|
||||
private val DB_VERSION = 19
|
||||
val DB_NAME = "events.db"
|
||||
val REGULAR_EVENT_TYPE_ID = 1
|
||||
private const val DB_VERSION = 19
|
||||
const val DB_NAME = "events.db"
|
||||
const val REGULAR_EVENT_TYPE_ID = 1
|
||||
var dbInstance: DBHelper? = null
|
||||
|
||||
fun newInstance(context: Context): DBHelper {
|
||||
|
@ -161,11 +160,11 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
|||
db.execSQL("ALTER TABLE $MAIN_TABLE_NAME ADD COLUMN $COL_EVENT_SOURCE TEXT DEFAULT ''")
|
||||
}
|
||||
|
||||
if (oldVersion < 16) {
|
||||
if (oldVersion in 7..15) {
|
||||
db.execSQL("ALTER TABLE $TYPES_TABLE_NAME ADD COLUMN $COL_TYPE_CALDAV_CALENDAR_ID INTEGER NOT NULL DEFAULT 0")
|
||||
}
|
||||
|
||||
if (oldVersion < 17) {
|
||||
if (oldVersion in 7..17) {
|
||||
db.execSQL("ALTER TABLE $TYPES_TABLE_NAME ADD COLUMN $COL_TYPE_CALDAV_DISPLAY_NAME TEXT DEFAULT ''")
|
||||
db.execSQL("ALTER TABLE $TYPES_TABLE_NAME ADD COLUMN $COL_TYPE_CALDAV_EMAIL TEXT DEFAULT ''")
|
||||
}
|
||||
|
@ -227,9 +226,9 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
|||
}
|
||||
|
||||
fun update(event: Event, updateAtCalDAV: Boolean, callback: (() -> Unit)? = null) {
|
||||
val selectionArgs = arrayOf(event.id.toString())
|
||||
val values = fillEventValues(event)
|
||||
val selection = "$COL_ID = ?"
|
||||
val selectionArgs = arrayOf(event.id.toString())
|
||||
mDb.update(MAIN_TABLE_NAME, values, selection, selectionArgs)
|
||||
|
||||
if (event.repeatInterval == 0) {
|
||||
|
@ -426,6 +425,12 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
|||
return fillEvents(cursor)
|
||||
}
|
||||
|
||||
fun deleteAllEvents() {
|
||||
val cursor = getEventsCursor()
|
||||
val events = fillEvents(cursor).map { it.id.toString() }.toTypedArray()
|
||||
deleteEvents(events, true)
|
||||
}
|
||||
|
||||
fun deleteEvents(ids: Array<String>, deleteFromCalDAV: Boolean) {
|
||||
val args = TextUtils.join(", ", ids)
|
||||
val selection = "$MAIN_TABLE_NAME.$COL_ID IN ($args)"
|
||||
|
|
|
@ -78,6 +78,8 @@ object Formatter {
|
|||
|
||||
fun getDateTimeFromTS(ts: Int) = DateTime(ts * 1000L, DateTimeZone.getDefault())
|
||||
|
||||
fun getUTCDateTimeFromTS(ts: Int) = DateTime(ts * 1000L, DateTimeZone.UTC)
|
||||
|
||||
// use manually translated month names, as DateFormat and Joda have issues with a lot of languages
|
||||
fun getMonthName(context: Context, id: Int) = context.resources.getStringArray(R.array.months)[id - 1]
|
||||
|
||||
|
@ -94,9 +96,12 @@ object Formatter {
|
|||
|
||||
fun getDayCodeFromTS(ts: Int): String {
|
||||
val daycode = getDateTimeFromTS(ts).toString(DAYCODE_PATTERN)
|
||||
return if (daycode.isNotEmpty())
|
||||
return if (daycode.isNotEmpty()) {
|
||||
daycode
|
||||
else
|
||||
} else {
|
||||
"0"
|
||||
}
|
||||
}
|
||||
|
||||
fun getShiftedImportTimestamp(ts: Int) = getUTCDateTimeFromTS(ts).withTime(13, 0, 0, 0).withZoneRetainFields(DateTimeZone.getDefault()).seconds()
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import com.simplemobiletools.calendar.models.Event
|
|||
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||
import com.simplemobiletools.commons.extensions.getFileOutputStream
|
||||
import com.simplemobiletools.commons.extensions.writeLn
|
||||
import com.simplemobiletools.commons.models.FileDirItem
|
||||
import java.io.BufferedWriter
|
||||
import java.io.File
|
||||
|
||||
|
@ -18,7 +19,8 @@ class IcsExporter {
|
|||
private var eventsFailed = 0
|
||||
|
||||
fun exportEvents(activity: BaseSimpleActivity, file: File, events: ArrayList<Event>, callback: (result: ExportResult) -> Unit) {
|
||||
activity.getFileOutputStream(file) {
|
||||
val fileDirItem = FileDirItem(file.absolutePath, file.name)
|
||||
activity.getFileOutputStream(fileDirItem) {
|
||||
if (it == null) {
|
||||
callback(EXPORT_FAIL)
|
||||
return@getFileOutputStream
|
||||
|
|
|
@ -1,23 +1,16 @@
|
|||
package com.simplemobiletools.calendar.services
|
||||
|
||||
import android.app.IntentService
|
||||
import android.app.NotificationManager
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import com.simplemobiletools.calendar.extensions.config
|
||||
import com.simplemobiletools.calendar.extensions.dbHelper
|
||||
import com.simplemobiletools.calendar.extensions.scheduleEventIn
|
||||
import com.simplemobiletools.calendar.extensions.rescheduleReminder
|
||||
import com.simplemobiletools.calendar.helpers.EVENT_ID
|
||||
|
||||
class SnoozeService : IntentService("Snooze") {
|
||||
override fun onHandleIntent(intent: Intent) {
|
||||
val eventId = intent.getIntExtra(EVENT_ID, 0)
|
||||
val event = dbHelper.getEventWithId(eventId)
|
||||
|
||||
if (eventId != 0 && event != null) {
|
||||
applicationContext.scheduleEventIn(System.currentTimeMillis() + applicationContext.config.snoozeDelay * 60000, event)
|
||||
val manager = applicationContext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||
manager.cancel(eventId)
|
||||
}
|
||||
rescheduleReminder(event, config.snoozeDelay)
|
||||
}
|
||||
}
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 521 B |
Binary file not shown.
Before Width: | Height: | Size: 675 B |
Binary file not shown.
Before Width: | Height: | Size: 970 B |
Binary file not shown.
Before Width: | Height: | Size: 1.2 KiB |
|
@ -17,6 +17,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_margin="@dimen/activity_margin"
|
||||
android:contentDescription="@string/new_event"
|
||||
android:src="@drawable/ic_plus"
|
||||
app:backgroundTint="@color/color_primary"
|
||||
app:rippleColor="@color/pressed_item_foreground"/>
|
||||
|
@ -61,7 +62,7 @@
|
|||
android:layout_height="match_parent"
|
||||
android:clipToPadding="false"
|
||||
android:scrollbars="vertical"
|
||||
app:layoutManager="android.support.v7.widget.LinearLayoutManager"/>
|
||||
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager"/>
|
||||
|
||||
</RelativeLayout>
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
|
|
|
@ -6,4 +6,4 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clipToPadding="false"
|
||||
app:layoutManager="android.support.v7.widget.LinearLayoutManager"/>
|
||||
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager"/>
|
||||
|
|
|
@ -17,7 +17,10 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:padding="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_customize_colors_label"
|
||||
|
@ -36,7 +39,10 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:padding="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_manage_event_types_label"
|
||||
|
@ -55,7 +61,10 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:padding="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_use_english"
|
||||
|
@ -75,7 +84,10 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:padding="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_hour_format"
|
||||
|
@ -95,7 +107,10 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:padding="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_sunday_first"
|
||||
|
@ -109,6 +124,51 @@
|
|||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_avoid_whats_new_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_avoid_whats_new"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:text="@string/avoid_whats_new"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_delete_all_events_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/bigger_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/bigger_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_delete_all_events"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:paddingRight="@dimen/medium_margin"
|
||||
android:text="@string/delete_all_events"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<View
|
||||
android:id="@+id/reminders_divider"
|
||||
android:layout_width="match_parent"
|
||||
|
@ -120,8 +180,8 @@
|
|||
android:id="@+id/reminders_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="@dimen/big_margin"
|
||||
android:layout_marginStart="@dimen/big_margin"
|
||||
android:layout_marginLeft="@dimen/bigger_margin"
|
||||
android:layout_marginStart="@dimen/bigger_margin"
|
||||
android:layout_marginTop="@dimen/activity_margin"
|
||||
android:text="@string/event_reminders"
|
||||
android:textAllCaps="true"
|
||||
|
@ -133,7 +193,10 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:padding="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_vibrate"
|
||||
|
@ -154,8 +217,8 @@
|
|||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/bigger_margin"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/bigger_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
|
@ -182,6 +245,29 @@
|
|||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_use_same_snooze_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_use_same_snooze"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:text="@string/use_same_snooze"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_snooze_delay_holder"
|
||||
android:layout_width="match_parent"
|
||||
|
@ -189,8 +275,8 @@
|
|||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/bigger_margin"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/bigger_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
|
@ -217,41 +303,6 @@
|
|||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_default_reminder_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/bigger_margin"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:paddingTop="@dimen/bigger_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_default_reminder_label"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toLeftOf="@+id/settings_default_reminder"
|
||||
android:layout_toStartOf="@+id/settings_default_reminder"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:paddingRight="@dimen/medium_margin"
|
||||
android:text="@string/default_event_reminder"/>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_default_reminder"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_marginEnd="@dimen/small_margin"
|
||||
android:layout_marginRight="@dimen/small_margin"
|
||||
android:background="@null"
|
||||
android:clickable="false"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<View
|
||||
android:id="@+id/caldav_divider"
|
||||
android:layout_width="match_parent"
|
||||
|
@ -263,8 +314,8 @@
|
|||
android:id="@+id/caldav_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="@dimen/big_margin"
|
||||
android:layout_marginStart="@dimen/big_margin"
|
||||
android:layout_marginLeft="@dimen/bigger_margin"
|
||||
android:layout_marginStart="@dimen/bigger_margin"
|
||||
android:layout_marginTop="@dimen/activity_margin"
|
||||
android:text="@string/caldav"
|
||||
android:textAllCaps="true"
|
||||
|
@ -276,7 +327,10 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:padding="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_caldav_sync"
|
||||
|
@ -296,8 +350,8 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/bigger_margin"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/bigger_margin"
|
||||
android:visibility="gone">
|
||||
|
||||
|
@ -323,8 +377,8 @@
|
|||
android:id="@+id/weekly_view_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="@dimen/big_margin"
|
||||
android:layout_marginStart="@dimen/big_margin"
|
||||
android:layout_marginLeft="@dimen/bigger_margin"
|
||||
android:layout_marginStart="@dimen/bigger_margin"
|
||||
android:layout_marginTop="@dimen/activity_margin"
|
||||
android:text="@string/weekly_view"
|
||||
android:textAllCaps="true"
|
||||
|
@ -337,8 +391,8 @@
|
|||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/bigger_margin"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/bigger_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
|
@ -371,8 +425,8 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/bigger_margin"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/bigger_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
|
@ -410,8 +464,8 @@
|
|||
android:id="@+id/monthly_view_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="@dimen/big_margin"
|
||||
android:layout_marginStart="@dimen/big_margin"
|
||||
android:layout_marginLeft="@dimen/bigger_margin"
|
||||
android:layout_marginStart="@dimen/bigger_margin"
|
||||
android:layout_marginTop="@dimen/activity_margin"
|
||||
android:text="@string/monthly_view"
|
||||
android:textAllCaps="true"
|
||||
|
@ -423,7 +477,10 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:padding="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_week_numbers"
|
||||
|
@ -448,8 +505,8 @@
|
|||
android:id="@+id/simple_event_list_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="@dimen/big_margin"
|
||||
android:layout_marginStart="@dimen/big_margin"
|
||||
android:layout_marginLeft="@dimen/bigger_margin"
|
||||
android:layout_marginStart="@dimen/bigger_margin"
|
||||
android:layout_marginTop="@dimen/activity_margin"
|
||||
android:text="@string/event_lists"
|
||||
android:textAllCaps="true"
|
||||
|
@ -461,7 +518,10 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:padding="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_replace_description"
|
||||
|
@ -481,8 +541,8 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/bigger_margin"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/bigger_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
|
@ -520,8 +580,8 @@
|
|||
android:id="@+id/simple_font_size_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="@dimen/big_margin"
|
||||
android:layout_marginStart="@dimen/big_margin"
|
||||
android:layout_marginLeft="@dimen/bigger_margin"
|
||||
android:layout_marginStart="@dimen/bigger_margin"
|
||||
android:layout_marginTop="@dimen/activity_margin"
|
||||
android:text="@string/widgets"
|
||||
android:textAllCaps="true"
|
||||
|
@ -533,8 +593,8 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/bigger_margin"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/bigger_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
|
|
|
@ -87,7 +87,7 @@
|
|||
android:clipToPadding="false"
|
||||
android:overScrollMode="never"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
app:layoutManager="android.support.v7.widget.LinearLayoutManager"/>
|
||||
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager"/>
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
|
|
@ -8,4 +8,4 @@
|
|||
android:clipToPadding="false"
|
||||
android:overScrollMode="never"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
app:layoutManager="android.support.v7.widget.LinearLayoutManager"/>
|
||||
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager"/>
|
||||
|
|
|
@ -15,6 +15,6 @@
|
|||
android:layout_height="match_parent"
|
||||
android:layout_below="@+id/top_value"
|
||||
android:clipToPadding="false"
|
||||
app:layoutManager="android.support.v7.widget.LinearLayoutManager"/>
|
||||
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
android:paddingTop="@dimen/medium_margin"
|
||||
android:scrollbars="vertical"
|
||||
android:visibility="gone"
|
||||
app:layoutManager="android.support.v7.widget.LinearLayoutManager"/>
|
||||
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager"/>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/calendar_empty_list_placeholder"
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
android:id="@+id/month_calendar_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="@dimen/medium_margin">
|
||||
android:paddingTop="@dimen/medium_margin">
|
||||
|
||||
<include layout="@layout/top_navigation"/>
|
||||
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
android:fillViewport="true">
|
||||
|
||||
<RelativeLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/week_view_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
android:divider="@null"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
app:layoutManager="android.support.v7.widget.LinearLayoutManager"/>
|
||||
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/config_bg_color"
|
||||
|
|
|
@ -186,16 +186,18 @@
|
|||
<string name="week_numbers">Diskouez niverennoù ar sizhun</string>
|
||||
<string name="vibrate">Froumal evit ar rebuzadurioù adc\'halv</string>
|
||||
<string name="reminder_sound">Soniri adc\'halv</string>
|
||||
<string name="default_event_reminder">Adc\'halv darvoud dre ziouer</string>
|
||||
<string name="no_ringtone_picker">N\'eus bet kavet arload ebet gouest da arventennañ ur soniri</string>
|
||||
<string name="no_ringtone_selected">Hini ebet</string>
|
||||
<string name="day_end_before_start">An devezh n\'hall ket echuiñ abretoc\'h eget ma krog</string>
|
||||
<string name="caldav_sync">Goubredañ CalDAV</string>
|
||||
<string name="event_lists">Roll an darvoudoù</string>
|
||||
<string name="display_past_events">Skrammañ darvoudoù an amzer tremenet</string>
|
||||
<string name="use_same_snooze">Always use same snooze interval</string>
|
||||
<string name="snooze_delay">Daleañ an adc\'halv eus</string>
|
||||
<string name="widgets">Widjetoù</string>
|
||||
<string name="replace_description_with_location">Amsaviñ an deskrivadur gant al lec\'hiadur er gwell roll enankadoù </string>
|
||||
<string name="replace_description_with_location">Replace event description with location</string>
|
||||
<string name="delete_all_events">Delete all events</string>
|
||||
<string name="delete_all_events_confirmation">Are you sure you want to delete all events? This will leave your event types and other settings intact.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -270,6 +272,14 @@
|
|||
<string name="sample_description_4">Er c\'hrampouezhti</string>
|
||||
<string name="sample_title_5">Banne kafe</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">How can I remove the holidays imported via the \"Add holidays\" button?</string>
|
||||
<string name="faq_1_text">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.</string>
|
||||
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting 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 DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">Un deiziataer eeun gant darvoudoù, widjetoù personelaus ha tamm bruderezh ebet.</string>
|
||||
|
|
|
@ -193,16 +193,18 @@
|
|||
<string name="week_numbers">Zobrazovat číslo týdne</string>
|
||||
<string name="vibrate">Vibrovat</string>
|
||||
<string name="reminder_sound">Tón oznámení</string>
|
||||
<string name="default_event_reminder">Standardní připomenutí události</string>
|
||||
<string name="no_ringtone_picker">Nebyla nalezena žádná aplikace, která by mohla nastavit vyzvánění</string>
|
||||
<string name="no_ringtone_selected">žádný</string>
|
||||
<string name="day_end_before_start">Den nemůže skončit dřív, než začne</string>
|
||||
<string name="caldav_sync">CalDAV sync</string>
|
||||
<string name="event_lists">Seznamy událostí</string>
|
||||
<string name="display_past_events">Zobrazit minulé události</string>
|
||||
<string name="use_same_snooze">Always use same snooze interval</string>
|
||||
<string name="snooze_delay">Odložit připomenutí pomocí funkce Snooze by</string>
|
||||
<string name="widgets">Widgety</string>
|
||||
<string name="replace_description_with_location">Replace Description with Location at list view entries</string>
|
||||
<string name="replace_description_with_location">Replace event description with location</string>
|
||||
<string name="delete_all_events">Delete all events</string>
|
||||
<string name="delete_all_events_confirmation">Are you sure you want to delete all events? This will leave your event types and other settings intact.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -279,6 +281,14 @@
|
|||
<string name="sample_description_4">ve městě</string>
|
||||
<string name="sample_title_5">na kafe</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">How can I remove the holidays imported via the \"Add holidays\" button?</string>
|
||||
<string name="faq_1_text">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.</string>
|
||||
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting 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 DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">Jednoduchý kalendář s událostmi, přizpůsobitelné widgety a žádné reklamy.</string>
|
||||
|
|
|
@ -186,16 +186,18 @@
|
|||
<string name="week_numbers">Vis ugenumre</string>
|
||||
<string name="vibrate">Vibrer under påmindelser</string>
|
||||
<string name="reminder_sound">Lyd til påmindelser</string>
|
||||
<string name="default_event_reminder">Påmindelsesstandard</string>
|
||||
<string name="no_ringtone_picker">Der blev ikke fundet en app til indstilling af ringetone</string>
|
||||
<string name="no_ringtone_selected">Ingen</string>
|
||||
<string name="day_end_before_start">Dagen skal starte inden den slutter!</string>
|
||||
<string name="caldav_sync">CalDAV sync</string>
|
||||
<string name="event_lists">Begivenhedsliste</string>
|
||||
<string name="display_past_events">Vis overståede begivenheder</string>
|
||||
<string name="use_same_snooze">Brug altid samme snooze-tid</string>
|
||||
<string name="snooze_delay">Udsæt påmindelsen med en snooze på</string>
|
||||
<string name="widgets">Widgets</string>
|
||||
<string name="replace_description_with_location">Erstat beskrivelse med sted på visningen af begivenhedslisten</string>
|
||||
<string name="replace_description_with_location">Erstat beskrivelse med sted</string>
|
||||
<string name="delete_all_events">Slet alle begivenheder</string>
|
||||
<string name="delete_all_events_confirmation">Er du sikker på at du vil slette alle begivenheder? Dine begivenhedstyper og andre indstillinger vil forblive intakte.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -270,6 +272,14 @@
|
|||
<string name="sample_description_4">I byen</string>
|
||||
<string name="sample_title_5">Kaffetid!</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">How can I remove the holidays imported via the \"Add holidays\" button?</string>
|
||||
<string name="faq_1_text">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.</string>
|
||||
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting 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 DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">En simpel reklamefri kalender med begivenheder og en widget der kan tilpasses.</string>
|
||||
|
|
|
@ -186,16 +186,18 @@
|
|||
<string name="week_numbers">Zeige Kalenderwoche an</string>
|
||||
<string name="vibrate">Vibration bei Erinnerung</string>
|
||||
<string name="reminder_sound">Erinnerungston</string>
|
||||
<string name="default_event_reminder">Standard Termin Erinnerung</string>
|
||||
<string name="no_ringtone_picker">Keine App zum Setzen des Klingeltons gefunden</string>
|
||||
<string name="no_ringtone_selected">Kein Klingelton gewählt</string>
|
||||
<string name="day_end_before_start">Terminbeginn kann nicht vor Terminende liegen</string>
|
||||
<string name="caldav_sync">CalDAV Sync</string>
|
||||
<string name="event_lists">Terminlisten</string>
|
||||
<string name="display_past_events">Vergangene Termine anzeigen</string>
|
||||
<string name="use_same_snooze">Always use same snooze interval</string>
|
||||
<string name="snooze_delay">Erinnerung mit Snooze verschieben um</string>
|
||||
<string name="widgets">Widgets</string>
|
||||
<string name="replace_description_with_location">Ersetze Beschreibung mit Ort bei Listeneinträgen</string>
|
||||
<string name="replace_description_with_location">Replace event description with location</string>
|
||||
<string name="delete_all_events">Alle Termine löschen</string>
|
||||
<string name="delete_all_events_confirmation">Bist du sicher, dass du alle Termine löschen willst? Deine Termintypen und Einstellungen bleiben erhalten.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -270,6 +272,14 @@
|
|||
<string name="sample_description_4">Im Einkaufszentrum</string>
|
||||
<string name="sample_title_5">Kaffeepause</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">How can I remove the holidays imported via the \"Add holidays\" button?</string>
|
||||
<string name="faq_1_text">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.</string>
|
||||
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting 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 DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">Ein einfacher Kalender mit personalisierbaren Widgets, ganz ohne Werbung.</string>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">Simple Calendar</string>
|
||||
<string name="app_launcher_name">Simple Calendar</string>
|
||||
<string name="app_launcher_name">Calendar</string>
|
||||
<string name="change_view">Cambiar vista</string>
|
||||
<string name="daily_view">Daily view</string>
|
||||
<string name="weekly_view">Vista semanal</string>
|
||||
|
@ -186,16 +186,18 @@
|
|||
<string name="week_numbers">Mostrar los números de la semana</string>
|
||||
<string name="vibrate">Vibración en notificación de recordatorio</string>
|
||||
<string name="reminder_sound">Sonido de recordatorio</string>
|
||||
<string name="default_event_reminder">Recordatorio predeterminado de un evento</string>
|
||||
<string name="no_ringtone_picker">No se ha encontrado ninguna aplicación capaz de establecer el tono de llamada</string>
|
||||
<string name="no_ringtone_selected">Ninguno</string>
|
||||
<string name="day_end_before_start">El día no puede terminar antes de que comience</string>
|
||||
<string name="caldav_sync">Sincronizar CalDAV</string>
|
||||
<string name="event_lists">Listas de eventos</string>
|
||||
<string name="display_past_events">Mostrar eventos pasados</string>
|
||||
<string name="use_same_snooze">Always use same snooze interval</string>
|
||||
<string name="snooze_delay">Retrasar recordatorio durante</string>
|
||||
<string name="widgets">Widgets</string>
|
||||
<string name="replace_description_with_location">Remplazar la descripción con la ubicación al mostrar entradas</string>
|
||||
<string name="replace_description_with_location">Replace event description with location</string>
|
||||
<string name="delete_all_events">Delete all events</string>
|
||||
<string name="delete_all_events_confirmation">Are you sure you want to delete all events? This will leave your event types and other settings intact.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -236,7 +238,7 @@
|
|||
|
||||
<string name="monday_letter">L</string>
|
||||
<string name="tuesday_letter">M</string>
|
||||
<string name="wednesday_letter">X</string>
|
||||
<string name="wednesday_letter">M</string>
|
||||
<string name="thursday_letter">J</string>
|
||||
<string name="friday_letter">V</string>
|
||||
<string name="saturday_letter">S</string>
|
||||
|
@ -270,6 +272,14 @@
|
|||
<string name="sample_description_4">En la plaza</string>
|
||||
<string name="sample_title_5">Hora de café</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">How can I remove the holidays imported via the \"Add holidays\" button?</string>
|
||||
<string name="faq_1_text">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.</string>
|
||||
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting 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 DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">Un sencillo calendario con eventos, widget personalizable y sin anuncios.</string>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<string name="app_name">Calendrier simple</string>
|
||||
<string name="app_launcher_name">Calendrier</string>
|
||||
<string name="change_view">Changer de vue</string>
|
||||
<string name="daily_view">Daily view</string>
|
||||
<string name="daily_view">Vue quotidienne</string>
|
||||
<string name="weekly_view">Vue hebdomadaire</string>
|
||||
<string name="monthly_view">Vue mensuelle</string>
|
||||
<string name="yearly_view">Vue annuelle</string>
|
||||
|
@ -12,7 +12,7 @@
|
|||
<string name="add_some_events">Vous pouvez ajouter des événements avec le bouton + en bas.</string>
|
||||
<string name="details">Détails</string>
|
||||
<string name="go_to_today">Aller à aujourd\'hui</string>
|
||||
<string name="snooze">Snooze</string>
|
||||
<string name="snooze">Sommeiller</string>
|
||||
|
||||
<!-- Widget titles -->
|
||||
<string name="widget_monthly">Calendrier mensuel</string>
|
||||
|
@ -27,7 +27,7 @@
|
|||
<string name="event_added">Événement ajouté avec succès</string>
|
||||
<string name="event_updated">Événement ajouté avec succès</string>
|
||||
<string name="filter_events_by_type">Filtrer les événements par type</string>
|
||||
<string name="please_fill_location">Please fill in a location to be shown on a map</string>
|
||||
<string name="please_fill_location">S'il vous plaît remplir un emplacement pour être affiché sur une carte</string>
|
||||
|
||||
<!-- Event Repetition -->
|
||||
<string name="repetition">Répétition</string>
|
||||
|
@ -104,10 +104,10 @@
|
|||
<string name="birthdays_added">Anniversaires ajoutés avec succès</string>
|
||||
|
||||
<!-- Anniversaries -->
|
||||
<string name="anniversaries">Anniversaries</string>
|
||||
<string name="add_anniversaries">Add contact anniversaries</string>
|
||||
<string name="no_anniversaries">No anniversaries have been found</string>
|
||||
<string name="anniversaries_added">Anniversaries added successfully</string>
|
||||
<string name="anniversaries">Anniversaires</string>
|
||||
<string name="add_anniversaries">Ajouter des anniversaires de contact</string>
|
||||
<string name="no_anniversaries">Aucun anniversaire n'a été trouvé</string>
|
||||
<string name="anniversaries_added">Anniversaires ajoutés avec succès</string>
|
||||
|
||||
<!-- Event Reminders -->
|
||||
<string name="reminder">Rappel</string>
|
||||
|
@ -119,7 +119,7 @@
|
|||
<string name="hours_raw">heures</string>
|
||||
<string name="days_raw">jours</string>
|
||||
<string name="add_another_reminder">Ajouter un autre rappel</string>
|
||||
<string name="event_reminders">Event reminders</string>
|
||||
<string name="event_reminders">Rappels d'événements</string>
|
||||
|
||||
<plurals name="minutes_before">
|
||||
<item quantity="one">%d minute avant</item>
|
||||
|
@ -186,16 +186,18 @@
|
|||
<string name="week_numbers">Afficher les numéros de semaine</string>
|
||||
<string name="vibrate">Vibrer à la notification de rappel</string>
|
||||
<string name="reminder_sound">Son de rappel</string>
|
||||
<string name="default_event_reminder">Rappel d\'événement par défaut</string>
|
||||
<string name="no_ringtone_picker">Aucune application capable de configurer la sonnerie trouvée</string>
|
||||
<string name="no_ringtone_selected">Aucune</string>
|
||||
<string name="day_end_before_start">Le jour ne peut pas se terminer plus tôt qu\'il ne débute</string>
|
||||
<string name="caldav_sync">Synchronisation CalDAV</string>
|
||||
<string name="event_lists">Listes d\'événements</string>
|
||||
<string name="display_past_events">Afficher les événements du passé</string>
|
||||
<string name="use_same_snooze">Toujours utiliser le même intervalle de répétition</string>
|
||||
<string name="snooze_delay">Reporter le rappel avec Snooze de</string>
|
||||
<string name="widgets">Widgets</string>
|
||||
<string name="replace_description_with_location">Remplacer la description par la position dans la vue sous forme de liste</string>
|
||||
<string name="replace_description_with_location">Remplacer la description de l'événement par l'emplacement</string>
|
||||
<string name="delete_all_events">Supprimer tous les événements</string>
|
||||
<string name="delete_all_events_confirmation">Êtes-vous sûr de vouloir supprimer tous les événements? Cela laissera vos types d'événements et autres paramètres intacts.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -270,6 +272,14 @@
|
|||
<string name="sample_description_4">Dans la Place</string>
|
||||
<string name="sample_title_5">Heure du café</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">How can I remove the holidays imported via the \"Add holidays\" button?</string>
|
||||
<string name="faq_1_text">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.</string>
|
||||
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting 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 DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">Un calendrier simple avec événements, widget personnalisable, sans publicité.</string>
|
||||
|
|
313
app/src/main/res/values-gl/strings.xml
Normal file
313
app/src/main/res/values-gl/strings.xml
Normal file
|
@ -0,0 +1,313 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">Simple Calendar</string>
|
||||
<string name="app_launcher_name">Calendario</string>
|
||||
<string name="change_view">Cambiar vista</string>
|
||||
<string name="weekly_view">Vista semanal</string>
|
||||
<string name="monthly_view">Vista mensual</string>
|
||||
<string name="yearly_view">Vista anual</string>
|
||||
<string name="simple_event_list">Lista de eventos simple</string>
|
||||
<string name="no_upcoming_events">Semella que non ten ningún evento próximo.</string>
|
||||
<string name="add_some_events">Pode engadir algún co botón Máis na parte inferior.</string>
|
||||
<string name="details">Detalle</string>
|
||||
<string name="go_to_today">Ir ao día de hoxe</string>
|
||||
<string name="snooze">Retrasar</string>
|
||||
|
||||
<!-- Widget titles -->
|
||||
<string name="widget_monthly">Calendario mensual</string>
|
||||
<string name="widget_list">Lista de eventos do calendario</string>
|
||||
|
||||
<!-- Event -->
|
||||
<string name="event">Evento</string>
|
||||
<string name="edit_event">Editar evento</string>
|
||||
<string name="new_event">Novo evento</string>
|
||||
<string name="title_empty">O título non pode estar baldeiro</string>
|
||||
<string name="end_before_start">O evento non pode rematar antes de iniciarse</string>
|
||||
<string name="event_added">Evento engadido con éxito</string>
|
||||
<string name="event_updated">O evento foi actualizado correctamente</string>
|
||||
<string name="filter_events_by_type">Filtrar eventos por tipo</string>
|
||||
|
||||
<!-- Event Repetition -->
|
||||
<string name="repetition">Repetición</string>
|
||||
<string name="no_repetition">Sin repetición</string>
|
||||
<string name="daily">Diariamente</string>
|
||||
<string name="weekly">Semanalmente</string>
|
||||
<string name="monthly">Mensualmente</string>
|
||||
<string name="yearly">Anualmente</string>
|
||||
<string name="weeks_raw">semanas</string>
|
||||
<string name="months_raw">meses</string>
|
||||
<string name="years_raw">anos</string>
|
||||
<string name="repeat_till">Repetir ata</string>
|
||||
<string name="forever">Sempre</string>
|
||||
<string name="event_is_repeatable">O evento é repetible</string>
|
||||
<string name="selection_contains_repetition">A seleción contén eventos recurrentes</string>
|
||||
<string name="delete_one_only">Eliminar só o evento selecionado</string>
|
||||
<string name="delete_all_occurrences">Eliminar todos os eventos</string>
|
||||
<string name="update_one_only">Actualizar só o evento selecionado</string>
|
||||
<string name="update_all_occurrences">Actualizar todos os eventos</string>
|
||||
<string name="repeat_till_date">Repetir ata a data</string>
|
||||
<string name="repeat_x_times">Repetir x veces</string>
|
||||
<string name="repeat_forever">Repetir por sempre</string>
|
||||
<string name="times">veces</string>
|
||||
<string name="repeat">Repetir</string>
|
||||
<string name="repeat_on">Repertir os</string>
|
||||
<string name="every_day">Cada día</string>
|
||||
<string name="selected_days">Nos días selecionados</string>
|
||||
<string name="the_same_day">O mismo día</string>
|
||||
<string name="the_last_day">O último día</string>
|
||||
<string name="repeat_on_the_same_day">Repetir no mismo día cada mes</string>
|
||||
<string name="repeat_on_the_last_day">Repetir no último día do mes</string>
|
||||
<string name="repeat_every_m">Repetir cada</string>
|
||||
<string name="every_m">Cada</string>
|
||||
<string name="first_m">primeiro</string>
|
||||
<string name="second_m">segundo</string>
|
||||
<string name="third_m">terceiro</string>
|
||||
<string name="fourth_m">cuarto</string>
|
||||
<string name="last_m">último</string>
|
||||
|
||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||
<!-- used in repetition, like "Every first Sunday" -->
|
||||
<string name="repeat_every_f">Repetir cada</string>
|
||||
<string name="every_f">Cada</string>
|
||||
<string name="first_f">primero</string>
|
||||
<string name="second_f">segundo</string>
|
||||
<string name="third_f">tercero</string>
|
||||
<string name="fourth_f">cuarto</string>
|
||||
<string name="last_f">último</string>
|
||||
|
||||
<plurals name="days">
|
||||
<item quantity="one">%d día</item>
|
||||
<item quantity="other">%d días</item>
|
||||
</plurals>
|
||||
|
||||
<plurals name="weeks">
|
||||
<item quantity="one">%d semana</item>
|
||||
<item quantity="other">%d semanas</item>
|
||||
</plurals>
|
||||
|
||||
<plurals name="months">
|
||||
<item quantity="one">%d mes</item>
|
||||
<item quantity="other">%d meses</item>
|
||||
</plurals>
|
||||
|
||||
<plurals name="years">
|
||||
<item quantity="one">%d ano</item>
|
||||
<item quantity="other">%d anos</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Birthdays -->
|
||||
<string name="birthdays">Cumpleanos</string>
|
||||
<string name="add_birthdays">Engadir cumpleanos de contactos</string>
|
||||
<string name="no_birthdays">Non se atoparon cumpleanos</string>
|
||||
<string name="birthdays_added">Engadíronse correctamente os cumpleanos</string>
|
||||
|
||||
<!-- Anniversaries -->
|
||||
<string name="anniversaries">Aniversarios</string>
|
||||
<string name="add_anniversaries">Engadir aniversarios de contactos</string>
|
||||
<string name="no_anniversaries">Non se atoparon aniversarios</string>
|
||||
<string name="anniversaries_added">Engadíronse correctamente os aniversarios</string>
|
||||
|
||||
<!-- Event Reminders -->
|
||||
<string name="reminder">Recordatorio</string>
|
||||
<string name="no_reminder">Sin recordatorio</string>
|
||||
<string name="at_start">Ao inicio</string>
|
||||
<string name="custom">Personalizado</string>
|
||||
<string name="before">antes</string>
|
||||
<string name="minutes_raw">minutos</string>
|
||||
<string name="hours_raw">horas</string>
|
||||
<string name="days_raw">días</string>
|
||||
<string name="add_another_reminder">Engadir outro recordatorio</string>
|
||||
<string name="event_reminders">Recordatorios de eventos</string>
|
||||
|
||||
<plurals name="minutes_before">
|
||||
<item quantity="one">%d minuto antes</item>
|
||||
<item quantity="other">%d minutos antes</item>
|
||||
</plurals>
|
||||
|
||||
<plurals name="hours_before">
|
||||
<item quantity="one">%d hora antes</item>
|
||||
<item quantity="other">%d horas antes</item>
|
||||
</plurals>
|
||||
|
||||
<plurals name="days_before">
|
||||
<item quantity="one">%d día antes</item>
|
||||
<item quantity="other">%d días antes</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Export / Import -->
|
||||
<string name="importing">Importando…</string>
|
||||
<string name="exporting">Exportando…</string>
|
||||
<string name="import_events">Importar eventos</string>
|
||||
<string name="export_events">Exportar eventos</string>
|
||||
<string name="import_events_from_ics">Importar eventos desde un ficheiro .ics</string>
|
||||
<string name="export_events_to_ics">Exportar eventos desde un ficheiro .ics</string>
|
||||
<string name="events_imported_successfully">Eventos importados correctamente</string>
|
||||
<string name="events_exported_successfully">Eventos exportados correctamente</string>
|
||||
<string name="importing_events_failed">Fallo ao importar eventos</string>
|
||||
<string name="exporting_events_failed">Fallo ao exportar eventos</string>
|
||||
<string name="importing_some_events_failed">Fallo ao importar algúns eventos</string>
|
||||
<string name="exporting_some_events_failed">Fallo ao exportar algúns eventos</string>
|
||||
<string name="default_event_type">Tipo de evento predeterminado</string>
|
||||
<string name="no_events_for_exporting">Non se atoparon eventos para exportar</string>
|
||||
<string name="export_past_events_too">Exportar tamén eventos pasados</string>
|
||||
<string name="include_event_types">Incluír tipos de eventos</string>
|
||||
<string name="filename_without_ics">Nome de ficheiro (sin .ics)</string>
|
||||
<string name="no_title">Sin título</string>
|
||||
|
||||
<!-- Event details -->
|
||||
<string name="title">Título</string>
|
||||
<string name="location">Localización</string>
|
||||
<string name="description">Descrición</string>
|
||||
<string name="all_day">Todo o día</string>
|
||||
|
||||
<!-- Weekly view -->
|
||||
<string name="week">Semana</string>
|
||||
|
||||
<!-- Event types -->
|
||||
<string name="event_types">Tipos de eventos</string>
|
||||
<string name="add_new_type">Engadir un novo tipo de evento</string>
|
||||
<string name="edit_type">Editar tipo de evento</string>
|
||||
<string name="type_already_exists">Xa existe un tipo de evento con este nome</string>
|
||||
<string name="color">Cor</string>
|
||||
<string name="regular_event">Evento regular</string>
|
||||
<string name="cannot_delete_default_type">Non se pode eliminar o tipo de evento predeterminado</string>
|
||||
<string name="select_event_type">Seleccione un tipo de evento</string>
|
||||
<string name="move_events_into_default">Mover os eventos afectados ao tipo de evento por omisión</string>
|
||||
<string name="remove_affected_events">Eliminar permanentemente os eventos afectadosPermanently remove affected events</string>
|
||||
<string name="unsync_caldav_calendar">Para eliminar un calendario CalDAV antes debe deixar de sincronizalo</string>
|
||||
|
||||
<!-- Holidays -->
|
||||
<string name="holidays">Festivo</string>
|
||||
<string name="add_holidays">Engadir días festivos</string>
|
||||
<string name="national_holidays">Festivo nacional</string>
|
||||
<string name="religious_holidays">Festas relixiosas</string>
|
||||
<string name="holidays_imported_successfully">Engadíronse correctamente os días festivos nun novo tipo de evento</string>
|
||||
<string name="importing_some_holidays_failed">Fallou a importación de algúns eventos</string>
|
||||
<string name="importing_holidays_failed">Fallou a importación de días festivos</string>
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="manage_event_types">Xestionar tipos de eventos</string>
|
||||
<string name="use_24_hour_format">Usar formato de 24 horas</string>
|
||||
<string name="sunday_first">Domingo como primero día da semana</string>
|
||||
<string name="start_day_at">Na vista xeral o día comeza as</string>
|
||||
<string name="end_day_at">O día na vista semanal remata as</string>
|
||||
<string name="week_numbers">Mostrar os números da semana</string>
|
||||
<string name="vibrate">Vibrar coa notificación de recordatorio</string>
|
||||
<string name="reminder_sound">Son de recordatorio</string>
|
||||
<string name="default_event_reminder">Recordatorio predeterminado de un evento</string>
|
||||
<string name="no_ringtone_picker">Non se atopou ningunha aplicación capaz de establecer o ton de aviso</string>
|
||||
<string name="no_ringtone_selected">Ningún</string>
|
||||
<string name="day_end_before_start">O día non puede rematar antes de que comece</string>
|
||||
<string name="caldav_sync">CalDAV sincr.</string>
|
||||
<string name="event_lists">Listas de eventos</string>
|
||||
<string name="display_past_events">Mostrar eventos do pasado</string>
|
||||
<string name="use_same_snooze">Always use same snooze interval</string>
|
||||
<string name="snooze_delay">Retrasar recordatorio con Snooze</string>
|
||||
<string name="widgets">Widgets</string>
|
||||
<string name="replace_description_with_location">Replace event description with location</string>
|
||||
<string name="delete_all_events">Delete all events</string>
|
||||
<string name="delete_all_events_confirmation">Are you sure you want to delete all events? This will leave your event types and other settings intact.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
<string name="select_caldav_calendars">Escolla calendarios a sincronizar</string>
|
||||
<string name="manage_synced_calendars">Xestionar calendarios sincronizados</string>
|
||||
<string name="store_locally_only">Gardar só localmente</string>
|
||||
<string name="refresh_caldav_calendars">Actualizar calendarios CalDAV</string>
|
||||
<string name="refreshing">Actualizando…</string>
|
||||
<string name="refreshing_complete">Actualización completa</string>
|
||||
<string name="editing_calendar_failed">Fallou a edición do calendario</string>
|
||||
<string name="syncing">Sincronizando…</string>
|
||||
<string name="synchronization_completed">Sincronización completa</string>
|
||||
|
||||
<plurals name="by_minutes">
|
||||
<item quantity="one">%d minuto</item>
|
||||
<item quantity="other">%d minutos</item>
|
||||
</plurals>
|
||||
|
||||
<plurals name="by_hours">
|
||||
<item quantity="one">%d hora</item>
|
||||
<item quantity="other">%d horas</item>
|
||||
</plurals>
|
||||
|
||||
<string name="never">Nunca</string>
|
||||
|
||||
<string name="january">Xaneiro</string>
|
||||
<string name="february">Febreiro</string>
|
||||
<string name="march">Marzo</string>
|
||||
<string name="april">Abril</string>
|
||||
<string name="may">Maio</string>
|
||||
<string name="june">Xuño</string>
|
||||
<string name="july">Xullo</string>
|
||||
<string name="august">Agosto</string>
|
||||
<string name="september">Setembro</string>
|
||||
<string name="october">Outubro</string>
|
||||
<string name="november">Novembro</string>
|
||||
<string name="december">Nadal</string>
|
||||
|
||||
<string name="monday_letter">S</string>
|
||||
<string name="tuesday_letter">T</string>
|
||||
<string name="wednesday_letter">C</string>
|
||||
<string name="thursday_letter">Q</string>
|
||||
<string name="friday_letter">Se</string>
|
||||
<string name="saturday_letter">Sa</string>
|
||||
<string name="sunday_letter">D</string>
|
||||
|
||||
<string name="monday">Segunda</string>
|
||||
<string name="tuesday">Terceira</string>
|
||||
<string name="wednesday">Cuarta</string>
|
||||
<string name="thursday">Quinta</string>
|
||||
<string name="friday">Sexta</string>
|
||||
<string name="saturday">Sábado</string>
|
||||
<string name="sunday">Domingo</string>
|
||||
|
||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||
<!-- used in repetition, like "Every last Sunday" -->
|
||||
<string name="monday_alt">Segunda</string>
|
||||
<string name="tuesday_alt">Terceira</string>
|
||||
<string name="wednesday_alt">Cuarta</string>
|
||||
<string name="thursday_alt">Quinta</string>
|
||||
<string name="friday_alt">Sexta</string>
|
||||
<string name="saturday_alt">Sábado</string>
|
||||
<string name="sunday_alt">Domingo</string>
|
||||
|
||||
<!-- List widget config example events -->
|
||||
<string name="sample_title_1">Exercicio</string>
|
||||
<string name="sample_description_1">Correr un pouco</string>
|
||||
<string name="sample_title_2">Reunión con Xan</string>
|
||||
<string name="sample_description_2">No paseo do León</string>
|
||||
<string name="sample_title_3">Biblioteca</string>
|
||||
<string name="sample_title_4">Xantar con Aira</string>
|
||||
<string name="sample_description_4">Na plaza</string>
|
||||
<string name="sample_title_5">Hora do café</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">How can I remove the holidays imported via the \"Add holidays\" button?</string>
|
||||
<string name="faq_1_text">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.</string>
|
||||
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting 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 DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">Un calendario simple con eventos, widget personalizable e sin anuncios.</string>
|
||||
<string name="app_long_description">
|
||||
Un calendario que funciona sin precisar sincronización CalDAV. Pode crear fácilmente eventos recurrentes e configurar recordatorios. También mostra o número de semana.
|
||||
|
||||
Ten un widget 4x4 de tamaño variable no que pode personalizar a cor do texto, así como a transparencia e cor de fondo.
|
||||
|
||||
Non contén anuncios ni permisos innecesarios. É totalmente de código abierto e tamén proporciona un decorado oscuro.
|
||||
|
||||
O permiso ao Almacenamento só é preciso para importar ficheiros .ics.
|
||||
|
||||
O permiso aos Contactos só é preciso se quere importar os cumpleanos dos contactos.
|
||||
|
||||
Esta aplicación é parte de unha serie máis grande de aplicativos. Puede atopar o resto en http://www.simplemobiletools.com
|
||||
</string>
|
||||
|
||||
<!--
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
|
@ -187,16 +187,18 @@
|
|||
<string name="week_numbers">सफ्ताह क्रमांक दिखाए</string>
|
||||
<string name="vibrate">Vibrate on reminder notification</string>
|
||||
<string name="reminder_sound">Reminder sound</string>
|
||||
<string name="default_event_reminder">Default event reminder</string>
|
||||
<string name="no_ringtone_picker">No app capable of setting ringtone found</string>
|
||||
<string name="no_ringtone_selected">None</string>
|
||||
<string name="day_end_before_start">The day cannot end earlier than it starts</string>
|
||||
<string name="caldav_sync">CalDAV sync</string>
|
||||
<string name="event_lists">Event lists</string>
|
||||
<string name="display_past_events">Display events from the past</string>
|
||||
<string name="use_same_snooze">Always use same snooze interval</string>
|
||||
<string name="snooze_delay">Postpone reminder with Snooze by</string>
|
||||
<string name="widgets">Widgets</string>
|
||||
<string name="replace_description_with_location">Replace Description with Location at list view entries</string>
|
||||
<string name="replace_description_with_location">Replace event description with location</string>
|
||||
<string name="delete_all_events">Delete all events</string>
|
||||
<string name="delete_all_events_confirmation">Are you sure you want to delete all events? This will leave your event types and other settings intact.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -271,6 +273,14 @@
|
|||
<string name="sample_description_4">In the Plaza</string>
|
||||
<string name="sample_title_5">Coffee time</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">How can I remove the holidays imported via the \"Add holidays\" button?</string>
|
||||
<string name="faq_1_text">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.</string>
|
||||
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting 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 DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">एक सरल कैलेंडर इवेंट्स, कस्टमाइजेबल विजेट व बिना विज्ञापन के बिना।</string>
|
||||
|
|
|
@ -186,16 +186,18 @@
|
|||
<string name="week_numbers">Hetek sorszámának mutatása</string>
|
||||
<string name="vibrate">Emlékeztetőnél rezgés</string>
|
||||
<string name="reminder_sound">Reminder sound</string>
|
||||
<string name="default_event_reminder">Alapértelmezett emlékeztetés</string>
|
||||
<string name="no_ringtone_picker">No app capable of setting ringtone found</string>
|
||||
<string name="no_ringtone_selected">None</string>
|
||||
<string name="day_end_before_start">The day cannot end earlier than it starts</string>
|
||||
<string name="caldav_sync">CalDAV sync</string>
|
||||
<string name="event_lists">Event lists</string>
|
||||
<string name="display_past_events">Display events from the past</string>
|
||||
<string name="use_same_snooze">Always use same snooze interval</string>
|
||||
<string name="snooze_delay">Postpone reminder with Snooze by</string>
|
||||
<string name="widgets">Widgets</string>
|
||||
<string name="replace_description_with_location">Replace Description with Location at list view entries</string>
|
||||
<string name="replace_description_with_location">Replace event description with location</string>
|
||||
<string name="delete_all_events">Delete all events</string>
|
||||
<string name="delete_all_events_confirmation">Are you sure you want to delete all events? This will leave your event types and other settings intact.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -270,6 +272,14 @@
|
|||
<string name="sample_description_4">In the Plaza</string>
|
||||
<string name="sample_title_5">Coffee time</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">How can I remove the holidays imported via the \"Add holidays\" button?</string>
|
||||
<string name="faq_1_text">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.</string>
|
||||
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting 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 DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">Egy egyszerű naptár bejegyzésekkel, widget-tel és reklámok nélkül.</string>
|
||||
|
|
|
@ -186,16 +186,18 @@
|
|||
<string name="week_numbers">Show week numbers</string>
|
||||
<string name="vibrate">Vibrate on reminder notification</string>
|
||||
<string name="reminder_sound">Reminder sound</string>
|
||||
<string name="default_event_reminder">Default event reminder</string>
|
||||
<string name="no_ringtone_picker">No app capable of setting ringtone found</string>
|
||||
<string name="no_ringtone_selected">None</string>
|
||||
<string name="day_end_before_start">The day cannot end earlier than it starts</string>
|
||||
<string name="caldav_sync">CalDAV sync</string>
|
||||
<string name="event_lists">Event lists</string>
|
||||
<string name="display_past_events">Display events from the past</string>
|
||||
<string name="use_same_snooze">Always use same snooze interval</string>
|
||||
<string name="snooze_delay">Postpone reminder with Snooze by</string>
|
||||
<string name="widgets">Widgets</string>
|
||||
<string name="replace_description_with_location">Replace Description with Location at list view entries</string>
|
||||
<string name="replace_description_with_location">Replace event description with location</string>
|
||||
<string name="delete_all_events">Delete all events</string>
|
||||
<string name="delete_all_events_confirmation">Are you sure you want to delete all events? This will leave your event types and other settings intact.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -270,6 +272,14 @@
|
|||
<string name="sample_description_4">In the Plaza</string>
|
||||
<string name="sample_title_5">Coffee time</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">How can I remove the holidays imported via the \"Add holidays\" button?</string>
|
||||
<string name="faq_1_text">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.</string>
|
||||
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting 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 DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">A simple calendar with events, customizable widget and no ads.</string>
|
||||
|
|
|
@ -187,16 +187,18 @@
|
|||
<string name="week_numbers">הצגת מספרי השבועות בתצפית חודשית</string>
|
||||
<string name="vibrate">רטט בהתראת תזכורת</string>
|
||||
<string name="reminder_sound">צליל תזכורת</string>
|
||||
<string name="default_event_reminder">תזכורת קבועה לאירוע</string>
|
||||
<string name="no_ringtone_picker">לא נמצאה אפליקציה להגדרת רינגטון</string>
|
||||
<string name="no_ringtone_selected">ללא</string>
|
||||
<string name="day_end_before_start">היום לא יכול להסתיים מוקדם משהוא מתחיל</string>
|
||||
<string name="caldav_sync">CalDAV sync</string>
|
||||
<string name="event_lists">Event lists</string>
|
||||
<string name="display_past_events">Display events from the past</string>
|
||||
<string name="use_same_snooze">Always use same snooze interval</string>
|
||||
<string name="snooze_delay">Postpone reminder with Snooze by</string>
|
||||
<string name="widgets">Widgets</string>
|
||||
<string name="replace_description_with_location">Replace Description with Location at list view entries</string>
|
||||
<string name="replace_description_with_location">Replace event description with location</string>
|
||||
<string name="delete_all_events">Delete all events</string>
|
||||
<string name="delete_all_events_confirmation">Are you sure you want to delete all events? This will leave your event types and other settings intact.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -271,6 +273,14 @@
|
|||
<string name="sample_description_4">במלון</string>
|
||||
<string name="sample_title_5">הפסקת קפה</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">How can I remove the holidays imported via the \"Add holidays\" button?</string>
|
||||
<string name="faq_1_text">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.</string>
|
||||
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting 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 DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">לוח שנה פשוט עם אירועים, וויג\'ט בעיצוב אישי וללא פרסומות</string>
|
||||
|
|
|
@ -186,16 +186,18 @@
|
|||
<string name="week_numbers">週番号を表示</string>
|
||||
<string name="vibrate">リマインダー通知で振動</string>
|
||||
<string name="reminder_sound">Reminder sound</string>
|
||||
<string name="default_event_reminder">デフォルトのイベント リマインダー</string>
|
||||
<string name="no_ringtone_picker">No app capable of setting ringtone found</string>
|
||||
<string name="no_ringtone_selected">None</string>
|
||||
<string name="day_end_before_start">The day cannot end earlier than it starts</string>
|
||||
<string name="caldav_sync">CalDAV sync</string>
|
||||
<string name="event_lists">Event lists</string>
|
||||
<string name="display_past_events">Display events from the past</string>
|
||||
<string name="use_same_snooze">Always use same snooze interval</string>
|
||||
<string name="snooze_delay">Postpone reminder with Snooze by</string>
|
||||
<string name="widgets">Widgets</string>
|
||||
<string name="replace_description_with_location">Replace Description with Location at list view entries</string>
|
||||
<string name="replace_description_with_location">Replace event description with location</string>
|
||||
<string name="delete_all_events">Delete all events</string>
|
||||
<string name="delete_all_events_confirmation">Are you sure you want to delete all events? This will leave your event types and other settings intact.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -270,6 +272,14 @@
|
|||
<string name="sample_description_4">In the Plaza</string>
|
||||
<string name="sample_title_5">Coffee time</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">How can I remove the holidays imported via the \"Add holidays\" button?</string>
|
||||
<string name="faq_1_text">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.</string>
|
||||
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting 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 DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">イベント、カスタマイズ可能なウィジェットのあるシンプルなカレンダー。広告はありません。</string>
|
||||
|
|
|
@ -186,16 +186,18 @@
|
|||
<string name="week_numbers">주 번호 표시</string>
|
||||
<string name="vibrate">알림 시 진동</string>
|
||||
<string name="reminder_sound">알림 소리</string>
|
||||
<string name="default_event_reminder">기본 이벤트 알림</string>
|
||||
<string name="no_ringtone_picker">벨소리를 설정할 수 있는 앱이 없습니다</string>
|
||||
<string name="no_ringtone_selected">없음</string>
|
||||
<string name="day_end_before_start">요일은 시작하기 전에 끝날 수 없습니다</string>
|
||||
<string name="caldav_sync">CalDAV 동기화</string>
|
||||
<string name="event_lists">Event lists</string>
|
||||
<string name="display_past_events">과거의 이벤트 표시</string>
|
||||
<string name="use_same_snooze">Always use same snooze interval</string>
|
||||
<string name="snooze_delay">스누즈 알림 시간</string>
|
||||
<string name="widgets">위젯</string>
|
||||
<string name="replace_description_with_location">목록보기의 설명정보를 위치정보로 대체</string>
|
||||
<string name="replace_description_with_location">Replace event description with location</string>
|
||||
<string name="delete_all_events">Delete all events</string>
|
||||
<string name="delete_all_events_confirmation">Are you sure you want to delete all events? This will leave your event types and other settings intact.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -270,6 +272,14 @@
|
|||
<string name="sample_description_4">In the Plaza</string>
|
||||
<string name="sample_title_5">Coffee time</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">How can I remove the holidays imported via the \"Add holidays\" button?</string>
|
||||
<string name="faq_1_text">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.</string>
|
||||
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting 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 DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">사용자 정의 위젯이 있는 심플한 캘린더입니다. 그리고 광고가 없습니다.</string>
|
||||
|
|
|
@ -186,16 +186,18 @@
|
|||
<string name="week_numbers">Vis ukenummer</string>
|
||||
<string name="vibrate">Vibrer ved påminnelsesvarsel</string>
|
||||
<string name="reminder_sound">Påminnelseslyd</string>
|
||||
<string name="default_event_reminder">Standard hendelsespåminnelse</string>
|
||||
<string name="no_ringtone_picker">Ingen app i stand til å sette ringetone funnet</string>
|
||||
<string name="no_ringtone_selected">Ingen</string>
|
||||
<string name="day_end_before_start">Dagen kan ikke slutte tidligere enn den starter</string>
|
||||
<string name="caldav_sync">CalDAV-synkronisering</string>
|
||||
<string name="event_lists">Hendelseslister</string>
|
||||
<string name="display_past_events">Vis hendelser fra fortiden</string>
|
||||
<string name="use_same_snooze">Bruk alltid samme intervall for Snooze</string>
|
||||
<string name="snooze_delay">Utsett påminnelser med Snooze</string>
|
||||
<string name="widgets">Moduler</string>
|
||||
<string name="replace_description_with_location">Erstatt Beskrivelse med Sted i listevisningen</string>
|
||||
<string name="replace_description_with_location">Erstatt hendelsesbeskrivelse med sted</string>
|
||||
<string name="delete_all_events">Slett alle hendelser</string>
|
||||
<string name="delete_all_events_confirmation">Er du sikker på at du vil slette alle hendelser? Dine hendelsestyper og andre innstillinger blir beholdt.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -270,6 +272,14 @@
|
|||
<string name="sample_description_4">På torget</string>
|
||||
<string name="sample_title_5">Kaffepause</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">Hvordan kan jeg fjerne off. fridager importert via meny - \"Legg til off. fridager\"?</string>
|
||||
<string name="faq_1_text">Off. fridager opprettet på denne måten settes inn i en ny hendelsestype kalt \"Off. fridager\". Gå til Innstillinger -> Behandle hendelsestyper,
|
||||
lang-trykk hendelsestypen og slett den ved å velge søppelbøtten.</string>
|
||||
<string name="faq_2_title">Kan jeg synkronisere hendelsene mine via Google Kalender eller annen tjeneste som støtter CalDAV?</string>
|
||||
<string name="faq_2_text">Ja, bare aktiver \"CalDAV-synkronisering\" i innstillingene og velg kalenderne du vil synkronisere. Du trenger imidlertid program som håndterer synkroniseringen mellom enheten og serverne.
|
||||
Hvis du vil synkronisere en Google-kalender, vil deres offisielle kalenderapp gjøre jobben. For andre kalendere trenger du en annen synkroniseringsapp, for eksempel DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">A simple calendar with events, customizable widget and no ads.</string>
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
<string name="delete_all_occurrences">Al deze afspraken verwijderen</string>
|
||||
<string name="update_one_only">Alleen huidige afspraak bijwerken</string>
|
||||
<string name="update_all_occurrences">Alle afspraken bijwerken</string>
|
||||
<string name="repeat_till_date">Herhalen tot een datum</string>
|
||||
<string name="repeat_till_date">Herhalen tot datum</string>
|
||||
<string name="repeat_x_times">Aantal keren herhalen</string>
|
||||
<string name="repeat_forever">Voor altijd herhalen</string>
|
||||
<string name="times">keer</string>
|
||||
|
@ -139,8 +139,8 @@
|
|||
<!-- Export / Import -->
|
||||
<string name="import_events">Afspraken importeren</string>
|
||||
<string name="export_events">Afspraken exporteren</string>
|
||||
<string name="import_events_from_ics">Afspraken uit een .ics-bestand importeren</string>
|
||||
<string name="export_events_to_ics">Afspraken naar een .ics-bestand exporteren</string>
|
||||
<string name="import_events_from_ics">Afspraken uit .ics-bestand importeren</string>
|
||||
<string name="export_events_to_ics">Afspraken naar .ics-bestand exporteren</string>
|
||||
<string name="default_event_type">Standaard afspraaktype</string>
|
||||
<string name="export_past_events_too">Afspraken uit verleden ook exporteren</string>
|
||||
<string name="include_event_types">Afspraaktypes weergeven</string>
|
||||
|
@ -186,16 +186,18 @@
|
|||
<string name="week_numbers">Weeknummers tonen</string>
|
||||
<string name="vibrate">Trillen bij notificaties</string>
|
||||
<string name="reminder_sound">Geluid voor herinnering</string>
|
||||
<string name="default_event_reminder">Standaardherinnering</string>
|
||||
<string name="no_ringtone_picker">Geen app gevonden om geluid te kiezen</string>
|
||||
<string name="no_ringtone_selected">Geen</string>
|
||||
<string name="day_end_before_start">De begintijd valt na de eindtijd</string>
|
||||
<string name="caldav_sync">CalDAV-synchronisatie</string>
|
||||
<string name="event_lists">Afsprakenlijst</string>
|
||||
<string name="display_past_events">Afgelopen afspraken tonen</string>
|
||||
<string name="use_same_snooze">Altijd dezelfde interval voor uitstellen gebruiken</string>
|
||||
<string name="snooze_delay">Herinnering uitstellen met</string>
|
||||
<string name="widgets">Widgets</string>
|
||||
<string name="replace_description_with_location">Beschrijving vervangen door Locatie in lijstweergave</string>
|
||||
<string name="replace_description_with_location">Beschrijving vervangen door locatie van afspraken</string>
|
||||
<string name="delete_all_events">Alle afspraken verwijderen</string>
|
||||
<string name="delete_all_events_confirmation">Alle afspraken verwijderen? Afspraaktypes en andere instellingen blijven behouden.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -270,6 +272,14 @@
|
|||
<string name="sample_description_4">Aan de kade</string>
|
||||
<string name="sample_title_5">Koffietijd</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">Hoe kan ik de feestdagen die zijn geïmporteerd via \"Feestdagen toevoegen\" weer verwijderen?</string>
|
||||
<string name="faq_1_text">Deze feestdagen hebben het afspraaktype \"Feestdagen\". Om de feestdagen te verwijderen, ga naar Instellingen -> Afspraaktypes beheren,
|
||||
druk lang op \"Feestdagen\" en druk vervolgens op de prullenbak.</string>
|
||||
<string name="faq_2_title">Kan ik mijn afspraken synchroniseren met Google Calendar of een andere service die CalDAV ondersteunt?</string>
|
||||
<string name="faq_2_text">Schakel \"CalDAV-synchronisatie\" in bij Instellingen en selecteer vervolgens de agenda\'s die gesynchroniseerd moeten worden. Er is wel een app nodig die de synchronisatie tussen het apparaat en de service zelf afhandelt.
|
||||
Betreft het een agenda van Google Calendar, dan voldoet hun officiële app. Voor andere services zal een adapter zoals DAVdroid benodigd zijn.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">Een simpele agenda met aan te passen widget en zonder advertenties.</string>
|
||||
|
|
|
@ -186,16 +186,18 @@
|
|||
<string name="week_numbers">Vis ukenummer</string>
|
||||
<string name="vibrate">Vibrer ved påminnelsesvarsel</string>
|
||||
<string name="reminder_sound">Påminnelseslyd</string>
|
||||
<string name="default_event_reminder">Standard hendelsespåminnelse</string>
|
||||
<string name="no_ringtone_picker">Ingen app i stand til å sette ringetone funnet</string>
|
||||
<string name="no_ringtone_selected">Ingen</string>
|
||||
<string name="day_end_before_start">Dagen kan ikke slutte tidligere enn den starter</string>
|
||||
<string name="caldav_sync">CalDAV-synkronisering</string>
|
||||
<string name="event_lists">Hendelseslister</string>
|
||||
<string name="display_past_events">Vis hendelser fra fortiden</string>
|
||||
<string name="use_same_snooze">Always use same snooze interval</string>
|
||||
<string name="snooze_delay">Utsett påminnelser med Snooze med</string>
|
||||
<string name="widgets">Moduler</string>
|
||||
<string name="replace_description_with_location">Erstatt Beskrivelse med Sted i listevisningen</string>
|
||||
<string name="replace_description_with_location">Replace event description with location</string>
|
||||
<string name="delete_all_events">Delete all events</string>
|
||||
<string name="delete_all_events_confirmation">Are you sure you want to delete all events? This will leave your event types and other settings intact.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -270,6 +272,14 @@
|
|||
<string name="sample_description_4">In the Plaza</string>
|
||||
<string name="sample_title_5">Coffee time</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">How can I remove the holidays imported via the \"Add holidays\" button?</string>
|
||||
<string name="faq_1_text">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.</string>
|
||||
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting 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 DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">A simple calendar with events, customizable widget and no ads.</string>
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">Prosty Kalendarz</string>
|
||||
<string name="app_launcher_name">Kalendarz</string>
|
||||
<string name="app_launcher_name">Prosty Kalendarz</string>
|
||||
<string name="change_view">Zmień widok</string>
|
||||
<string name="daily_view">Daily view</string>
|
||||
<string name="daily_view">Dzień</string>
|
||||
<string name="weekly_view">Tydzień</string>
|
||||
<string name="monthly_view">Miesiąc</string>
|
||||
<string name="yearly_view">Rok</string>
|
||||
|
@ -15,8 +15,8 @@
|
|||
<string name="snooze">Drzemka</string>
|
||||
|
||||
<!-- Widget titles -->
|
||||
<string name="widget_monthly">Simple Calendar - widok miesięczny</string>
|
||||
<string name="widget_list">Simple Calendar - lista wydarzeń</string>
|
||||
<string name="widget_monthly">Prosty Kalendarz - widok miesięczny</string>
|
||||
<string name="widget_list">Prosty Kalendarz - lista wydarzeń</string>
|
||||
|
||||
<!-- Event -->
|
||||
<string name="event">Wydarzenie</string>
|
||||
|
@ -27,7 +27,7 @@
|
|||
<string name="event_added">Wydarzenie zostało dodane</string>
|
||||
<string name="event_updated">Wydarzenie zostało zaktualizowane</string>
|
||||
<string name="filter_events_by_type">Filtruj wydarzenia według typu</string>
|
||||
<string name="please_fill_location">Please fill in a location to be shown on a map</string>
|
||||
<string name="please_fill_location">Wpisz lokalizację, która ma być pokazana na mapie</string>
|
||||
|
||||
<!-- Event Repetition -->
|
||||
<string name="repetition">Powtórzenie</string>
|
||||
|
@ -122,7 +122,7 @@
|
|||
<string name="hours_raw">godziny</string>
|
||||
<string name="days_raw">dni</string>
|
||||
<string name="add_another_reminder">Dodaj inne przypomnienie</string>
|
||||
<string name="event_reminders">Event reminders</string>
|
||||
<string name="event_reminders">Przypomnienia</string>
|
||||
|
||||
<plurals name="minutes_before">
|
||||
<item quantity="one">%d minutę przed</item>
|
||||
|
@ -170,7 +170,7 @@
|
|||
<string name="cannot_delete_default_type">Domyślne wydarzenie nie może zostać usunięte</string>
|
||||
<string name="select_event_type">Wybierz typ wydarzenia</string>
|
||||
<string name="move_events_into_default">Przenieś powiązane wydarzenia do domyślnego typu wydarzeń</string>
|
||||
<string name="remove_affected_events">Usuń nieodwracalnie powiązane wydarzenia</string>
|
||||
<string name="remove_affected_events">Usuń powiązane wydarzenia</string>
|
||||
<string name="unsync_caldav_calendar">Aby usunąć kalendarz CalDAV, musisz wyłączyć jego synchronizację</string>
|
||||
|
||||
<!-- Holidays -->
|
||||
|
@ -191,16 +191,18 @@
|
|||
<string name="week_numbers">Pokazuj numery tygodnia</string>
|
||||
<string name="vibrate">Powiadamiaj wibracjami o wydarzeniu</string>
|
||||
<string name="reminder_sound">Dźwięk powiadomień</string>
|
||||
<string name="default_event_reminder">Domyślne przypomnienie o wydarzeniach</string>
|
||||
<string name="no_ringtone_picker">Nie znalazłem aplikacji mogącej ustawiać dzwonki</string>
|
||||
<string name="no_ringtone_selected">Żaden</string>
|
||||
<string name="day_end_before_start">Dzień nie może zakończyć się wcześniej niż się zaczyna</string>
|
||||
<string name="caldav_sync">Synchronizacja CalDAV</string>
|
||||
<string name="event_lists">Lista wydarzeń</string>
|
||||
<string name="display_past_events">Pokazuj wydarzenia z przeszłości</string>
|
||||
<string name="use_same_snooze">Zawsze używaj tego samego przedziału przypomnienia</string>
|
||||
<string name="snooze_delay">Opóźnij przypomnienie o</string>
|
||||
<string name="widgets">Widżety</string>
|
||||
<string name="replace_description_with_location">Zastąp Opis z Lokalizacją w widoku wejść</string>
|
||||
<string name="replace_description_with_location">Zamieniaj opis wydarzenia na lokalizację</string>
|
||||
<string name="delete_all_events">Usuń wszystkie wydarzenia</string>
|
||||
<string name="delete_all_events_confirmation">Czy na pewno mam usunąć wszystkie wydarzenia? Nie naruszy to typów wydarzeń i innych ustawień.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -277,15 +279,21 @@
|
|||
<string name="sample_description_4">Przy blasku zachodzącego słońca</string>
|
||||
<string name="sample_title_5">Czas na kawę</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">Jak mogę usunąć święta zaimportowane przez przycisk \'Dodaj święta\'?</string>
|
||||
<string name="faq_1_text">Święta dodane w ten sposób są wprowadzane do nowego typu wydarzeń - \'Święta\'. Usunąć je możesz, przechodząc do ustawień aplikacji, a następnie w sekcji \'Zarządzaj typami wydarzeń\' usunąć ową kategorię, klikając ikonę kosza.</string>
|
||||
<string name="faq_2_title">Czy mogę zsychronizować moje wydarzenia z Kalendarzem Google lub inną usługą wspierającą CalDAV?</string>
|
||||
<string name="faq_2_text">Tak. Wystarczy włączyć opcję \'Synchronizacja CalDAV\' w ustawieniach aplikacji i wybrać kalendarze do synchronizacji. Jeśli chcesz zsynchronizować wydarzenia z Kalendarzem Google, oficjalna aplikacja kalendarza powinna wystarczyć. W innych przypadkach potrzebna może być zewnętrzna aplikacja, np. DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">Prosty kalendarz z wydarzeniami, widżetami i bez reklam.</string>
|
||||
<string name="app_long_description">
|
||||
Prosty kalendarz z obsługą synchornizacji z Dyskiem Google. Dzięki niemu możesz z łatwością tworzyć wydarzenia i przypomnienia, które nigdy nie zaginą.
|
||||
Prosty kalendarz z obsługą synchronizacji z Dyskiem Google. Dzięki niemu możesz z łatwością tworzyć wydarzenia i przypomnienia, które nigdy nie zaginą.
|
||||
|
||||
Zawiera widżet 4x4 z możliwością ustawiania koloru tekstu i tła, a dla tego drugiego również stopień przezroczystości.
|
||||
|
||||
Nie zawiera żadnych żadnych reklam, nie potrzebuje masy uprawnień. Jest w pełni otwartoźródłowy. Kolory w aplikacji można dowolnie modyfikować.
|
||||
Nie zawiera żadnych żadnych reklam, nie potrzebuje masy uprawnień, jest w pełni otwartoźródłowy, kolory można dowolnie modyfikować.
|
||||
|
||||
Uprawniena pamięci są potrzebne tylko do eksportowania lub importowania wydarzeń z plików .isc.
|
||||
|
||||
|
|
|
@ -186,16 +186,18 @@
|
|||
<string name="week_numbers">Mostrar número das semanas</string>
|
||||
<string name="vibrate">Vibrar ao notificar sobre o lembrete</string>
|
||||
<string name="reminder_sound">Som do lembrete</string>
|
||||
<string name="default_event_reminder">Lembrete padrão</string>
|
||||
<string name="no_ringtone_picker">Não foi encontrado nenhum aplicativo capaz de definir o som</string>
|
||||
<string name="no_ringtone_selected">Nenhum</string>
|
||||
<string name="day_end_before_start">O dia final não pode ser antes do início</string>
|
||||
<string name="caldav_sync">CalDAV sync</string>
|
||||
<string name="event_lists">Event lists</string>
|
||||
<string name="display_past_events">Display events from the past</string>
|
||||
<string name="use_same_snooze">Always use same snooze interval</string>
|
||||
<string name="snooze_delay">Postpone reminder with Snooze by</string>
|
||||
<string name="widgets">Widgets</string>
|
||||
<string name="replace_description_with_location">Replace Description with Location at list view entries</string>
|
||||
<string name="replace_description_with_location">Replace event description with location</string>
|
||||
<string name="delete_all_events">Delete all events</string>
|
||||
<string name="delete_all_events_confirmation">Are you sure you want to delete all events? This will leave your event types and other settings intact.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -270,6 +272,14 @@
|
|||
<string name="sample_description_4">Ir ao mercado</string>
|
||||
<string name="sample_title_5">Beber um café</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">How can I remove the holidays imported via the \"Add holidays\" button?</string>
|
||||
<string name="faq_1_text">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.</string>
|
||||
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting 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 DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">Um calendário para adicionar eventos, com um widget personalizável.</string>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<string name="app_name">Simple Calendar</string>
|
||||
<string name="app_launcher_name">Calendário</string>
|
||||
<string name="change_view">Mudar vista</string>
|
||||
<string name="daily_view">Daily view</string>
|
||||
<string name="daily_view">Vista diária</string>
|
||||
<string name="weekly_view">Vista semanal</string>
|
||||
<string name="monthly_view">Vista mensal</string>
|
||||
<string name="yearly_view">Vista anual</string>
|
||||
|
@ -27,7 +27,7 @@
|
|||
<string name="event_added">Evento adicionado com sucesso</string>
|
||||
<string name="event_updated">Evento atualizado com sucesso</string>
|
||||
<string name="filter_events_by_type">Filtrar eventos por tipo</string>
|
||||
<string name="please_fill_location">Please fill in a location to be shown on a map</string>
|
||||
<string name="please_fill_location">Introduza a localização para a mostrar no maps</string>
|
||||
|
||||
<!-- Event Repetition -->
|
||||
<string name="repetition">Repetição</string>
|
||||
|
@ -186,16 +186,18 @@
|
|||
<string name="week_numbers">Mostrar número das semanas</string>
|
||||
<string name="vibrate">Vibrar ao notificar sobre o lembrete</string>
|
||||
<string name="reminder_sound">Som do lembrete</string>
|
||||
<string name="default_event_reminder">Lembrete padrão</string>
|
||||
<string name="no_ringtone_picker">Não foi encontrada uma aplicação capaz de definir o som</string>
|
||||
<string name="no_ringtone_selected">Nenhum</string>
|
||||
<string name="day_end_before_start">O dia final não pode ser antes do inicial</string>
|
||||
<string name="caldav_sync">Sincronização CalDAV</string>
|
||||
<string name="event_lists">Lista de eventos</string>
|
||||
<string name="display_past_events">Mostrar eventos passados</string>
|
||||
<string name="use_same_snooze">Usar sempre o mesmo intervalo para snooze</string>
|
||||
<string name="snooze_delay">Adiar lembrete com a opção Snooze</string>
|
||||
<string name="widgets">Widgets</string>
|
||||
<string name="replace_description_with_location">Substituir descrição e localização nas entradas da vista de lista</string>
|
||||
<string name="replace_description_with_location">Substituir descrição pela localização do evento</string>
|
||||
<string name="delete_all_events">Apagar todos os eventos</string>
|
||||
<string name="delete_all_events_confirmation">Tem a certeza de que deseja apagar todos os eventos? Esta ação não afeta os tipos de eventos nem as outras definições.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -270,6 +272,14 @@
|
|||
<string name="sample_description_4">Ir ao mercado</string>
|
||||
<string name="sample_title_5">Beber um café</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">How can I remove the holidays imported via the \"Add holidays\" button?</string>
|
||||
<string name="faq_1_text">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.</string>
|
||||
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting 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 DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">Um calendário para adicionar eventos e com um widget personalizável.</string>
|
||||
|
|
|
@ -200,16 +200,18 @@
|
|||
<string name="week_numbers">Отображать номера недель</string>
|
||||
<string name="vibrate">Вибрация при напоминании</string>
|
||||
<string name="reminder_sound">Звук напоминания</string>
|
||||
<string name="default_event_reminder">Напоминание для событий по умолчанию</string>
|
||||
<string name="no_ringtone_picker">Не найдено приложение для выбора рингтона</string>
|
||||
<string name="no_ringtone_selected">Нет</string>
|
||||
<string name="day_end_before_start">Конец дня не может быть раньше начала</string>
|
||||
<string name="caldav_sync">Синхронизация по CalDAV</string>
|
||||
<string name="event_lists">Списки событий</string>
|
||||
<string name="display_past_events">Показывать прошедшие события</string>
|
||||
<string name="use_same_snooze">Always use same snooze interval</string>
|
||||
<string name="snooze_delay">Отложить напоминание на</string>
|
||||
<string name="widgets">Виджеты</string>
|
||||
<string name="replace_description_with_location">Показывать место вместо описания в списке событий</string>
|
||||
<string name="replace_description_with_location">Replace event description with location</string>
|
||||
<string name="delete_all_events">Удалить все события</string>
|
||||
<string name="delete_all_events_confirmation">Вы действительно хотите удалить все события? Это не затронет ваши типы событий и другие настройки.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -286,6 +288,14 @@
|
|||
<string name="sample_description_4">В КЭТ на Караванной</string>
|
||||
<string name="sample_title_5">Время для кофе</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">How can I remove the holidays imported via the \"Add holidays\" button?</string>
|
||||
<string name="faq_1_text">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.</string>
|
||||
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting 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 DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">Простой календарь с событиями и настраиваемым виджетом. Без рекламы.</string>
|
||||
|
|
|
@ -193,16 +193,18 @@
|
|||
<string name="week_numbers">Zobraziť čísla týždňov</string>
|
||||
<string name="vibrate">Vibrovať pri pripomienke</string>
|
||||
<string name="reminder_sound">Zvučka pripomienky</string>
|
||||
<string name="default_event_reminder">Predvolená hodnota pripomienky</string>
|
||||
<string name="no_ringtone_picker">Nenašla sa žiadna aplikácia na zmenu zvučky</string>
|
||||
<string name="no_ringtone_selected">Žiadna</string>
|
||||
<string name="day_end_before_start">Deň nemôže skončiť skôr než začne</string>
|
||||
<string name="caldav_sync">CalDAV synchronizácia</string>
|
||||
<string name="event_lists">Zoznamy udalostí</string>
|
||||
<string name="display_past_events">Zobraziť minulé udalosti spred</string>
|
||||
<string name="use_same_snooze">Použiť stále rovnaký odklad s Odložiť</string>
|
||||
<string name="snooze_delay">Posunúť pripomienku s Odložiť o</string>
|
||||
<string name="widgets">Widgety</string>
|
||||
<string name="replace_description_with_location">Nahradiť Popis udalosti Miestom v listových zobrazeniach</string>
|
||||
<string name="replace_description_with_location">Nahradiť popis udalosti miestom</string>
|
||||
<string name="delete_all_events">Odstrániť všetky udalosti</string>
|
||||
<string name="delete_all_events_confirmation">Ste si istý, že chcete odstrániť všetky udalosti? Všetky typy udalostí a nastavenia ostanú nedotknuté.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -279,6 +281,14 @@
|
|||
<string name="sample_description_4">V supermarkete</string>
|
||||
<string name="sample_title_5">Káva</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">Ako môžem odstrániť sviatky pridané pomocou tlačidla \"Pridať sviatky\"?</string>
|
||||
<string name="faq_1_text">Sviatky vytvorené daným spôsobom sú pridané do typu udalosti \"Sviatky\". Môžete teda ísť do Nastavenia -> Spravovať typy udalostí,
|
||||
podržať daný typ a vymazať ho pomocou smetného koša.</string>
|
||||
<string name="faq_2_title">Viem si zosynchronizovať udalosti pomocou Google Kalendára, alebo inej služby podporujúcej CalDAV?</string>
|
||||
<string name="faq_2_text">Áno, stačí aktivovať funkciu \"CalDAV synchronizácia\" v nastaveniach a zvoliť si správne kalendáre. Pre synchronizáciu medzi zariadením a serverom ale budete potrebovať synchronizačný adaptér od tretej strany.
|
||||
Ak chcete synchronizovať Google kalendár, ich oficiálna aplikácia Kalendár to spraví. Pre iné kalendáre budete potrebovať inú synchronizačnú aplikáciu, napr. DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">Jednoduchý kalendár s udalosťami, upraviteľným widgetom a bez reklám.</string>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<string name="app_name">Simple Calendar</string>
|
||||
<string name="app_launcher_name">Kalender</string>
|
||||
<string name="change_view">Ändra vy</string>
|
||||
<string name="daily_view">Daily view</string>
|
||||
<string name="daily_view">Dagsvy</string>
|
||||
<string name="weekly_view">Veckovy</string>
|
||||
<string name="monthly_view">Månadsvy</string>
|
||||
<string name="yearly_view">Årsvy</string>
|
||||
|
@ -24,10 +24,10 @@
|
|||
<string name="new_event">Ny händelse</string>
|
||||
<string name="title_empty">Titeln får inte vara tom</string>
|
||||
<string name="end_before_start">Händelsen kan inte sluta innan den har startat</string>
|
||||
<string name="event_added">Händelsen tillagd</string>
|
||||
<string name="event_updated">Händelsen uppdaterad</string>
|
||||
<string name="event_added">Händelsen har lagts till</string>
|
||||
<string name="event_updated">Händelsen har uppdaterats</string>
|
||||
<string name="filter_events_by_type">Filtrera händelser efter typ</string>
|
||||
<string name="please_fill_location">Please fill in a location to be shown on a map</string>
|
||||
<string name="please_fill_location">Du måste ange en plats som kan visas på en karta</string>
|
||||
|
||||
<!-- Event Repetition -->
|
||||
<string name="repetition">Upprepning</string>
|
||||
|
@ -186,16 +186,18 @@
|
|||
<string name="week_numbers">Visa veckonumret i månadsvyn</string>
|
||||
<string name="vibrate">Vibrera vid påminnelseaviseringen</string>
|
||||
<string name="reminder_sound">Påminnelseljud</string>
|
||||
<string name="default_event_reminder">Standardhändelsepåminnelse</string>
|
||||
<string name="no_ringtone_picker">Hittade ingen app som kan ställa in ljudet</string>
|
||||
<string name="no_ringtone_selected">Ingen</string>
|
||||
<string name="day_end_before_start">Dagen kan inte börja innan den tar slut</string>
|
||||
<string name="caldav_sync">CalDAV-synkronisering</string>
|
||||
<string name="event_lists">Händelselistor</string>
|
||||
<string name="display_past_events">Visa tidigare händelser</string>
|
||||
<string name="use_same_snooze">Använd alltid samma snooze-intervall</string>
|
||||
<string name="snooze_delay">Skjut upp påminnelse med Snooza</string>
|
||||
<string name="widgets">Widgetar</string>
|
||||
<string name="replace_description_with_location">Ersätt Beskrivning med Plats i listvyn</string>
|
||||
<string name="replace_description_with_location">Ersätt händelsebeskrivning med plats</string>
|
||||
<string name="delete_all_events">Ta bort alla händelser</string>
|
||||
<string name="delete_all_events_confirmation">Är du säker på att du vill ta bort alla händelser? Dina händelsetyper och andra inställningar påverkas inte av borttagningen.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -270,6 +272,14 @@
|
|||
<string name="sample_description_4">På stranden</string>
|
||||
<string name="sample_title_5">Kaffedags</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">How can I remove the holidays imported via the \"Add holidays\" button?</string>
|
||||
<string name="faq_1_text">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.</string>
|
||||
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting 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 DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">En enkel kalender med händelser, en anpassningsbar widget och ingen reklam.</string>
|
||||
|
@ -282,7 +292,7 @@
|
|||
|
||||
Lagringsbehörigheten behövs bara för att exportera eller importera händelser från .ics-filer.
|
||||
|
||||
Kontaktbehörigheten används bara för att importera kontakters födelsedagar.
|
||||
Kontaktbehörigheten används bara för att importera kontakters födelsedagar och årsdagar.
|
||||
|
||||
Denna app är bara en del av en större serie appar. Du hittar resten av dem på http://www.simplemobiletools.com
|
||||
</string>
|
||||
|
|
|
@ -186,16 +186,18 @@
|
|||
<string name="week_numbers">Aylık görünümde hafta sayılarını göster</string>
|
||||
<string name="vibrate">Hatırlatma bildiriminde titreşim</string>
|
||||
<string name="reminder_sound">Hatırlatma sesi</string>
|
||||
<string name="default_event_reminder">Varsayılan olay hatırlatıcısı</string>
|
||||
<string name="no_ringtone_picker">Zil sesi ayarlayabilen hiçbir uygulama bulunamadı</string>
|
||||
<string name="no_ringtone_selected">Boş</string>
|
||||
<string name="day_end_before_start">Gün başlamadan önce bitemez</string>
|
||||
<string name="caldav_sync">CalDAV sync</string>
|
||||
<string name="event_lists">Event lists</string>
|
||||
<string name="display_past_events">Display events from the past</string>
|
||||
<string name="use_same_snooze">Always use same snooze interval</string>
|
||||
<string name="snooze_delay">Postpone reminder with Snooze by</string>
|
||||
<string name="widgets">Widgets</string>
|
||||
<string name="replace_description_with_location">Replace Description with Location at list view entries</string>
|
||||
<string name="replace_description_with_location">Replace event description with location</string>
|
||||
<string name="delete_all_events">Delete all events</string>
|
||||
<string name="delete_all_events_confirmation">Are you sure you want to delete all events? This will leave your event types and other settings intact.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -270,6 +272,14 @@
|
|||
<string name="sample_description_4">Plaza\'da</string>
|
||||
<string name="sample_title_5">Kahve zamanı</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">How can I remove the holidays imported via the \"Add holidays\" button?</string>
|
||||
<string name="faq_1_text">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.</string>
|
||||
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting 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 DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">Etkinlikler, özelleştirilebilir widget ve reklamsız basit bir takvim.</string>
|
||||
|
|
|
@ -186,16 +186,18 @@
|
|||
<string name="week_numbers">Show week numbers</string>
|
||||
<string name="vibrate">Vibrate on reminder notification</string>
|
||||
<string name="reminder_sound">Reminder sound</string>
|
||||
<string name="default_event_reminder">Default event reminder</string>
|
||||
<string name="no_ringtone_picker">No app capable of setting ringtone found</string>
|
||||
<string name="no_ringtone_selected">None</string>
|
||||
<string name="day_end_before_start">The day cannot end earlier than it starts</string>
|
||||
<string name="caldav_sync">CalDAV sync</string>
|
||||
<string name="event_lists">Event lists</string>
|
||||
<string name="display_past_events">Display events from the past</string>
|
||||
<string name="use_same_snooze">Always use same snooze interval</string>
|
||||
<string name="snooze_delay">Postpone reminder with Snooze by</string>
|
||||
<string name="widgets">Widgets</string>
|
||||
<string name="replace_description_with_location">Replace Description with Location at list view entries</string>
|
||||
<string name="replace_description_with_location">Replace event description with location</string>
|
||||
<string name="delete_all_events">Delete all events</string>
|
||||
<string name="delete_all_events_confirmation">Are you sure you want to delete all events? This will leave your event types and other settings intact.</string>
|
||||
|
||||
<!-- CalDAV sync -->
|
||||
<string name="caldav">CalDAV</string>
|
||||
|
@ -270,6 +272,14 @@
|
|||
<string name="sample_description_4">In the Plaza</string>
|
||||
<string name="sample_title_5">Coffee time</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">How can I remove the holidays imported via the \"Add holidays\" button?</string>
|
||||
<string name="faq_1_text">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.</string>
|
||||
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting 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 DAVdroid.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">A simple calendar with events, customizable widget and no ads.</string>
|
||||
|
|
|
@ -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.0'
|
||||
ext.kotlin_version = '1.2.21'
|
||||
|
||||
repositories {
|
||||
jcenter()
|
||||
|
|
Loading…
Reference in a new issue