mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-06-05 21:59:17 +02:00
15
.gitignore
vendored
15
.gitignore
vendored
@@ -1,21 +1,6 @@
|
|||||||
# Temp files
|
|
||||||
*~
|
|
||||||
*.bak
|
|
||||||
*.backup
|
|
||||||
\#*
|
|
||||||
.\#*
|
|
||||||
*\#
|
|
||||||
*.swp
|
|
||||||
*.swap
|
|
||||||
*.sav
|
|
||||||
*.save
|
|
||||||
*.autosav
|
|
||||||
*.autosave
|
|
||||||
|
|
||||||
*.iml
|
*.iml
|
||||||
.gradle
|
.gradle
|
||||||
/local.properties
|
/local.properties
|
||||||
/gradle.properties
|
|
||||||
/.idea/
|
/.idea/
|
||||||
.DS_Store
|
.DS_Store
|
||||||
/build
|
/build
|
||||||
|
27
CHANGELOG.md
27
CHANGELOG.md
@@ -1,6 +1,33 @@
|
|||||||
Changelog
|
Changelog
|
||||||
==========
|
==========
|
||||||
|
|
||||||
|
Version 5.1.1 *(2018-10-25)*
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
* Fixing a crash related to pull-to-refresh swiping
|
||||||
|
|
||||||
|
Version 5.1.0 *(2018-10-24)*
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
* Add optional pull-to-refresh for refreshing CalDAV events on some views (by azisuazusa)
|
||||||
|
* Allow setting a default view to be opened from the Event List widget (by knusprjg)
|
||||||
|
* Apply selected filters on all views, including widgets
|
||||||
|
* Allow changing any CalDAV calendars color, even if only locally
|
||||||
|
* Fix some glitches related to saving CalDAV events in a wrong calendar
|
||||||
|
* Some performance improvements related to fetching events
|
||||||
|
* Couple other smaller stability/ux improvements
|
||||||
|
|
||||||
|
Version 5.0.1 *(2018-10-17)*
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
* Fixed transparent date/time picker backgrounds
|
||||||
|
|
||||||
|
Version 5.0.0 *(2018-10-16)*
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
* Increased the minimal required Android OS version to 5
|
||||||
|
* Some translation and stability improvements
|
||||||
|
|
||||||
Version 4.2.1 *(2018-09-22)*
|
Version 4.2.1 *(2018-09-22)*
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
|
@@ -4,14 +4,14 @@ apply plugin: 'kotlin-android-extensions'
|
|||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 28
|
compileSdkVersion 28
|
||||||
buildToolsVersion "28.0.2"
|
buildToolsVersion "28.0.3"
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "com.simplemobiletools.calendar"
|
applicationId "com.simplemobiletools.calendar"
|
||||||
minSdkVersion 16
|
minSdkVersion 21
|
||||||
targetSdkVersion 28
|
targetSdkVersion 28
|
||||||
versionCode 129
|
versionCode 133
|
||||||
versionName "4.2.1"
|
versionName "5.1.1"
|
||||||
multiDexEnabled true
|
multiDexEnabled true
|
||||||
setProperty("archivesBaseName", "calendar")
|
setProperty("archivesBaseName", "calendar")
|
||||||
}
|
}
|
||||||
@@ -42,10 +42,10 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'com.simplemobiletools:commons:4.7.17'
|
implementation 'com.simplemobiletools:commons:5.2.6'
|
||||||
implementation 'joda-time:joda-time:2.9.9'
|
implementation 'joda-time:joda-time:2.9.9'
|
||||||
implementation 'com.facebook.stetho:stetho:1.5.0'
|
implementation 'com.facebook.stetho:stetho:1.5.0'
|
||||||
implementation 'com.android.support:multidex:1.0.3'
|
implementation 'androidx.multidex:multidex:2.0.0'
|
||||||
}
|
}
|
||||||
|
|
||||||
Properties props = new Properties()
|
Properties props = new Properties()
|
||||||
|
@@ -184,7 +184,7 @@
|
|||||||
</receiver>
|
</receiver>
|
||||||
|
|
||||||
<provider
|
<provider
|
||||||
android:name="android.support.v4.content.FileProvider"
|
android:name="androidx.core.content.FileProvider"
|
||||||
android:authorities="${applicationId}.provider"
|
android:authorities="${applicationId}.provider"
|
||||||
android:exported="false"
|
android:exported="false"
|
||||||
android:grantUriPermissions="true">
|
android:grantUriPermissions="true">
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
package com.simplemobiletools.calendar
|
package com.simplemobiletools.calendar
|
||||||
|
|
||||||
import android.support.multidex.MultiDexApplication
|
import androidx.multidex.MultiDexApplication
|
||||||
import com.facebook.stetho.Stetho
|
import com.facebook.stetho.Stetho
|
||||||
import com.simplemobiletools.commons.extensions.checkUseEnglish
|
import com.simplemobiletools.commons.extensions.checkUseEnglish
|
||||||
|
|
||||||
|
@@ -1,16 +1,15 @@
|
|||||||
package com.simplemobiletools.calendar.activities
|
package com.simplemobiletools.calendar.activities
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
|
||||||
import android.app.DatePickerDialog
|
import android.app.DatePickerDialog
|
||||||
import android.app.TimePickerDialog
|
import android.app.TimePickerDialog
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v4.app.NotificationManagerCompat
|
|
||||||
import android.text.method.LinkMovementMethod
|
import android.text.method.LinkMovementMethod
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
|
import androidx.core.app.NotificationManagerCompat
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.dialogs.*
|
import com.simplemobiletools.calendar.dialogs.*
|
||||||
import com.simplemobiletools.calendar.extensions.*
|
import com.simplemobiletools.calendar.extensions.*
|
||||||
@@ -94,9 +93,11 @@ class EventActivity : SimpleActivity() {
|
|||||||
cancelNotification(mEvent.id)
|
cancelNotification(mEvent.id)
|
||||||
} else {
|
} else {
|
||||||
mEvent = Event()
|
mEvent = Event()
|
||||||
mReminder1Minutes = if (config.usePreviousEventReminders) config.lastEventReminderMinutes else config.defaultReminder1
|
config.apply {
|
||||||
mReminder2Minutes = if (config.usePreviousEventReminders) config.lastEventReminderMinutes2 else config.defaultReminder2
|
mReminder1Minutes = if (usePreviousEventReminders) lastEventReminderMinutes1 else defaultReminder1
|
||||||
mReminder3Minutes = if (config.usePreviousEventReminders) config.lastEventReminderMinutes3 else config.defaultReminder3
|
mReminder2Minutes = if (usePreviousEventReminders) lastEventReminderMinutes2 else defaultReminder2
|
||||||
|
mReminder3Minutes = if (usePreviousEventReminders) lastEventReminderMinutes3 else defaultReminder3
|
||||||
|
}
|
||||||
|
|
||||||
if (savedInstanceState == null) {
|
if (savedInstanceState == null) {
|
||||||
setupNewEvent()
|
setupNewEvent()
|
||||||
@@ -121,7 +122,7 @@ class EventActivity : SimpleActivity() {
|
|||||||
event_repetition_limit_holder.setOnClickListener { showRepetitionTypePicker() }
|
event_repetition_limit_holder.setOnClickListener { showRepetitionTypePicker() }
|
||||||
|
|
||||||
event_reminder_1.setOnClickListener {
|
event_reminder_1.setOnClickListener {
|
||||||
handleNotificationAvailability() {
|
handleNotificationAvailability {
|
||||||
if (config.wasAlarmWarningShown) {
|
if (config.wasAlarmWarningShown) {
|
||||||
showReminder1Dialog()
|
showReminder1Dialog()
|
||||||
} else {
|
} else {
|
||||||
@@ -243,6 +244,7 @@ class EventActivity : SimpleActivity() {
|
|||||||
|
|
||||||
private fun setupNewEvent() {
|
private fun setupNewEvent() {
|
||||||
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE)
|
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE)
|
||||||
|
event_title.requestFocus()
|
||||||
updateActionBarTitle(getString(R.string.new_event))
|
updateActionBarTitle(getString(R.string.new_event))
|
||||||
val isLastCaldavCalendarOK = config.caldavSync && config.getSyncedCalendarIdsAsList().contains(config.lastUsedCaldavCalendarId.toString())
|
val isLastCaldavCalendarOK = config.caldavSync && config.getSyncedCalendarIdsAsList().contains(config.lastUsedCaldavCalendarId.toString())
|
||||||
mEventCalendarId = if (isLastCaldavCalendarOK) config.lastUsedCaldavCalendarId else STORED_LOCALLY_ONLY
|
mEventCalendarId = if (isLastCaldavCalendarOK) config.lastUsedCaldavCalendarId else STORED_LOCALLY_ONLY
|
||||||
@@ -620,6 +622,7 @@ class EventActivity : SimpleActivity() {
|
|||||||
event_type_holder.beVisibleIf(currentCalendar == null)
|
event_type_holder.beVisibleIf(currentCalendar == null)
|
||||||
event_caldav_calendar_divider.beVisibleIf(currentCalendar == null)
|
event_caldav_calendar_divider.beVisibleIf(currentCalendar == null)
|
||||||
event_caldav_calendar_email.beGoneIf(currentCalendar == null)
|
event_caldav_calendar_email.beGoneIf(currentCalendar == null)
|
||||||
|
event_caldav_calendar_color.beGoneIf(currentCalendar == null)
|
||||||
|
|
||||||
if (currentCalendar == null) {
|
if (currentCalendar == null) {
|
||||||
mEventCalendarId = STORED_LOCALLY_ONLY
|
mEventCalendarId = STORED_LOCALLY_ONLY
|
||||||
@@ -634,6 +637,10 @@ class EventActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
event_caldav_calendar_email.text = currentCalendar.accountName
|
event_caldav_calendar_email.text = currentCalendar.accountName
|
||||||
|
|
||||||
|
val calendarColor = dbHelper.getEventTypeWithCalDAVCalendarId(currentCalendar.id)?.color ?: currentCalendar.color
|
||||||
|
event_caldav_calendar_color.setFillWithStroke(calendarColor, config.backgroundColor)
|
||||||
|
|
||||||
event_caldav_calendar_name.apply {
|
event_caldav_calendar_name.apply {
|
||||||
text = currentCalendar.displayName
|
text = currentCalendar.displayName
|
||||||
setPadding(paddingLeft, paddingTop, paddingRight, resources.getDimension(R.dimen.tiny_margin).toInt())
|
setPadding(paddingLeft, paddingTop, paddingRight, resources.getDimension(R.dimen.tiny_margin).toInt())
|
||||||
@@ -699,10 +706,10 @@ class EventActivity : SimpleActivity() {
|
|||||||
val newEventType = if (!config.caldavSync || config.lastUsedCaldavCalendarId == 0 || mEventCalendarId == STORED_LOCALLY_ONLY) {
|
val newEventType = if (!config.caldavSync || config.lastUsedCaldavCalendarId == 0 || mEventCalendarId == STORED_LOCALLY_ONLY) {
|
||||||
mEventTypeId
|
mEventTypeId
|
||||||
} else {
|
} else {
|
||||||
dbHelper.getEventTypeWithCalDAVCalendarId(config.lastUsedCaldavCalendarId)?.id ?: config.lastUsedLocalEventTypeId
|
dbHelper.getEventTypeWithCalDAVCalendarId(mEventCalendarId)?.id ?: config.lastUsedLocalEventTypeId
|
||||||
}
|
}
|
||||||
|
|
||||||
val newSource = if (!config.caldavSync || config.lastUsedCaldavCalendarId == 0 || mEventCalendarId == STORED_LOCALLY_ONLY) {
|
val newSource = if (!config.caldavSync || mEventCalendarId == STORED_LOCALLY_ONLY) {
|
||||||
config.lastUsedLocalEventTypeId = newEventType
|
config.lastUsedLocalEventTypeId = newEventType
|
||||||
SOURCE_SIMPLE_CALENDAR
|
SOURCE_SIMPLE_CALENDAR
|
||||||
} else {
|
} else {
|
||||||
@@ -716,7 +723,7 @@ class EventActivity : SimpleActivity() {
|
|||||||
|
|
||||||
config.apply {
|
config.apply {
|
||||||
if (usePreviousEventReminders) {
|
if (usePreviousEventReminders) {
|
||||||
lastEventReminderMinutes = reminder1
|
lastEventReminderMinutes1 = reminder1
|
||||||
lastEventReminderMinutes2 = reminder2
|
lastEventReminderMinutes2 = reminder2
|
||||||
lastEventReminderMinutes3 = reminder3
|
lastEventReminderMinutes3 = reminder3
|
||||||
}
|
}
|
||||||
@@ -856,17 +863,13 @@ class EventActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("NewApi")
|
|
||||||
private fun setupStartDate() {
|
private fun setupStartDate() {
|
||||||
hideKeyboard()
|
hideKeyboard()
|
||||||
config.backgroundColor.getContrastColor()
|
config.backgroundColor.getContrastColor()
|
||||||
val datepicker = DatePickerDialog(this, mDialogTheme, startDateSetListener, mEventStartDateTime.year, mEventStartDateTime.monthOfYear - 1,
|
val datepicker = DatePickerDialog(this, mDialogTheme, startDateSetListener, mEventStartDateTime.year, mEventStartDateTime.monthOfYear - 1,
|
||||||
mEventStartDateTime.dayOfMonth)
|
mEventStartDateTime.dayOfMonth)
|
||||||
|
|
||||||
if (isLollipopPlus()) {
|
datepicker.datePicker.firstDayOfWeek = if (config.isSundayFirst) Calendar.SUNDAY else Calendar.MONDAY
|
||||||
datepicker.datePicker.firstDayOfWeek = if (config.isSundayFirst) Calendar.SUNDAY else Calendar.MONDAY
|
|
||||||
}
|
|
||||||
|
|
||||||
datepicker.show()
|
datepicker.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -875,16 +878,12 @@ class EventActivity : SimpleActivity() {
|
|||||||
TimePickerDialog(this, mDialogTheme, startTimeSetListener, mEventStartDateTime.hourOfDay, mEventStartDateTime.minuteOfHour, config.use24HourFormat).show()
|
TimePickerDialog(this, mDialogTheme, startTimeSetListener, mEventStartDateTime.hourOfDay, mEventStartDateTime.minuteOfHour, config.use24HourFormat).show()
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("NewApi")
|
|
||||||
private fun setupEndDate() {
|
private fun setupEndDate() {
|
||||||
hideKeyboard()
|
hideKeyboard()
|
||||||
val datepicker = DatePickerDialog(this, mDialogTheme, endDateSetListener, mEventEndDateTime.year, mEventEndDateTime.monthOfYear - 1,
|
val datepicker = DatePickerDialog(this, mDialogTheme, endDateSetListener, mEventEndDateTime.year, mEventEndDateTime.monthOfYear - 1,
|
||||||
mEventEndDateTime.dayOfMonth)
|
mEventEndDateTime.dayOfMonth)
|
||||||
|
|
||||||
if (isLollipopPlus()) {
|
datepicker.datePicker.firstDayOfWeek = if (config.isSundayFirst) Calendar.SUNDAY else Calendar.MONDAY
|
||||||
datepicker.datePicker.firstDayOfWeek = if (config.isSundayFirst) Calendar.SUNDAY else Calendar.MONDAY
|
|
||||||
}
|
|
||||||
|
|
||||||
datepicker.show()
|
datepicker.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -11,13 +11,14 @@ import android.net.Uri
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
import android.provider.ContactsContract
|
import android.provider.ContactsContract
|
||||||
import android.support.v4.view.MenuItemCompat
|
|
||||||
import android.support.v7.widget.SearchView
|
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
|
import androidx.appcompat.widget.SearchView
|
||||||
|
import androidx.core.view.MenuItemCompat
|
||||||
import com.simplemobiletools.calendar.BuildConfig
|
import com.simplemobiletools.calendar.BuildConfig
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
|
import com.simplemobiletools.calendar.R.id.*
|
||||||
import com.simplemobiletools.calendar.adapters.EventListAdapter
|
import com.simplemobiletools.calendar.adapters.EventListAdapter
|
||||||
import com.simplemobiletools.calendar.dialogs.ExportEventsDialog
|
import com.simplemobiletools.calendar.dialogs.ExportEventsDialog
|
||||||
import com.simplemobiletools.calendar.dialogs.FilterEventTypesDialog
|
import com.simplemobiletools.calendar.dialogs.FilterEventTypesDialog
|
||||||
@@ -70,9 +71,6 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||||||
setContentView(R.layout.activity_main)
|
setContentView(R.layout.activity_main)
|
||||||
appLaunched(BuildConfig.APPLICATION_ID)
|
appLaunched(BuildConfig.APPLICATION_ID)
|
||||||
|
|
||||||
// just get a reference to the database to make sure it is created properly
|
|
||||||
dbHelper
|
|
||||||
|
|
||||||
checkWhatsNewDialog()
|
checkWhatsNewDialog()
|
||||||
calendar_fab.beVisibleIf(config.storedView != YEARLY_VIEW)
|
calendar_fab.beVisibleIf(config.storedView != YEARLY_VIEW)
|
||||||
calendar_fab.setOnClickListener {
|
calendar_fab.setOnClickListener {
|
||||||
@@ -92,6 +90,10 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||||||
refreshCalDAVCalendars(false)
|
refreshCalDAVCalendars(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
swipe_refresh_layout.setOnRefreshListener {
|
||||||
|
refreshCalDAVCalendars(false)
|
||||||
|
}
|
||||||
|
|
||||||
if (!checkViewIntents()) {
|
if (!checkViewIntents()) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -129,6 +131,7 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||||||
search_placeholder_2.setTextColor(config.textColor)
|
search_placeholder_2.setTextColor(config.textColor)
|
||||||
calendar_fab.setColors(config.textColor, getAdjustedPrimaryColor(), config.backgroundColor)
|
calendar_fab.setColors(config.textColor, getAdjustedPrimaryColor(), config.backgroundColor)
|
||||||
search_holder.background = ColorDrawable(config.backgroundColor)
|
search_holder.background = ColorDrawable(config.backgroundColor)
|
||||||
|
checkSwipeRefreshAvailability()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPause() {
|
override fun onPause() {
|
||||||
@@ -183,6 +186,8 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onBackPressed() {
|
override fun onBackPressed() {
|
||||||
|
swipe_refresh_layout.isRefreshing = false
|
||||||
|
checkSwipeRefreshAvailability()
|
||||||
if (currentFragments.size > 1) {
|
if (currentFragments.size > 1) {
|
||||||
removeTopFragment()
|
removeTopFragment()
|
||||||
} else {
|
} else {
|
||||||
@@ -251,12 +256,14 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||||||
|
|
||||||
private fun checkOpenIntents(): Boolean {
|
private fun checkOpenIntents(): Boolean {
|
||||||
val dayCodeToOpen = intent.getStringExtra(DAY_CODE) ?: ""
|
val dayCodeToOpen = intent.getStringExtra(DAY_CODE) ?: ""
|
||||||
val openMonth = intent.getBooleanExtra(OPEN_MONTH, false)
|
val viewToOpen = intent.getIntExtra(VIEW_TO_OPEN, DAILY_VIEW)
|
||||||
intent.removeExtra(OPEN_MONTH)
|
intent.removeExtra(VIEW_TO_OPEN)
|
||||||
intent.removeExtra(DAY_CODE)
|
intent.removeExtra(DAY_CODE)
|
||||||
if (dayCodeToOpen.isNotEmpty()) {
|
if (dayCodeToOpen.isNotEmpty()) {
|
||||||
calendar_fab.beVisible()
|
calendar_fab.beVisible()
|
||||||
config.storedView = if (openMonth) MONTHLY_VIEW else DAILY_VIEW
|
if (viewToOpen != LAST_VIEW) {
|
||||||
|
config.storedView = viewToOpen
|
||||||
|
}
|
||||||
updateViewPager(dayCodeToOpen)
|
updateViewPager(dayCodeToOpen)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
@@ -337,6 +344,7 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||||||
private fun showFilterDialog() {
|
private fun showFilterDialog() {
|
||||||
FilterEventTypesDialog(this) {
|
FilterEventTypesDialog(this) {
|
||||||
refreshViewPager()
|
refreshViewPager()
|
||||||
|
updateWidgets()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -368,6 +376,9 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||||||
if (showCalDAVRefreshToast) {
|
if (showCalDAVRefreshToast) {
|
||||||
toast(R.string.refreshing_complete)
|
toast(R.string.refreshing_complete)
|
||||||
}
|
}
|
||||||
|
runOnUiThread {
|
||||||
|
swipe_refresh_layout.isRefreshing = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}, CALDAV_SYNC_DELAY)
|
}, CALDAV_SYNC_DELAY)
|
||||||
}
|
}
|
||||||
@@ -527,6 +538,7 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||||||
private fun updateView(view: Int) {
|
private fun updateView(view: Int) {
|
||||||
calendar_fab.beVisibleIf(view != YEARLY_VIEW)
|
calendar_fab.beVisibleIf(view != YEARLY_VIEW)
|
||||||
config.storedView = view
|
config.storedView = view
|
||||||
|
checkSwipeRefreshAvailability()
|
||||||
updateViewPager()
|
updateViewPager()
|
||||||
if (goToTodayButton?.isVisible == true) {
|
if (goToTodayButton?.isVisible == true) {
|
||||||
shouldGoToTodayBeVisible = false
|
shouldGoToTodayBeVisible = false
|
||||||
@@ -578,8 +590,11 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||||||
val bundle = Bundle()
|
val bundle = Bundle()
|
||||||
bundle.putString(DAY_CODE, Formatter.getDayCodeFromDateTime(dateTime))
|
bundle.putString(DAY_CODE, Formatter.getDayCodeFromDateTime(dateTime))
|
||||||
fragment.arguments = bundle
|
fragment.arguments = bundle
|
||||||
supportFragmentManager.beginTransaction().add(R.id.fragments_holder, fragment).commitNow()
|
try {
|
||||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
supportFragmentManager.beginTransaction().add(R.id.fragments_holder, fragment).commitNow()
|
||||||
|
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getThisWeekDateTime(): String {
|
private fun getThisWeekDateTime(): String {
|
||||||
@@ -612,7 +627,7 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||||||
|
|
||||||
private fun refreshViewPager() {
|
private fun refreshViewPager() {
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
if (!isActivityDestroyed()) {
|
if (!isDestroyed) {
|
||||||
currentFragments.last().refreshEvents()
|
currentFragments.last().refreshEvents()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -695,7 +710,7 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun launchAbout() {
|
private fun launchAbout() {
|
||||||
val licenses = LICENSE_JODA or LICENSE_STETHO or LICENSE_MULTISELECT or LICENSE_LEAK_CANARY
|
val licenses = LICENSE_JODA or LICENSE_STETHO
|
||||||
|
|
||||||
val faqItems = arrayListOf(
|
val faqItems = arrayListOf(
|
||||||
FAQItem(R.string.faq_1_title_commons, R.string.faq_1_text_commons),
|
FAQItem(R.string.faq_1_title_commons, R.string.faq_1_text_commons),
|
||||||
@@ -737,6 +752,13 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun checkSwipeRefreshAvailability() {
|
||||||
|
swipe_refresh_layout.isEnabled = config.caldavSync && config.pullToRefresh && config.storedView != WEEKLY_VIEW
|
||||||
|
if (!swipe_refresh_layout.isEnabled) {
|
||||||
|
swipe_refresh_layout.isRefreshing = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// only used at active search
|
// only used at active search
|
||||||
override fun refreshItems() {
|
override fun refreshItems() {
|
||||||
searchQueryChanged(mLatestSearchQuery)
|
searchQueryChanged(mLatestSearchQuery)
|
||||||
|
@@ -5,7 +5,7 @@ import android.view.Menu
|
|||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.adapters.ManageEventTypesAdapter
|
import com.simplemobiletools.calendar.adapters.ManageEventTypesAdapter
|
||||||
import com.simplemobiletools.calendar.dialogs.UpdateEventTypeDialog
|
import com.simplemobiletools.calendar.dialogs.EditEventTypeDialog
|
||||||
import com.simplemobiletools.calendar.extensions.dbHelper
|
import com.simplemobiletools.calendar.extensions.dbHelper
|
||||||
import com.simplemobiletools.calendar.interfaces.DeleteEventTypesListener
|
import com.simplemobiletools.calendar.interfaces.DeleteEventTypesListener
|
||||||
import com.simplemobiletools.calendar.models.EventType
|
import com.simplemobiletools.calendar.models.EventType
|
||||||
@@ -24,7 +24,7 @@ class ManageEventTypesActivity : SimpleActivity(), DeleteEventTypesListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun showEventTypeDialog(eventType: EventType? = null) {
|
private fun showEventTypeDialog(eventType: EventType? = null) {
|
||||||
UpdateEventTypeDialog(this, eventType?.copy()) {
|
EditEventTypeDialog(this, eventType?.copy()) {
|
||||||
getEventTypes()
|
getEventTypes()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -7,7 +7,10 @@ import android.os.Bundle
|
|||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.dialogs.SelectCalendarsDialog
|
import com.simplemobiletools.calendar.dialogs.SelectCalendarsDialog
|
||||||
import com.simplemobiletools.calendar.extensions.*
|
import com.simplemobiletools.calendar.extensions.config
|
||||||
|
import com.simplemobiletools.calendar.extensions.dbHelper
|
||||||
|
import com.simplemobiletools.calendar.extensions.getSyncedCalDAVCalendars
|
||||||
|
import com.simplemobiletools.calendar.extensions.updateWidgets
|
||||||
import com.simplemobiletools.calendar.helpers.*
|
import com.simplemobiletools.calendar.helpers.*
|
||||||
import com.simplemobiletools.calendar.models.EventType
|
import com.simplemobiletools.calendar.models.EventType
|
||||||
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
||||||
@@ -35,7 +38,6 @@ class SettingsActivity : SimpleActivity() {
|
|||||||
setContentView(R.layout.activity_settings)
|
setContentView(R.layout.activity_settings)
|
||||||
res = resources
|
res = resources
|
||||||
mStoredPrimaryColor = config.primaryColor
|
mStoredPrimaryColor = config.primaryColor
|
||||||
setupCaldavSync()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
@@ -60,6 +62,9 @@ class SettingsActivity : SimpleActivity() {
|
|||||||
setupUseSameSnooze()
|
setupUseSameSnooze()
|
||||||
setupLoopReminders()
|
setupLoopReminders()
|
||||||
setupSnoozeTime()
|
setupSnoozeTime()
|
||||||
|
setupCaldavSync()
|
||||||
|
setupManageSyncedCalendars()
|
||||||
|
setupPullToRefresh()
|
||||||
setupDefaultReminder()
|
setupDefaultReminder()
|
||||||
setupDefaultReminder1()
|
setupDefaultReminder1()
|
||||||
setupDefaultReminder2()
|
setupDefaultReminder2()
|
||||||
@@ -67,6 +72,7 @@ class SettingsActivity : SimpleActivity() {
|
|||||||
setupDisplayPastEvents()
|
setupDisplayPastEvents()
|
||||||
setupFontSize()
|
setupFontSize()
|
||||||
setupCustomizeWidgetColors()
|
setupCustomizeWidgetColors()
|
||||||
|
setupViewToOpenFromListWidget()
|
||||||
setupDimEvents()
|
setupDimEvents()
|
||||||
updateTextColors(settings_holder)
|
updateTextColors(settings_holder)
|
||||||
checkPrimaryColor()
|
checkPrimaryColor()
|
||||||
@@ -159,7 +165,18 @@ class SettingsActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setupPullToRefresh() {
|
||||||
|
settings_caldav_pull_to_refresh_holder.beVisibleIf(config.caldavSync)
|
||||||
|
settings_caldav_pull_to_refresh.isChecked = config.pullToRefresh
|
||||||
|
settings_caldav_pull_to_refresh_holder.setOnClickListener {
|
||||||
|
settings_caldav_pull_to_refresh.toggle()
|
||||||
|
config.pullToRefresh = settings_caldav_pull_to_refresh.isChecked
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setupManageSyncedCalendars() {
|
||||||
settings_manage_synced_calendars_holder.beVisibleIf(config.caldavSync)
|
settings_manage_synced_calendars_holder.beVisibleIf(config.caldavSync)
|
||||||
settings_manage_synced_calendars_holder.setOnClickListener {
|
settings_manage_synced_calendars_holder.setOnClickListener {
|
||||||
showCalendarPicker()
|
showCalendarPicker()
|
||||||
@@ -173,6 +190,7 @@ class SettingsActivity : SimpleActivity() {
|
|||||||
settings_caldav_sync.isChecked = false
|
settings_caldav_sync.isChecked = false
|
||||||
config.caldavSync = false
|
config.caldavSync = false
|
||||||
settings_manage_synced_calendars_holder.beGone()
|
settings_manage_synced_calendars_holder.beGone()
|
||||||
|
settings_caldav_pull_to_refresh_holder.beGone()
|
||||||
config.getSyncedCalendarIdsAsList().forEach {
|
config.getSyncedCalendarIdsAsList().forEach {
|
||||||
CalDAVHandler(applicationContext).deleteCalDAVCalendarEvents(it.toLong())
|
CalDAVHandler(applicationContext).deleteCalDAVCalendarEvents(it.toLong())
|
||||||
}
|
}
|
||||||
@@ -190,6 +208,7 @@ class SettingsActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
settings_manage_synced_calendars_holder.beVisibleIf(newCalendarIds.isNotEmpty())
|
settings_manage_synced_calendars_holder.beVisibleIf(newCalendarIds.isNotEmpty())
|
||||||
|
settings_caldav_pull_to_refresh_holder.beVisibleIf(newCalendarIds.isNotEmpty())
|
||||||
settings_caldav_sync.isChecked = newCalendarIds.isNotEmpty()
|
settings_caldav_sync.isChecked = newCalendarIds.isNotEmpty()
|
||||||
config.caldavSync = newCalendarIds.isNotEmpty()
|
config.caldavSync = newCalendarIds.isNotEmpty()
|
||||||
if (settings_caldav_sync.isChecked) {
|
if (settings_caldav_sync.isChecked) {
|
||||||
@@ -481,7 +500,6 @@ class SettingsActivity : SimpleActivity() {
|
|||||||
config.fontSize = it as Int
|
config.fontSize = it as Int
|
||||||
settings_font_size.text = getFontSizeText()
|
settings_font_size.text = getFontSizeText()
|
||||||
updateWidgets()
|
updateWidgets()
|
||||||
updateListWidget()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -501,6 +519,34 @@ class SettingsActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setupViewToOpenFromListWidget() {
|
||||||
|
settings_list_widget_view_to_open.text = getDefaultViewText()
|
||||||
|
settings_list_widget_view_to_open_holder.setOnClickListener {
|
||||||
|
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(LAST_VIEW, res.getString(R.string.last_view)))
|
||||||
|
|
||||||
|
RadioGroupDialog(this@SettingsActivity, items, config.listWidgetViewToOpen) {
|
||||||
|
config.listWidgetViewToOpen = it as Int
|
||||||
|
settings_list_widget_view_to_open.text = getDefaultViewText()
|
||||||
|
updateWidgets()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getDefaultViewText() = getString(when (config.listWidgetViewToOpen) {
|
||||||
|
DAILY_VIEW -> R.string.daily_view
|
||||||
|
WEEKLY_VIEW -> R.string.weekly_view
|
||||||
|
MONTHLY_VIEW -> R.string.monthly_view
|
||||||
|
YEARLY_VIEW -> R.string.yearly_view
|
||||||
|
EVENTS_LIST_VIEW -> R.string.simple_event_list
|
||||||
|
else -> R.string.last_view
|
||||||
|
})
|
||||||
|
|
||||||
private fun setupDimEvents() {
|
private fun setupDimEvents() {
|
||||||
settings_dim_past_events.isChecked = config.dimPastEvents
|
settings_dim_past_events.isChecked = config.dimPastEvents
|
||||||
settings_dim_past_events_holder.setOnClickListener {
|
settings_dim_past_events_holder.setOnClickListener {
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
package com.simplemobiletools.calendar.activities
|
package com.simplemobiletools.calendar.activities
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v7.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
import com.simplemobiletools.calendar.extensions.config
|
||||||
import com.simplemobiletools.calendar.extensions.dbHelper
|
import com.simplemobiletools.calendar.extensions.dbHelper
|
||||||
import com.simplemobiletools.calendar.extensions.rescheduleReminder
|
import com.simplemobiletools.calendar.extensions.rescheduleReminder
|
||||||
|
@@ -1,10 +1,7 @@
|
|||||||
package com.simplemobiletools.calendar.activities
|
package com.simplemobiletools.calendar.activities
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import com.simplemobiletools.calendar.helpers.DAY_CODE
|
import com.simplemobiletools.calendar.helpers.*
|
||||||
import com.simplemobiletools.calendar.helpers.EVENT_ID
|
|
||||||
import com.simplemobiletools.calendar.helpers.EVENT_OCCURRENCE_TS
|
|
||||||
import com.simplemobiletools.calendar.helpers.OPEN_MONTH
|
|
||||||
import com.simplemobiletools.commons.activities.BaseSplashActivity
|
import com.simplemobiletools.commons.activities.BaseSplashActivity
|
||||||
|
|
||||||
class SplashActivity : BaseSplashActivity() {
|
class SplashActivity : BaseSplashActivity() {
|
||||||
@@ -12,7 +9,7 @@ class SplashActivity : BaseSplashActivity() {
|
|||||||
when {
|
when {
|
||||||
intent.extras?.containsKey(DAY_CODE) == true -> Intent(this, MainActivity::class.java).apply {
|
intent.extras?.containsKey(DAY_CODE) == true -> Intent(this, MainActivity::class.java).apply {
|
||||||
putExtra(DAY_CODE, intent.getStringExtra(DAY_CODE))
|
putExtra(DAY_CODE, intent.getStringExtra(DAY_CODE))
|
||||||
putExtra(OPEN_MONTH, intent.getBooleanExtra(OPEN_MONTH, false))
|
putExtra(VIEW_TO_OPEN, intent.getIntExtra(VIEW_TO_OPEN, LAST_VIEW))
|
||||||
startActivity(this)
|
startActivity(this)
|
||||||
}
|
}
|
||||||
intent.extras?.containsKey(EVENT_ID) == true -> Intent(this, MainActivity::class.java).apply {
|
intent.extras?.containsKey(EVENT_ID) == true -> Intent(this, MainActivity::class.java).apply {
|
||||||
|
@@ -89,7 +89,7 @@ class WidgetMonthlyConfigureActivity : SimpleActivity(), MonthlyCalendar {
|
|||||||
config_bg_seekbar.progress = (mBgAlpha * 100).toInt()
|
config_bg_seekbar.progress = (mBgAlpha * 100).toInt()
|
||||||
updateBgColor()
|
updateBgColor()
|
||||||
|
|
||||||
MonthlyCalendarImpl(this, applicationContext).updateMonthlyCalendar(DateTime().withDayOfMonth(1), false)
|
MonthlyCalendarImpl(this, applicationContext).updateMonthlyCalendar(DateTime().withDayOfMonth(1))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun saveConfig() {
|
private fun saveConfig() {
|
||||||
|
@@ -38,12 +38,6 @@ class DayEventsAdapter(activity: SimpleActivity, val events: ArrayList<Event>, r
|
|||||||
|
|
||||||
override fun prepareActionMode(menu: Menu) {}
|
override fun prepareActionMode(menu: Menu) {}
|
||||||
|
|
||||||
override fun prepareItemSelection(viewHolder: ViewHolder) {}
|
|
||||||
|
|
||||||
override fun markViewHolderSelection(select: Boolean, viewHolder: ViewHolder?) {
|
|
||||||
viewHolder?.itemView?.event_item_frame?.isSelected = select
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun actionItemPressed(id: Int) {
|
override fun actionItemPressed(id: Int) {
|
||||||
when (id) {
|
when (id) {
|
||||||
R.id.cab_share -> shareEvents()
|
R.id.cab_share -> shareEvents()
|
||||||
@@ -55,6 +49,10 @@ class DayEventsAdapter(activity: SimpleActivity, val events: ArrayList<Event>, r
|
|||||||
|
|
||||||
override fun getIsItemSelectable(position: Int) = true
|
override fun getIsItemSelectable(position: Int) = true
|
||||||
|
|
||||||
|
override fun getItemSelectionKey(position: Int) = events.getOrNull(position)?.id
|
||||||
|
|
||||||
|
override fun getItemKeyPosition(key: Int) = events.indexOfFirst { it.id == key }
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyRecyclerViewAdapter.ViewHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyRecyclerViewAdapter.ViewHolder {
|
||||||
val layoutId = when (viewType) {
|
val layoutId = when (viewType) {
|
||||||
ITEM_EVENT -> R.layout.event_item_day_view
|
ITEM_EVENT -> R.layout.event_item_day_view
|
||||||
@@ -65,10 +63,10 @@ class DayEventsAdapter(activity: SimpleActivity, val events: ArrayList<Event>, r
|
|||||||
|
|
||||||
override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
|
override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
|
||||||
val event = events[position]
|
val event = events[position]
|
||||||
val view = holder.bindView(event, true, true) { itemView, layoutPosition ->
|
holder.bindView(event, true, true) { itemView, layoutPosition ->
|
||||||
setupView(itemView, event)
|
setupView(itemView, event)
|
||||||
}
|
}
|
||||||
bindViewHolder(holder, position, view)
|
bindViewHolder(holder)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItemCount() = events.size
|
override fun getItemCount() = events.size
|
||||||
@@ -76,8 +74,18 @@ class DayEventsAdapter(activity: SimpleActivity, val events: ArrayList<Event>, r
|
|||||||
override fun getItemViewType(position: Int): Int {
|
override fun getItemViewType(position: Int): Int {
|
||||||
val event = events[position]
|
val event = events[position]
|
||||||
val detailField = if (replaceDescriptionWithLocation) event.location else event.description
|
val detailField = if (replaceDescriptionWithLocation) event.location else event.description
|
||||||
return if (event.startTS == event.endTS && detailField.isEmpty()) {
|
return if (detailField.isNotEmpty()) {
|
||||||
|
ITEM_EVENT
|
||||||
|
} else if (event.startTS == event.endTS) {
|
||||||
ITEM_EVENT_SIMPLE
|
ITEM_EVENT_SIMPLE
|
||||||
|
} else if (event.getIsAllDay()) {
|
||||||
|
val startCode = Formatter.getDayCodeFromTS(event.startTS)
|
||||||
|
val endCode = Formatter.getDayCodeFromTS(event.endTS)
|
||||||
|
if (startCode == endCode) {
|
||||||
|
ITEM_EVENT_SIMPLE
|
||||||
|
} else {
|
||||||
|
ITEM_EVENT
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
ITEM_EVENT
|
ITEM_EVENT
|
||||||
}
|
}
|
||||||
@@ -85,6 +93,7 @@ class DayEventsAdapter(activity: SimpleActivity, val events: ArrayList<Event>, r
|
|||||||
|
|
||||||
private fun setupView(view: View, event: Event) {
|
private fun setupView(view: View, event: Event) {
|
||||||
view.apply {
|
view.apply {
|
||||||
|
event_item_frame.isSelected = selectedKeys.contains(event.id)
|
||||||
event_item_title.text = event.title
|
event_item_title.text = event.title
|
||||||
event_item_description?.text = if (replaceDescriptionWithLocation) event.location else event.description
|
event_item_description?.text = if (replaceDescriptionWithLocation) event.location else event.description
|
||||||
event_item_start.text = if (event.getIsAllDay()) allDayString else Formatter.getTimeFromTS(context, event.startTS)
|
event_item_start.text = if (event.getIsAllDay()) allDayString else Formatter.getTimeFromTS(context, event.startTS)
|
||||||
@@ -95,7 +104,7 @@ class DayEventsAdapter(activity: SimpleActivity, val events: ArrayList<Event>, r
|
|||||||
val startCode = Formatter.getDayCodeFromTS(event.startTS)
|
val startCode = Formatter.getDayCodeFromTS(event.startTS)
|
||||||
val endCode = Formatter.getDayCodeFromTS(event.endTS)
|
val endCode = Formatter.getDayCodeFromTS(event.endTS)
|
||||||
|
|
||||||
event_item_end.apply {
|
event_item_end?.apply {
|
||||||
text = Formatter.getTimeFromTS(context, event.endTS)
|
text = Formatter.getTimeFromTS(context, event.endTS)
|
||||||
if (startCode != endCode) {
|
if (startCode != endCode) {
|
||||||
if (event.getIsAllDay()) {
|
if (event.getIsAllDay()) {
|
||||||
@@ -121,35 +130,24 @@ class DayEventsAdapter(activity: SimpleActivity, val events: ArrayList<Event>, r
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun shareEvents() {
|
private fun shareEvents() = activity.shareEvents(selectedKeys.distinct())
|
||||||
val eventIds = ArrayList<Int>(selectedPositions.size)
|
|
||||||
selectedPositions.forEach {
|
|
||||||
eventIds.add(events[it].id)
|
|
||||||
}
|
|
||||||
activity.shareEvents(eventIds.distinct())
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun askConfirmDelete() {
|
private fun askConfirmDelete() {
|
||||||
val eventIds = ArrayList<Int>(selectedPositions.size)
|
val eventIds = selectedKeys.toMutableList()
|
||||||
val timestamps = ArrayList<Int>(selectedPositions.size)
|
val eventsToDelete = events.filter { selectedKeys.contains(it.id) }
|
||||||
val eventsToDelete = ArrayList<Event>(selectedPositions.size)
|
val timestamps = eventsToDelete.map { it.startTS }
|
||||||
selectedPositions.forEach {
|
val positions = getSelectedItemPositions()
|
||||||
val event = events[it]
|
|
||||||
eventsToDelete.add(event)
|
|
||||||
eventIds.add(event.id)
|
|
||||||
timestamps.add(event.startTS)
|
|
||||||
}
|
|
||||||
|
|
||||||
val hasRepeatableEvent = eventsToDelete.any { it.repeatInterval > 0 }
|
val hasRepeatableEvent = eventsToDelete.any { it.repeatInterval > 0 }
|
||||||
DeleteEventDialog(activity, eventIds, hasRepeatableEvent) {
|
DeleteEventDialog(activity, eventIds, hasRepeatableEvent) { it ->
|
||||||
events.removeAll(eventsToDelete)
|
events.removeAll(eventsToDelete)
|
||||||
|
|
||||||
val nonRepeatingEventIDs = eventsToDelete.filter { it.repeatInterval == 0 }.map { it.id.toString() }.toTypedArray()
|
val nonRepeatingEventIDs = eventsToDelete.asSequence().filter { it.repeatInterval == 0 }.map { it.id.toString() }.toList().toTypedArray()
|
||||||
activity.dbHelper.deleteEvents(nonRepeatingEventIDs, true)
|
activity.dbHelper.deleteEvents(nonRepeatingEventIDs, true)
|
||||||
|
|
||||||
val repeatingEventIDs = eventsToDelete.filter { it.repeatInterval != 0 }.map { it.id }
|
val repeatingEventIDs = eventsToDelete.asSequence().filter { it.repeatInterval != 0 }.map { it.id }.toList()
|
||||||
activity.handleEventDeleting(repeatingEventIDs, timestamps, it)
|
activity.handleEventDeleting(repeatingEventIDs, timestamps, it)
|
||||||
removeSelectedItems()
|
removeSelectedItems(positions)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -38,6 +38,7 @@ class EventListAdapter(activity: SimpleActivity, var listItems: ArrayList<ListIt
|
|||||||
private var currentItemsHash = listItems.hashCode()
|
private var currentItemsHash = listItems.hashCode()
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
setupDragListener(true)
|
||||||
var firstNonPastSectionIndex = -1
|
var firstNonPastSectionIndex = -1
|
||||||
listItems.forEachIndexed { index, listItem ->
|
listItems.forEachIndexed { index, listItem ->
|
||||||
if (firstNonPastSectionIndex == -1 && listItem is ListSection) {
|
if (firstNonPastSectionIndex == -1 && listItem is ListSection) {
|
||||||
@@ -58,12 +59,6 @@ class EventListAdapter(activity: SimpleActivity, var listItems: ArrayList<ListIt
|
|||||||
|
|
||||||
override fun prepareActionMode(menu: Menu) {}
|
override fun prepareActionMode(menu: Menu) {}
|
||||||
|
|
||||||
override fun prepareItemSelection(viewHolder: ViewHolder) {}
|
|
||||||
|
|
||||||
override fun markViewHolderSelection(select: Boolean, viewHolder: ViewHolder?) {
|
|
||||||
viewHolder?.itemView?.event_item_frame?.isSelected = select
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun actionItemPressed(id: Int) {
|
override fun actionItemPressed(id: Int) {
|
||||||
when (id) {
|
when (id) {
|
||||||
R.id.cab_share -> shareEvents()
|
R.id.cab_share -> shareEvents()
|
||||||
@@ -75,6 +70,10 @@ class EventListAdapter(activity: SimpleActivity, var listItems: ArrayList<ListIt
|
|||||||
|
|
||||||
override fun getIsItemSelectable(position: Int) = listItems[position] is ListEvent
|
override fun getIsItemSelectable(position: Int) = listItems[position] is ListEvent
|
||||||
|
|
||||||
|
override fun getItemSelectionKey(position: Int) = (listItems.getOrNull(position) as? ListEvent)?.id
|
||||||
|
|
||||||
|
override fun getItemKeyPosition(key: Int) = listItems.indexOfFirst { (it as? ListEvent)?.id == key }
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyRecyclerViewAdapter.ViewHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyRecyclerViewAdapter.ViewHolder {
|
||||||
val layoutId = when (viewType) {
|
val layoutId = when (viewType) {
|
||||||
ITEM_EVENT -> R.layout.event_list_item
|
ITEM_EVENT -> R.layout.event_list_item
|
||||||
@@ -86,14 +85,14 @@ class EventListAdapter(activity: SimpleActivity, var listItems: ArrayList<ListIt
|
|||||||
|
|
||||||
override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
|
override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
|
||||||
val listItem = listItems[position]
|
val listItem = listItems[position]
|
||||||
val view = holder.bindView(listItem, true, allowLongClick) { itemView, layoutPosition ->
|
holder.bindView(listItem, true, allowLongClick) { itemView, layoutPosition ->
|
||||||
if (listItem is ListSection) {
|
if (listItem is ListSection) {
|
||||||
setupListSection(itemView, listItem, position)
|
setupListSection(itemView, listItem, position)
|
||||||
} else if (listItem is ListEvent) {
|
} else if (listItem is ListEvent) {
|
||||||
setupListEvent(itemView, listItem)
|
setupListEvent(itemView, listItem)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bindViewHolder(holder, position, view)
|
bindViewHolder(holder)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItemCount() = listItems.size
|
override fun getItemCount() = listItems.size
|
||||||
@@ -101,8 +100,18 @@ class EventListAdapter(activity: SimpleActivity, var listItems: ArrayList<ListIt
|
|||||||
override fun getItemViewType(position: Int) = if (listItems[position] is ListEvent) {
|
override fun getItemViewType(position: Int) = if (listItems[position] is ListEvent) {
|
||||||
val event = listItems[position] as ListEvent
|
val event = listItems[position] as ListEvent
|
||||||
val detailField = if (replaceDescription) event.location else event.description
|
val detailField = if (replaceDescription) event.location else event.description
|
||||||
if (event.startTS == event.endTS && detailField.isEmpty()) {
|
if (detailField.isNotEmpty()) {
|
||||||
|
ITEM_EVENT
|
||||||
|
} else if (event.startTS == event.endTS) {
|
||||||
ITEM_EVENT_SIMPLE
|
ITEM_EVENT_SIMPLE
|
||||||
|
} else if (event.isAllDay) {
|
||||||
|
val startCode = Formatter.getDayCodeFromTS(event.startTS)
|
||||||
|
val endCode = Formatter.getDayCodeFromTS(event.endTS)
|
||||||
|
if (startCode == endCode) {
|
||||||
|
ITEM_EVENT_SIMPLE
|
||||||
|
} else {
|
||||||
|
ITEM_EVENT
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
ITEM_EVENT
|
ITEM_EVENT
|
||||||
}
|
}
|
||||||
@@ -127,6 +136,7 @@ class EventListAdapter(activity: SimpleActivity, var listItems: ArrayList<ListIt
|
|||||||
|
|
||||||
private fun setupListEvent(view: View, listEvent: ListEvent) {
|
private fun setupListEvent(view: View, listEvent: ListEvent) {
|
||||||
view.apply {
|
view.apply {
|
||||||
|
event_item_frame.isSelected = selectedKeys.contains(listEvent.id)
|
||||||
event_item_title.text = listEvent.title
|
event_item_title.text = listEvent.title
|
||||||
event_item_description?.text = if (replaceDescription) listEvent.location else listEvent.description
|
event_item_description?.text = if (replaceDescription) listEvent.location else listEvent.description
|
||||||
event_item_start.text = if (listEvent.isAllDay) allDayString else Formatter.getTimeFromTS(context, listEvent.startTS)
|
event_item_start.text = if (listEvent.isAllDay) allDayString else Formatter.getTimeFromTS(context, listEvent.startTS)
|
||||||
@@ -185,30 +195,12 @@ class EventListAdapter(activity: SimpleActivity, var listItems: ArrayList<ListIt
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun shareEvents() {
|
private fun shareEvents() = activity.shareEvents(selectedKeys.distinct())
|
||||||
val eventIds = ArrayList<Int>(selectedPositions.size)
|
|
||||||
selectedPositions.forEach {
|
|
||||||
val item = listItems[it]
|
|
||||||
if (item is ListEvent) {
|
|
||||||
eventIds.add(item.id)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
activity.shareEvents(eventIds.distinct())
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun askConfirmDelete() {
|
private fun askConfirmDelete() {
|
||||||
val eventIds = ArrayList<Int>(selectedPositions.size)
|
val eventIds = selectedKeys.toMutableList()
|
||||||
val timestamps = ArrayList<Int>(selectedPositions.size)
|
val eventsToDelete = listItems.filter { selectedKeys.contains((it as? ListEvent)?.id) } as List<ListEvent>
|
||||||
val eventsToDelete = ArrayList<ListEvent>(selectedPositions.size)
|
val timestamps = eventsToDelete.mapNotNull { (it as? ListEvent)?.startTS }
|
||||||
|
|
||||||
selectedPositions.sortedDescending().forEach {
|
|
||||||
val item = listItems[it]
|
|
||||||
if (item is ListEvent) {
|
|
||||||
eventIds.add(item.id)
|
|
||||||
timestamps.add(item.startTS)
|
|
||||||
eventsToDelete.add(item)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val hasRepeatableEvent = eventsToDelete.any { it.isRepeatable }
|
val hasRepeatableEvent = eventsToDelete.any { it.isRepeatable }
|
||||||
DeleteEventDialog(activity, eventIds, hasRepeatableEvent) {
|
DeleteEventDialog(activity, eventIds, hasRepeatableEvent) {
|
||||||
|
@@ -41,8 +41,7 @@ class EventListWidgetAdapter(val context: Context) : RemoteViewsService.RemoteVi
|
|||||||
|
|
||||||
if (type == ITEM_EVENT) {
|
if (type == ITEM_EVENT) {
|
||||||
val event = events[position] as ListEvent
|
val event = events[position] as ListEvent
|
||||||
val detailField = if (replaceDescription) event.location else event.description
|
val layout = getItemViewLayout(event)
|
||||||
val layout = if (event.startTS == event.endTS && detailField.isEmpty()) R.layout.event_list_item_widget_simple else R.layout.event_list_item_widget
|
|
||||||
remoteView = RemoteViews(context.packageName, layout)
|
remoteView = RemoteViews(context.packageName, layout)
|
||||||
setupListEvent(remoteView, event)
|
setupListEvent(remoteView, event)
|
||||||
} else {
|
} else {
|
||||||
@@ -53,6 +52,25 @@ class EventListWidgetAdapter(val context: Context) : RemoteViewsService.RemoteVi
|
|||||||
return remoteView
|
return remoteView
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getItemViewLayout(event: ListEvent): Int {
|
||||||
|
val detailField = if (replaceDescription) event.location else event.description
|
||||||
|
return if (detailField.isNotEmpty()) {
|
||||||
|
R.layout.event_list_item_widget
|
||||||
|
} else if (event.startTS == event.endTS) {
|
||||||
|
R.layout.event_list_item_widget_simple
|
||||||
|
} else if (event.isAllDay) {
|
||||||
|
val startCode = Formatter.getDayCodeFromTS(event.startTS)
|
||||||
|
val endCode = Formatter.getDayCodeFromTS(event.endTS)
|
||||||
|
if (startCode == endCode) {
|
||||||
|
R.layout.event_list_item_widget_simple
|
||||||
|
} else {
|
||||||
|
R.layout.event_list_item_widget
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
R.layout.event_list_item_widget
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun setupListEvent(remoteView: RemoteViews, item: ListEvent) {
|
private fun setupListEvent(remoteView: RemoteViews, item: ListEvent) {
|
||||||
var curTextColor = textColor
|
var curTextColor = textColor
|
||||||
remoteView.apply {
|
remoteView.apply {
|
||||||
@@ -116,6 +134,7 @@ class EventListWidgetAdapter(val context: Context) : RemoteViewsService.RemoteVi
|
|||||||
|
|
||||||
Intent().apply {
|
Intent().apply {
|
||||||
putExtra(DAY_CODE, item.code)
|
putExtra(DAY_CODE, item.code)
|
||||||
|
putExtra(VIEW_TO_OPEN, context.config.listWidgetViewToOpen)
|
||||||
setOnClickFillInIntent(event_section_title, this)
|
setOnClickFillInIntent(event_section_title, this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -137,7 +156,7 @@ class EventListWidgetAdapter(val context: Context) : RemoteViewsService.RemoteVi
|
|||||||
mediumFontSize = context.config.getFontSize()
|
mediumFontSize = context.config.getFontSize()
|
||||||
val fromTS = DateTime().seconds() - context.config.displayPastEvents * 60
|
val fromTS = DateTime().seconds() - context.config.displayPastEvents * 60
|
||||||
val toTS = DateTime().plusYears(1).seconds()
|
val toTS = DateTime().plusYears(1).seconds()
|
||||||
context.dbHelper.getEventsInBackground(fromTS, toTS) {
|
context.dbHelper.getEventsInBackground(fromTS, toTS, applyTypeFilter = true) {
|
||||||
val listItems = ArrayList<ListItem>(it.size)
|
val listItems = ArrayList<ListItem>(it.size)
|
||||||
val replaceDescription = context.config.replaceDescription
|
val replaceDescription = context.config.replaceDescription
|
||||||
val sorted = it.sortedWith(compareBy({ it.startTS }, { it.endTS }, { it.title }, { if (replaceDescription) it.location else it.description }))
|
val sorted = it.sortedWith(compareBy({ it.startTS }, { it.endTS }, { it.title }, { if (replaceDescription) it.location else it.description }))
|
||||||
|
@@ -1,87 +1,69 @@
|
|||||||
package com.simplemobiletools.calendar.adapters
|
package com.simplemobiletools.calendar.adapters
|
||||||
|
|
||||||
import android.support.v7.widget.RecyclerView
|
|
||||||
import android.util.SparseArray
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.activities.SimpleActivity
|
import com.simplemobiletools.calendar.activities.SimpleActivity
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
import com.simplemobiletools.calendar.extensions.config
|
||||||
import com.simplemobiletools.calendar.models.EventType
|
import com.simplemobiletools.calendar.models.EventType
|
||||||
import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor
|
import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor
|
||||||
import com.simplemobiletools.commons.extensions.setFillWithStroke
|
import com.simplemobiletools.commons.extensions.setFillWithStroke
|
||||||
import com.simplemobiletools.commons.interfaces.MyAdapterListener
|
|
||||||
import kotlinx.android.synthetic.main.filter_event_type_view.view.*
|
import kotlinx.android.synthetic.main.filter_event_type_view.view.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class FilterEventTypeAdapter(val activity: SimpleActivity, val eventTypes: List<EventType>, val displayEventTypes: Set<String>) :
|
class FilterEventTypeAdapter(val activity: SimpleActivity, val eventTypes: List<EventType>, val displayEventTypes: Set<String>) :
|
||||||
RecyclerView.Adapter<FilterEventTypeAdapter.ViewHolder>() {
|
RecyclerView.Adapter<FilterEventTypeAdapter.ViewHolder>() {
|
||||||
private val itemViews = SparseArray<View>()
|
private val selectedKeys = HashSet<Int>()
|
||||||
private val selectedPositions = HashSet<Int>()
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
eventTypes.forEachIndexed { index, eventType ->
|
eventTypes.forEachIndexed { index, eventType ->
|
||||||
if (displayEventTypes.contains(eventType.id.toString())) {
|
if (displayEventTypes.contains(eventType.id.toString())) {
|
||||||
selectedPositions.add(index)
|
selectedKeys.add(eventType.id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun toggleItemSelection(select: Boolean, pos: Int) {
|
private fun toggleItemSelection(select: Boolean, eventType: EventType, pos: Int) {
|
||||||
if (select) {
|
if (select) {
|
||||||
if (itemViews[pos] != null) {
|
selectedKeys.add(eventType.id)
|
||||||
selectedPositions.add(pos)
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
selectedPositions.remove(pos)
|
selectedKeys.remove(eventType.id)
|
||||||
}
|
}
|
||||||
|
|
||||||
itemViews[pos]?.filter_event_type_checkbox?.isChecked = select
|
notifyItemChanged(pos)
|
||||||
}
|
}
|
||||||
|
|
||||||
private val adapterListener = object : MyAdapterListener {
|
fun getSelectedItemsSet() = selectedKeys.asSequence().map { it.toString() }.toHashSet()
|
||||||
override fun toggleItemSelectionAdapter(select: Boolean, position: Int) {
|
|
||||||
toggleItemSelection(select, position)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getSelectedPositions() = selectedPositions
|
|
||||||
|
|
||||||
override fun itemLongClicked(position: Int) {}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getSelectedItemsSet(): HashSet<String> {
|
|
||||||
val selectedItemsSet = HashSet<String>(selectedPositions.size)
|
|
||||||
selectedPositions.forEach { selectedItemsSet.add(eventTypes[it].id.toString()) }
|
|
||||||
return selectedItemsSet
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||||
val view = activity.layoutInflater.inflate(R.layout.filter_event_type_view, parent, false)
|
val view = activity.layoutInflater.inflate(R.layout.filter_event_type_view, parent, false)
|
||||||
return ViewHolder(view, adapterListener, activity)
|
return ViewHolder(view)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||||
val eventType = eventTypes[position]
|
val eventType = eventTypes[position]
|
||||||
itemViews.put(position, holder.bindView(eventType))
|
holder.bindView(eventType)
|
||||||
toggleItemSelection(selectedPositions.contains(position), position)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItemCount() = eventTypes.size
|
override fun getItemCount() = eventTypes.size
|
||||||
|
|
||||||
class ViewHolder(view: View, val adapterListener: MyAdapterListener, val activity: SimpleActivity) : RecyclerView.ViewHolder(view) {
|
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||||
fun bindView(eventType: EventType): View {
|
fun bindView(eventType: EventType): View {
|
||||||
|
val isSelected = selectedKeys.contains(eventType.id)
|
||||||
itemView.apply {
|
itemView.apply {
|
||||||
|
filter_event_type_checkbox.isChecked = isSelected
|
||||||
filter_event_type_checkbox.setColors(activity.config.textColor, activity.getAdjustedPrimaryColor(), activity.config.backgroundColor)
|
filter_event_type_checkbox.setColors(activity.config.textColor, activity.getAdjustedPrimaryColor(), activity.config.backgroundColor)
|
||||||
filter_event_type_checkbox.text = eventType.getDisplayTitle()
|
filter_event_type_checkbox.text = eventType.getDisplayTitle()
|
||||||
filter_event_type_color.setFillWithStroke(eventType.color, activity.config.backgroundColor)
|
filter_event_type_color.setFillWithStroke(eventType.color, activity.config.backgroundColor)
|
||||||
filter_event_type_holder.setOnClickListener { viewClicked(!filter_event_type_checkbox.isChecked) }
|
filter_event_type_holder.setOnClickListener { viewClicked(!isSelected, eventType) }
|
||||||
}
|
}
|
||||||
|
|
||||||
return itemView
|
return itemView
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun viewClicked(select: Boolean) {
|
private fun viewClicked(select: Boolean, eventType: EventType) {
|
||||||
adapterListener.toggleItemSelectionAdapter(select, adapterPosition)
|
toggleItemSelection(select, eventType, adapterPosition)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -31,12 +31,6 @@ class ManageEventTypesAdapter(activity: SimpleActivity, val eventTypes: ArrayLis
|
|||||||
|
|
||||||
override fun prepareActionMode(menu: Menu) {}
|
override fun prepareActionMode(menu: Menu) {}
|
||||||
|
|
||||||
override fun prepareItemSelection(viewHolder: ViewHolder) {}
|
|
||||||
|
|
||||||
override fun markViewHolderSelection(select: Boolean, viewHolder: ViewHolder?) {
|
|
||||||
viewHolder?.itemView?.event_item_frame?.isSelected = select
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun actionItemPressed(id: Int) {
|
override fun actionItemPressed(id: Int) {
|
||||||
when (id) {
|
when (id) {
|
||||||
R.id.cab_delete -> askConfirmDelete()
|
R.id.cab_delete -> askConfirmDelete()
|
||||||
@@ -47,20 +41,29 @@ class ManageEventTypesAdapter(activity: SimpleActivity, val eventTypes: ArrayLis
|
|||||||
|
|
||||||
override fun getIsItemSelectable(position: Int) = true
|
override fun getIsItemSelectable(position: Int) = true
|
||||||
|
|
||||||
|
override fun getItemSelectionKey(position: Int) = eventTypes.getOrNull(position)?.id
|
||||||
|
|
||||||
|
override fun getItemKeyPosition(key: Int) = eventTypes.indexOfFirst { it.id == key }
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_event_type, parent)
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_event_type, parent)
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||||
val eventType = eventTypes[position]
|
val eventType = eventTypes[position]
|
||||||
val view = holder.bindView(eventType, true, true) { itemView, layoutPosition ->
|
holder.bindView(eventType, true, true) { itemView, layoutPosition ->
|
||||||
setupView(itemView, eventType)
|
setupView(itemView, eventType)
|
||||||
}
|
}
|
||||||
bindViewHolder(holder, position, view)
|
bindViewHolder(holder)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItemCount() = eventTypes.size
|
override fun getItemCount() = eventTypes.size
|
||||||
|
|
||||||
|
private fun getItemWithKey(key: Int): EventType? = eventTypes.firstOrNull { it.id == key }
|
||||||
|
|
||||||
|
private fun getSelectedItems() = eventTypes.filter { selectedKeys.contains(it.id) } as ArrayList<EventType>
|
||||||
|
|
||||||
private fun setupView(view: View, eventType: EventType) {
|
private fun setupView(view: View, eventType: EventType) {
|
||||||
view.apply {
|
view.apply {
|
||||||
|
event_item_frame.isSelected = selectedKeys.contains(eventType.id)
|
||||||
event_type_title.text = eventType.getDisplayTitle()
|
event_type_title.text = eventType.getDisplayTitle()
|
||||||
event_type_color.setFillWithStroke(eventType.color, activity.config.backgroundColor)
|
event_type_color.setFillWithStroke(eventType.color, activity.config.backgroundColor)
|
||||||
event_type_title.setTextColor(textColor)
|
event_type_title.setTextColor(textColor)
|
||||||
@@ -68,8 +71,7 @@ class ManageEventTypesAdapter(activity: SimpleActivity, val eventTypes: ArrayLis
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun askConfirmDelete() {
|
private fun askConfirmDelete() {
|
||||||
val eventTypes = ArrayList<EventType>(selectedPositions.size)
|
val eventTypes = eventTypes.filter { selectedKeys.contains(it.id) } as ArrayList<EventType>
|
||||||
selectedPositions.forEach { eventTypes.add(this.eventTypes[it]) }
|
|
||||||
|
|
||||||
if (activity.dbHelper.doEventTypesContainEvent(eventTypes)) {
|
if (activity.dbHelper.doEventTypesContainEvent(eventTypes)) {
|
||||||
val MOVE_EVENTS = 0
|
val MOVE_EVENTS = 0
|
||||||
@@ -90,25 +92,22 @@ class ManageEventTypesAdapter(activity: SimpleActivity, val eventTypes: ArrayLis
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun deleteEventTypes(deleteEvents: Boolean) {
|
private fun deleteEventTypes(deleteEvents: Boolean) {
|
||||||
val eventTypesToDelete = ArrayList<EventType>(selectedPositions.size)
|
val eventTypesToDelete = getSelectedItems()
|
||||||
|
|
||||||
for (pos in selectedPositions) {
|
for (key in selectedKeys) {
|
||||||
if (eventTypes[pos].id == DBHelper.REGULAR_EVENT_TYPE_ID) {
|
val type = getItemWithKey(key) ?: continue
|
||||||
|
if (type.id == DBHelper.REGULAR_EVENT_TYPE_ID) {
|
||||||
activity.toast(R.string.cannot_delete_default_type)
|
activity.toast(R.string.cannot_delete_default_type)
|
||||||
selectedPositions.remove(pos)
|
eventTypesToDelete.remove(type)
|
||||||
toggleItemSelection(false, pos)
|
toggleItemSelection(false, getItemKeyPosition(type.id))
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
selectedPositions.sortedDescending().forEach {
|
|
||||||
val eventType = eventTypes[it]
|
|
||||||
eventTypesToDelete.add(eventType)
|
|
||||||
}
|
|
||||||
|
|
||||||
eventTypes.removeAll(eventTypesToDelete)
|
|
||||||
if (listener?.deleteEventTypes(eventTypesToDelete, deleteEvents) == true) {
|
if (listener?.deleteEventTypes(eventTypesToDelete, deleteEvents) == true) {
|
||||||
removeSelectedItems()
|
val positions = getSelectedItemPositions()
|
||||||
|
eventTypes.removeAll(eventTypesToDelete)
|
||||||
|
removeSelectedItems(positions)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
package com.simplemobiletools.calendar.adapters
|
package com.simplemobiletools.calendar.adapters
|
||||||
|
|
||||||
import android.os.Bundle
|
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 android.util.SparseArray
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
|
import androidx.fragment.app.FragmentManager
|
||||||
|
import androidx.fragment.app.FragmentStatePagerAdapter
|
||||||
import com.simplemobiletools.calendar.fragments.DayFragment
|
import com.simplemobiletools.calendar.fragments.DayFragment
|
||||||
import com.simplemobiletools.calendar.helpers.DAY_CODE
|
import com.simplemobiletools.calendar.helpers.DAY_CODE
|
||||||
import com.simplemobiletools.calendar.interfaces.NavigationListener
|
import com.simplemobiletools.calendar.interfaces.NavigationListener
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
package com.simplemobiletools.calendar.adapters
|
package com.simplemobiletools.calendar.adapters
|
||||||
|
|
||||||
import android.os.Bundle
|
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 android.util.SparseArray
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
|
import androidx.fragment.app.FragmentManager
|
||||||
|
import androidx.fragment.app.FragmentStatePagerAdapter
|
||||||
import com.simplemobiletools.calendar.fragments.MonthFragment
|
import com.simplemobiletools.calendar.fragments.MonthFragment
|
||||||
import com.simplemobiletools.calendar.helpers.DAY_CODE
|
import com.simplemobiletools.calendar.helpers.DAY_CODE
|
||||||
import com.simplemobiletools.calendar.interfaces.NavigationListener
|
import com.simplemobiletools.calendar.interfaces.NavigationListener
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
package com.simplemobiletools.calendar.adapters
|
package com.simplemobiletools.calendar.adapters
|
||||||
|
|
||||||
import android.os.Bundle
|
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 android.util.SparseArray
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
|
import androidx.fragment.app.FragmentManager
|
||||||
|
import androidx.fragment.app.FragmentStatePagerAdapter
|
||||||
import com.simplemobiletools.calendar.fragments.WeekFragment
|
import com.simplemobiletools.calendar.fragments.WeekFragment
|
||||||
import com.simplemobiletools.calendar.helpers.WEEK_START_TIMESTAMP
|
import com.simplemobiletools.calendar.helpers.WEEK_START_TIMESTAMP
|
||||||
import com.simplemobiletools.calendar.interfaces.WeekFragmentListener
|
import com.simplemobiletools.calendar.interfaces.WeekFragmentListener
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
package com.simplemobiletools.calendar.adapters
|
package com.simplemobiletools.calendar.adapters
|
||||||
|
|
||||||
import android.os.Bundle
|
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 android.util.SparseArray
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
|
import androidx.fragment.app.FragmentManager
|
||||||
|
import androidx.fragment.app.FragmentStatePagerAdapter
|
||||||
import com.simplemobiletools.calendar.fragments.YearFragment
|
import com.simplemobiletools.calendar.fragments.YearFragment
|
||||||
import com.simplemobiletools.calendar.helpers.YEAR_LABEL
|
import com.simplemobiletools.calendar.helpers.YEAR_LABEL
|
||||||
|
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
package com.simplemobiletools.calendar.dialogs
|
package com.simplemobiletools.calendar.dialogs
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.support.v7.app.AlertDialog
|
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.helpers.DAY
|
import com.simplemobiletools.calendar.helpers.DAY
|
||||||
import com.simplemobiletools.calendar.helpers.MONTH
|
import com.simplemobiletools.calendar.helpers.MONTH
|
||||||
@@ -22,7 +22,7 @@ class CustomEventRepeatIntervalDialog(val activity: Activity, val callback: (sec
|
|||||||
view.dialog_radio_view.check(R.id.dialog_radio_days)
|
view.dialog_radio_view.check(R.id.dialog_radio_days)
|
||||||
|
|
||||||
dialog = AlertDialog.Builder(activity)
|
dialog = AlertDialog.Builder(activity)
|
||||||
.setPositiveButton(R.string.ok, { dialogInterface, i -> confirmRepeatInterval() })
|
.setPositiveButton(R.string.ok) { dialogInterface, i -> confirmRepeatInterval() }
|
||||||
.setNegativeButton(R.string.cancel, null)
|
.setNegativeButton(R.string.cancel, null)
|
||||||
.create().apply {
|
.create().apply {
|
||||||
activity.setupDialogStuff(view, this) {
|
activity.setupDialogStuff(view, this) {
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
package com.simplemobiletools.calendar.dialogs
|
package com.simplemobiletools.calendar.dialogs
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.support.v7.app.AlertDialog
|
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.helpers.DELETE_ALL_OCCURRENCES
|
import com.simplemobiletools.calendar.helpers.DELETE_ALL_OCCURRENCES
|
||||||
import com.simplemobiletools.calendar.helpers.DELETE_FUTURE_OCCURRENCES
|
import com.simplemobiletools.calendar.helpers.DELETE_FUTURE_OCCURRENCES
|
||||||
@@ -28,7 +28,7 @@ class DeleteEventDialog(val activity: Activity, eventIds: List<Int>, hasRepeatab
|
|||||||
}
|
}
|
||||||
|
|
||||||
dialog = AlertDialog.Builder(activity)
|
dialog = AlertDialog.Builder(activity)
|
||||||
.setPositiveButton(R.string.yes, { dialog, which -> dialogConfirmed(view as ViewGroup) })
|
.setPositiveButton(R.string.yes) { dialog, which -> dialogConfirmed(view as ViewGroup) }
|
||||||
.setNegativeButton(R.string.no, null)
|
.setNegativeButton(R.string.no, null)
|
||||||
.create().apply {
|
.create().apply {
|
||||||
activity.setupDialogStuff(view, this)
|
activity.setupDialogStuff(view, this)
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
package com.simplemobiletools.calendar.dialogs
|
package com.simplemobiletools.calendar.dialogs
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.support.v7.app.AlertDialog
|
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
import com.simplemobiletools.calendar.extensions.config
|
||||||
import com.simplemobiletools.calendar.extensions.dbHelper
|
import com.simplemobiletools.calendar.extensions.dbHelper
|
||||||
@@ -11,7 +11,7 @@ import com.simplemobiletools.commons.dialogs.ColorPickerDialog
|
|||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import kotlinx.android.synthetic.main.dialog_event_type.view.*
|
import kotlinx.android.synthetic.main.dialog_event_type.view.*
|
||||||
|
|
||||||
class UpdateEventTypeDialog(val activity: Activity, var eventType: EventType? = null, val callback: (eventType: EventType) -> Unit) {
|
class EditEventTypeDialog(val activity: Activity, var eventType: EventType? = null, val callback: (eventType: EventType) -> Unit) {
|
||||||
var isNewEvent = eventType == null
|
var isNewEvent = eventType == null
|
||||||
|
|
||||||
init {
|
init {
|
@@ -1,7 +1,7 @@
|
|||||||
package com.simplemobiletools.calendar.dialogs
|
package com.simplemobiletools.calendar.dialogs
|
||||||
|
|
||||||
import android.support.v7.app.AlertDialog
|
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.activities.SimpleActivity
|
import com.simplemobiletools.calendar.activities.SimpleActivity
|
||||||
import com.simplemobiletools.commons.extensions.hideKeyboard
|
import com.simplemobiletools.commons.extensions.hideKeyboard
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
package com.simplemobiletools.calendar.dialogs
|
package com.simplemobiletools.calendar.dialogs
|
||||||
|
|
||||||
import android.support.v7.app.AlertDialog
|
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.activities.SimpleActivity
|
import com.simplemobiletools.calendar.activities.SimpleActivity
|
||||||
import com.simplemobiletools.calendar.adapters.FilterEventTypeAdapter
|
import com.simplemobiletools.calendar.adapters.FilterEventTypeAdapter
|
||||||
@@ -17,11 +17,11 @@ class ExportEventsDialog(val activity: SimpleActivity, val path: String, val cal
|
|||||||
init {
|
init {
|
||||||
val view = (activity.layoutInflater.inflate(R.layout.dialog_export_events, null) as ViewGroup).apply {
|
val view = (activity.layoutInflater.inflate(R.layout.dialog_export_events, null) as ViewGroup).apply {
|
||||||
export_events_folder.text = activity.humanizePath(path)
|
export_events_folder.text = activity.humanizePath(path)
|
||||||
export_events_filename.setText("events_${activity.getCurrentFormattedDateTime()}")
|
export_events_filename.setText("${activity.getString(R.string.events)}_${activity.getCurrentFormattedDateTime()}")
|
||||||
|
|
||||||
activity.dbHelper.getEventTypes {
|
activity.dbHelper.getEventTypes {
|
||||||
val eventTypes = HashSet<String>()
|
val eventTypes = HashSet<String>()
|
||||||
it.mapTo(eventTypes, { it.id.toString() })
|
it.mapTo(eventTypes) { it.id.toString() }
|
||||||
|
|
||||||
activity.runOnUiThread {
|
activity.runOnUiThread {
|
||||||
export_events_types_list.adapter = FilterEventTypeAdapter(activity, it, eventTypes)
|
export_events_types_list.adapter = FilterEventTypeAdapter(activity, it, eventTypes)
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
package com.simplemobiletools.calendar.dialogs
|
package com.simplemobiletools.calendar.dialogs
|
||||||
|
|
||||||
import android.support.v7.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.activities.SimpleActivity
|
import com.simplemobiletools.calendar.activities.SimpleActivity
|
||||||
import com.simplemobiletools.calendar.adapters.FilterEventTypeAdapter
|
import com.simplemobiletools.calendar.adapters.FilterEventTypeAdapter
|
||||||
@@ -19,7 +19,7 @@ class FilterEventTypesDialog(val activity: SimpleActivity, val callback: () -> U
|
|||||||
view.filter_event_types_list.adapter = FilterEventTypeAdapter(activity, eventTypes, displayEventTypes)
|
view.filter_event_types_list.adapter = FilterEventTypeAdapter(activity, eventTypes, displayEventTypes)
|
||||||
|
|
||||||
dialog = AlertDialog.Builder(activity)
|
dialog = AlertDialog.Builder(activity)
|
||||||
.setPositiveButton(R.string.ok, { dialogInterface, i -> confirmEventTypes() })
|
.setPositiveButton(R.string.ok) { dialogInterface, i -> confirmEventTypes() }
|
||||||
.setNegativeButton(R.string.cancel, null)
|
.setNegativeButton(R.string.cancel, null)
|
||||||
.create().apply {
|
.create().apply {
|
||||||
activity.setupDialogStuff(view, this, R.string.filter_events_by_type)
|
activity.setupDialogStuff(view, this, R.string.filter_events_by_type)
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
package com.simplemobiletools.calendar.dialogs
|
package com.simplemobiletools.calendar.dialogs
|
||||||
|
|
||||||
import android.support.v7.app.AlertDialog
|
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.activities.SimpleActivity
|
import com.simplemobiletools.calendar.activities.SimpleActivity
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
import com.simplemobiletools.calendar.extensions.config
|
||||||
|
@@ -1,10 +1,9 @@
|
|||||||
package com.simplemobiletools.calendar.dialogs
|
package com.simplemobiletools.calendar.dialogs
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.app.DatePickerDialog
|
import android.app.DatePickerDialog
|
||||||
import android.support.v7.app.AlertDialog
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
import com.simplemobiletools.calendar.extensions.config
|
||||||
import com.simplemobiletools.calendar.extensions.seconds
|
import com.simplemobiletools.calendar.extensions.seconds
|
||||||
@@ -13,7 +12,6 @@ import com.simplemobiletools.calendar.helpers.getNowSeconds
|
|||||||
import com.simplemobiletools.commons.extensions.getDialogTheme
|
import com.simplemobiletools.commons.extensions.getDialogTheme
|
||||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||||
import com.simplemobiletools.commons.extensions.value
|
import com.simplemobiletools.commons.extensions.value
|
||||||
import com.simplemobiletools.commons.helpers.isLollipopPlus
|
|
||||||
import kotlinx.android.synthetic.main.dialog_repeat_limit_type_picker.view.*
|
import kotlinx.android.synthetic.main.dialog_repeat_limit_type_picker.view.*
|
||||||
import org.joda.time.DateTime
|
import org.joda.time.DateTime
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -25,14 +23,18 @@ class RepeatLimitTypePickerDialog(val activity: Activity, var repeatLimit: Int,
|
|||||||
init {
|
init {
|
||||||
view = activity.layoutInflater.inflate(R.layout.dialog_repeat_limit_type_picker, null).apply {
|
view = activity.layoutInflater.inflate(R.layout.dialog_repeat_limit_type_picker, null).apply {
|
||||||
repeat_type_date.setOnClickListener { showRepetitionLimitDialog() }
|
repeat_type_date.setOnClickListener { showRepetitionLimitDialog() }
|
||||||
repeat_type_forever.setOnClickListener { callback(0); dialog.dismiss() }
|
|
||||||
repeat_type_count.setOnClickListener { dialog_radio_view.check(R.id.repeat_type_x_times) }
|
repeat_type_count.setOnClickListener { dialog_radio_view.check(R.id.repeat_type_x_times) }
|
||||||
|
repeat_type_forever.setOnClickListener {
|
||||||
|
callback(0)
|
||||||
|
dialog.dismiss()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
view.dialog_radio_view.check(getCheckedItem())
|
view.dialog_radio_view.check(getCheckedItem())
|
||||||
|
|
||||||
if (repeatLimit in 1..startTS)
|
if (repeatLimit in 1..startTS) {
|
||||||
repeatLimit = startTS
|
repeatLimit = startTS
|
||||||
|
}
|
||||||
|
|
||||||
updateRepeatLimitText()
|
updateRepeatLimitText()
|
||||||
|
|
||||||
@@ -80,16 +82,12 @@ class RepeatLimitTypePickerDialog(val activity: Activity, var repeatLimit: Int,
|
|||||||
dialog.dismiss()
|
dialog.dismiss()
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("NewApi")
|
|
||||||
private fun showRepetitionLimitDialog() {
|
private fun showRepetitionLimitDialog() {
|
||||||
val repeatLimitDateTime = Formatter.getDateTimeFromTS(if (repeatLimit != 0) repeatLimit else getNowSeconds())
|
val repeatLimitDateTime = Formatter.getDateTimeFromTS(if (repeatLimit != 0) repeatLimit else getNowSeconds())
|
||||||
val datepicker = DatePickerDialog(activity, activity.getDialogTheme(), repetitionLimitDateSetListener, repeatLimitDateTime.year,
|
val datepicker = DatePickerDialog(activity, activity.getDialogTheme(), repetitionLimitDateSetListener, repeatLimitDateTime.year,
|
||||||
repeatLimitDateTime.monthOfYear - 1, repeatLimitDateTime.dayOfMonth)
|
repeatLimitDateTime.monthOfYear - 1, repeatLimitDateTime.dayOfMonth)
|
||||||
|
|
||||||
if (isLollipopPlus()) {
|
datepicker.datePicker.firstDayOfWeek = if (activity.config.isSundayFirst) Calendar.SUNDAY else Calendar.MONDAY
|
||||||
datepicker.datePicker.firstDayOfWeek = if (activity.config.isSundayFirst) Calendar.SUNDAY else Calendar.MONDAY
|
|
||||||
}
|
|
||||||
|
|
||||||
datepicker.show()
|
datepicker.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
package com.simplemobiletools.calendar.dialogs
|
package com.simplemobiletools.calendar.dialogs
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.support.v7.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
import com.simplemobiletools.calendar.extensions.config
|
||||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
package com.simplemobiletools.calendar.dialogs
|
package com.simplemobiletools.calendar.dialogs
|
||||||
|
|
||||||
import android.support.v7.app.AlertDialog
|
|
||||||
import android.support.v7.widget.SwitchCompat
|
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.RelativeLayout
|
import android.widget.RelativeLayout
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
|
import androidx.appcompat.widget.SwitchCompat
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.activities.SimpleActivity
|
import com.simplemobiletools.calendar.activities.SimpleActivity
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
import com.simplemobiletools.calendar.extensions.config
|
||||||
@@ -33,7 +33,7 @@ class SelectCalendarsDialog(val activity: SimpleActivity, val callback: () -> Un
|
|||||||
}
|
}
|
||||||
|
|
||||||
dialog = AlertDialog.Builder(activity)
|
dialog = AlertDialog.Builder(activity)
|
||||||
.setPositiveButton(R.string.ok, { dialogInterface, i -> confirmSelection() })
|
.setPositiveButton(R.string.ok) { dialogInterface, i -> confirmSelection() }
|
||||||
.setNegativeButton(R.string.cancel, null)
|
.setNegativeButton(R.string.cancel, null)
|
||||||
.create().apply {
|
.create().apply {
|
||||||
activity.setupDialogStuff(view, this, R.string.select_caldav_calendars)
|
activity.setupDialogStuff(view, this, R.string.select_caldav_calendars)
|
||||||
|
@@ -2,10 +2,10 @@ package com.simplemobiletools.calendar.dialogs
|
|||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.support.v7.app.AlertDialog
|
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.RadioButton
|
import android.widget.RadioButton
|
||||||
import android.widget.RadioGroup
|
import android.widget.RadioGroup
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
import com.simplemobiletools.calendar.extensions.config
|
||||||
import com.simplemobiletools.calendar.extensions.dbHelper
|
import com.simplemobiletools.calendar.extensions.dbHelper
|
||||||
@@ -29,6 +29,11 @@ class SelectEventCalendarDialog(val activity: Activity, val calendars: List<CalD
|
|||||||
activity.dbHelper.getEventTypes {
|
activity.dbHelper.getEventTypes {
|
||||||
activity.runOnUiThread {
|
activity.runOnUiThread {
|
||||||
calendars.forEach {
|
calendars.forEach {
|
||||||
|
val localEventType = activity.dbHelper.getEventTypeWithCalDAVCalendarId(it.id)
|
||||||
|
if (localEventType != null) {
|
||||||
|
it.color = localEventType.color
|
||||||
|
}
|
||||||
|
|
||||||
addRadioButton(it.getFullTitle(), it.id, it.color)
|
addRadioButton(it.getFullTitle(), it.id, it.color)
|
||||||
}
|
}
|
||||||
addRadioButton(activity.getString(R.string.store_locally_only), STORED_LOCALLY_ONLY, Color.TRANSPARENT)
|
addRadioButton(activity.getString(R.string.store_locally_only), STORED_LOCALLY_ONLY, Color.TRANSPARENT)
|
||||||
@@ -51,8 +56,9 @@ class SelectEventCalendarDialog(val activity: Activity, val calendars: List<CalD
|
|||||||
id = typeId
|
id = typeId
|
||||||
}
|
}
|
||||||
|
|
||||||
if (color != Color.TRANSPARENT)
|
if (typeId != STORED_LOCALLY_ONLY) {
|
||||||
view.dialog_radio_color.setFillWithStroke(color, activity.config.backgroundColor)
|
view.dialog_radio_color.setFillWithStroke(color, activity.config.backgroundColor)
|
||||||
|
}
|
||||||
|
|
||||||
view.setOnClickListener { viewClicked(typeId) }
|
view.setOnClickListener { viewClicked(typeId) }
|
||||||
radioGroup.addView(view, RadioGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT))
|
radioGroup.addView(view, RadioGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT))
|
||||||
|
@@ -1,18 +1,18 @@
|
|||||||
package com.simplemobiletools.calendar.dialogs
|
package com.simplemobiletools.calendar.dialogs
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.graphics.Color
|
|
||||||
import android.support.v7.app.AlertDialog
|
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.RadioButton
|
import android.widget.RadioButton
|
||||||
import android.widget.RadioGroup
|
import android.widget.RadioGroup
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
import com.simplemobiletools.calendar.extensions.config
|
||||||
import com.simplemobiletools.calendar.helpers.CalDAVHandler
|
import com.simplemobiletools.calendar.helpers.CalDAVHandler
|
||||||
import com.simplemobiletools.calendar.models.EventType
|
import com.simplemobiletools.calendar.models.EventType
|
||||||
|
import com.simplemobiletools.commons.dialogs.ColorPickerDialog
|
||||||
import com.simplemobiletools.commons.extensions.setFillWithStroke
|
import com.simplemobiletools.commons.extensions.setFillWithStroke
|
||||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||||
import kotlinx.android.synthetic.main.dialog_select_radio_group.view.*
|
import kotlinx.android.synthetic.main.dialog_select_event_type_color.view.*
|
||||||
import kotlinx.android.synthetic.main.radio_button_with_color.view.*
|
import kotlinx.android.synthetic.main.radio_button_with_color.view.*
|
||||||
|
|
||||||
class SelectEventTypeColorDialog(val activity: Activity, val eventType: EventType, val callback: (color: Int) -> Unit) {
|
class SelectEventTypeColorDialog(val activity: Activity, val eventType: EventType, val callback: (color: Int) -> Unit) {
|
||||||
@@ -22,8 +22,11 @@ class SelectEventTypeColorDialog(val activity: Activity, val eventType: EventTyp
|
|||||||
private val colors = CalDAVHandler(activity.applicationContext).getAvailableCalDAVCalendarColors(eventType)
|
private val colors = CalDAVHandler(activity.applicationContext).getAvailableCalDAVCalendarColors(eventType)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
val view = activity.layoutInflater.inflate(R.layout.dialog_select_radio_group, null) as ViewGroup
|
val view = activity.layoutInflater.inflate(R.layout.dialog_select_event_type_color, null) as ViewGroup
|
||||||
radioGroup = view.dialog_radio_group
|
radioGroup = view.dialog_select_event_type_color_radio
|
||||||
|
view.dialog_select_event_type_other_value.setOnClickListener {
|
||||||
|
showCustomColorPicker()
|
||||||
|
}
|
||||||
|
|
||||||
colors.forEachIndexed { index, value ->
|
colors.forEachIndexed { index, value ->
|
||||||
addRadioButton(index, value)
|
addRadioButton(index, value)
|
||||||
@@ -33,21 +36,25 @@ class SelectEventTypeColorDialog(val activity: Activity, val eventType: EventTyp
|
|||||||
dialog = AlertDialog.Builder(activity)
|
dialog = AlertDialog.Builder(activity)
|
||||||
.create().apply {
|
.create().apply {
|
||||||
activity.setupDialogStuff(view, this)
|
activity.setupDialogStuff(view, this)
|
||||||
|
|
||||||
|
if (colors.isEmpty()) {
|
||||||
|
showCustomColorPicker()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addRadioButton(colorKey: Int, color: Int) {
|
private fun addRadioButton(colorKey: Int, color: Int) {
|
||||||
val view = activity.layoutInflater.inflate(R.layout.radio_button_with_color, null)
|
val view = activity.layoutInflater.inflate(R.layout.radio_button_with_color, null)
|
||||||
(view.dialog_radio_button as RadioButton).apply {
|
(view.dialog_radio_button as RadioButton).apply {
|
||||||
text = String.format("#%06X", 0xFFFFFF and color)
|
text = if (color == 0) activity.getString(R.string.transparent) else String.format("#%06X", 0xFFFFFF and color)
|
||||||
isChecked = color == eventType.color
|
isChecked = color == eventType.color
|
||||||
id = colorKey
|
id = colorKey
|
||||||
}
|
}
|
||||||
|
|
||||||
if (color != Color.TRANSPARENT)
|
view.dialog_radio_color.setFillWithStroke(color, activity.config.backgroundColor)
|
||||||
view.dialog_radio_color.setFillWithStroke(color, activity.config.backgroundColor)
|
view.setOnClickListener {
|
||||||
|
viewClicked(colorKey)
|
||||||
view.setOnClickListener { viewClicked(colorKey) }
|
}
|
||||||
radioGroup.addView(view, RadioGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT))
|
radioGroup.addView(view, RadioGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,4 +65,13 @@ class SelectEventTypeColorDialog(val activity: Activity, val eventType: EventTyp
|
|||||||
callback(colors[colorKey])
|
callback(colors[colorKey])
|
||||||
dialog?.dismiss()
|
dialog?.dismiss()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun showCustomColorPicker() {
|
||||||
|
ColorPickerDialog(activity, activity.config.primaryColor) { wasPositivePressed, color ->
|
||||||
|
if (wasPositivePressed) {
|
||||||
|
callback(color)
|
||||||
|
}
|
||||||
|
dialog?.dismiss()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -2,9 +2,9 @@ package com.simplemobiletools.calendar.dialogs
|
|||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.support.v7.app.AlertDialog
|
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.RadioGroup
|
import android.widget.RadioGroup
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
import com.simplemobiletools.calendar.extensions.config
|
||||||
import com.simplemobiletools.calendar.extensions.dbHelper
|
import com.simplemobiletools.calendar.extensions.dbHelper
|
||||||
@@ -72,7 +72,7 @@ class SelectEventTypeDialog(val activity: Activity, val currEventType: Int, val
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (eventType.id == NEW_TYPE_ID) {
|
if (eventType.id == NEW_TYPE_ID) {
|
||||||
UpdateEventTypeDialog(activity) {
|
EditEventTypeDialog(activity) {
|
||||||
callback(it)
|
callback(it)
|
||||||
activity.hideKeyboard()
|
activity.hideKeyboard()
|
||||||
dialog?.dismiss()
|
dialog?.dismiss()
|
||||||
|
@@ -55,9 +55,9 @@ fun Activity.showEventRepeatIntervalDialog(curSeconds: Int, callback: (minutes:
|
|||||||
}
|
}
|
||||||
|
|
||||||
val items = ArrayList<RadioItem>(seconds.size + 1)
|
val items = ArrayList<RadioItem>(seconds.size + 1)
|
||||||
seconds.mapIndexedTo(items, { index, value ->
|
seconds.mapIndexedTo(items) { index, value ->
|
||||||
RadioItem(index, getRepetitionText(value), value)
|
RadioItem(index, getRepetitionText(value), value)
|
||||||
})
|
}
|
||||||
|
|
||||||
var selectedIndex = 0
|
var selectedIndex = 0
|
||||||
seconds.forEachIndexed { index, value ->
|
seconds.forEachIndexed { index, value ->
|
||||||
|
@@ -14,13 +14,13 @@ import android.media.AudioAttributes
|
|||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.provider.CalendarContract
|
import android.provider.CalendarContract
|
||||||
import android.support.v4.app.AlarmManagerCompat
|
|
||||||
import android.support.v4.app.NotificationCompat
|
|
||||||
import android.view.Gravity
|
import android.view.Gravity
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
|
import androidx.core.app.AlarmManagerCompat
|
||||||
|
import androidx.core.app.NotificationCompat
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.activities.EventActivity
|
import com.simplemobiletools.calendar.activities.EventActivity
|
||||||
import com.simplemobiletools.calendar.activities.SimpleActivity
|
import com.simplemobiletools.calendar.activities.SimpleActivity
|
||||||
@@ -85,7 +85,7 @@ fun Context.scheduleNextEventReminder(event: Event, dbHelper: DBHelper, activity
|
|||||||
|
|
||||||
val now = getNowSeconds()
|
val now = getNowSeconds()
|
||||||
val reminderSeconds = event.getReminders().reversed().map { it * 60 }
|
val reminderSeconds = event.getReminders().reversed().map { it * 60 }
|
||||||
dbHelper.getEvents(now, now + YEAR, event.id) {
|
dbHelper.getEvents(now, now + YEAR, event.id, false) {
|
||||||
if (it.isNotEmpty()) {
|
if (it.isNotEmpty()) {
|
||||||
for (curEvent in it) {
|
for (curEvent in it) {
|
||||||
for (curReminder in reminderSeconds) {
|
for (curReminder in reminderSeconds) {
|
||||||
@@ -146,11 +146,6 @@ fun Context.getRepetitionText(seconds: Int) = when (seconds) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Context.getFilteredEvents(events: List<Event>): ArrayList<Event> {
|
|
||||||
val displayEventTypes = config.displayEventTypes
|
|
||||||
return events.filter { displayEventTypes.contains(it.eventType.toString()) } as ArrayList<Event>
|
|
||||||
}
|
|
||||||
|
|
||||||
fun Context.notifyRunningEvents() {
|
fun Context.notifyRunningEvents() {
|
||||||
dbHelper.getRunningEvents().filter { it.getReminders().isNotEmpty() }.forEach {
|
dbHelper.getRunningEvents().filter { it.getReminders().isNotEmpty() }.forEach {
|
||||||
notifyEvent(it)
|
notifyEvent(it)
|
||||||
@@ -453,7 +448,7 @@ fun Context.handleEventDeleting(eventIds: List<Int>, timestamps: List<Int>, acti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
DELETE_ALL_OCCURRENCES -> {
|
DELETE_ALL_OCCURRENCES -> {
|
||||||
val eventIDs = Array(eventIds.size, { i -> (eventIds[i].toString()) })
|
val eventIDs = Array(eventIds.size) { i -> (eventIds[i].toString()) }
|
||||||
dbHelper.deleteEvents(eventIDs, true)
|
dbHelper.deleteEvents(eventIDs, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -2,20 +2,19 @@ package com.simplemobiletools.calendar.fragments
|
|||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v4.app.Fragment
|
|
||||||
import android.support.v7.app.AlertDialog
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.DatePicker
|
import android.widget.DatePicker
|
||||||
import android.widget.RelativeLayout
|
import android.widget.RelativeLayout
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.activities.EventActivity
|
import com.simplemobiletools.calendar.activities.EventActivity
|
||||||
import com.simplemobiletools.calendar.activities.SimpleActivity
|
import com.simplemobiletools.calendar.activities.SimpleActivity
|
||||||
import com.simplemobiletools.calendar.adapters.DayEventsAdapter
|
import com.simplemobiletools.calendar.adapters.DayEventsAdapter
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
import com.simplemobiletools.calendar.extensions.config
|
||||||
import com.simplemobiletools.calendar.extensions.dbHelper
|
import com.simplemobiletools.calendar.extensions.dbHelper
|
||||||
import com.simplemobiletools.calendar.extensions.getFilteredEvents
|
|
||||||
import com.simplemobiletools.calendar.helpers.DAY_CODE
|
import com.simplemobiletools.calendar.helpers.DAY_CODE
|
||||||
import com.simplemobiletools.calendar.helpers.EVENT_ID
|
import com.simplemobiletools.calendar.helpers.EVENT_ID
|
||||||
import com.simplemobiletools.calendar.helpers.EVENT_OCCURRENCE_TS
|
import com.simplemobiletools.calendar.helpers.EVENT_OCCURRENCE_TS
|
||||||
@@ -106,21 +105,20 @@ class DayFragment : Fragment() {
|
|||||||
fun updateCalendar() {
|
fun updateCalendar() {
|
||||||
val startTS = Formatter.getDayStartTS(mDayCode)
|
val startTS = Formatter.getDayStartTS(mDayCode)
|
||||||
val endTS = Formatter.getDayEndTS(mDayCode)
|
val endTS = Formatter.getDayEndTS(mDayCode)
|
||||||
context?.dbHelper?.getEvents(startTS, endTS) {
|
context?.dbHelper?.getEvents(startTS, endTS, applyTypeFilter = true) {
|
||||||
receivedEvents(it)
|
receivedEvents(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun receivedEvents(events: List<Event>) {
|
private fun receivedEvents(events: List<Event>) {
|
||||||
val filtered = context?.getFilteredEvents(events) ?: ArrayList()
|
val newHash = events.hashCode()
|
||||||
val newHash = filtered.hashCode()
|
|
||||||
if (newHash == lastHash || !isAdded) {
|
if (newHash == lastHash || !isAdded) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
lastHash = newHash
|
lastHash = newHash
|
||||||
|
|
||||||
val replaceDescription = context!!.config.replaceDescription
|
val replaceDescription = context!!.config.replaceDescription
|
||||||
val sorted = ArrayList<Event>(filtered.sortedWith(compareBy({ !it.getIsAllDay() }, { it.startTS }, { it.endTS }, { it.title }, {
|
val sorted = ArrayList<Event>(events.sortedWith(compareBy({ !it.getIsAllDay() }, { it.startTS }, { it.endTS }, { it.title }, {
|
||||||
if (replaceDescription) it.location else it.description
|
if (replaceDescription) it.location else it.description
|
||||||
})))
|
})))
|
||||||
|
|
||||||
|
@@ -2,10 +2,10 @@ package com.simplemobiletools.calendar.fragments
|
|||||||
|
|
||||||
import android.graphics.drawable.ColorDrawable
|
import android.graphics.drawable.ColorDrawable
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v4.view.ViewPager
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.viewpager.widget.ViewPager
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.activities.MainActivity
|
import com.simplemobiletools.calendar.activities.MainActivity
|
||||||
import com.simplemobiletools.calendar.adapters.MyDayPagerAdapter
|
import com.simplemobiletools.calendar.adapters.MyDayPagerAdapter
|
||||||
|
@@ -76,7 +76,7 @@ class EventListFragment : MyFragmentHolder(), RefreshRecyclerViewListener {
|
|||||||
maxFetchedTS = DateTime().plusMonths(6).seconds()
|
maxFetchedTS = DateTime().plusMonths(6).seconds()
|
||||||
}
|
}
|
||||||
|
|
||||||
context!!.dbHelper.getEvents(minFetchedTS, maxFetchedTS) {
|
context!!.dbHelper.getEvents(minFetchedTS, maxFetchedTS, applyTypeFilter = true) {
|
||||||
if (it.size >= MIN_EVENTS_TRESHOLD) {
|
if (it.size >= MIN_EVENTS_TRESHOLD) {
|
||||||
receivedEvents(it, false)
|
receivedEvents(it, false)
|
||||||
} else {
|
} else {
|
||||||
@@ -84,7 +84,7 @@ class EventListFragment : MyFragmentHolder(), RefreshRecyclerViewListener {
|
|||||||
minFetchedTS -= FETCH_INTERVAL
|
minFetchedTS -= FETCH_INTERVAL
|
||||||
maxFetchedTS += FETCH_INTERVAL
|
maxFetchedTS += FETCH_INTERVAL
|
||||||
}
|
}
|
||||||
context!!.dbHelper.getEvents(minFetchedTS, maxFetchedTS) {
|
context!!.dbHelper.getEvents(minFetchedTS, maxFetchedTS, applyTypeFilter = true) {
|
||||||
mEvents = it
|
mEvents = it
|
||||||
receivedEvents(mEvents, false, !wereInitialEventsAdded)
|
receivedEvents(mEvents, false, !wereInitialEventsAdded)
|
||||||
}
|
}
|
||||||
@@ -98,7 +98,7 @@ class EventListFragment : MyFragmentHolder(), RefreshRecyclerViewListener {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
mEvents = context!!.getFilteredEvents(events)
|
mEvents = events
|
||||||
val listItems = context!!.getEventListItems(mEvents)
|
val listItems = context!!.getEventListItems(mEvents)
|
||||||
|
|
||||||
activity?.runOnUiThread {
|
activity?.runOnUiThread {
|
||||||
@@ -150,7 +150,7 @@ class EventListFragment : MyFragmentHolder(), RefreshRecyclerViewListener {
|
|||||||
private fun fetchPreviousPeriod() {
|
private fun fetchPreviousPeriod() {
|
||||||
val oldMinFetchedTS = minFetchedTS - 1
|
val oldMinFetchedTS = minFetchedTS - 1
|
||||||
minFetchedTS -= FETCH_INTERVAL
|
minFetchedTS -= FETCH_INTERVAL
|
||||||
context!!.dbHelper.getEvents(minFetchedTS, oldMinFetchedTS) {
|
context!!.dbHelper.getEvents(minFetchedTS, oldMinFetchedTS, applyTypeFilter = true) {
|
||||||
mEvents.addAll(0, it)
|
mEvents.addAll(0, it)
|
||||||
receivedEvents(mEvents, false)
|
receivedEvents(mEvents, false)
|
||||||
}
|
}
|
||||||
@@ -159,7 +159,7 @@ class EventListFragment : MyFragmentHolder(), RefreshRecyclerViewListener {
|
|||||||
private fun fetchNextPeriod(scrollAfterUpdating: Boolean) {
|
private fun fetchNextPeriod(scrollAfterUpdating: Boolean) {
|
||||||
val oldMaxFetchedTS = maxFetchedTS + 1
|
val oldMaxFetchedTS = maxFetchedTS + 1
|
||||||
maxFetchedTS += FETCH_INTERVAL
|
maxFetchedTS += FETCH_INTERVAL
|
||||||
context!!.dbHelper.getEvents(oldMaxFetchedTS, maxFetchedTS) {
|
context!!.dbHelper.getEvents(oldMaxFetchedTS, maxFetchedTS, applyTypeFilter = true) {
|
||||||
mEvents.addAll(it)
|
mEvents.addAll(it)
|
||||||
receivedEvents(mEvents, scrollAfterUpdating)
|
receivedEvents(mEvents, scrollAfterUpdating)
|
||||||
}
|
}
|
||||||
|
@@ -3,8 +3,8 @@ package com.simplemobiletools.calendar.fragments
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.res.Resources
|
import android.content.res.Resources
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v4.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import android.support.v7.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
@@ -2,10 +2,10 @@ package com.simplemobiletools.calendar.fragments
|
|||||||
|
|
||||||
import android.graphics.drawable.ColorDrawable
|
import android.graphics.drawable.ColorDrawable
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v4.view.ViewPager
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.viewpager.widget.ViewPager
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.activities.MainActivity
|
import com.simplemobiletools.calendar.activities.MainActivity
|
||||||
import com.simplemobiletools.calendar.adapters.MyMonthPagerAdapter
|
import com.simplemobiletools.calendar.adapters.MyMonthPagerAdapter
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
package com.simplemobiletools.calendar.fragments
|
package com.simplemobiletools.calendar.fragments
|
||||||
|
|
||||||
import android.support.v4.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
|
|
||||||
abstract class MyFragmentHolder : Fragment() {
|
abstract class MyFragmentHolder : Fragment() {
|
||||||
abstract fun goToToday()
|
abstract fun goToToday()
|
||||||
|
@@ -5,17 +5,19 @@ import android.content.res.Resources
|
|||||||
import android.graphics.Rect
|
import android.graphics.Rect
|
||||||
import android.graphics.drawable.ColorDrawable
|
import android.graphics.drawable.ColorDrawable
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v4.app.Fragment
|
|
||||||
import android.util.SparseIntArray
|
import android.util.SparseIntArray
|
||||||
import android.view.*
|
import android.view.LayoutInflater
|
||||||
|
import android.view.MotionEvent
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import android.widget.RelativeLayout
|
import android.widget.RelativeLayout
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.activities.EventActivity
|
import com.simplemobiletools.calendar.activities.EventActivity
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
import com.simplemobiletools.calendar.extensions.config
|
||||||
import com.simplemobiletools.calendar.extensions.dbHelper
|
import com.simplemobiletools.calendar.extensions.dbHelper
|
||||||
import com.simplemobiletools.calendar.extensions.getFilteredEvents
|
|
||||||
import com.simplemobiletools.calendar.extensions.seconds
|
import com.simplemobiletools.calendar.extensions.seconds
|
||||||
import com.simplemobiletools.calendar.helpers.*
|
import com.simplemobiletools.calendar.helpers.*
|
||||||
import com.simplemobiletools.calendar.helpers.Formatter
|
import com.simplemobiletools.calendar.helpers.Formatter
|
||||||
@@ -61,6 +63,7 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
lateinit var mScrollView: MyScrollView
|
lateinit var mScrollView: MyScrollView
|
||||||
lateinit var mCalendar: WeeklyCalendarImpl
|
lateinit var mCalendar: WeeklyCalendarImpl
|
||||||
lateinit var mRes: Resources
|
lateinit var mRes: Resources
|
||||||
|
lateinit var mConfig: Config
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
@@ -68,12 +71,13 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
it.map { eventTypeColors.put(it.id, it.color) }
|
it.map { eventTypeColors.put(it.id, it.color) }
|
||||||
}
|
}
|
||||||
|
|
||||||
mRowHeight = context!!.resources.getDimension(R.dimen.weekly_view_row_height)
|
mRes = context!!.resources
|
||||||
minScrollY = (mRowHeight * context!!.config.startWeeklyAt).toInt()
|
mConfig = context!!.config
|
||||||
|
mRowHeight = mRes.getDimension(R.dimen.weekly_view_row_height)
|
||||||
|
minScrollY = (mRowHeight * mConfig.startWeeklyAt).toInt()
|
||||||
mWeekTimestamp = arguments!!.getInt(WEEK_START_TIMESTAMP)
|
mWeekTimestamp = arguments!!.getInt(WEEK_START_TIMESTAMP)
|
||||||
dimPastEvents = context!!.config.dimPastEvents
|
dimPastEvents = mConfig.dimPastEvents
|
||||||
primaryColor = context!!.getAdjustedPrimaryColor()
|
primaryColor = context!!.getAdjustedPrimaryColor()
|
||||||
mRes = resources
|
|
||||||
allDayRows.add(HashSet())
|
allDayRows.add(HashSet())
|
||||||
mCalendar = WeeklyCalendarImpl(this, context!!)
|
mCalendar = WeeklyCalendarImpl(this, context!!)
|
||||||
}
|
}
|
||||||
@@ -97,11 +101,6 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
return mView
|
return mView
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPause() {
|
|
||||||
super.onPause()
|
|
||||||
wasExtraHeightAdded = true
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
setupDayLabels()
|
setupDayLabels()
|
||||||
@@ -112,8 +111,8 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
return@onGlobalLayout
|
return@onGlobalLayout
|
||||||
}
|
}
|
||||||
|
|
||||||
minScrollY = (mRowHeight * context!!.config.startWeeklyAt).toInt()
|
minScrollY = (mRowHeight * mConfig.startWeeklyAt).toInt()
|
||||||
maxScrollY = (mRowHeight * context!!.config.endWeeklyAt).toInt()
|
maxScrollY = (mRowHeight * mConfig.endWeeklyAt).toInt()
|
||||||
|
|
||||||
val bounds = Rect()
|
val bounds = Rect()
|
||||||
week_events_holder.getGlobalVisibleRect(bounds)
|
week_events_holder.getGlobalVisibleRect(bounds)
|
||||||
@@ -125,6 +124,16 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onPause() {
|
||||||
|
super.onPause()
|
||||||
|
wasExtraHeightAdded = true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onDestroyView() {
|
||||||
|
super.onDestroyView()
|
||||||
|
mWasDestroyed = true
|
||||||
|
}
|
||||||
|
|
||||||
override fun setMenuVisibility(menuVisible: Boolean) {
|
override fun setMenuVisibility(menuVisible: Boolean) {
|
||||||
super.setMenuVisibility(menuVisible)
|
super.setMenuVisibility(menuVisible)
|
||||||
isFragmentVisible = menuVisible
|
isFragmentVisible = menuVisible
|
||||||
@@ -140,11 +149,11 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
|
|
||||||
private fun setupDayLabels() {
|
private fun setupDayLabels() {
|
||||||
var curDay = Formatter.getDateTimeFromTS(mWeekTimestamp)
|
var curDay = Formatter.getDateTimeFromTS(mWeekTimestamp)
|
||||||
val textColor = context!!.config.textColor
|
val textColor = mConfig.textColor
|
||||||
val todayCode = Formatter.getDayCodeFromDateTime(DateTime())
|
val todayCode = Formatter.getDayCodeFromDateTime(DateTime())
|
||||||
for (i in 0..6) {
|
for (i in 0..6) {
|
||||||
val dayCode = Formatter.getDayCodeFromDateTime(curDay)
|
val dayCode = Formatter.getDayCodeFromDateTime(curDay)
|
||||||
val dayLetters = mRes.getStringArray(R.array.week_day_letters).toList() as ArrayList<String>
|
val dayLetters = mRes.getStringArray(R.array.week_day_letters).toMutableList() as ArrayList<String>
|
||||||
val dayLetter = dayLetters[curDay.dayOfWeek - 1]
|
val dayLetter = dayLetters[curDay.dayOfWeek - 1]
|
||||||
|
|
||||||
mView.findViewById<TextView>(mRes.getIdentifier("week_day_label_$i", "id", context!!.packageName)).apply {
|
mView.findViewById<TextView>(mRes.getIdentifier("week_day_label_$i", "id", context!!.packageName)).apply {
|
||||||
@@ -187,7 +196,6 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
selectedGrid?.animation?.cancel()
|
selectedGrid?.animation?.cancel()
|
||||||
selectedGrid?.beGone()
|
selectedGrid?.beGone()
|
||||||
|
|
||||||
//val rowHeight = resources.getDimension(R.dimen.weekly_view_row_height)
|
|
||||||
val hour = (event.y / mRowHeight).toInt()
|
val hour = (event.y / mRowHeight).toInt()
|
||||||
selectedGrid = (inflater.inflate(R.layout.week_grid_item, null, false) as ImageView).apply {
|
selectedGrid = (inflater.inflate(R.layout.week_grid_item, null, false) as ImageView).apply {
|
||||||
view.addView(this)
|
view.addView(this)
|
||||||
@@ -215,25 +223,13 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun updateWeeklyCalendar(events: ArrayList<Event>) {
|
override fun updateWeeklyCalendar(events: ArrayList<Event>) {
|
||||||
if (context == null) {
|
val newHash = events.hashCode()
|
||||||
return
|
if (newHash == lastHash || mWasDestroyed || context == null) {
|
||||||
}
|
|
||||||
|
|
||||||
val newEvents = context!!.getFilteredEvents(events)
|
|
||||||
val newHash = newEvents.hashCode()
|
|
||||||
if (newHash == lastHash) {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
lastHash = newHash
|
lastHash = newHash
|
||||||
this.events = newEvents
|
this.events = events
|
||||||
updateEvents()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun updateEvents() {
|
|
||||||
if (mWasDestroyed) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
activity!!.runOnUiThread {
|
activity!!.runOnUiThread {
|
||||||
if (context != null && activity != null && isAdded) {
|
if (context != null && activity != null && isAdded) {
|
||||||
@@ -256,7 +252,7 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
val minimalHeight = mRes.getDimension(R.dimen.weekly_view_minimal_event_height).toInt()
|
val minimalHeight = mRes.getDimension(R.dimen.weekly_view_minimal_event_height).toInt()
|
||||||
|
|
||||||
var hadAllDayEvent = false
|
var hadAllDayEvent = false
|
||||||
val replaceDescription = context!!.config.replaceDescription
|
val replaceDescription = mConfig.replaceDescription
|
||||||
val sorted = events.sortedWith(compareBy({ it.startTS }, { it.endTS }, { it.title }, { if (replaceDescription) it.location else it.description }))
|
val sorted = events.sortedWith(compareBy({ it.startTS }, { it.endTS }, { it.title }, { if (replaceDescription) it.location else it.description }))
|
||||||
for (event in sorted) {
|
for (event in sorted) {
|
||||||
if (event.getIsAllDay() || Formatter.getDayCodeFromTS(event.startTS) != Formatter.getDayCodeFromTS(event.endTS)) {
|
if (event.getIsAllDay() || Formatter.getDayCodeFromTS(event.startTS) != Formatter.getDayCodeFromTS(event.endTS)) {
|
||||||
@@ -265,7 +261,7 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
} else {
|
} else {
|
||||||
val startDateTime = Formatter.getDateTimeFromTS(event.startTS)
|
val startDateTime = Formatter.getDateTimeFromTS(event.startTS)
|
||||||
val endDateTime = Formatter.getDateTimeFromTS(event.endTS)
|
val endDateTime = Formatter.getDateTimeFromTS(event.endTS)
|
||||||
val dayOfWeek = startDateTime.plusDays(if (context!!.config.isSundayFirst) 1 else 0).dayOfWeek - 1
|
val dayOfWeek = startDateTime.plusDays(if (mConfig.isSundayFirst) 1 else 0).dayOfWeek - 1
|
||||||
val layout = getColumnWithId(dayOfWeek)
|
val layout = getColumnWithId(dayOfWeek)
|
||||||
|
|
||||||
val startMinutes = startDateTime.minuteOfDay
|
val startMinutes = startDateTime.minuteOfDay
|
||||||
@@ -320,7 +316,7 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
applyColorFilter(primaryColor)
|
applyColorFilter(primaryColor)
|
||||||
mView.week_events_holder.addView(this, 0)
|
mView.week_events_holder.addView(this, 0)
|
||||||
val extraWidth = (todayColumn.width * 0.3).toInt()
|
val extraWidth = (todayColumn.width * 0.3).toInt()
|
||||||
val markerHeight = resources.getDimension(R.dimen.weekly_view_now_height).toInt()
|
val markerHeight = mRes.getDimension(R.dimen.weekly_view_now_height).toInt()
|
||||||
(layoutParams as RelativeLayout.LayoutParams).apply {
|
(layoutParams as RelativeLayout.LayoutParams).apply {
|
||||||
width = todayColumn.width + extraWidth
|
width = todayColumn.width + extraWidth
|
||||||
height = markerHeight
|
height = markerHeight
|
||||||
@@ -332,14 +328,11 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun checkTopHolderHeight() {
|
private fun checkTopHolderHeight() {
|
||||||
mView.week_top_holder.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
|
mView.week_top_holder.onGlobalLayout {
|
||||||
override fun onGlobalLayout() {
|
if (isFragmentVisible && activity != null && !mWasDestroyed) {
|
||||||
mView.week_top_holder.viewTreeObserver.removeOnGlobalLayoutListener(this)
|
mListener?.updateHoursTopMargin(mView.week_top_holder.height)
|
||||||
if (isFragmentVisible && activity != null) {
|
|
||||||
mListener?.updateHoursTopMargin(mView.week_top_holder.height)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addAllDayEvent(event: Event) {
|
private fun addAllDayEvent(event: Event) {
|
||||||
@@ -363,7 +356,7 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
val daysCnt = Days.daysBetween(Formatter.getDateTimeFromTS(minTS).toLocalDate(), Formatter.getDateTimeFromTS(maxTS).toLocalDate()).days
|
val daysCnt = Days.daysBetween(Formatter.getDateTimeFromTS(minTS).toLocalDate(), Formatter.getDateTimeFromTS(maxTS).toLocalDate()).days
|
||||||
|
|
||||||
val startDateTimeInWeek = Formatter.getDateTimeFromTS(minTS)
|
val startDateTimeInWeek = Formatter.getDateTimeFromTS(minTS)
|
||||||
val firstDayIndex = (startDateTimeInWeek.dayOfWeek - if (context!!.config.isSundayFirst) 0 else 1) % 7
|
val firstDayIndex = (startDateTimeInWeek.dayOfWeek - if (mConfig.isSundayFirst) 0 else 1) % 7
|
||||||
var doesEventFit: Boolean
|
var doesEventFit: Boolean
|
||||||
val cnt = allDayRows.size - 1
|
val cnt = allDayRows.size - 1
|
||||||
var wasEventHandled = false
|
var wasEventHandled = false
|
||||||
@@ -417,12 +410,8 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun calculateExtraHeight() {
|
private fun calculateExtraHeight() {
|
||||||
mView.week_top_holder.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
|
mView.week_top_holder.onGlobalLayout {
|
||||||
override fun onGlobalLayout() {
|
if (activity != null && !mWasDestroyed) {
|
||||||
if (activity == null)
|
|
||||||
return
|
|
||||||
|
|
||||||
mView.week_top_holder.viewTreeObserver.removeOnGlobalLayoutListener(this)
|
|
||||||
if (isFragmentVisible) {
|
if (isFragmentVisible) {
|
||||||
mListener?.updateHoursTopMargin(mView.week_top_holder.height)
|
mListener?.updateHoursTopMargin(mView.week_top_holder.height)
|
||||||
}
|
}
|
||||||
@@ -432,12 +421,7 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
wasExtraHeightAdded = true
|
wasExtraHeightAdded = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
}
|
|
||||||
|
|
||||||
override fun onDestroyView() {
|
|
||||||
super.onDestroyView()
|
|
||||||
mWasDestroyed = true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getColumnWithId(id: Int) = mView.findViewById<ViewGroup>(mRes.getIdentifier("week_column_$id", "id", context!!.packageName))
|
private fun getColumnWithId(id: Int) = mView.findViewById<ViewGroup>(mRes.getIdentifier("week_column_$id", "id", context!!.packageName))
|
||||||
|
@@ -2,11 +2,11 @@ package com.simplemobiletools.calendar.fragments
|
|||||||
|
|
||||||
import android.graphics.drawable.ColorDrawable
|
import android.graphics.drawable.ColorDrawable
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v4.view.ViewPager
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
|
import androidx.viewpager.widget.ViewPager
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.activities.MainActivity
|
import com.simplemobiletools.calendar.activities.MainActivity
|
||||||
import com.simplemobiletools.calendar.adapters.MyWeekPagerAdapter
|
import com.simplemobiletools.calendar.adapters.MyWeekPagerAdapter
|
||||||
@@ -67,11 +67,9 @@ class WeekFragmentsHolder : MyFragmentHolder(), WeekFragmentListener {
|
|||||||
weekHolder!!.week_view_view_pager.apply {
|
weekHolder!!.week_view_view_pager.apply {
|
||||||
adapter = weeklyAdapter
|
adapter = weeklyAdapter
|
||||||
addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
|
addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
|
||||||
override fun onPageScrollStateChanged(state: Int) {
|
override fun onPageScrollStateChanged(state: Int) {}
|
||||||
}
|
|
||||||
|
|
||||||
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
|
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {}
|
||||||
}
|
|
||||||
|
|
||||||
override fun onPageSelected(position: Int) {
|
override fun onPageSelected(position: Int) {
|
||||||
currentWeekTS = weekTSs[position]
|
currentWeekTS = weekTSs[position]
|
||||||
|
@@ -2,7 +2,7 @@ package com.simplemobiletools.calendar.fragments
|
|||||||
|
|
||||||
import android.content.res.Resources
|
import android.content.res.Resources
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v4.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import android.util.SparseArray
|
import android.util.SparseArray
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
@@ -2,7 +2,7 @@ package com.simplemobiletools.calendar.fragments
|
|||||||
|
|
||||||
import android.graphics.drawable.ColorDrawable
|
import android.graphics.drawable.ColorDrawable
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v4.view.ViewPager
|
import androidx.viewpager.widget.ViewPager
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
@@ -30,7 +30,6 @@ class CalDAVHandler(val context: Context) {
|
|||||||
title = calendar.displayName
|
title = calendar.displayName
|
||||||
caldavDisplayName = calendar.displayName
|
caldavDisplayName = calendar.displayName
|
||||||
caldavEmail = calendar.accountName
|
caldavEmail = calendar.accountName
|
||||||
color = calendar.color
|
|
||||||
context.dbHelper.updateLocalEventType(this)
|
context.dbHelper.updateLocalEventType(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,14 +80,13 @@ class CalDAVHandler(val context: Context) {
|
|||||||
return calendars
|
return calendars
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateCalDAVCalendar(eventType: EventType): Boolean {
|
fun updateCalDAVCalendar(eventType: EventType) {
|
||||||
val uri = CalendarContract.Calendars.CONTENT_URI
|
val uri = CalendarContract.Calendars.CONTENT_URI
|
||||||
val values = fillCalendarContentValues(eventType)
|
val values = fillCalendarContentValues(eventType)
|
||||||
val newUri = ContentUris.withAppendedId(uri, eventType.caldavCalendarId.toLong())
|
val newUri = ContentUris.withAppendedId(uri, eventType.caldavCalendarId.toLong())
|
||||||
return try {
|
try {
|
||||||
context.contentResolver.update(newUri, values, null, null) == 1
|
context.contentResolver.update(newUri, values, null, null)
|
||||||
} catch (e: IllegalArgumentException) {
|
} catch (e: IllegalArgumentException) {
|
||||||
false
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,53 +117,6 @@ class CalDAVHandler(val context: Context) {
|
|||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
|
|
||||||
// it doesnt work properly, needs better SyncAdapter handling
|
|
||||||
private fun insertNewColor(eventType: EventType): Int {
|
|
||||||
val maxId = getMaxColorId(eventType) + 1
|
|
||||||
|
|
||||||
val values = ContentValues().apply {
|
|
||||||
put(CalendarContract.Colors.COLOR_KEY, maxId)
|
|
||||||
put(CalendarContract.Colors.COLOR, eventType.color)
|
|
||||||
put(CalendarContract.Colors.ACCOUNT_NAME, eventType.caldavEmail)
|
|
||||||
put(CalendarContract.Colors.ACCOUNT_TYPE, "com.google")
|
|
||||||
put(CalendarContract.Colors.COLOR_TYPE, CalendarContract.Colors.TYPE_CALENDAR)
|
|
||||||
}
|
|
||||||
|
|
||||||
val uri = CalendarContract.Colors.CONTENT_URI.buildUpon()
|
|
||||||
.appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
|
|
||||||
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, eventType.caldavEmail)
|
|
||||||
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, "com.google")
|
|
||||||
.build()
|
|
||||||
|
|
||||||
return if (context.contentResolver.insert(uri, values) != null) {
|
|
||||||
maxId
|
|
||||||
} else {
|
|
||||||
0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getMaxColorId(eventType: EventType): Int {
|
|
||||||
val uri = CalendarContract.Colors.CONTENT_URI
|
|
||||||
val projection = arrayOf(CalendarContract.Colors.COLOR_KEY, CalendarContract.Colors.COLOR)
|
|
||||||
val selection = "${CalendarContract.Colors.COLOR_TYPE} = ? AND ${CalendarContract.Colors.ACCOUNT_NAME} = ?"
|
|
||||||
val selectionArgs = arrayOf(CalendarContract.Colors.TYPE_CALENDAR.toString(), eventType.caldavEmail)
|
|
||||||
var maxId = 1
|
|
||||||
|
|
||||||
var cursor: Cursor? = null
|
|
||||||
try {
|
|
||||||
cursor = context.contentResolver.query(uri, projection, selection, selectionArgs, null)
|
|
||||||
if (cursor != null && cursor.moveToFirst()) {
|
|
||||||
do {
|
|
||||||
maxId = Math.max(maxId, cursor.getIntValue(CalendarContract.Colors.COLOR_KEY))
|
|
||||||
} while (cursor.moveToNext())
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
cursor?.close()
|
|
||||||
}
|
|
||||||
|
|
||||||
return maxId
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getAvailableCalDAVCalendarColors(eventType: EventType): ArrayList<Int> {
|
fun getAvailableCalDAVCalendarColors(eventType: EventType): ArrayList<Int> {
|
||||||
val colors = SparseIntArray()
|
val colors = SparseIntArray()
|
||||||
val uri = CalendarContract.Colors.CONTENT_URI
|
val uri = CalendarContract.Colors.CONTENT_URI
|
||||||
@@ -309,9 +260,7 @@ class CalDAVHandler(val context: Context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
eventIdsToDelete.forEach {
|
context.dbHelper.deleteEvents(eventIdsToDelete.toTypedArray(), false)
|
||||||
context.dbHelper.deleteEvents(eventIdsToDelete.toTypedArray(), false)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun insertCalDAVEvent(event: Event) {
|
fun insertCalDAVEvent(event: Event) {
|
||||||
|
@@ -52,7 +52,7 @@ class Config(context: Context) : BaseConfig(context) {
|
|||||||
get() = prefs.getInt(VIEW, MONTHLY_VIEW)
|
get() = prefs.getInt(VIEW, MONTHLY_VIEW)
|
||||||
set(view) = prefs.edit().putInt(VIEW, view).apply()
|
set(view) = prefs.edit().putInt(VIEW, view).apply()
|
||||||
|
|
||||||
var lastEventReminderMinutes: Int
|
var lastEventReminderMinutes1: Int
|
||||||
get() = prefs.getInt(LAST_EVENT_REMINDER_MINUTES, 10)
|
get() = prefs.getInt(LAST_EVENT_REMINDER_MINUTES, 10)
|
||||||
set(lastEventReminderMinutes) = prefs.edit().putInt(LAST_EVENT_REMINDER_MINUTES, lastEventReminderMinutes).apply()
|
set(lastEventReminderMinutes) = prefs.edit().putInt(LAST_EVENT_REMINDER_MINUTES, lastEventReminderMinutes).apply()
|
||||||
|
|
||||||
@@ -76,6 +76,10 @@ class Config(context: Context) : BaseConfig(context) {
|
|||||||
get() = prefs.getInt(FONT_SIZE, FONT_SIZE_MEDIUM)
|
get() = prefs.getInt(FONT_SIZE, FONT_SIZE_MEDIUM)
|
||||||
set(size) = prefs.edit().putInt(FONT_SIZE, size).apply()
|
set(size) = prefs.edit().putInt(FONT_SIZE, size).apply()
|
||||||
|
|
||||||
|
var listWidgetViewToOpen: Int
|
||||||
|
get() = prefs.getInt(LIST_WIDGET_VIEW_TO_OPEN, DAILY_VIEW)
|
||||||
|
set(viewToOpenFromListWidget) = prefs.edit().putInt(LIST_WIDGET_VIEW_TO_OPEN, viewToOpenFromListWidget).apply()
|
||||||
|
|
||||||
var caldavSync: Boolean
|
var caldavSync: Boolean
|
||||||
get() = prefs.getBoolean(CALDAV_SYNC, false)
|
get() = prefs.getBoolean(CALDAV_SYNC, false)
|
||||||
set(caldavSync) {
|
set(caldavSync) {
|
||||||
@@ -158,4 +162,8 @@ class Config(context: Context) : BaseConfig(context) {
|
|||||||
var defaultReminder3: Int
|
var defaultReminder3: Int
|
||||||
get() = prefs.getInt(DEFAULT_REMINDER_3, REMINDER_OFF)
|
get() = prefs.getInt(DEFAULT_REMINDER_3, REMINDER_OFF)
|
||||||
set(defaultReminder3) = prefs.edit().putInt(DEFAULT_REMINDER_3, defaultReminder3).apply()
|
set(defaultReminder3) = prefs.edit().putInt(DEFAULT_REMINDER_3, defaultReminder3).apply()
|
||||||
|
|
||||||
|
var pullToRefresh: Boolean
|
||||||
|
get() = prefs.getBoolean(PULL_TO_REFRESH, false)
|
||||||
|
set(pullToRefresh) = prefs.edit().putBoolean(PULL_TO_REFRESH, pullToRefresh).apply()
|
||||||
}
|
}
|
||||||
|
@@ -14,13 +14,14 @@ const val WEEK_START_TIMESTAMP = "week_start_timestamp"
|
|||||||
const val NEW_EVENT_SET_HOUR_DURATION = "new_event_set_hour_duration"
|
const val NEW_EVENT_SET_HOUR_DURATION = "new_event_set_hour_duration"
|
||||||
const val WEEK_START_DATE_TIME = "week_start_date_time"
|
const val WEEK_START_DATE_TIME = "week_start_date_time"
|
||||||
const val CALDAV = "Caldav"
|
const val CALDAV = "Caldav"
|
||||||
const val OPEN_MONTH = "open_month"
|
const val VIEW_TO_OPEN = "view_to_open"
|
||||||
|
|
||||||
const val MONTHLY_VIEW = 1
|
const val MONTHLY_VIEW = 1
|
||||||
const val YEARLY_VIEW = 2
|
const val YEARLY_VIEW = 2
|
||||||
const val EVENTS_LIST_VIEW = 3
|
const val EVENTS_LIST_VIEW = 3
|
||||||
const val WEEKLY_VIEW = 4
|
const val WEEKLY_VIEW = 4
|
||||||
const val DAILY_VIEW = 5
|
const val DAILY_VIEW = 5
|
||||||
|
const val LAST_VIEW = 6
|
||||||
|
|
||||||
const val REMINDER_OFF = -1
|
const val REMINDER_OFF = -1
|
||||||
|
|
||||||
@@ -46,6 +47,7 @@ const val LAST_EVENT_REMINDER_MINUTES_2 = "reminder_minutes_2"
|
|||||||
const val LAST_EVENT_REMINDER_MINUTES_3 = "reminder_minutes_3"
|
const val LAST_EVENT_REMINDER_MINUTES_3 = "reminder_minutes_3"
|
||||||
const val DISPLAY_EVENT_TYPES = "display_event_types"
|
const val DISPLAY_EVENT_TYPES = "display_event_types"
|
||||||
const val FONT_SIZE = "font_size"
|
const val FONT_SIZE = "font_size"
|
||||||
|
const val LIST_WIDGET_VIEW_TO_OPEN = "list_widget_view_to_open"
|
||||||
const val CALDAV_SYNC = "caldav_sync"
|
const val CALDAV_SYNC = "caldav_sync"
|
||||||
const val CALDAV_SYNCED_CALENDAR_IDS = "caldav_synced_calendar_ids"
|
const val CALDAV_SYNCED_CALENDAR_IDS = "caldav_synced_calendar_ids"
|
||||||
const val LAST_USED_CALDAV_CALENDAR = "last_used_caldav_calendar"
|
const val LAST_USED_CALDAV_CALENDAR = "last_used_caldav_calendar"
|
||||||
@@ -62,6 +64,7 @@ const val USE_PREVIOUS_EVENT_REMINDERS = "use_previous_event_reminders"
|
|||||||
const val DEFAULT_REMINDER_1 = "default_reminder_1"
|
const val DEFAULT_REMINDER_1 = "default_reminder_1"
|
||||||
const val DEFAULT_REMINDER_2 = "default_reminder_2"
|
const val DEFAULT_REMINDER_2 = "default_reminder_2"
|
||||||
const val DEFAULT_REMINDER_3 = "default_reminder_3"
|
const val DEFAULT_REMINDER_3 = "default_reminder_3"
|
||||||
|
const val PULL_TO_REFRESH = "pull_to_refresh"
|
||||||
|
|
||||||
// repeat_rule for monthly and yearly repetition
|
// repeat_rule for monthly and yearly repetition
|
||||||
const val REPEAT_SAME_DAY = 1 // i.e. 25th every month, or 3rd june (if yearly repetition)
|
const val REPEAT_SAME_DAY = 1 // i.e. 25th every month, or 3rd june (if yearly repetition)
|
||||||
|
@@ -320,15 +320,11 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun updateEventType(eventType: EventType): Int {
|
fun updateEventType(eventType: EventType): Int {
|
||||||
return if (eventType.caldavCalendarId != 0) {
|
if (eventType.caldavCalendarId != 0) {
|
||||||
if (CalDAVHandler(context).updateCalDAVCalendar(eventType)) {
|
CalDAVHandler(context).updateCalDAVCalendar(eventType)
|
||||||
updateLocalEventType(eventType)
|
|
||||||
} else {
|
|
||||||
-1
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
updateLocalEventType(eventType)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return updateLocalEventType(eventType)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateLocalEventType(eventType: EventType): Int {
|
fun updateLocalEventType(eventType: EventType): Int {
|
||||||
@@ -573,7 +569,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun deleteEventTypes(eventTypes: ArrayList<EventType>, deleteEvents: Boolean, callback: (deletedCnt: Int) -> Unit) {
|
fun deleteEventTypes(eventTypes: ArrayList<EventType>, deleteEvents: Boolean, callback: (deletedCnt: Int) -> Unit) {
|
||||||
var deleteIds = eventTypes.filter { it.caldavCalendarId == 0 }.map { it.id }
|
var deleteIds = eventTypes.asSequence().filter { it.caldavCalendarId == 0 }.map { it.id }.toList()
|
||||||
deleteIds = deleteIds.filter { it != DBHelper.REGULAR_EVENT_TYPE_ID } as ArrayList<Int>
|
deleteIds = deleteIds.filter { it != DBHelper.REGULAR_EVENT_TYPE_ID } as ArrayList<Int>
|
||||||
|
|
||||||
val deletedSet = HashSet<String>()
|
val deletedSet = HashSet<String>()
|
||||||
@@ -606,7 +602,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
|||||||
val selectionArgs = arrayOf(eventTypeId.toString())
|
val selectionArgs = arrayOf(eventTypeId.toString())
|
||||||
val cursor = getEventsCursor(selection, selectionArgs)
|
val cursor = getEventsCursor(selection, selectionArgs)
|
||||||
val events = fillEvents(cursor)
|
val events = fillEvents(cursor)
|
||||||
val eventIDs = Array(events.size, { i -> (events[i].id.toString()) })
|
val eventIDs = Array(events.size) { i -> (events[i].id.toString()) }
|
||||||
deleteEvents(eventIDs, true)
|
deleteEvents(eventIDs, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -681,37 +677,58 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
|||||||
}.start()
|
}.start()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getEvents(fromTS: Int, toTS: Int, eventId: Int = -1, callback: (events: ArrayList<Event>) -> Unit) {
|
fun getEvents(fromTS: Int, toTS: Int, eventId: Int = -1, applyTypeFilter: Boolean = false, callback: (events: ArrayList<Event>) -> Unit) {
|
||||||
Thread {
|
Thread {
|
||||||
getEventsInBackground(fromTS, toTS, eventId, callback)
|
getEventsInBackground(fromTS, toTS, eventId, applyTypeFilter, callback)
|
||||||
}.start()
|
}.start()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getEventsInBackground(fromTS: Int, toTS: Int, eventId: Int = -1, callback: (events: ArrayList<Event>) -> Unit) {
|
fun getEventsInBackground(fromTS: Int, toTS: Int, eventId: Int = -1, applyTypeFilter: Boolean, callback: (events: ArrayList<Event>) -> Unit) {
|
||||||
val events = ArrayList<Event>()
|
var events = ArrayList<Event>()
|
||||||
|
|
||||||
var selection = "$COL_START_TS <= ? AND $COL_END_TS >= ? AND $COL_REPEAT_INTERVAL IS NULL AND $COL_START_TS != 0"
|
var selection = "$COL_START_TS <= ? AND $COL_END_TS >= ? AND $COL_REPEAT_INTERVAL IS NULL AND $COL_START_TS != 0"
|
||||||
if (eventId != -1)
|
if (eventId != -1)
|
||||||
selection += " AND $MAIN_TABLE_NAME.$COL_ID = $eventId"
|
selection += " AND $MAIN_TABLE_NAME.$COL_ID = $eventId"
|
||||||
|
|
||||||
|
if (applyTypeFilter) {
|
||||||
|
val displayEventTypes = context.config.displayEventTypes
|
||||||
|
if (displayEventTypes.isNotEmpty()) {
|
||||||
|
val types = TextUtils.join(",", displayEventTypes)
|
||||||
|
selection += " AND $COL_EVENT_TYPE IN ($types)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val selectionArgs = arrayOf(toTS.toString(), fromTS.toString())
|
val selectionArgs = arrayOf(toTS.toString(), fromTS.toString())
|
||||||
val cursor = getEventsCursor(selection, selectionArgs)
|
val cursor = getEventsCursor(selection, selectionArgs)
|
||||||
events.addAll(fillEvents(cursor))
|
events.addAll(fillEvents(cursor))
|
||||||
|
|
||||||
events.addAll(getRepeatableEventsFor(fromTS, toTS, eventId))
|
events.addAll(getRepeatableEventsFor(fromTS, toTS, eventId, applyTypeFilter))
|
||||||
|
|
||||||
events.addAll(getAllDayEvents(fromTS, eventId))
|
events.addAll(getAllDayEvents(fromTS, eventId, applyTypeFilter))
|
||||||
|
|
||||||
val filtered = events.distinct().filterNot { it.ignoreEventOccurrences.contains(Formatter.getDayCodeFromTS(it.startTS).toInt()) } as ArrayList<Event>
|
events = events
|
||||||
callback(filtered)
|
.asSequence()
|
||||||
|
.distinct()
|
||||||
|
.filterNot { it.ignoreEventOccurrences.contains(Formatter.getDayCodeFromTS(it.startTS).toInt()) }
|
||||||
|
.toMutableList() as ArrayList<Event>
|
||||||
|
callback(events)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getRepeatableEventsFor(fromTS: Int, toTS: Int, eventId: Int = -1): List<Event> {
|
fun getRepeatableEventsFor(fromTS: Int, toTS: Int, eventId: Int = -1, applyTypeFilter: Boolean = false): List<Event> {
|
||||||
val newEvents = ArrayList<Event>()
|
val newEvents = ArrayList<Event>()
|
||||||
|
|
||||||
// get repeatable events
|
|
||||||
var selection = "$COL_REPEAT_INTERVAL != 0 AND $COL_START_TS <= $toTS AND $COL_START_TS != 0"
|
var selection = "$COL_REPEAT_INTERVAL != 0 AND $COL_START_TS <= $toTS AND $COL_START_TS != 0"
|
||||||
if (eventId != -1)
|
if (eventId != -1)
|
||||||
selection += " AND $MAIN_TABLE_NAME.$COL_ID = $eventId"
|
selection += " AND $MAIN_TABLE_NAME.$COL_ID = $eventId"
|
||||||
|
|
||||||
|
if (applyTypeFilter) {
|
||||||
|
val displayEventTypes = context.config.displayEventTypes
|
||||||
|
if (displayEventTypes.isNotEmpty()) {
|
||||||
|
val types = TextUtils.join(",", displayEventTypes)
|
||||||
|
selection += " AND $COL_EVENT_TYPE IN ($types)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val events = getEvents(selection)
|
val events = getEvents(selection)
|
||||||
val startTimes = SparseIntArray(events.size)
|
val startTimes = SparseIntArray(events.size)
|
||||||
events.forEach {
|
events.forEach {
|
||||||
@@ -792,19 +809,27 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
|||||||
return events
|
return events
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getAllDayEvents(fromTS: Int, eventId: Int = -1): List<Event> {
|
private fun getAllDayEvents(fromTS: Int, eventId: Int = -1, applyTypeFilter: Boolean = false): List<Event> {
|
||||||
val events = ArrayList<Event>()
|
val events = ArrayList<Event>()
|
||||||
var selection = "($COL_FLAGS & $FLAG_ALL_DAY) != 0"
|
var selection = "($COL_FLAGS & $FLAG_ALL_DAY) != 0"
|
||||||
if (eventId != -1)
|
if (eventId != -1)
|
||||||
selection += " AND $MAIN_TABLE_NAME.$COL_ID = $eventId"
|
selection += " AND $MAIN_TABLE_NAME.$COL_ID = $eventId"
|
||||||
|
|
||||||
|
if (applyTypeFilter) {
|
||||||
|
val displayEventTypes = context.config.displayEventTypes
|
||||||
|
if (displayEventTypes.isNotEmpty()) {
|
||||||
|
val types = TextUtils.join(",", displayEventTypes)
|
||||||
|
selection += " AND $COL_EVENT_TYPE IN ($types)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val dayCode = Formatter.getDayCodeFromTS(fromTS)
|
val dayCode = Formatter.getDayCodeFromTS(fromTS)
|
||||||
val cursor = getEventsCursor(selection)
|
val cursor = getEventsCursor(selection)
|
||||||
events.addAll(fillEvents(cursor).filter { dayCode == Formatter.getDayCodeFromTS(it.startTS) })
|
events.addAll(fillEvents(cursor).filter { dayCode == Formatter.getDayCodeFromTS(it.startTS) })
|
||||||
return events
|
return events
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if its the proper week, for events repeating by x weeks
|
// check if its the proper week, for events repeating every x weeks
|
||||||
private fun isOnProperWeek(event: Event, startTimes: SparseIntArray): Boolean {
|
private fun isOnProperWeek(event: Event, startTimes: SparseIntArray): Boolean {
|
||||||
val initialWeekOfYear = Formatter.getDateTimeFromTS(startTimes[event.id]).weekOfWeekyear
|
val initialWeekOfYear = Formatter.getDateTimeFromTS(startTimes[event.id]).weekOfWeekyear
|
||||||
val currentWeekOfYear = Formatter.getDateTimeFromTS(event.startTS).weekOfWeekyear
|
val currentWeekOfYear = Formatter.getDateTimeFromTS(event.startTS).weekOfWeekyear
|
||||||
@@ -959,7 +984,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun getEventTypesSync(): ArrayList<EventType> {
|
fun getEventTypesSync(): ArrayList<EventType> {
|
||||||
val eventTypes = ArrayList<EventType>(4)
|
val eventTypes = ArrayList<EventType>()
|
||||||
val cols = arrayOf(COL_TYPE_ID, COL_TYPE_TITLE, COL_TYPE_COLOR, COL_TYPE_CALDAV_CALENDAR_ID, COL_TYPE_CALDAV_DISPLAY_NAME, COL_TYPE_CALDAV_EMAIL)
|
val cols = arrayOf(COL_TYPE_ID, COL_TYPE_TITLE, COL_TYPE_COLOR, COL_TYPE_CALDAV_CALENDAR_ID, COL_TYPE_CALDAV_DISPLAY_NAME, COL_TYPE_CALDAV_EMAIL)
|
||||||
var cursor: Cursor? = null
|
var cursor: Cursor? = null
|
||||||
try {
|
try {
|
||||||
|
@@ -15,7 +15,7 @@ object Formatter {
|
|||||||
const val TIME_PATTERN = "HHmmss"
|
const val TIME_PATTERN = "HHmmss"
|
||||||
private const val DAY_PATTERN = "d"
|
private const val DAY_PATTERN = "d"
|
||||||
private const val DAY_OF_WEEK_PATTERN = "EEE"
|
private const val DAY_OF_WEEK_PATTERN = "EEE"
|
||||||
private const val LONGEST_PATTERN = "MMMM dd YYYY (EEEE)"
|
private const val LONGEST_PATTERN = "MMMM d YYYY (EEEE)"
|
||||||
private const val PATTERN_TIME_12 = "hh:mm a"
|
private const val PATTERN_TIME_12 = "hh:mm a"
|
||||||
private const val PATTERN_TIME_24 = "HH:mm"
|
private const val PATTERN_TIME_24 = "HH:mm"
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@ object Formatter {
|
|||||||
val dateTime = getDateTimeFromCode(dayCode)
|
val dateTime = getDateTimeFromCode(dayCode)
|
||||||
val day = dateTime.toString(DAY_PATTERN)
|
val day = dateTime.toString(DAY_PATTERN)
|
||||||
val year = dateTime.toString(YEAR_PATTERN)
|
val year = dateTime.toString(YEAR_PATTERN)
|
||||||
val monthIndex = Integer.valueOf(dayCode.substring(4, 6))!!
|
val monthIndex = Integer.valueOf(dayCode.substring(4, 6))
|
||||||
var month = getMonthName(context, monthIndex)
|
var month = getMonthName(context, monthIndex)
|
||||||
if (shortMonth)
|
if (shortMonth)
|
||||||
month = month.substring(0, Math.min(month.length, 3))
|
month = month.substring(0, Math.min(month.length, 3))
|
||||||
|
@@ -140,8 +140,8 @@ class IcsImporter(val activity: SimpleActivity) {
|
|||||||
|
|
||||||
val eventType = eventTypes.firstOrNull { it.id == curEventTypeId }
|
val eventType = eventTypes.firstOrNull { it.id == curEventTypeId }
|
||||||
val source = if (calDAVCalendarId == 0 || eventType?.isSyncedEventType() == false) SOURCE_IMPORTED_ICS else "$CALDAV-$calDAVCalendarId"
|
val source = if (calDAVCalendarId == 0 || eventType?.isSyncedEventType() == false) SOURCE_IMPORTED_ICS else "$CALDAV-$calDAVCalendarId"
|
||||||
val event = Event(0, curStart, curEnd, curTitle, curDescription, curReminderMinutes.getOrElse(0, { -1 }),
|
val event = Event(0, curStart, curEnd, curTitle, curDescription, curReminderMinutes.getOrElse(0) { -1 },
|
||||||
curReminderMinutes.getOrElse(1, { -1 }), curReminderMinutes.getOrElse(2, { -1 }), curRepeatInterval,
|
curReminderMinutes.getOrElse(1) { -1 }, curReminderMinutes.getOrElse(2) { -1 }, curRepeatInterval,
|
||||||
curImportId, curFlags, curRepeatLimit, curRepeatRule, curEventTypeId, lastUpdated = curLastModified,
|
curImportId, curFlags, curRepeatLimit, curRepeatRule, curEventTypeId, lastUpdated = curLastModified,
|
||||||
source = source, location = curLocation)
|
source = source, location = curLocation)
|
||||||
|
|
||||||
|
@@ -3,7 +3,6 @@ package com.simplemobiletools.calendar.helpers
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
import com.simplemobiletools.calendar.extensions.config
|
||||||
import com.simplemobiletools.calendar.extensions.dbHelper
|
import com.simplemobiletools.calendar.extensions.dbHelper
|
||||||
import com.simplemobiletools.calendar.extensions.getFilteredEvents
|
|
||||||
import com.simplemobiletools.calendar.extensions.seconds
|
import com.simplemobiletools.calendar.extensions.seconds
|
||||||
import com.simplemobiletools.calendar.interfaces.MonthlyCalendar
|
import com.simplemobiletools.calendar.interfaces.MonthlyCalendar
|
||||||
import com.simplemobiletools.calendar.models.DayMonthly
|
import com.simplemobiletools.calendar.models.DayMonthly
|
||||||
@@ -12,22 +11,20 @@ import org.joda.time.DateTime
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.collections.ArrayList
|
import kotlin.collections.ArrayList
|
||||||
|
|
||||||
class MonthlyCalendarImpl(val mCallback: MonthlyCalendar, val mContext: Context) {
|
class MonthlyCalendarImpl(val callback: MonthlyCalendar, val context: Context) {
|
||||||
private val DAYS_CNT = 42
|
private val DAYS_CNT = 42
|
||||||
private val YEAR_PATTERN = "YYYY"
|
private val YEAR_PATTERN = "YYYY"
|
||||||
|
|
||||||
private val mToday: String = DateTime().toString(Formatter.DAYCODE_PATTERN)
|
private val mToday: String = DateTime().toString(Formatter.DAYCODE_PATTERN)
|
||||||
private var mEvents = ArrayList<Event>()
|
private var mEvents = ArrayList<Event>()
|
||||||
private var mFilterEventTypes = true
|
|
||||||
|
|
||||||
lateinit var mTargetDate: DateTime
|
lateinit var mTargetDate: DateTime
|
||||||
|
|
||||||
fun updateMonthlyCalendar(targetDate: DateTime, filterEventTypes: Boolean = true) {
|
fun updateMonthlyCalendar(targetDate: DateTime) {
|
||||||
mFilterEventTypes = filterEventTypes
|
|
||||||
mTargetDate = targetDate
|
mTargetDate = targetDate
|
||||||
val startTS = mTargetDate.minusDays(7).seconds()
|
val startTS = mTargetDate.minusDays(7).seconds()
|
||||||
val endTS = mTargetDate.plusDays(43).seconds()
|
val endTS = mTargetDate.plusDays(43).seconds()
|
||||||
mContext.dbHelper.getEvents(startTS, endTS) {
|
context.dbHelper.getEvents(startTS, endTS, applyTypeFilter = true) {
|
||||||
gotEvents(it)
|
gotEvents(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -40,7 +37,7 @@ class MonthlyCalendarImpl(val mCallback: MonthlyCalendar, val mContext: Context)
|
|||||||
val days = ArrayList<DayMonthly>(DAYS_CNT)
|
val days = ArrayList<DayMonthly>(DAYS_CNT)
|
||||||
val currMonthDays = mTargetDate.dayOfMonth().maximumValue
|
val currMonthDays = mTargetDate.dayOfMonth().maximumValue
|
||||||
var firstDayIndex = mTargetDate.withDayOfMonth(1).dayOfWeek
|
var firstDayIndex = mTargetDate.withDayOfMonth(1).dayOfWeek
|
||||||
if (!mContext.config.isSundayFirst)
|
if (!context.config.isSundayFirst)
|
||||||
firstDayIndex -= 1
|
firstDayIndex -= 1
|
||||||
val prevMonthDays = mTargetDate.minusMonths(1).dayOfMonth().maximumValue
|
val prevMonthDays = mTargetDate.minusMonths(1).dayOfMonth().maximumValue
|
||||||
|
|
||||||
@@ -79,13 +76,13 @@ class MonthlyCalendarImpl(val mCallback: MonthlyCalendar, val mContext: Context)
|
|||||||
if (markDaysWithEvents) {
|
if (markDaysWithEvents) {
|
||||||
markDaysWithEvents(days)
|
markDaysWithEvents(days)
|
||||||
} else {
|
} else {
|
||||||
mCallback.updateMonthlyCalendar(mContext, monthName, days, false, mTargetDate)
|
callback.updateMonthlyCalendar(context, monthName, days, false, mTargetDate)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// it works more often than not, dont touch
|
// it works more often than not, dont touch
|
||||||
private fun markDaysWithEvents(days: ArrayList<DayMonthly>) {
|
private fun markDaysWithEvents(days: ArrayList<DayMonthly>) {
|
||||||
mContext.dbHelper.getEventTypes {
|
context.dbHelper.getEventTypes {
|
||||||
val dayEvents = HashMap<String, ArrayList<Event>>()
|
val dayEvents = HashMap<String, ArrayList<Event>>()
|
||||||
mEvents.forEach {
|
mEvents.forEach {
|
||||||
val startDateTime = Formatter.getDateTimeFromTS(it.startTS)
|
val startDateTime = Formatter.getDateTimeFromTS(it.startTS)
|
||||||
@@ -110,7 +107,7 @@ class MonthlyCalendarImpl(val mCallback: MonthlyCalendar, val mContext: Context)
|
|||||||
days.filter { dayEvents.keys.contains(it.code) }.forEach {
|
days.filter { dayEvents.keys.contains(it.code) }.forEach {
|
||||||
it.dayEvents = dayEvents[it.code]!!
|
it.dayEvents = dayEvents[it.code]!!
|
||||||
}
|
}
|
||||||
mCallback.updateMonthlyCalendar(mContext, monthName, days, true, mTargetDate)
|
callback.updateMonthlyCalendar(context, monthName, days, true, mTargetDate)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,7 +118,7 @@ class MonthlyCalendarImpl(val mCallback: MonthlyCalendar, val mContext: Context)
|
|||||||
|
|
||||||
private val monthName: String
|
private val monthName: String
|
||||||
get() {
|
get() {
|
||||||
var month = Formatter.getMonthName(mContext, mTargetDate.monthOfYear)
|
var month = Formatter.getMonthName(context, mTargetDate.monthOfYear)
|
||||||
val targetYear = mTargetDate.toString(YEAR_PATTERN)
|
val targetYear = mTargetDate.toString(YEAR_PATTERN)
|
||||||
if (targetYear != DateTime().toString(YEAR_PATTERN)) {
|
if (targetYear != DateTime().toString(YEAR_PATTERN)) {
|
||||||
month += " $targetYear"
|
month += " $targetYear"
|
||||||
@@ -130,12 +127,7 @@ class MonthlyCalendarImpl(val mCallback: MonthlyCalendar, val mContext: Context)
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun gotEvents(events: ArrayList<Event>) {
|
private fun gotEvents(events: ArrayList<Event>) {
|
||||||
mEvents = if (mFilterEventTypes) {
|
mEvents = events
|
||||||
mContext.getFilteredEvents(events)
|
|
||||||
} else {
|
|
||||||
events
|
|
||||||
}
|
|
||||||
|
|
||||||
getDays(true)
|
getDays(true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -18,7 +18,7 @@ import org.joda.time.DateTime
|
|||||||
|
|
||||||
class MyWidgetListProvider : AppWidgetProvider() {
|
class MyWidgetListProvider : AppWidgetProvider() {
|
||||||
private val NEW_EVENT = "new_event"
|
private val NEW_EVENT = "new_event"
|
||||||
private val LAUNCH_TODAY = "launch_today"
|
private val LAUNCH_CAL = "launch_cal"
|
||||||
|
|
||||||
override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) {
|
override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) {
|
||||||
performUpdate(context)
|
performUpdate(context)
|
||||||
@@ -44,7 +44,7 @@ class MyWidgetListProvider : AppWidgetProvider() {
|
|||||||
|
|
||||||
views.setImageViewBitmap(R.id.widget_event_new_event, context.resources.getColoredBitmap(R.drawable.ic_plus, textColor))
|
views.setImageViewBitmap(R.id.widget_event_new_event, context.resources.getColoredBitmap(R.drawable.ic_plus, textColor))
|
||||||
setupIntent(context, views, NEW_EVENT, R.id.widget_event_new_event)
|
setupIntent(context, views, NEW_EVENT, R.id.widget_event_new_event)
|
||||||
setupIntent(context, views, LAUNCH_TODAY, R.id.widget_event_list_today)
|
setupIntent(context, views, LAUNCH_CAL, R.id.widget_event_list_today)
|
||||||
|
|
||||||
Intent(context, WidgetService::class.java).apply {
|
Intent(context, WidgetService::class.java).apply {
|
||||||
data = Uri.parse(this.toUri(Intent.URI_INTENT_SCHEME))
|
data = Uri.parse(this.toUri(Intent.URI_INTENT_SCHEME))
|
||||||
@@ -74,14 +74,15 @@ class MyWidgetListProvider : AppWidgetProvider() {
|
|||||||
override fun onReceive(context: Context, intent: Intent) {
|
override fun onReceive(context: Context, intent: Intent) {
|
||||||
when (intent.action) {
|
when (intent.action) {
|
||||||
NEW_EVENT -> context.launchNewEventIntent()
|
NEW_EVENT -> context.launchNewEventIntent()
|
||||||
LAUNCH_TODAY -> launchDayActivity(context)
|
LAUNCH_CAL -> launchCalenderInDefaultView(context)
|
||||||
else -> super.onReceive(context, intent)
|
else -> super.onReceive(context, intent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun launchDayActivity(context: Context) {
|
private fun launchCalenderInDefaultView(context: Context) {
|
||||||
(context.getLaunchIntent() ?: Intent(context, SplashActivity::class.java)).apply {
|
(context.getLaunchIntent() ?: Intent(context, SplashActivity::class.java)).apply {
|
||||||
putExtra(DAY_CODE, Formatter.getDayCodeFromDateTime(DateTime()))
|
putExtra(DAY_CODE, Formatter.getDayCodeFromDateTime(DateTime()))
|
||||||
|
putExtra(VIEW_TO_OPEN, context.config.listWidgetViewToOpen)
|
||||||
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||||
context.startActivity(this)
|
context.startActivity(this)
|
||||||
}
|
}
|
||||||
|
@@ -49,7 +49,7 @@ class MyWidgetMonthlyProvider : AppWidgetProvider() {
|
|||||||
private fun setupAppOpenIntent(context: Context, views: RemoteViews, id: Int, dayCode: String) {
|
private fun setupAppOpenIntent(context: Context, views: RemoteViews, id: Int, dayCode: String) {
|
||||||
(context.getLaunchIntent() ?: Intent(context, SplashActivity::class.java)).apply {
|
(context.getLaunchIntent() ?: Intent(context, SplashActivity::class.java)).apply {
|
||||||
putExtra(DAY_CODE, dayCode)
|
putExtra(DAY_CODE, dayCode)
|
||||||
putExtra(OPEN_MONTH, true)
|
putExtra(VIEW_TO_OPEN, MONTHLY_VIEW)
|
||||||
val pendingIntent = PendingIntent.getActivity(context, Integer.parseInt(dayCode.substring(0, 6)), this, 0)
|
val pendingIntent = PendingIntent.getActivity(context, Integer.parseInt(dayCode.substring(0, 6)), this, 0)
|
||||||
views.setOnClickPendingIntent(id, pendingIntent)
|
views.setOnClickPendingIntent(id, pendingIntent)
|
||||||
}
|
}
|
||||||
|
@@ -7,15 +7,14 @@ import com.simplemobiletools.calendar.models.Event
|
|||||||
import com.simplemobiletools.commons.helpers.WEEK_SECONDS
|
import com.simplemobiletools.commons.helpers.WEEK_SECONDS
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class WeeklyCalendarImpl(val mCallback: WeeklyCalendar, val mContext: Context) {
|
class WeeklyCalendarImpl(val callback: WeeklyCalendar, val context: Context) {
|
||||||
var mEvents = ArrayList<Event>()
|
var mEvents = ArrayList<Event>()
|
||||||
|
|
||||||
fun updateWeeklyCalendar(weekStartTS: Int) {
|
fun updateWeeklyCalendar(weekStartTS: Int) {
|
||||||
val startTS = weekStartTS
|
val endTS = weekStartTS + WEEK_SECONDS
|
||||||
val endTS = startTS + WEEK_SECONDS
|
context.dbHelper.getEvents(weekStartTS, endTS, applyTypeFilter = true) {
|
||||||
mContext.dbHelper.getEvents(startTS, endTS) {
|
|
||||||
mEvents = it
|
mEvents = it
|
||||||
mCallback.updateWeeklyCalendar(it)
|
callback.updateWeeklyCalendar(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -3,7 +3,6 @@ package com.simplemobiletools.calendar.helpers
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.util.SparseArray
|
import android.util.SparseArray
|
||||||
import com.simplemobiletools.calendar.extensions.dbHelper
|
import com.simplemobiletools.calendar.extensions.dbHelper
|
||||||
import com.simplemobiletools.calendar.extensions.getFilteredEvents
|
|
||||||
import com.simplemobiletools.calendar.extensions.seconds
|
import com.simplemobiletools.calendar.extensions.seconds
|
||||||
import com.simplemobiletools.calendar.interfaces.YearlyCalendar
|
import com.simplemobiletools.calendar.interfaces.YearlyCalendar
|
||||||
import com.simplemobiletools.calendar.models.DayYearly
|
import com.simplemobiletools.calendar.models.DayYearly
|
||||||
@@ -17,16 +16,15 @@ class YearlyCalendarImpl(val callback: YearlyCalendar, val context: Context, val
|
|||||||
val startDateTime = DateTime().withTime(0, 0, 0, 0).withDate(year, 1, 1)
|
val startDateTime = DateTime().withTime(0, 0, 0, 0).withDate(year, 1, 1)
|
||||||
val startTS = startDateTime.seconds()
|
val startTS = startDateTime.seconds()
|
||||||
val endTS = startDateTime.plusYears(1).minusSeconds(1).seconds()
|
val endTS = startDateTime.plusYears(1).minusSeconds(1).seconds()
|
||||||
context.dbHelper.getEvents(startTS, endTS) {
|
context.dbHelper.getEvents(startTS, endTS, applyTypeFilter = true) {
|
||||||
gotEvents(it)
|
gotEvents(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun gotEvents(events: MutableList<Event>) {
|
private fun gotEvents(events: MutableList<Event>) {
|
||||||
val filtered = context.getFilteredEvents(events)
|
|
||||||
val arr = SparseArray<ArrayList<DayYearly>>(12)
|
val arr = SparseArray<ArrayList<DayYearly>>(12)
|
||||||
|
|
||||||
filtered.forEach {
|
events.forEach {
|
||||||
val startDateTime = Formatter.getDateTimeFromTS(it.startTS)
|
val startDateTime = Formatter.getDateTimeFromTS(it.startTS)
|
||||||
markDay(arr, startDateTime, it)
|
markDay(arr, startDateTime, it)
|
||||||
|
|
||||||
@@ -41,7 +39,7 @@ class YearlyCalendarImpl(val callback: YearlyCalendar, val context: Context, val
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
callback.updateYearlyCalendar(arr, filtered.hashCode())
|
callback.updateYearlyCalendar(arr, events.hashCode())
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun markDay(arr: SparseArray<ArrayList<DayYearly>>, dateTime: DateTime, event: Event) {
|
private fun markDay(arr: SparseArray<ArrayList<DayYearly>>, dateTime: DateTime, event: Event) {
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
package com.simplemobiletools.calendar.models
|
package com.simplemobiletools.calendar.models
|
||||||
|
|
||||||
data class CalDAVCalendar(val id: Int, val displayName: String, val accountName: String, val accountType: String, val ownerName: String,
|
data class CalDAVCalendar(val id: Int, val displayName: String, val accountName: String, val accountType: String, val ownerName: String,
|
||||||
val color: Int, val accessLevel: Int) {
|
var color: Int, val accessLevel: Int) {
|
||||||
fun canWrite() = accessLevel >= 500
|
fun canWrite() = accessLevel >= 500
|
||||||
|
|
||||||
fun getFullTitle() = "$displayName ($accountName)"
|
fun getFullTitle() = "$displayName ($accountName)"
|
||||||
|
@@ -4,9 +4,12 @@ import android.content.BroadcastReceiver
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import com.simplemobiletools.calendar.extensions.recheckCalDAVCalendars
|
import com.simplemobiletools.calendar.extensions.recheckCalDAVCalendars
|
||||||
|
import com.simplemobiletools.calendar.extensions.updateWidgets
|
||||||
|
|
||||||
class CalDAVSyncReceiver : BroadcastReceiver() {
|
class CalDAVSyncReceiver : BroadcastReceiver() {
|
||||||
override fun onReceive(context: Context, intent: Intent) {
|
override fun onReceive(context: Context, intent: Intent) {
|
||||||
context.recheckCalDAVCalendars {}
|
context.recheckCalDAVCalendars {
|
||||||
|
context.updateWidgets()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -32,6 +32,7 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con
|
|||||||
private var paint: Paint
|
private var paint: Paint
|
||||||
private var eventTitlePaint: TextPaint
|
private var eventTitlePaint: TextPaint
|
||||||
private var gridPaint: Paint
|
private var gridPaint: Paint
|
||||||
|
private var config = context.config
|
||||||
private var dayWidth = 0f
|
private var dayWidth = 0f
|
||||||
private var dayHeight = 0f
|
private var dayHeight = 0f
|
||||||
private var primaryColor = 0
|
private var primaryColor = 0
|
||||||
@@ -54,9 +55,9 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
primaryColor = context.getAdjustedPrimaryColor()
|
primaryColor = context.getAdjustedPrimaryColor()
|
||||||
textColor = context.config.textColor
|
textColor = config.textColor
|
||||||
showWeekNumbers = context.config.showWeekNumbers
|
showWeekNumbers = config.showWeekNumbers
|
||||||
dimPastEvents = context.config.dimPastEvents
|
dimPastEvents = config.dimPastEvents
|
||||||
|
|
||||||
smallPadding = resources.displayMetrics.density.toInt()
|
smallPadding = resources.displayMetrics.density.toInt()
|
||||||
val normalTextSize = resources.getDimensionPixelSize(R.dimen.normal_text_size)
|
val normalTextSize = resources.getDimensionPixelSize(R.dimen.normal_text_size)
|
||||||
@@ -86,7 +87,7 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con
|
|||||||
|
|
||||||
fun updateDays(newDays: ArrayList<DayMonthly>) {
|
fun updateDays(newDays: ArrayList<DayMonthly>) {
|
||||||
days = newDays
|
days = newDays
|
||||||
showWeekNumbers = context.config.showWeekNumbers
|
showWeekNumbers = config.showWeekNumbers
|
||||||
horizontalOffset = if (showWeekNumbers) eventTitleHeight * 2 else 0
|
horizontalOffset = if (showWeekNumbers) eventTitleHeight * 2 else 0
|
||||||
initWeekDayLetters()
|
initWeekDayLetters()
|
||||||
setupCurrentDayOfWeekIndex()
|
setupCurrentDayOfWeekIndex()
|
||||||
@@ -111,7 +112,8 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
allEvents = allEvents.sortedWith(compareBy({ -it.daysCnt }, { !it.isAllDay }, { it.startTS }, { it.startDayIndex }, { it.title })).toMutableList() as ArrayList<MonthViewEvent>
|
allEvents = allEvents.asSequence().sortedWith(compareBy({ -it.daysCnt }, { !it.isAllDay }, { it.startTS }, { it.startDayIndex }, { it.title }))
|
||||||
|
.toMutableList() as ArrayList<MonthViewEvent>
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDraw(canvas: Canvas) {
|
override fun onDraw(canvas: Canvas) {
|
||||||
@@ -119,7 +121,7 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con
|
|||||||
dayVerticalOffsets.clear()
|
dayVerticalOffsets.clear()
|
||||||
measureDaySize(canvas)
|
measureDaySize(canvas)
|
||||||
|
|
||||||
if (context.config.showGrid) {
|
if (config.showGrid) {
|
||||||
drawGrid(canvas)
|
drawGrid(canvas)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -149,7 +151,9 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
drawEvents(canvas)
|
for (event in allEvents) {
|
||||||
|
drawEvent(event, canvas)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun drawGrid(canvas: Canvas) {
|
private fun drawGrid(canvas: Canvas) {
|
||||||
@@ -188,7 +192,7 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con
|
|||||||
val weekDays = days.subList(i * 7, i * 7 + 7)
|
val weekDays = days.subList(i * 7, i * 7 + 7)
|
||||||
weekNumberPaint.color = if (weekDays.any { it.isToday }) primaryColor else textColor
|
weekNumberPaint.color = if (weekDays.any { it.isToday }) primaryColor else textColor
|
||||||
|
|
||||||
// fourth day of the week matters
|
// fourth day of the week determines the week of the year number
|
||||||
val weekOfYear = days.getOrNull(i * 7 + 3)?.weekOfYear ?: 1
|
val weekOfYear = days.getOrNull(i * 7 + 3)?.weekOfYear ?: 1
|
||||||
val id = "$weekOfYear:"
|
val id = "$weekOfYear:"
|
||||||
val yPos = i * dayHeight + weekDaysLetterHeight
|
val yPos = i * dayHeight + weekDaysLetterHeight
|
||||||
@@ -203,12 +207,6 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con
|
|||||||
maxEventsPerDay = availableHeightForEvents / eventTitleHeight
|
maxEventsPerDay = availableHeightForEvents / eventTitleHeight
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun drawEvents(canvas: Canvas) {
|
|
||||||
for (event in allEvents) {
|
|
||||||
drawEvent(event, canvas)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun drawEvent(event: MonthViewEvent, canvas: Canvas) {
|
private fun drawEvent(event: MonthViewEvent, canvas: Canvas) {
|
||||||
val verticalOffset = dayVerticalOffsets[event.startDayIndex]
|
val verticalOffset = dayVerticalOffsets[event.startDayIndex]
|
||||||
val xPos = event.startDayIndex % 7 * dayWidth + horizontalOffset
|
val xPos = event.startDayIndex % 7 * dayWidth + horizontalOffset
|
||||||
@@ -302,8 +300,8 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun initWeekDayLetters() {
|
private fun initWeekDayLetters() {
|
||||||
dayLetters = context.resources.getStringArray(R.array.week_day_letters).toList() as ArrayList<String>
|
dayLetters = context.resources.getStringArray(R.array.week_day_letters).toMutableList() as ArrayList<String>
|
||||||
if (context.config.isSundayFirst) {
|
if (config.isSundayFirst) {
|
||||||
dayLetters.moveLastItemToFront()
|
dayLetters.moveLastItemToFront()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -315,7 +313,7 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con
|
|||||||
}
|
}
|
||||||
|
|
||||||
currDayOfWeek = DateTime().dayOfWeek
|
currDayOfWeek = DateTime().dayOfWeek
|
||||||
if (context.config.isSundayFirst) {
|
if (config.isSundayFirst) {
|
||||||
currDayOfWeek %= 7
|
currDayOfWeek %= 7
|
||||||
} else {
|
} else {
|
||||||
currDayOfWeek--
|
currDayOfWeek--
|
||||||
|
@@ -15,11 +15,11 @@ class MonthViewWrapper(context: Context, attrs: AttributeSet, defStyle: Int) : F
|
|||||||
private var dayWidth = 0f
|
private var dayWidth = 0f
|
||||||
private var dayHeight = 0f
|
private var dayHeight = 0f
|
||||||
private var weekDaysLetterHeight = 0
|
private var weekDaysLetterHeight = 0
|
||||||
|
private var horizontalOffset = 0
|
||||||
private var wereViewsAdded = false
|
private var wereViewsAdded = false
|
||||||
private var days = ArrayList<DayMonthly>()
|
private var days = ArrayList<DayMonthly>()
|
||||||
private var inflater: LayoutInflater
|
private var inflater: LayoutInflater
|
||||||
private var monthView: MonthView
|
private var monthView: MonthView
|
||||||
private var horizontalOffset = 0
|
|
||||||
private var dayClickCallback: ((day: DayMonthly) -> Unit)? = null
|
private var dayClickCallback: ((day: DayMonthly) -> Unit)? = null
|
||||||
|
|
||||||
constructor(context: Context, attrs: AttributeSet) : this(context, attrs, 0)
|
constructor(context: Context, attrs: AttributeSet) : this(context, attrs, 0)
|
||||||
|
@@ -69,9 +69,9 @@ class SmallMonthView(context: Context, attrs: AttributeSet, defStyle: Int) : Vie
|
|||||||
super.onDraw(canvas)
|
super.onDraw(canvas)
|
||||||
if (dayWidth == 0f) {
|
if (dayWidth == 0f) {
|
||||||
dayWidth = if (isLandscape) {
|
dayWidth = if (isLandscape) {
|
||||||
(canvas.width / 9).toFloat()
|
width / 9f
|
||||||
} else {
|
} else {
|
||||||
(canvas.width / 7).toFloat()
|
width / 7f
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<android.support.design.widget.CoordinatorLayout
|
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:id="@+id/day_coordinator"
|
android:id="@+id/day_coordinator"
|
||||||
@@ -22,4 +22,4 @@
|
|||||||
app:backgroundTint="@color/color_primary"
|
app:backgroundTint="@color/color_primary"
|
||||||
app:rippleColor="@color/pressed_item_foreground"/>
|
app:rippleColor="@color/pressed_item_foreground"/>
|
||||||
|
|
||||||
</android.support.design.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||||
|
@@ -17,8 +17,8 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginLeft="@dimen/activity_margin"
|
android:layout_marginLeft="@dimen/activity_margin"
|
||||||
android:layout_marginRight="@dimen/activity_margin"
|
|
||||||
android:layout_marginTop="@dimen/activity_margin"
|
android:layout_marginTop="@dimen/activity_margin"
|
||||||
|
android:layout_marginRight="@dimen/activity_margin"
|
||||||
android:hint="@string/title"
|
android:hint="@string/title"
|
||||||
android:inputType="textCapSentences"
|
android:inputType="textCapSentences"
|
||||||
android:maxLength="180"
|
android:maxLength="180"
|
||||||
@@ -45,15 +45,15 @@
|
|||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/event_show_on_map"
|
android:id="@+id/event_show_on_map"
|
||||||
style="@style/MyBorderlessBackgroundStyle"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
android:layout_alignTop="@+id/event_location"
|
||||||
android:layout_alignBottom="@+id/event_location"
|
android:layout_alignBottom="@+id/event_location"
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
android:layout_alignParentRight="true"
|
android:layout_alignParentRight="true"
|
||||||
android:layout_alignTop="@+id/event_location"
|
|
||||||
android:layout_marginEnd="@dimen/activity_margin"
|
android:layout_marginEnd="@dimen/activity_margin"
|
||||||
android:layout_marginRight="@dimen/activity_margin"
|
android:layout_marginRight="@dimen/activity_margin"
|
||||||
|
android:background="?attr/selectableItemBackgroundBorderless"
|
||||||
android:paddingLeft="@dimen/small_margin"
|
android:paddingLeft="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_place"/>
|
android:src="@drawable/ic_place"/>
|
||||||
@@ -64,8 +64,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@+id/event_location"
|
android:layout_below="@+id/event_location"
|
||||||
android:layout_marginLeft="@dimen/activity_margin"
|
android:layout_marginLeft="@dimen/activity_margin"
|
||||||
android:layout_marginRight="@dimen/activity_margin"
|
|
||||||
android:layout_marginTop="@dimen/activity_margin"
|
android:layout_marginTop="@dimen/activity_margin"
|
||||||
|
android:layout_marginRight="@dimen/activity_margin"
|
||||||
android:autoLink="all"
|
android:autoLink="all"
|
||||||
android:gravity="top"
|
android:gravity="top"
|
||||||
android:hint="@string/description"
|
android:hint="@string/description"
|
||||||
@@ -80,8 +80,8 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1px"
|
android:layout_height="1px"
|
||||||
android:layout_below="@+id/event_description"
|
android:layout_below="@+id/event_description"
|
||||||
android:layout_marginBottom="@dimen/normal_margin"
|
|
||||||
android:layout_marginTop="@dimen/activity_margin"
|
android:layout_marginTop="@dimen/activity_margin"
|
||||||
|
android:layout_marginBottom="@dimen/normal_margin"
|
||||||
android:background="@color/divider_grey"
|
android:background="@color/divider_grey"
|
||||||
android:importantForAccessibility="no"/>
|
android:importantForAccessibility="no"/>
|
||||||
|
|
||||||
@@ -89,11 +89,11 @@
|
|||||||
android:id="@+id/event_time_image"
|
android:id="@+id/event_time_image"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_alignBottom="@+id/event_all_day"
|
|
||||||
android:layout_alignTop="@+id/event_all_day"
|
|
||||||
android:layout_below="@+id/event_description_divider"
|
android:layout_below="@+id/event_description_divider"
|
||||||
android:layout_marginLeft="@dimen/normal_margin"
|
android:layout_alignTop="@+id/event_all_day"
|
||||||
|
android:layout_alignBottom="@+id/event_all_day"
|
||||||
android:layout_marginStart="@dimen/normal_margin"
|
android:layout_marginStart="@dimen/normal_margin"
|
||||||
|
android:layout_marginLeft="@dimen/normal_margin"
|
||||||
android:alpha="0.8"
|
android:alpha="0.8"
|
||||||
android:padding="@dimen/medium_margin"
|
android:padding="@dimen/medium_margin"
|
||||||
android:src="@drawable/ic_clock"/>
|
android:src="@drawable/ic_clock"/>
|
||||||
@@ -102,17 +102,17 @@
|
|||||||
android:id="@+id/event_all_day"
|
android:id="@+id/event_all_day"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@+id/event_description_divider"
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
android:layout_alignParentRight="true"
|
android:layout_alignParentRight="true"
|
||||||
android:layout_below="@+id/event_description_divider"
|
|
||||||
android:layout_marginEnd="@dimen/normal_margin"
|
|
||||||
android:layout_marginLeft="@dimen/small_margin"
|
|
||||||
android:layout_marginRight="@dimen/normal_margin"
|
|
||||||
android:layout_marginStart="@dimen/small_margin"
|
android:layout_marginStart="@dimen/small_margin"
|
||||||
|
android:layout_marginLeft="@dimen/small_margin"
|
||||||
|
android:layout_marginEnd="@dimen/normal_margin"
|
||||||
|
android:layout_marginRight="@dimen/normal_margin"
|
||||||
android:layout_toEndOf="@+id/event_time_image"
|
android:layout_toEndOf="@+id/event_time_image"
|
||||||
android:layout_toRightOf="@+id/event_time_image"
|
android:layout_toRightOf="@+id/event_time_image"
|
||||||
android:paddingBottom="@dimen/normal_margin"
|
|
||||||
android:paddingTop="@dimen/normal_margin"
|
android:paddingTop="@dimen/normal_margin"
|
||||||
|
android:paddingBottom="@dimen/normal_margin"
|
||||||
android:text="@string/all_day"
|
android:text="@string/all_day"
|
||||||
android:textSize="@dimen/day_text_size"
|
android:textSize="@dimen/day_text_size"
|
||||||
app:switchPadding="@dimen/small_margin"/>
|
app:switchPadding="@dimen/small_margin"/>
|
||||||
@@ -121,14 +121,14 @@
|
|||||||
android:id="@+id/event_start_date"
|
android:id="@+id/event_start_date"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignLeft="@+id/event_all_day"
|
|
||||||
android:layout_alignStart="@+id/event_all_day"
|
|
||||||
android:layout_below="@+id/event_time_image"
|
android:layout_below="@+id/event_time_image"
|
||||||
|
android:layout_alignStart="@+id/event_all_day"
|
||||||
|
android:layout_alignLeft="@+id/event_all_day"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingEnd="@dimen/activity_margin"
|
android:paddingEnd="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/activity_margin"
|
android:paddingRight="@dimen/activity_margin"
|
||||||
android:paddingTop="@dimen/activity_margin"
|
android:paddingBottom="@dimen/activity_margin"
|
||||||
android:textSize="@dimen/day_text_size"
|
android:textSize="@dimen/day_text_size"
|
||||||
tools:text="January 1 1970"/>
|
tools:text="January 1 1970"/>
|
||||||
|
|
||||||
@@ -136,9 +136,9 @@
|
|||||||
android:id="@+id/event_start_time"
|
android:id="@+id/event_start_time"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@+id/event_time_image"
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
android:layout_alignParentRight="true"
|
android:layout_alignParentRight="true"
|
||||||
android:layout_below="@+id/event_time_image"
|
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:padding="@dimen/activity_margin"
|
android:padding="@dimen/activity_margin"
|
||||||
android:textSize="@dimen/day_text_size"
|
android:textSize="@dimen/day_text_size"
|
||||||
@@ -148,14 +148,14 @@
|
|||||||
android:id="@+id/event_end_date"
|
android:id="@+id/event_end_date"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignLeft="@+id/event_all_day"
|
|
||||||
android:layout_alignStart="@+id/event_all_day"
|
|
||||||
android:layout_below="@+id/event_start_date"
|
android:layout_below="@+id/event_start_date"
|
||||||
|
android:layout_alignStart="@+id/event_all_day"
|
||||||
|
android:layout_alignLeft="@+id/event_all_day"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingEnd="@dimen/activity_margin"
|
android:paddingEnd="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/activity_margin"
|
android:paddingRight="@dimen/activity_margin"
|
||||||
android:paddingTop="@dimen/activity_margin"
|
android:paddingBottom="@dimen/activity_margin"
|
||||||
android:textSize="@dimen/day_text_size"
|
android:textSize="@dimen/day_text_size"
|
||||||
tools:text="January 1 1970"/>
|
tools:text="January 1 1970"/>
|
||||||
|
|
||||||
@@ -163,9 +163,9 @@
|
|||||||
android:id="@+id/event_end_time"
|
android:id="@+id/event_end_time"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@+id/event_start_time"
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
android:layout_alignParentRight="true"
|
android:layout_alignParentRight="true"
|
||||||
android:layout_below="@+id/event_start_time"
|
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:padding="@dimen/activity_margin"
|
android:padding="@dimen/activity_margin"
|
||||||
android:textSize="@dimen/day_text_size"
|
android:textSize="@dimen/day_text_size"
|
||||||
@@ -176,8 +176,8 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1px"
|
android:layout_height="1px"
|
||||||
android:layout_below="@+id/event_end_date"
|
android:layout_below="@+id/event_end_date"
|
||||||
android:layout_marginBottom="@dimen/medium_margin"
|
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
|
android:layout_marginBottom="@dimen/medium_margin"
|
||||||
android:background="@color/divider_grey"
|
android:background="@color/divider_grey"
|
||||||
android:importantForAccessibility="no"/>
|
android:importantForAccessibility="no"/>
|
||||||
|
|
||||||
@@ -185,11 +185,11 @@
|
|||||||
android:id="@+id/event_reminder_image"
|
android:id="@+id/event_reminder_image"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_alignBottom="@+id/event_reminder_1"
|
|
||||||
android:layout_alignTop="@+id/event_reminder_1"
|
|
||||||
android:layout_below="@+id/event_date_time_divider"
|
android:layout_below="@+id/event_date_time_divider"
|
||||||
android:layout_marginLeft="@dimen/normal_margin"
|
android:layout_alignTop="@+id/event_reminder_1"
|
||||||
|
android:layout_alignBottom="@+id/event_reminder_1"
|
||||||
android:layout_marginStart="@dimen/normal_margin"
|
android:layout_marginStart="@dimen/normal_margin"
|
||||||
|
android:layout_marginLeft="@dimen/normal_margin"
|
||||||
android:alpha="0.8"
|
android:alpha="0.8"
|
||||||
android:padding="@dimen/medium_margin"
|
android:padding="@dimen/medium_margin"
|
||||||
android:src="@drawable/ic_bell"/>
|
android:src="@drawable/ic_bell"/>
|
||||||
@@ -199,26 +199,26 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@+id/event_date_time_divider"
|
android:layout_below="@+id/event_date_time_divider"
|
||||||
android:layout_marginLeft="@dimen/small_margin"
|
|
||||||
android:layout_marginStart="@dimen/small_margin"
|
android:layout_marginStart="@dimen/small_margin"
|
||||||
|
android:layout_marginLeft="@dimen/small_margin"
|
||||||
android:layout_toEndOf="@+id/event_reminder_image"
|
android:layout_toEndOf="@+id/event_reminder_image"
|
||||||
android:layout_toRightOf="@+id/event_reminder_image"
|
android:layout_toRightOf="@+id/event_reminder_image"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingTop="@dimen/activity_margin"
|
android:paddingTop="@dimen/activity_margin"
|
||||||
|
android:paddingBottom="@dimen/activity_margin"
|
||||||
android:textSize="@dimen/day_text_size"/>
|
android:textSize="@dimen/day_text_size"/>
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/event_reminder_2"
|
android:id="@+id/event_reminder_2"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignLeft="@+id/event_reminder_1"
|
|
||||||
android:layout_alignStart="@+id/event_reminder_1"
|
|
||||||
android:layout_below="@+id/event_reminder_1"
|
android:layout_below="@+id/event_reminder_1"
|
||||||
|
android:layout_alignStart="@+id/event_reminder_1"
|
||||||
|
android:layout_alignLeft="@+id/event_reminder_1"
|
||||||
android:alpha="0.4"
|
android:alpha="0.4"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingTop="@dimen/activity_margin"
|
android:paddingTop="@dimen/activity_margin"
|
||||||
|
android:paddingBottom="@dimen/activity_margin"
|
||||||
android:text="@string/add_another_reminder"
|
android:text="@string/add_another_reminder"
|
||||||
android:textSize="@dimen/day_text_size"
|
android:textSize="@dimen/day_text_size"
|
||||||
android:visibility="gone"/>
|
android:visibility="gone"/>
|
||||||
@@ -227,13 +227,13 @@
|
|||||||
android:id="@+id/event_reminder_3"
|
android:id="@+id/event_reminder_3"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignLeft="@+id/event_reminder_1"
|
|
||||||
android:layout_alignStart="@+id/event_reminder_1"
|
|
||||||
android:layout_below="@+id/event_reminder_2"
|
android:layout_below="@+id/event_reminder_2"
|
||||||
|
android:layout_alignStart="@+id/event_reminder_1"
|
||||||
|
android:layout_alignLeft="@+id/event_reminder_1"
|
||||||
android:alpha="0.4"
|
android:alpha="0.4"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingTop="@dimen/activity_margin"
|
android:paddingTop="@dimen/activity_margin"
|
||||||
|
android:paddingBottom="@dimen/activity_margin"
|
||||||
android:text="@string/add_another_reminder"
|
android:text="@string/add_another_reminder"
|
||||||
android:textSize="@dimen/day_text_size"
|
android:textSize="@dimen/day_text_size"
|
||||||
android:visibility="gone"/>
|
android:visibility="gone"/>
|
||||||
@@ -243,8 +243,8 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1px"
|
android:layout_height="1px"
|
||||||
android:layout_below="@+id/event_reminder_3"
|
android:layout_below="@+id/event_reminder_3"
|
||||||
android:layout_marginBottom="@dimen/medium_margin"
|
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
|
android:layout_marginBottom="@dimen/medium_margin"
|
||||||
android:background="@color/divider_grey"
|
android:background="@color/divider_grey"
|
||||||
android:importantForAccessibility="no"/>
|
android:importantForAccessibility="no"/>
|
||||||
|
|
||||||
@@ -252,11 +252,11 @@
|
|||||||
android:id="@+id/event_repetition_image"
|
android:id="@+id/event_repetition_image"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_alignBottom="@+id/event_repetition"
|
|
||||||
android:layout_alignTop="@+id/event_repetition"
|
|
||||||
android:layout_below="@+id/event_date_time_divider"
|
android:layout_below="@+id/event_date_time_divider"
|
||||||
android:layout_marginLeft="@dimen/normal_margin"
|
android:layout_alignTop="@+id/event_repetition"
|
||||||
|
android:layout_alignBottom="@+id/event_repetition"
|
||||||
android:layout_marginStart="@dimen/normal_margin"
|
android:layout_marginStart="@dimen/normal_margin"
|
||||||
|
android:layout_marginLeft="@dimen/normal_margin"
|
||||||
android:alpha="0.8"
|
android:alpha="0.8"
|
||||||
android:padding="@dimen/medium_margin"
|
android:padding="@dimen/medium_margin"
|
||||||
android:src="@drawable/ic_repeat"/>
|
android:src="@drawable/ic_repeat"/>
|
||||||
@@ -266,22 +266,22 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@+id/event_reminder_divider"
|
android:layout_below="@+id/event_reminder_divider"
|
||||||
android:layout_marginLeft="@dimen/small_margin"
|
|
||||||
android:layout_marginStart="@dimen/small_margin"
|
android:layout_marginStart="@dimen/small_margin"
|
||||||
|
android:layout_marginLeft="@dimen/small_margin"
|
||||||
android:layout_toEndOf="@+id/event_repetition_image"
|
android:layout_toEndOf="@+id/event_repetition_image"
|
||||||
android:layout_toRightOf="@+id/event_repetition_image"
|
android:layout_toRightOf="@+id/event_repetition_image"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/normal_margin"
|
|
||||||
android:paddingTop="@dimen/normal_margin"
|
android:paddingTop="@dimen/normal_margin"
|
||||||
|
android:paddingBottom="@dimen/normal_margin"
|
||||||
android:textSize="@dimen/day_text_size"/>
|
android:textSize="@dimen/day_text_size"/>
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:id="@+id/event_repetition_rule_holder"
|
android:id="@+id/event_repetition_rule_holder"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignLeft="@+id/event_repetition"
|
|
||||||
android:layout_alignStart="@+id/event_repetition"
|
|
||||||
android:layout_below="@+id/event_repetition"
|
android:layout_below="@+id/event_repetition"
|
||||||
|
android:layout_alignStart="@+id/event_repetition"
|
||||||
|
android:layout_alignLeft="@+id/event_repetition"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:visibility="gone">
|
android:visibility="gone">
|
||||||
|
|
||||||
@@ -290,8 +290,8 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingTop="@dimen/activity_margin"
|
android:paddingTop="@dimen/activity_margin"
|
||||||
|
android:paddingBottom="@dimen/activity_margin"
|
||||||
android:text="@string/repeat_on"
|
android:text="@string/repeat_on"
|
||||||
android:textSize="@dimen/day_text_size"/>
|
android:textSize="@dimen/day_text_size"/>
|
||||||
|
|
||||||
@@ -314,9 +314,9 @@
|
|||||||
android:id="@+id/event_repetition_limit_holder"
|
android:id="@+id/event_repetition_limit_holder"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignLeft="@+id/event_repetition"
|
|
||||||
android:layout_alignStart="@+id/event_repetition"
|
|
||||||
android:layout_below="@+id/event_repetition_rule_holder"
|
android:layout_below="@+id/event_repetition_rule_holder"
|
||||||
|
android:layout_alignStart="@+id/event_repetition"
|
||||||
|
android:layout_alignLeft="@+id/event_repetition"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:visibility="gone">
|
android:visibility="gone">
|
||||||
|
|
||||||
@@ -324,11 +324,11 @@
|
|||||||
android:id="@+id/event_repetition_limit_label"
|
android:id="@+id/event_repetition_limit_label"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_toLeftOf="@+id/event_repetition_limit"
|
|
||||||
android:layout_toStartOf="@+id/event_repetition_limit"
|
android:layout_toStartOf="@+id/event_repetition_limit"
|
||||||
|
android:layout_toLeftOf="@+id/event_repetition_limit"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingTop="@dimen/activity_margin"
|
android:paddingTop="@dimen/activity_margin"
|
||||||
|
android:paddingBottom="@dimen/activity_margin"
|
||||||
android:text="@string/repeat_till"
|
android:text="@string/repeat_till"
|
||||||
android:textSize="@dimen/day_text_size"/>
|
android:textSize="@dimen/day_text_size"/>
|
||||||
|
|
||||||
@@ -357,11 +357,11 @@
|
|||||||
android:id="@+id/event_caldav_calendar_image"
|
android:id="@+id/event_caldav_calendar_image"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_alignBottom="@+id/event_caldav_calendar_holder"
|
|
||||||
android:layout_alignTop="@+id/event_caldav_calendar_holder"
|
|
||||||
android:layout_below="@+id/event_repetition_divider"
|
android:layout_below="@+id/event_repetition_divider"
|
||||||
android:layout_marginLeft="@dimen/normal_margin"
|
android:layout_alignTop="@+id/event_caldav_calendar_holder"
|
||||||
|
android:layout_alignBottom="@+id/event_caldav_calendar_holder"
|
||||||
android:layout_marginStart="@dimen/normal_margin"
|
android:layout_marginStart="@dimen/normal_margin"
|
||||||
|
android:layout_marginLeft="@dimen/normal_margin"
|
||||||
android:alpha="0.8"
|
android:alpha="0.8"
|
||||||
android:padding="@dimen/medium_margin"
|
android:padding="@dimen/medium_margin"
|
||||||
android:src="@drawable/ic_calendar"
|
android:src="@drawable/ic_calendar"
|
||||||
@@ -381,12 +381,12 @@
|
|||||||
android:id="@+id/event_caldav_calendar_name"
|
android:id="@+id/event_caldav_calendar_name"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginLeft="@dimen/small_margin"
|
|
||||||
android:layout_marginStart="@dimen/small_margin"
|
android:layout_marginStart="@dimen/small_margin"
|
||||||
|
android:layout_marginLeft="@dimen/small_margin"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:paddingBottom="@dimen/tiny_margin"
|
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
|
android:paddingBottom="@dimen/tiny_margin"
|
||||||
android:textSize="@dimen/day_text_size"
|
android:textSize="@dimen/day_text_size"
|
||||||
tools:text="My calendar"/>
|
tools:text="My calendar"/>
|
||||||
|
|
||||||
@@ -395,14 +395,25 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@+id/event_caldav_calendar_name"
|
android:layout_below="@+id/event_caldav_calendar_name"
|
||||||
android:layout_marginLeft="@dimen/small_margin"
|
|
||||||
android:layout_marginStart="@dimen/small_margin"
|
android:layout_marginStart="@dimen/small_margin"
|
||||||
|
android:layout_marginLeft="@dimen/small_margin"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:paddingBottom="@dimen/medium_margin"
|
android:paddingBottom="@dimen/medium_margin"
|
||||||
android:textSize="@dimen/meta_text_size"
|
android:textSize="@dimen/meta_text_size"
|
||||||
tools:text="hello@simplemobiletools.com"/>
|
tools:text="hello@simplemobiletools.com"/>
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/event_caldav_calendar_color"
|
||||||
|
android:layout_width="@dimen/color_sample_size"
|
||||||
|
android:layout_height="@dimen/color_sample_size"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_alignParentRight="true"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:layout_marginEnd="@dimen/activity_margin"
|
||||||
|
android:layout_marginRight="@dimen/activity_margin"
|
||||||
|
android:clickable="false"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
@@ -418,11 +429,11 @@
|
|||||||
android:id="@+id/event_type_image"
|
android:id="@+id/event_type_image"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_alignBottom="@+id/event_type_holder"
|
|
||||||
android:layout_alignTop="@+id/event_type_holder"
|
|
||||||
android:layout_below="@+id/event_caldav_calendar_divider"
|
android:layout_below="@+id/event_caldav_calendar_divider"
|
||||||
android:layout_marginLeft="@dimen/normal_margin"
|
android:layout_alignTop="@+id/event_type_holder"
|
||||||
|
android:layout_alignBottom="@+id/event_type_holder"
|
||||||
android:layout_marginStart="@dimen/normal_margin"
|
android:layout_marginStart="@dimen/normal_margin"
|
||||||
|
android:layout_marginLeft="@dimen/normal_margin"
|
||||||
android:alpha="0.8"
|
android:alpha="0.8"
|
||||||
android:padding="@dimen/medium_margin"
|
android:padding="@dimen/medium_margin"
|
||||||
android:src="@drawable/ic_color"/>
|
android:src="@drawable/ic_color"/>
|
||||||
@@ -433,6 +444,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@+id/event_caldav_calendar_divider"
|
android:layout_below="@+id/event_caldav_calendar_divider"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
|
android:layout_marginBottom="@dimen/medium_margin"
|
||||||
android:layout_toEndOf="@+id/event_type_image"
|
android:layout_toEndOf="@+id/event_type_image"
|
||||||
android:layout_toRightOf="@+id/event_type_image"
|
android:layout_toRightOf="@+id/event_type_image"
|
||||||
android:background="?attr/selectableItemBackground">
|
android:background="?attr/selectableItemBackground">
|
||||||
@@ -441,12 +453,12 @@
|
|||||||
android:id="@+id/event_type"
|
android:id="@+id/event_type"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="@dimen/small_margin"
|
||||||
android:layout_marginLeft="@dimen/small_margin"
|
android:layout_marginLeft="@dimen/small_margin"
|
||||||
android:layout_marginRight="@dimen/medium_margin"
|
android:layout_marginRight="@dimen/medium_margin"
|
||||||
android:layout_marginStart="@dimen/small_margin"
|
|
||||||
android:layout_toLeftOf="@+id/event_type_color"
|
android:layout_toLeftOf="@+id/event_type_color"
|
||||||
android:paddingBottom="@dimen/normal_margin"
|
|
||||||
android:paddingTop="@dimen/normal_margin"
|
android:paddingTop="@dimen/normal_margin"
|
||||||
|
android:paddingBottom="@dimen/normal_margin"
|
||||||
android:textSize="@dimen/day_text_size"/>
|
android:textSize="@dimen/day_text_size"/>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
@@ -467,7 +479,6 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1px"
|
android:layout_height="1px"
|
||||||
android:layout_below="@+id/event_type_holder"
|
android:layout_below="@+id/event_type_holder"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
|
||||||
android:background="@color/divider_grey"
|
android:background="@color/divider_grey"
|
||||||
android:importantForAccessibility="no"/>
|
android:importantForAccessibility="no"/>
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
@@ -1,15 +1,22 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<android.support.design.widget.CoordinatorLayout
|
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:id="@+id/calendar_coordinator"
|
android:id="@+id/calendar_coordinator"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<FrameLayout
|
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||||
android:id="@+id/fragments_holder"
|
android:id="@+id/swipe_refresh_layout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"/>
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/fragments_holder"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"/>
|
||||||
|
|
||||||
|
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyFloatingActionButton
|
<com.simplemobiletools.commons.views.MyFloatingActionButton
|
||||||
android:id="@+id/calendar_fab"
|
android:id="@+id/calendar_fab"
|
||||||
@@ -65,4 +72,4 @@
|
|||||||
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager"/>
|
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
</android.support.design.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||||
|
@@ -17,18 +17,18 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/settings_purchase_thank_you"
|
android:id="@+id/settings_purchase_thank_you"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/purchase_simple_thank_you"/>
|
android:text="@string/purchase_simple_thank_you"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@@ -39,18 +39,18 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/settings_customize_colors_label"
|
android:id="@+id/settings_customize_colors_label"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/customize_colors"/>
|
android:text="@string/customize_colors"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@@ -61,18 +61,18 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/settings_manage_event_types_label"
|
android:id="@+id/settings_manage_event_types_label"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/manage_event_types"/>
|
android:text="@string/manage_event_types"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@@ -83,10 +83,10 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
android:id="@+id/settings_use_english"
|
android:id="@+id/settings_use_english"
|
||||||
@@ -94,8 +94,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/use_english_language"/>
|
android:text="@string/use_english_language"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@@ -106,10 +106,10 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
android:id="@+id/settings_hour_format"
|
android:id="@+id/settings_hour_format"
|
||||||
@@ -117,8 +117,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/use_24_hour_time_format"/>
|
android:text="@string/use_24_hour_time_format"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@@ -129,10 +129,10 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
android:id="@+id/settings_sunday_first"
|
android:id="@+id/settings_sunday_first"
|
||||||
@@ -140,8 +140,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/sunday_first"/>
|
android:text="@string/sunday_first"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@@ -152,10 +152,10 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
android:id="@+id/settings_avoid_whats_new"
|
android:id="@+id/settings_avoid_whats_new"
|
||||||
@@ -163,8 +163,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/avoid_whats_new"/>
|
android:text="@string/avoid_whats_new"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@@ -180,8 +180,8 @@
|
|||||||
android:id="@+id/reminders_label"
|
android:id="@+id/reminders_label"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginLeft="@dimen/bigger_margin"
|
|
||||||
android:layout_marginStart="@dimen/bigger_margin"
|
android:layout_marginStart="@dimen/bigger_margin"
|
||||||
|
android:layout_marginLeft="@dimen/bigger_margin"
|
||||||
android:layout_marginTop="@dimen/activity_margin"
|
android:layout_marginTop="@dimen/activity_margin"
|
||||||
android:text="@string/event_reminders"
|
android:text="@string/event_reminders"
|
||||||
android:textAllCaps="true"
|
android:textAllCaps="true"
|
||||||
@@ -193,10 +193,10 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
android:id="@+id/settings_vibrate"
|
android:id="@+id/settings_vibrate"
|
||||||
@@ -204,8 +204,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/vibrate"/>
|
android:text="@string/vibrate"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@@ -216,10 +216,10 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
android:id="@+id/settings_loop_reminders"
|
android:id="@+id/settings_loop_reminders"
|
||||||
@@ -227,8 +227,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/loop_reminders"/>
|
android:text="@string/loop_reminders"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@@ -239,18 +239,18 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/bigger_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/bigger_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/bigger_margin">
|
android:paddingBottom="@dimen/bigger_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/settings_reminder_sound_label"
|
android:id="@+id/settings_reminder_sound_label"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_toLeftOf="@+id/settings_reminder_sound"
|
|
||||||
android:layout_toStartOf="@+id/settings_reminder_sound"
|
android:layout_toStartOf="@+id/settings_reminder_sound"
|
||||||
|
android:layout_toLeftOf="@+id/settings_reminder_sound"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:paddingRight="@dimen/medium_margin"
|
android:paddingRight="@dimen/medium_margin"
|
||||||
android:text="@string/reminder_sound"/>
|
android:text="@string/reminder_sound"/>
|
||||||
@@ -273,18 +273,18 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/settings_reminder_audio_stream_label"
|
android:id="@+id/settings_reminder_audio_stream_label"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_toLeftOf="@+id/settings_reminder_audio_stream"
|
|
||||||
android:layout_toStartOf="@+id/settings_reminder_audio_stream"
|
android:layout_toStartOf="@+id/settings_reminder_audio_stream"
|
||||||
|
android:layout_toLeftOf="@+id/settings_reminder_audio_stream"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:paddingRight="@dimen/medium_margin"
|
android:paddingRight="@dimen/medium_margin"
|
||||||
android:text="@string/reminder_stream"/>
|
android:text="@string/reminder_stream"/>
|
||||||
@@ -308,10 +308,10 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
android:id="@+id/settings_use_same_snooze"
|
android:id="@+id/settings_use_same_snooze"
|
||||||
@@ -319,8 +319,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/use_same_snooze"/>
|
android:text="@string/use_same_snooze"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@@ -331,18 +331,18 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/bigger_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/bigger_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/bigger_margin">
|
android:paddingBottom="@dimen/bigger_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/settings_snooze_time_label"
|
android:id="@+id/settings_snooze_time_label"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_toLeftOf="@+id/settings_snooze_time"
|
|
||||||
android:layout_toStartOf="@+id/settings_snooze_time"
|
android:layout_toStartOf="@+id/settings_snooze_time"
|
||||||
|
android:layout_toLeftOf="@+id/settings_snooze_time"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:paddingRight="@dimen/medium_margin"
|
android:paddingRight="@dimen/medium_margin"
|
||||||
android:text="@string/snooze_time"/>
|
android:text="@string/snooze_time"/>
|
||||||
@@ -366,10 +366,10 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
android:id="@+id/settings_use_last_event_reminders"
|
android:id="@+id/settings_use_last_event_reminders"
|
||||||
@@ -377,8 +377,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/use_last_event_reminders"/>
|
android:text="@string/use_last_event_reminders"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@@ -389,18 +389,18 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/bigger_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/bigger_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/bigger_margin">
|
android:paddingBottom="@dimen/bigger_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/settings_default_reminder_1_label"
|
android:id="@+id/settings_default_reminder_1_label"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_toLeftOf="@+id/settings_default_reminder_1"
|
|
||||||
android:layout_toStartOf="@+id/settings_default_reminder_1"
|
android:layout_toStartOf="@+id/settings_default_reminder_1"
|
||||||
|
android:layout_toLeftOf="@+id/settings_default_reminder_1"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:paddingRight="@dimen/medium_margin"
|
android:paddingRight="@dimen/medium_margin"
|
||||||
android:text="@string/default_reminder_1"/>
|
android:text="@string/default_reminder_1"/>
|
||||||
@@ -424,18 +424,18 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/bigger_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/bigger_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/bigger_margin">
|
android:paddingBottom="@dimen/bigger_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/settings_default_reminder_2_label"
|
android:id="@+id/settings_default_reminder_2_label"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_toLeftOf="@+id/settings_default_reminder_2"
|
|
||||||
android:layout_toStartOf="@+id/settings_default_reminder_2"
|
android:layout_toStartOf="@+id/settings_default_reminder_2"
|
||||||
|
android:layout_toLeftOf="@+id/settings_default_reminder_2"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:paddingRight="@dimen/medium_margin"
|
android:paddingRight="@dimen/medium_margin"
|
||||||
android:text="@string/default_reminder_2"/>
|
android:text="@string/default_reminder_2"/>
|
||||||
@@ -459,18 +459,18 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/bigger_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/bigger_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/bigger_margin">
|
android:paddingBottom="@dimen/bigger_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/settings_default_reminder_3_label"
|
android:id="@+id/settings_default_reminder_3_label"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_toLeftOf="@+id/settings_default_reminder_3"
|
|
||||||
android:layout_toStartOf="@+id/settings_default_reminder_3"
|
android:layout_toStartOf="@+id/settings_default_reminder_3"
|
||||||
|
android:layout_toLeftOf="@+id/settings_default_reminder_3"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:paddingRight="@dimen/medium_margin"
|
android:paddingRight="@dimen/medium_margin"
|
||||||
android:text="@string/default_reminder_3"/>
|
android:text="@string/default_reminder_3"/>
|
||||||
@@ -499,8 +499,8 @@
|
|||||||
android:id="@+id/caldav_label"
|
android:id="@+id/caldav_label"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginLeft="@dimen/bigger_margin"
|
|
||||||
android:layout_marginStart="@dimen/bigger_margin"
|
android:layout_marginStart="@dimen/bigger_margin"
|
||||||
|
android:layout_marginLeft="@dimen/bigger_margin"
|
||||||
android:layout_marginTop="@dimen/activity_margin"
|
android:layout_marginTop="@dimen/activity_margin"
|
||||||
android:text="@string/caldav"
|
android:text="@string/caldav"
|
||||||
android:textAllCaps="true"
|
android:textAllCaps="true"
|
||||||
@@ -512,10 +512,10 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
android:id="@+id/settings_caldav_sync"
|
android:id="@+id/settings_caldav_sync"
|
||||||
@@ -523,21 +523,44 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/caldav_sync"/>
|
android:text="@string/caldav_sync"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/settings_caldav_pull_to_refresh_holder"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
|
android:paddingRight="@dimen/normal_margin"
|
||||||
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
|
android:id="@+id/settings_caldav_pull_to_refresh"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@null"
|
||||||
|
android:clickable="false"
|
||||||
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
|
android:text="@string/enable_pull_to_refresh"/>
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:id="@+id/settings_manage_synced_calendars_holder"
|
android:id="@+id/settings_manage_synced_calendars_holder"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/bigger_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
|
||||||
android:paddingTop="@dimen/bigger_margin"
|
android:paddingTop="@dimen/bigger_margin"
|
||||||
|
android:paddingRight="@dimen/normal_margin"
|
||||||
|
android:paddingBottom="@dimen/bigger_margin"
|
||||||
android:visibility="gone">
|
android:visibility="gone">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
@@ -562,8 +585,8 @@
|
|||||||
android:id="@+id/weekly_view_label"
|
android:id="@+id/weekly_view_label"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginLeft="@dimen/bigger_margin"
|
|
||||||
android:layout_marginStart="@dimen/bigger_margin"
|
android:layout_marginStart="@dimen/bigger_margin"
|
||||||
|
android:layout_marginLeft="@dimen/bigger_margin"
|
||||||
android:layout_marginTop="@dimen/activity_margin"
|
android:layout_marginTop="@dimen/activity_margin"
|
||||||
android:text="@string/weekly_view"
|
android:text="@string/weekly_view"
|
||||||
android:textAllCaps="true"
|
android:textAllCaps="true"
|
||||||
@@ -575,18 +598,18 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/bigger_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/bigger_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/bigger_margin">
|
android:paddingBottom="@dimen/bigger_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/settings_start_weekly_at_label"
|
android:id="@+id/settings_start_weekly_at_label"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_toLeftOf="@+id/settings_start_weekly_at"
|
|
||||||
android:layout_toStartOf="@+id/settings_start_weekly_at"
|
android:layout_toStartOf="@+id/settings_start_weekly_at"
|
||||||
|
android:layout_toLeftOf="@+id/settings_start_weekly_at"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:paddingRight="@dimen/medium_margin"
|
android:paddingRight="@dimen/medium_margin"
|
||||||
android:text="@string/start_day_at"/>
|
android:text="@string/start_day_at"/>
|
||||||
@@ -609,18 +632,18 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/bigger_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/bigger_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/bigger_margin">
|
android:paddingBottom="@dimen/bigger_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/settings_end_weekly_at_label"
|
android:id="@+id/settings_end_weekly_at_label"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_toLeftOf="@+id/settings_end_weekly_at"
|
|
||||||
android:layout_toStartOf="@+id/settings_end_weekly_at"
|
android:layout_toStartOf="@+id/settings_end_weekly_at"
|
||||||
|
android:layout_toLeftOf="@+id/settings_end_weekly_at"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:paddingRight="@dimen/medium_margin"
|
android:paddingRight="@dimen/medium_margin"
|
||||||
android:text="@string/end_day_at"/>
|
android:text="@string/end_day_at"/>
|
||||||
@@ -649,8 +672,8 @@
|
|||||||
android:id="@+id/monthly_view_label"
|
android:id="@+id/monthly_view_label"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginLeft="@dimen/bigger_margin"
|
|
||||||
android:layout_marginStart="@dimen/bigger_margin"
|
android:layout_marginStart="@dimen/bigger_margin"
|
||||||
|
android:layout_marginLeft="@dimen/bigger_margin"
|
||||||
android:layout_marginTop="@dimen/activity_margin"
|
android:layout_marginTop="@dimen/activity_margin"
|
||||||
android:text="@string/monthly_view"
|
android:text="@string/monthly_view"
|
||||||
android:textAllCaps="true"
|
android:textAllCaps="true"
|
||||||
@@ -662,10 +685,10 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
android:id="@+id/settings_week_numbers"
|
android:id="@+id/settings_week_numbers"
|
||||||
@@ -673,8 +696,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/week_numbers"/>
|
android:text="@string/week_numbers"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@@ -684,10 +707,10 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
android:id="@+id/settings_show_grid"
|
android:id="@+id/settings_show_grid"
|
||||||
@@ -695,8 +718,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/show_a_grid"/>
|
android:text="@string/show_a_grid"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@@ -712,8 +735,8 @@
|
|||||||
android:id="@+id/simple_event_list_label"
|
android:id="@+id/simple_event_list_label"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginLeft="@dimen/bigger_margin"
|
|
||||||
android:layout_marginStart="@dimen/bigger_margin"
|
android:layout_marginStart="@dimen/bigger_margin"
|
||||||
|
android:layout_marginLeft="@dimen/bigger_margin"
|
||||||
android:layout_marginTop="@dimen/activity_margin"
|
android:layout_marginTop="@dimen/activity_margin"
|
||||||
android:text="@string/event_lists"
|
android:text="@string/event_lists"
|
||||||
android:textAllCaps="true"
|
android:textAllCaps="true"
|
||||||
@@ -725,10 +748,10 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
android:id="@+id/settings_replace_description"
|
android:id="@+id/settings_replace_description"
|
||||||
@@ -736,8 +759,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/replace_description_with_location"/>
|
android:text="@string/replace_description_with_location"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@@ -747,18 +770,18 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/bigger_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/bigger_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/bigger_margin">
|
android:paddingBottom="@dimen/bigger_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/settings_display_past_events_label"
|
android:id="@+id/settings_display_past_events_label"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_toLeftOf="@+id/settings_display_past_events"
|
|
||||||
android:layout_toStartOf="@+id/settings_display_past_events"
|
android:layout_toStartOf="@+id/settings_display_past_events"
|
||||||
|
android:layout_toLeftOf="@+id/settings_display_past_events"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:paddingRight="@dimen/medium_margin"
|
android:paddingRight="@dimen/medium_margin"
|
||||||
android:text="@string/display_past_events"/>
|
android:text="@string/display_past_events"/>
|
||||||
@@ -787,8 +810,8 @@
|
|||||||
android:id="@+id/widgets_label"
|
android:id="@+id/widgets_label"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginLeft="@dimen/bigger_margin"
|
|
||||||
android:layout_marginStart="@dimen/bigger_margin"
|
android:layout_marginStart="@dimen/bigger_margin"
|
||||||
|
android:layout_marginLeft="@dimen/bigger_margin"
|
||||||
android:layout_marginTop="@dimen/activity_margin"
|
android:layout_marginTop="@dimen/activity_margin"
|
||||||
android:text="@string/widgets"
|
android:text="@string/widgets"
|
||||||
android:textAllCaps="true"
|
android:textAllCaps="true"
|
||||||
@@ -799,18 +822,18 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/settings_font_size_label"
|
android:id="@+id/settings_font_size_label"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_toLeftOf="@+id/settings_font_size"
|
|
||||||
android:layout_toStartOf="@+id/settings_font_size"
|
android:layout_toStartOf="@+id/settings_font_size"
|
||||||
|
android:layout_toLeftOf="@+id/settings_font_size"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:paddingRight="@dimen/medium_margin"
|
android:paddingRight="@dimen/medium_margin"
|
||||||
android:text="@string/font_size"/>
|
android:text="@string/font_size"/>
|
||||||
@@ -828,23 +851,57 @@
|
|||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/settings_list_widget_view_to_open_holder"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
|
android:paddingRight="@dimen/normal_margin"
|
||||||
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
|
android:id="@+id/settings_list_widget_view_to_open_label"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:layout_toStartOf="@+id/settings_list_widget_view_to_open"
|
||||||
|
android:layout_toLeftOf="@+id/settings_list_widget_view_to_open"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
|
android:paddingRight="@dimen/medium_margin"
|
||||||
|
android:text="@string/view_to_open_from_widget"/>
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
|
android:id="@+id/settings_list_widget_view_to_open"
|
||||||
|
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>
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:id="@+id/settings_customize_widget_colors_holder"
|
android:id="@+id/settings_customize_widget_colors_holder"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/settings_customize_widget_colors_label"
|
android:id="@+id/settings_customize_widget_colors_label"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/customize_widget_colors"/>
|
android:text="@string/customize_widget_colors"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@@ -860,8 +917,8 @@
|
|||||||
android:id="@+id/events_label"
|
android:id="@+id/events_label"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginLeft="@dimen/bigger_margin"
|
|
||||||
android:layout_marginStart="@dimen/bigger_margin"
|
android:layout_marginStart="@dimen/bigger_margin"
|
||||||
|
android:layout_marginLeft="@dimen/bigger_margin"
|
||||||
android:layout_marginTop="@dimen/activity_margin"
|
android:layout_marginTop="@dimen/activity_margin"
|
||||||
android:text="@string/events"
|
android:text="@string/events"
|
||||||
android:textAllCaps="true"
|
android:textAllCaps="true"
|
||||||
@@ -873,10 +930,10 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
android:id="@+id/settings_dim_past_events"
|
android:id="@+id/settings_dim_past_events"
|
||||||
@@ -884,8 +941,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/dim_past_events"/>
|
android:text="@string/dim_past_events"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@@ -895,10 +952,10 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/bigger_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/bigger_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/bigger_margin">
|
android:paddingBottom="@dimen/bigger_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/settings_delete_all_events"
|
android:id="@+id/settings_delete_all_events"
|
||||||
|
@@ -12,8 +12,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:paddingLeft="@dimen/activity_margin"
|
android:paddingLeft="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/activity_margin"
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingRight="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/export_events_folder_label"
|
android:id="@+id/export_events_folder_label"
|
||||||
@@ -26,11 +26,11 @@
|
|||||||
android:id="@+id/export_events_folder"
|
android:id="@+id/export_events_folder"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginBottom="@dimen/activity_margin"
|
|
||||||
android:layout_marginLeft="@dimen/activity_margin"
|
android:layout_marginLeft="@dimen/activity_margin"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:layout_marginBottom="@dimen/activity_margin"
|
||||||
|
android:paddingTop="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/small_margin"/>
|
android:paddingBottom="@dimen/small_margin"/>
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/export_events_filename_label"
|
android:id="@+id/export_events_filename_label"
|
||||||
@@ -43,18 +43,18 @@
|
|||||||
android:id="@+id/export_events_filename"
|
android:id="@+id/export_events_filename"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginBottom="@dimen/activity_margin"
|
|
||||||
android:layout_marginLeft="@dimen/activity_margin"
|
android:layout_marginLeft="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:layout_marginBottom="@dimen/activity_margin"
|
||||||
android:paddingTop="@dimen/normal_margin"
|
android:paddingTop="@dimen/normal_margin"
|
||||||
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:textSize="@dimen/normal_text_size"/>
|
android:textSize="@dimen/normal_text_size"/>
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
||||||
android:id="@+id/export_events_checkbox"
|
android:id="@+id/export_events_checkbox"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
|
||||||
android:paddingTop="@dimen/small_margin"
|
android:paddingTop="@dimen/small_margin"
|
||||||
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:text="@string/export_past_events_too"/>
|
android:text="@string/export_past_events_too"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@@ -68,8 +68,8 @@
|
|||||||
android:id="@+id/export_events_divider"
|
android:id="@+id/export_events_divider"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1px"
|
android:layout_height="1px"
|
||||||
android:layout_marginBottom="@dimen/medium_margin"
|
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
|
android:layout_marginBottom="@dimen/medium_margin"
|
||||||
android:background="@color/divider_grey"
|
android:background="@color/divider_grey"
|
||||||
android:importantForAccessibility="no"/>
|
android:importantForAccessibility="no"/>
|
||||||
|
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
android:text="@string/include_event_types"
|
android:text="@string/include_event_types"
|
||||||
android:textSize="@dimen/smaller_text_size"/>
|
android:textSize="@dimen/smaller_text_size"/>
|
||||||
|
|
||||||
<android.support.v7.widget.RecyclerView
|
<com.simplemobiletools.commons.views.MyRecyclerView
|
||||||
android:id="@+id/export_events_types_list"
|
android:id="@+id/export_events_types_list"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<android.support.v7.widget.RecyclerView
|
<com.simplemobiletools.commons.views.MyRecyclerView
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:id="@+id/filter_event_types_list"
|
android:id="@+id/filter_event_types_list"
|
||||||
|
43
app/src/main/res/layout/dialog_select_event_type_color.xml
Normal file
43
app/src/main/res/layout/dialog_select_event_type_color.xml
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<ScrollView
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@+id/dialog_select_event_type_color_scrollview"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/dialog_select_event_type_other_holder"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
|
android:id="@+id/dialog_select_event_type_other_value"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
|
android:paddingLeft="@dimen/big_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
|
android:paddingRight="@dimen/activity_margin"
|
||||||
|
android:paddingBottom="@dimen/activity_margin"
|
||||||
|
android:text="@string/select_a_different_caldav_color"
|
||||||
|
android:textSize="@dimen/normal_text_size"/>
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/dialog_select_event_type_other_divider"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1px"
|
||||||
|
android:layout_below="@+id/dialog_select_event_type_other_value"
|
||||||
|
android:background="@color/divider_grey"
|
||||||
|
android:importantForAccessibility="no"/>
|
||||||
|
|
||||||
|
<RadioGroup
|
||||||
|
android:id="@+id/dialog_select_event_type_color_radio"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@+id/dialog_select_event_type_other_divider"
|
||||||
|
android:paddingLeft="@dimen/activity_margin"
|
||||||
|
android:paddingTop="@dimen/normal_margin"
|
||||||
|
android:paddingRight="@dimen/activity_margin"
|
||||||
|
android:paddingBottom="@dimen/normal_margin"/>
|
||||||
|
</RelativeLayout>
|
||||||
|
</ScrollView>
|
@@ -5,7 +5,7 @@
|
|||||||
android:id="@+id/search"
|
android:id="@+id/search"
|
||||||
android:icon="@drawable/ic_search"
|
android:icon="@drawable/ic_search"
|
||||||
android:title="@string/search"
|
android:title="@string/search"
|
||||||
app:actionViewClass="android.support.v7.widget.SearchView"
|
app:actionViewClass="androidx.appcompat.widget.SearchView"
|
||||||
app:showAsAction="collapseActionView|ifRoom"/>
|
app:showAsAction="collapseActionView|ifRoom"/>
|
||||||
<item
|
<item
|
||||||
android:id="@+id/go_to_today"
|
android:id="@+id/go_to_today"
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Default reminder 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Default reminder 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Default reminder 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">Təqvimi dəyişmək alınmadı</string>
|
<string name="editing_calendar_failed">Təqvimi dəyişmək alınmadı</string>
|
||||||
<string name="syncing">Sinxronlaşdırılır…</string>
|
<string name="syncing">Sinxronlaşdırılır…</string>
|
||||||
<string name="synchronization_completed">Sinxronlaşma bitdi</string>
|
<string name="synchronization_completed">Sinxronlaşma bitdi</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Default reminder 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Default reminder 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Default reminder 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">C\'hwitadenn en ur embann an deiziataer</string>
|
<string name="editing_calendar_failed">C\'hwitadenn en ur embann an deiziataer</string>
|
||||||
<string name="syncing">O c\'houbredañ…</string>
|
<string name="syncing">O c\'houbredañ…</string>
|
||||||
<string name="synchronization_completed">Echuet gant ar goubredañ</string>
|
<string name="synchronization_completed">Echuet gant ar goubredañ</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -25,7 +25,7 @@
|
|||||||
<string name="end_before_start">Konec události nemůže být dříve než začátek</string>
|
<string name="end_before_start">Konec události nemůže být dříve než začátek</string>
|
||||||
<string name="event_added">Událost úspěšně přidána</string>
|
<string name="event_added">Událost úspěšně přidána</string>
|
||||||
<string name="event_updated">Událost úspěšně změněna</string>
|
<string name="event_updated">Událost úspěšně změněna</string>
|
||||||
<string name="filter_events_by_type">Filtrovat události podle typu</string>
|
<string name="filter_events_by_type">Filtrovat události</string>
|
||||||
<string name="please_fill_location">Vyplňte prosím místo, které se zobrazí na mapě</string>
|
<string name="please_fill_location">Vyplňte prosím místo, které se zobrazí na mapě</string>
|
||||||
<string name="public_event_notification_text">Událost právě nastává</string>
|
<string name="public_event_notification_text">Událost právě nastává</string>
|
||||||
|
|
||||||
@@ -86,27 +86,27 @@
|
|||||||
<string name="birthdays_added">Narozeniny byly úspěšně přidány</string>
|
<string name="birthdays_added">Narozeniny byly úspěšně přidány</string>
|
||||||
|
|
||||||
<!-- Anniversaries -->
|
<!-- Anniversaries -->
|
||||||
<string name="anniversaries">Anniversaries</string>
|
<string name="anniversaries">Výročí</string>
|
||||||
<string name="add_anniversaries">Add contact anniversaries</string>
|
<string name="add_anniversaries">Přidat výročí</string>
|
||||||
<string name="no_anniversaries">No anniversaries have been found</string>
|
<string name="no_anniversaries">Žádné výročí nebylo nalezeno</string>
|
||||||
<string name="anniversaries_added">Anniversaries added successfully</string>
|
<string name="anniversaries_added">Výročí bylo úspěšně přidáno</string>
|
||||||
|
|
||||||
<!-- Event Reminders -->
|
<!-- Event Reminders -->
|
||||||
<string name="reminder">Připomenutí</string>
|
<string name="reminder">Připomínka</string>
|
||||||
<string name="before">před</string>
|
<string name="before">před</string>
|
||||||
<string name="add_another_reminder">Přidat další připomenutí</string>
|
<string name="add_another_reminder">Přidat další připomínku</string>
|
||||||
<string name="event_reminders">Event reminders</string>
|
<string name="event_reminders">Připomínky událostí</string>
|
||||||
|
|
||||||
<!-- Export / Import -->
|
<!-- Export / Import -->
|
||||||
<string name="import_events">Import událostí</string>
|
<string name="import_events">Import událostí</string>
|
||||||
<string name="export_events">Export událostí</string>
|
<string name="export_events">Export událostí</string>
|
||||||
<string name="import_events_from_ics">Importovat kalendář ze souboru .ics</string>
|
<string name="import_events_from_ics">Importovat kalendář ze souboru .ics</string>
|
||||||
<string name="export_events_to_ics">Exportovat kalendář do souboru .ics</string>
|
<string name="export_events_to_ics">Exportovat kalendář do souboru .ics</string>
|
||||||
<string name="default_event_type">Defaultní typ události</string>
|
<string name="default_event_type">Přednastavený typ události</string>
|
||||||
<string name="export_past_events_too">Export i minulých událostí</string>
|
<string name="export_past_events_too">Exportovat i uplynulé události</string>
|
||||||
<string name="include_event_types">Zahrnout typy událostí</string>
|
<string name="include_event_types">Zahrnout typy událostí</string>
|
||||||
<string name="filename_without_ics">Název souboru (bez .ics)</string>
|
<string name="filename_without_ics">Název souboru (bez .ics)</string>
|
||||||
<string name="override_event_types">Override event types in the file</string>
|
<string name="override_event_types">Přepsat typ události v souboru</string>
|
||||||
|
|
||||||
<!-- Event details -->
|
<!-- Event details -->
|
||||||
<string name="title">Název</string>
|
<string name="title">Název</string>
|
||||||
@@ -141,8 +141,8 @@
|
|||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="manage_event_types">Správa typů událostí</string>
|
<string name="manage_event_types">Správa typů událostí</string>
|
||||||
<string name="start_day_at">Počátek dne v</string>
|
<string name="start_day_at">Počátek dne</string>
|
||||||
<string name="end_day_at">Konec dne v</string>
|
<string name="end_day_at">Konec dne</string>
|
||||||
<string name="week_numbers">Zobrazovat číslo týdne</string>
|
<string name="week_numbers">Zobrazovat číslo týdne</string>
|
||||||
<string name="vibrate">Vibrovat</string>
|
<string name="vibrate">Vibrovat</string>
|
||||||
<string name="reminder_sound">Tón oznámení</string>
|
<string name="reminder_sound">Tón oznámení</string>
|
||||||
@@ -155,19 +155,21 @@
|
|||||||
<string name="replace_description_with_location">Nahradit popis udalosti lokací</string>
|
<string name="replace_description_with_location">Nahradit popis udalosti lokací</string>
|
||||||
<string name="delete_all_events">Smazat všechny události</string>
|
<string name="delete_all_events">Smazat všechny události</string>
|
||||||
<string name="delete_all_events_confirmation">Opravdu chcete smazat všechny události? Typy událostí a ostatní nastavení zůstanou neporušené.</string>
|
<string name="delete_all_events_confirmation">Opravdu chcete smazat všechny události? Typy událostí a ostatní nastavení zůstanou neporušené.</string>
|
||||||
<string name="show_a_grid">Zobrazit mřížku</string>
|
<string name="show_a_grid">Zobrazovat mřížku</string>
|
||||||
<string name="loop_reminders">Připomínat až do vypnutí</string>
|
<string name="loop_reminders">Připomínat až do vypnutí</string>
|
||||||
<string name="dim_past_events">Smazat minulé události</string>
|
<string name="dim_past_events">Smazat minulé události</string>
|
||||||
<string name="events">Události</string>
|
<string name="events">Události</string>
|
||||||
<string name="reminder_stream">Zvuk upomínky</string>
|
<string name="reminder_stream">Zvuk upomínky</string>
|
||||||
<string name="system_stream">Systémový</string>
|
<string name="system_stream">Systém</string>
|
||||||
<string name="alarm_stream">Budík</string>
|
<string name="alarm_stream">Budík</string>
|
||||||
<string name="notification_stream">Notifikace</string>
|
<string name="notification_stream">Notifikace</string>
|
||||||
<string name="ring_stream">Zvonek</string>
|
<string name="ring_stream">Vyzvánění</string>
|
||||||
<string name="use_last_event_reminders">Use the last events\' reminders as the default for new event</string>
|
<string name="use_last_event_reminders">Použij poslední připomenutou událost jako výchozí pro novou událost</string>
|
||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Výchozí připomenutí 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Výchozí připomenutí 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Výchozí připomenutí 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">Editování kalendáře se nezdařilo</string>
|
<string name="editing_calendar_failed">Editování kalendáře se nezdařilo</string>
|
||||||
<string name="syncing">Synchronizuji…</string>
|
<string name="syncing">Synchronizuji…</string>
|
||||||
<string name="synchronization_completed">Synchronizace dokončena</string>
|
<string name="synchronization_completed">Synchronizace dokončena</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
@@ -202,15 +205,15 @@
|
|||||||
<string name="sample_title_5">na kafe</string>
|
<string name="sample_title_5">na kafe</string>
|
||||||
|
|
||||||
<!-- FAQ -->
|
<!-- FAQ -->
|
||||||
<string name="faq_1_title">How can I remove the holidays imported via the \"Add holidays\" button?</string>
|
<string name="faq_1_title">Jak mohu odstranit svátky importované přes tlačítko \"Přidat svátek\"?</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,
|
<string name="faq_1_text">Svátky vytvořené touto cestou jsou vloženy s novým typem události \"Svátky\". Odstranit jej můžete přes: Nastavení -> Správa typů událostí ->
|
||||||
long press the given event type and delete it by selecting the trashbin.</string>
|
dlouze podržte daný typ události a stisknete tlačítko s ikonou koše pro odstranění.</string>
|
||||||
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting CalDAV?</string>
|
<string name="faq_2_title">Mohu synchronizovat své události přes Google Kalendář nebo přes jinou službu podporující 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.
|
<string name="faq_2_text">Ano, zapnutím \"CalDAV sync\" v nastavení aplikace a vybráním kalendáře se kterým se chcete synchronizovat. Budete ovšem potřebovat nějakou aplikaci třetí strany pro samotné synchronizovaní mezi zařízením a servery.
|
||||||
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>
|
Pokud chcete synchronizovat Google kalendář, tak oficiální aplikace Google toto zvládne. Pro jiné kalendáře potřebujete synchronizační adaptér třetí strany, například DAVdroid.</string>
|
||||||
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
|
<string name="faq_3_title">Vizuálně vidím připomínku, ale neslyším žádný zvuk. Co mám dělat?</string>
|
||||||
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
|
<string name="faq_3_text">Nejenom zobrazování aktuální připomínky, ale i přehrávání zvuku je dost ovlivněno operačním systémem. Pokud neslyšíte žádný zvuk, zkuste jít do nastavení aplikace,
|
||||||
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
|
vyberte: \"Zvuk upomínky\" a změňte na něco jiného. Pokud zvuk stále nefunguje, zkontrolujte zda není zvuk vypnut v nastavení vašeho systému.</string>
|
||||||
|
|
||||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||||
<!-- Short description has to have less than 80 chars -->
|
<!-- Short description has to have less than 80 chars -->
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Påmindelse 1</string>
|
<string name="default_reminder_1">Påmindelse 1</string>
|
||||||
<string name="default_reminder_2">Påmindelse 2</string>
|
<string name="default_reminder_2">Påmindelse 2</string>
|
||||||
<string name="default_reminder_3">Påmindelse 3</string>
|
<string name="default_reminder_3">Påmindelse 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">Redigering af kalenderen mislykkedes</string>
|
<string name="editing_calendar_failed">Redigering af kalenderen mislykkedes</string>
|
||||||
<string name="syncing">Synkroniserer…</string>
|
<string name="syncing">Synkroniserer…</string>
|
||||||
<string name="synchronization_completed">Synkronisering gennemført</string>
|
<string name="synchronization_completed">Synkronisering gennemført</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Standarderinnerung 1</string>
|
<string name="default_reminder_1">Standarderinnerung 1</string>
|
||||||
<string name="default_reminder_2">Standarderinnerung 2</string>
|
<string name="default_reminder_2">Standarderinnerung 2</string>
|
||||||
<string name="default_reminder_3">Standarderinnerung 3</string>
|
<string name="default_reminder_3">Standarderinnerung 3</string>
|
||||||
|
<string name="view_to_open_from_widget">Standardansicht</string>
|
||||||
|
<string name="last_view">Letzte Ansicht</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">Ändern des Kalenders fehlgeschlagen</string>
|
<string name="editing_calendar_failed">Ändern des Kalenders fehlgeschlagen</string>
|
||||||
<string name="syncing">Wird synchronisiert…</string>
|
<string name="syncing">Wird synchronisiert…</string>
|
||||||
<string name="synchronization_completed">Synchronisation erfolgreich</string>
|
<string name="synchronization_completed">Synchronisation erfolgreich</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Default reminder 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Default reminder 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Default reminder 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">Η επεξεργασία του ημερολογίου απέτυχε</string>
|
<string name="editing_calendar_failed">Η επεξεργασία του ημερολογίου απέτυχε</string>
|
||||||
<string name="syncing">Συγχρονισμός…</string>
|
<string name="syncing">Συγχρονισμός…</string>
|
||||||
<string name="synchronization_completed">Ο συγχρονισμός ολοκληρώθηκε</string>
|
<string name="synchronization_completed">Ο συγχρονισμός ολοκληρώθηκε</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Default reminder 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Default reminder 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Default reminder 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">Edición de calendario fallida</string>
|
<string name="editing_calendar_failed">Edición de calendario fallida</string>
|
||||||
<string name="syncing">Sincronizando…</string>
|
<string name="syncing">Sincronizando…</string>
|
||||||
<string name="synchronization_completed">Sincronización completa</string>
|
<string name="synchronization_completed">Sincronización completa</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Default reminder 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Default reminder 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Default reminder 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">Édition du calendrier échouée</string>
|
<string name="editing_calendar_failed">Édition du calendrier échouée</string>
|
||||||
<string name="syncing">Synchronisation…</string>
|
<string name="syncing">Synchronisation…</string>
|
||||||
<string name="synchronization_completed">Synchronisation terminée</string>
|
<string name="synchronization_completed">Synchronisation terminée</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Default reminder 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Default reminder 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Default reminder 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">Fallou a edición do calendario</string>
|
<string name="editing_calendar_failed">Fallou a edición do calendario</string>
|
||||||
<string name="syncing">Sincronizando…</string>
|
<string name="syncing">Sincronizando…</string>
|
||||||
<string name="synchronization_completed">Sincronización completa</string>
|
<string name="synchronization_completed">Sincronización completa</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -169,6 +169,8 @@
|
|||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Default reminder 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Default reminder 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Default reminder 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -181,6 +183,7 @@
|
|||||||
<string name="editing_calendar_failed">Editing calendar failed</string>
|
<string name="editing_calendar_failed">Editing calendar failed</string>
|
||||||
<string name="syncing">Syncing…</string>
|
<string name="syncing">Syncing…</string>
|
||||||
<string name="synchronization_completed">Sync completed</string>
|
<string name="synchronization_completed">Sync completed</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Default reminder 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Default reminder 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Default reminder 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">Uređivanje kalendara nije uspjelo</string>
|
<string name="editing_calendar_failed">Uređivanje kalendara nije uspjelo</string>
|
||||||
<string name="syncing">Sinkronizacija…</string>
|
<string name="syncing">Sinkronizacija…</string>
|
||||||
<string name="synchronization_completed">Sinkronizacija završena</string>
|
<string name="synchronization_completed">Sinkronizacija završena</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Default reminder 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Default reminder 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Default reminder 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">Editing calendar failed</string>
|
<string name="editing_calendar_failed">Editing calendar failed</string>
|
||||||
<string name="syncing">Syncing…</string>
|
<string name="syncing">Syncing…</string>
|
||||||
<string name="synchronization_completed">Sync completed</string>
|
<string name="synchronization_completed">Sync completed</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -19,15 +19,15 @@
|
|||||||
<string name="event">Evento</string>
|
<string name="event">Evento</string>
|
||||||
<string name="edit_event">Modifica evento</string>
|
<string name="edit_event">Modifica evento</string>
|
||||||
<string name="new_event">Nuovo evento</string>
|
<string name="new_event">Nuovo evento</string>
|
||||||
<string name="create_new_event">Create a new event</string>
|
<string name="create_new_event">Crea un nuovo evento</string>
|
||||||
<string name="duplicate_event">Duplicate event</string>
|
<string name="duplicate_event">Duplica evento</string>
|
||||||
<string name="title_empty">Il titolo non può essere vuoto</string>
|
<string name="title_empty">Il titolo non può essere vuoto</string>
|
||||||
<string name="end_before_start">L\'evento non può terminare prima del suo inizio</string>
|
<string name="end_before_start">L\'evento non può terminare prima del suo ianizio</string>
|
||||||
<string name="event_added">Evento aggiunto correttamente</string>
|
<string name="event_added">Evento aggiunto correttamente</string>
|
||||||
<string name="event_updated">Evento aggiornato correttamente</string>
|
<string name="event_updated">Evento aggiornato correttamente</string>
|
||||||
<string name="filter_events_by_type">Filtra eventi per tipologia</string>
|
<string name="filter_events_by_type">Filtra eventi per tipologia</string>
|
||||||
<string name="please_fill_location">Please fill in a location to be shown on a map</string>
|
<string name="please_fill_location">Riempire la posizione per essere mostrata su una mappa</string>
|
||||||
<string name="public_event_notification_text">An event is upcoming</string>
|
<string name="public_event_notification_text">Un evento è imminente</string>
|
||||||
|
|
||||||
<!-- Event Repetition -->
|
<!-- Event Repetition -->
|
||||||
<string name="repetition">Ripeti</string>
|
<string name="repetition">Ripeti</string>
|
||||||
@@ -44,24 +44,24 @@
|
|||||||
<string name="event_is_repeatable">L\'evento è ripetibile</string>
|
<string name="event_is_repeatable">L\'evento è ripetibile</string>
|
||||||
<string name="selection_contains_repetition">La selezione contiene eventi ripetuti</string>
|
<string name="selection_contains_repetition">La selezione contiene eventi ripetuti</string>
|
||||||
<string name="delete_one_only">Elimina solamente l\'occorenza selezionata</string>
|
<string name="delete_one_only">Elimina solamente l\'occorenza selezionata</string>
|
||||||
<string name="delete_future_occurrences">Delete this and all future occurrences</string>
|
<string name="delete_future_occurrences">Rimuovi questo e tutte le future occorrenze</string>
|
||||||
<string name="delete_all_occurrences">Elimina tutte le occorrenze</string>
|
<string name="delete_all_occurrences">Elimina tutte le occorrenze</string>
|
||||||
<string name="update_one_only">Aggiorna solamente l\'occorenza selezionata</string>
|
<string name="update_one_only">Aggiorna solamente l\'occorenza selezionata</string>
|
||||||
<string name="update_all_occurrences">Aggiorna tutte le occorenze</string>
|
<string name="update_all_occurrences">Aggiorna tutte le occorenze</string>
|
||||||
<string name="repeat_till_date">Ripeti fino a una data</string>
|
<string name="repeat_till_date">Ripeti fino a una data</string>
|
||||||
<string name="stop_repeating_after_x">Stop repeating after x occurrences</string>
|
<string name="stop_repeating_after_x">Smetti di ripetere dopo x occorrenze</string>
|
||||||
<string name="repeat_forever">Ripeti per sempre</string>
|
<string name="repeat_forever">Ripeti per sempre</string>
|
||||||
<string name="times">volte</string>
|
<string name="times">volte</string>
|
||||||
<string name="repeat">Ripeti</string>
|
<string name="repeat">Ripeti</string>
|
||||||
<string name="repeat_on">Repeat on</string>
|
<string name="repeat_on">Ripeti</string>
|
||||||
<string name="every_day">Ogni giorno</string>
|
<string name="every_day">Ogni giorno</string>
|
||||||
<string name="selected_days">On selected days</string>
|
<string name="selected_days">On selected days</string>
|
||||||
<string name="the_same_day">Lo stesso giorno</string>
|
<string name="the_same_day">Lo stesso giorno</string>
|
||||||
<string name="the_last_day">L\'ultimo giorno</string>
|
<string name="the_last_day">L\'ultimo giorno</string>
|
||||||
<string name="repeat_on_the_same_day_monthly">Ripeti lo stesso giorno ogni mese </string>
|
<string name="repeat_on_the_same_day_monthly">Ripeti lo stesso giorno ogni mese </string>
|
||||||
<string name="repeat_on_the_last_day_monthly">Repeat on the last day of the month</string>
|
<string name="repeat_on_the_last_day_monthly">Ripeti l\'ultimo giorno del mese</string>
|
||||||
<string name="repeat_on_the_same_day_yearly">Repeat on the same day every year</string>
|
<string name="repeat_on_the_same_day_yearly">Ripeti lo stesso giorno ogni anno</string>
|
||||||
<string name="repeat_every_m">Repeat every</string>
|
<string name="repeat_every_m">Ripeti ogni</string>
|
||||||
<string name="every_m">Tutti</string>
|
<string name="every_m">Tutti</string>
|
||||||
<string name="first_m">primo</string>
|
<string name="first_m">primo</string>
|
||||||
<string name="second_m">secondo</string>
|
<string name="second_m">secondo</string>
|
||||||
@@ -106,13 +106,13 @@
|
|||||||
<string name="export_past_events_too">Esporta anche eventi passati</string>
|
<string name="export_past_events_too">Esporta anche eventi passati</string>
|
||||||
<string name="include_event_types">Includi tipi evento</string>
|
<string name="include_event_types">Includi tipi evento</string>
|
||||||
<string name="filename_without_ics">Nome file (senza .ics)</string>
|
<string name="filename_without_ics">Nome file (senza .ics)</string>
|
||||||
<string name="override_event_types">Override event types in the file</string>
|
<string name="override_event_types">Sovrascrivi i tipi di eventi nel file</string>
|
||||||
|
|
||||||
<!-- Event details -->
|
<!-- Event details -->
|
||||||
<string name="title">Titolo</string>
|
<string name="title">Titolo</string>
|
||||||
<string name="location">Posizione</string>
|
<string name="location">Posizione</string>
|
||||||
<string name="description">Descrizione</string>
|
<string name="description">Descrizione</string>
|
||||||
<string name="all_day">All-day</string>
|
<string name="all_day">Tutto il giorno</string>
|
||||||
|
|
||||||
<!-- Weekly view -->
|
<!-- Weekly view -->
|
||||||
<string name="week">Settimana</string>
|
<string name="week">Settimana</string>
|
||||||
@@ -126,8 +126,8 @@
|
|||||||
<string name="regular_event">Evento regolare</string>
|
<string name="regular_event">Evento regolare</string>
|
||||||
<string name="cannot_delete_default_type">Il tipo di evento predefinito non può essere cancellato</string>
|
<string name="cannot_delete_default_type">Il tipo di evento predefinito non può essere cancellato</string>
|
||||||
<string name="select_event_type">Seleziona un tipo di evento</string>
|
<string name="select_event_type">Seleziona un tipo di evento</string>
|
||||||
<string name="move_events_into_default">Move affected events into the default event type</string>
|
<string name="move_events_into_default">Muovi gli eventi segnati con il tipo di eventi predefinito</string>
|
||||||
<string name="remove_affected_events">Permanently remove affected events</string>
|
<string name="remove_affected_events">Rimuovi in maniera permanente gli eventi segnati</string>
|
||||||
<string name="unsync_caldav_calendar">Per rimuovere un calendario CalDAV devi desincronizzarlo</string>
|
<string name="unsync_caldav_calendar">Per rimuovere un calendario CalDAV devi desincronizzarlo</string>
|
||||||
|
|
||||||
<!-- Holidays -->
|
<!-- Holidays -->
|
||||||
@@ -141,92 +141,95 @@
|
|||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="manage_event_types">Gestisci tipi evento</string>
|
<string name="manage_event_types">Gestisci tipi evento</string>
|
||||||
<string name="start_day_at">Start day at</string>
|
<string name="start_day_at">Il giorno inizia alle</string>
|
||||||
<string name="end_day_at">End day at</string>
|
<string name="end_day_at">Il giorno finisce alle</string>
|
||||||
<string name="week_numbers">Mostra numero settimane</string>
|
<string name="week_numbers">Mostra numero settimane</string>
|
||||||
<string name="vibrate">Vibrate on reminder notification</string>
|
<string name="vibrate">Vibra per le notifiche di promemoria</string>
|
||||||
<string name="reminder_sound">Suoneria promemoria</string>
|
<string name="reminder_sound">Suoneria promemoria</string>
|
||||||
<string name="no_ringtone_picker">No app capable of setting ringtone found</string>
|
<string name="no_ringtone_picker">Non è stata trovata nessuna applicazione per impostare la suoneria</string>
|
||||||
<string name="no_ringtone_selected">None</string>
|
<string name="no_ringtone_selected">Nessuna</string>
|
||||||
<string name="day_end_before_start">Il giorno non può finire prima che cominci</string>
|
<string name="day_end_before_start">Il giorno non può finire prima che cominci</string>
|
||||||
<string name="caldav_sync">CalDAV sync</string>
|
<string name="caldav_sync">Sincronizzazione CalDAV</string>
|
||||||
<string name="event_lists">Event lists</string>
|
<string name="event_lists">Liste degli eventi</string>
|
||||||
<string name="display_past_events">Mostra eventi passati</string>
|
<string name="display_past_events">Mostra eventi passati</string>
|
||||||
<string name="replace_description_with_location">Sostituisci la descrizione con la posizione</string>
|
<string name="replace_description_with_location">Sostituisci la descrizione con la posizione</string>
|
||||||
<string name="delete_all_events">Cancella tutti gli eventi</string>
|
<string name="delete_all_events">Cancella tutti gli eventi</string>
|
||||||
<string name="delete_all_events_confirmation">Vuoi cancellare tutti gli eventi? Questo lascerà i tuoi tipi evento e le altre impostazioni invariate.</string>
|
<string name="delete_all_events_confirmation">Vuoi cancellare tutti gli eventi? Questo lascerà i tuoi tipi evento e le altre impostazioni invariate.</string>
|
||||||
<string name="show_a_grid">Show a grid</string>
|
<string name="show_a_grid">Mostra una griglia</string>
|
||||||
<string name="loop_reminders">Loop reminders until dismissed</string>
|
<string name="loop_reminders">Manda in loop i promemoria finchè non vengono rimossi</string>
|
||||||
<string name="dim_past_events">Dim past events</string>
|
<string name="dim_past_events">Rimuovi gli eventi passati</string>
|
||||||
<string name="events">Events</string>
|
<string name="events">Eventi</string>
|
||||||
<string name="reminder_stream">Audio stream used by reminders</string>
|
<string name="reminder_stream">Canale audio utilizzato per i promomemoria</string>
|
||||||
<string name="system_stream">System</string>
|
<string name="system_stream">Sistema</string>
|
||||||
<string name="alarm_stream">Alarm</string>
|
<string name="alarm_stream">Allarme</string>
|
||||||
<string name="notification_stream">Notification</string>
|
<string name="notification_stream">Notitica</string>
|
||||||
<string name="ring_stream">Ring</string>
|
<string name="ring_stream">Squillo</string>
|
||||||
<string name="use_last_event_reminders">Use the last events\' reminders as the default for new event</string>
|
<string name="use_last_event_reminders">Utilizza l\'ultimo promemoria come predefinito per nuovi eventi</string>
|
||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Promemoria predefinito 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Promemoria predefinito 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Promemoria predefinito 3</string>
|
||||||
|
<string name="view_to_open_from_widget">Vista da aprire dalla lista degli eventi del widget</string>
|
||||||
|
<string name="last_view">Ultima vista</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
<string name="select_caldav_calendars">Select calendars to sync</string>
|
<string name="select_caldav_calendars">Seleziona un calendario da sincronizzare</string>
|
||||||
<string name="manage_synced_calendars">Manage synced calendars</string>
|
<string name="manage_synced_calendars">Gestisci i calendari sincronizzati</string>
|
||||||
<string name="store_locally_only">Store locally only</string>
|
<string name="store_locally_only">Salva solamente in locale</string>
|
||||||
<string name="refresh_caldav_calendars">Refresh CalDAV calendars</string>
|
<string name="refresh_caldav_calendars">Aggiorna i calendari CalDAV</string>
|
||||||
<string name="refreshing">Refreshing…</string>
|
<string name="refreshing">Aggiornamento in corso…</string>
|
||||||
<string name="refreshing_complete">Refreshing complete</string>
|
<string name="refreshing_complete">Aggiornamento completato</string>
|
||||||
<string name="editing_calendar_failed">Editing calendar failed</string>
|
<string name="editing_calendar_failed">Impossibile modificare il calendario</string>
|
||||||
<string name="syncing">Syncing…</string>
|
<string name="syncing">Sincronizzazione in corso…</string>
|
||||||
<string name="synchronization_completed">Sync completed</string>
|
<string name="synchronization_completed">Sincronizzazione completata</string>
|
||||||
|
<string name="select_a_different_caldav_color">Seleziona un colore differente (potrebbe essere applicato solamente in locale)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
<string name="monday_alt">Monday</string>
|
<string name="monday_alt">Lunedì</string>
|
||||||
<string name="tuesday_alt">Tuesday</string>
|
<string name="tuesday_alt">Martedì</string>
|
||||||
<string name="wednesday_alt">Wednesday</string>
|
<string name="wednesday_alt">Mercoledì</string>
|
||||||
<string name="thursday_alt">Thursday</string>
|
<string name="thursday_alt">Giovedì</string>
|
||||||
<string name="friday_alt">Friday</string>
|
<string name="friday_alt">Venerdì</string>
|
||||||
<string name="saturday_alt">Saturday</string>
|
<string name="saturday_alt">Sabato</string>
|
||||||
<string name="sunday_alt">Sunday</string>
|
<string name="sunday_alt">Domenica</string>
|
||||||
|
|
||||||
<!-- List widget config example events -->
|
<!-- List widget config example events -->
|
||||||
<string name="sample_title_1">Workout</string>
|
<string name="sample_title_1">Allenamento</string>
|
||||||
<string name="sample_description_1">Leg day</string>
|
<string name="sample_description_1">Gambe</string>
|
||||||
<string name="sample_title_2">Meeting with John</string>
|
<string name="sample_title_2">Incontro con Giovanni</string>
|
||||||
<string name="sample_description_2">In Rockstone garden</string>
|
<string name="sample_description_2">Nel giardino di Milano</string>
|
||||||
<string name="sample_title_3">Library</string>
|
<string name="sample_title_3">Liberia</string>
|
||||||
<string name="sample_title_4">Lunch with Mary</string>
|
<string name="sample_title_4">Pranzo con Maria</string>
|
||||||
<string name="sample_description_4">In the Plaza</string>
|
<string name="sample_description_4">Nel ristorante Magione</string>
|
||||||
<string name="sample_title_5">Coffee time</string>
|
<string name="sample_title_5">Pausa caffè</string>
|
||||||
|
|
||||||
<!-- FAQ -->
|
<!-- FAQ -->
|
||||||
<string name="faq_1_title">How can I remove the holidays imported via the \"Add holidays\" button?</string>
|
<string name="faq_1_title">Come posso rimuovere i le festività importate tramite il pulsante \"Aggiungi festività\"?</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,
|
<string name="faq_1_text">Le festività create in questo modo sono inseriti in eventi di tipo \"Festività\". Puoi andare in Impostazioni -> Gestisci tipi di eventi,
|
||||||
long press the given event type and delete it by selecting the trashbin.</string>
|
tenere premuto sul tipo desiderato ed eliminaro selezionando il cestino.</string>
|
||||||
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting CalDAV?</string>
|
<string name="faq_2_title">Posso sincronizzare i miei eventi tramite Google Calendar, od altri servizi che supportano 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.
|
<string name="faq_2_text">Sì, basta commutare l\'opzione \"Sincronizzazione CalDAV\" nelle impostazioni dell\'applicazione e selezionare i calendari da sincronizzare. Comunque è necessaria un\'applicazione di terze parti per gestire la sincronizzazione tra dispositivo e server.
|
||||||
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>
|
In caso si voglia sincronizzare con Google Calendar, la loro applicazione ufficiale effettua questo lavoro. Per altri calendari è necessario un adattatore di terze parti, per esempio DAVdroid.</string>
|
||||||
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
|
<string name="faq_3_title">Visualizzo i promemoria, ma non sento l\'audio. Cosa posso fare?</string>
|
||||||
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
|
<string name="faq_3_text">Non solo visualizzare l\'attuale promemoria, ma anche riprodurre l\'audio è un lavoro prettamente del sistema. Se non senti alcun suono, prova ad andare nelle impostazioni dell\'applicazione,
|
||||||
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
|
premi l\'opzione \"Canale audio utilizzato per il promemoria\" e cambia il canale. Se ancora non funziona, controlla le tue impostazioni dell\'audio, in particolare se il canale è stato mutato.</string>
|
||||||
|
|
||||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||||
<!-- Short description has to have less than 80 chars -->
|
<!-- 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>
|
<string name="app_short_description">Un semplice calendario con eventi, widget personalizzabili e senza pubblicità.</string>
|
||||||
<string name="app_long_description">
|
<string name="app_long_description">
|
||||||
A simple calendar with optional CalDAV synchronization. You can easily create recurring events and setup reminders, it can also display week numbers.
|
Un semplice calendario con l\'opzione di sincronizzazione CalDAV. Puoi facilmente creare eventi ricorrenti ed impostare promemoria, mostra anche il numero di settimana.
|
||||||
|
|
||||||
Contains a monthly view and an event list widget where you can customize the color of the text, as well as the alpha and the color of the background.
|
Contiene una vista mensile ed un widget con la lista degli eventi, con il colore del testo personalizzabile, come per la trasparenza ed il colore dello sfondo,
|
||||||
|
|
||||||
Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors.
|
Non contiene pubblicità o permessi non necessari. È completamente opensource, fornisce anche colori personalizzabili.
|
||||||
|
|
||||||
The Storage permission is needed only for exporting or importing events from .ics files.
|
Il permesso di archiviazione è necesario solamente per esportare od importare venti da file .ics.
|
||||||
|
|
||||||
The Contacts permission is used only at importing contact birthdays and anniversaries.
|
Il permesso dei contatti è usato solamente per importare i compleanni e gli anniversari.
|
||||||
|
|
||||||
This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com
|
Questa applicazione è solamente una di una serie. Puoi trovare le altre su https://www.simplemobiletools.com
|
||||||
</string>
|
</string>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
@@ -169,6 +169,8 @@
|
|||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Default reminder 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Default reminder 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Default reminder 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -181,6 +183,7 @@
|
|||||||
<string name="editing_calendar_failed">Editing calendar failed</string>
|
<string name="editing_calendar_failed">Editing calendar failed</string>
|
||||||
<string name="syncing">Syncing…</string>
|
<string name="syncing">Syncing…</string>
|
||||||
<string name="synchronization_completed">Sync completed</string>
|
<string name="synchronization_completed">Sync completed</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Default reminder 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Default reminder 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Default reminder 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">カレンダーを編集できませんでした</string>
|
<string name="editing_calendar_failed">カレンダーを編集できませんでした</string>
|
||||||
<string name="syncing">同期中…</string>
|
<string name="syncing">同期中…</string>
|
||||||
<string name="synchronization_completed">同期が完了しました</string>
|
<string name="synchronization_completed">同期が完了しました</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Default reminder 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Default reminder 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Default reminder 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">변경 실패</string>
|
<string name="editing_calendar_failed">변경 실패</string>
|
||||||
<string name="syncing">동기화중…</string>
|
<string name="syncing">동기화중…</string>
|
||||||
<string name="synchronization_completed">동기화 완료</string>
|
<string name="synchronization_completed">동기화 완료</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Default reminder 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Default reminder 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Default reminder 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">Kalendoriaus redagavimas nepavyko</string>
|
<string name="editing_calendar_failed">Kalendoriaus redagavimas nepavyko</string>
|
||||||
<string name="syncing">Sinchronizuojama…</string>
|
<string name="syncing">Sinchronizuojama…</string>
|
||||||
<string name="synchronization_completed">Sinchronizacija baigta</string>
|
<string name="synchronization_completed">Sinchronizacija baigta</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Default reminder 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Default reminder 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Default reminder 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">Redigering av kalender feilet</string>
|
<string name="editing_calendar_failed">Redigering av kalender feilet</string>
|
||||||
<string name="syncing">Synkroniserer…</string>
|
<string name="syncing">Synkroniserer…</string>
|
||||||
<string name="synchronization_completed">Synkronisering fullført</string>
|
<string name="synchronization_completed">Synkronisering fullført</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Standaardherinnering 1</string>
|
<string name="default_reminder_1">Standaardherinnering 1</string>
|
||||||
<string name="default_reminder_2">Standaardherinnering 2</string>
|
<string name="default_reminder_2">Standaardherinnering 2</string>
|
||||||
<string name="default_reminder_3">Standaardherinnering 3</string>
|
<string name="default_reminder_3">Standaardherinnering 3</string>
|
||||||
|
<string name="view_to_open_from_widget">Weergave bij openen vanuit widget met afsprakenlijst</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">Agenda bijwerken mislukt</string>
|
<string name="editing_calendar_failed">Agenda bijwerken mislukt</string>
|
||||||
<string name="syncing">Synchroniseren…</string>
|
<string name="syncing">Synchroniseren…</string>
|
||||||
<string name="synchronization_completed">Synchroniseren voltooid</string>
|
<string name="synchronization_completed">Synchroniseren voltooid</string>
|
||||||
|
<string name="select_a_different_caldav_color">Kies een andere kleur (mogelijk alleen voor dit apparaat)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Default reminder 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Default reminder 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Default reminder 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">Redigering av kalender feilet</string>
|
<string name="editing_calendar_failed">Redigering av kalender feilet</string>
|
||||||
<string name="syncing">Synkroniserer…</string>
|
<string name="syncing">Synkroniserer…</string>
|
||||||
<string name="synchronization_completed">Synkronisering fullført</string>
|
<string name="synchronization_completed">Synkronisering fullført</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Default reminder 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Default reminder 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Default reminder 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">Edytowanie kalendarza nie powiodło się</string>
|
<string name="editing_calendar_failed">Edytowanie kalendarza nie powiodło się</string>
|
||||||
<string name="syncing">Synchronizowanie…</string>
|
<string name="syncing">Synchronizowanie…</string>
|
||||||
<string name="synchronization_completed">Synchronizacja zakończona</string>
|
<string name="synchronization_completed">Synchronizacja zakończona</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Default reminder 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Default reminder 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Default reminder 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">A edição do calendário falhou</string>
|
<string name="editing_calendar_failed">A edição do calendário falhou</string>
|
||||||
<string name="syncing">Sincronizando…</string>
|
<string name="syncing">Sincronizando…</string>
|
||||||
<string name="synchronization_completed">Sincronização completa</string>
|
<string name="synchronization_completed">Sincronização completa</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -164,10 +164,12 @@
|
|||||||
<string name="alarm_stream">Alarme</string>
|
<string name="alarm_stream">Alarme</string>
|
||||||
<string name="notification_stream">Notificação</string>
|
<string name="notification_stream">Notificação</string>
|
||||||
<string name="ring_stream">Toque</string>
|
<string name="ring_stream">Toque</string>
|
||||||
<string name="use_last_event_reminders">Use the last events\' reminders as the default for new event</string>
|
<string name="use_last_event_reminders">Utilize os lembretes dos últimos eventos como definição para os novos eventos</string>
|
||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Lembrete 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Lembrete 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Lembrete 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">Falha ao editar o calendário</string>
|
<string name="editing_calendar_failed">Falha ao editar o calendário</string>
|
||||||
<string name="syncing">A sincronizar…</string>
|
<string name="syncing">A sincronizar…</string>
|
||||||
<string name="synchronization_completed">Sincronização terminada</string>
|
<string name="synchronization_completed">Sincronização terminada</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Напоминание по умолчанию 1</string>
|
<string name="default_reminder_1">Напоминание по умолчанию 1</string>
|
||||||
<string name="default_reminder_2">Напоминание по умолчанию 2</string>
|
<string name="default_reminder_2">Напоминание по умолчанию 2</string>
|
||||||
<string name="default_reminder_3">Напоминание по умолчанию 3</string>
|
<string name="default_reminder_3">Напоминание по умолчанию 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">Не удалось изменить календарь</string>
|
<string name="editing_calendar_failed">Не удалось изменить календарь</string>
|
||||||
<string name="syncing">Синхронизация…</string>
|
<string name="syncing">Синхронизация…</string>
|
||||||
<string name="synchronization_completed">Синхронизация завершена</string>
|
<string name="synchronization_completed">Синхронизация завершена</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Predvolená pripomienka 1</string>
|
<string name="default_reminder_1">Predvolená pripomienka 1</string>
|
||||||
<string name="default_reminder_2">Predvolená pripomienka 2</string>
|
<string name="default_reminder_2">Predvolená pripomienka 2</string>
|
||||||
<string name="default_reminder_3">Predvolená pripomienka 3</string>
|
<string name="default_reminder_3">Predvolená pripomienka 3</string>
|
||||||
|
<string name="view_to_open_from_widget">Otvoriť pohľad po kliknutí na widget so zoznamom udalostí</string>
|
||||||
|
<string name="last_view">Posledný pohľad</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">Úprava kalendára zlyhala</string>
|
<string name="editing_calendar_failed">Úprava kalendára zlyhala</string>
|
||||||
<string name="syncing">Synchronizujem…</string>
|
<string name="syncing">Synchronizujem…</string>
|
||||||
<string name="synchronization_completed">Synchronizácia ukončená</string>
|
<string name="synchronization_completed">Synchronizácia ukončená</string>
|
||||||
|
<string name="select_a_different_caldav_color">Zvoliť inú farbu (možno bude aplikovaná iba lokálne)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Default reminder 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Default reminder 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Default reminder 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">Det gick inte att redigera kalendern</string>
|
<string name="editing_calendar_failed">Det gick inte att redigera kalendern</string>
|
||||||
<string name="syncing">Synkroniserar…</string>
|
<string name="syncing">Synkroniserar…</string>
|
||||||
<string name="synchronization_completed">Synkroniseringen är klar</string>
|
<string name="synchronization_completed">Synkroniseringen är klar</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Default reminder 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Default reminder 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Default reminder 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">Takvim düzenlenme başarısız</string>
|
<string name="editing_calendar_failed">Takvim düzenlenme başarısız</string>
|
||||||
<string name="syncing">Senkronize ediliyor…</string>
|
<string name="syncing">Senkronize ediliyor…</string>
|
||||||
<string name="synchronization_completed">Senkronizasyon tamamlandı</string>
|
<string name="synchronization_completed">Senkronizasyon tamamlandı</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -1,12 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
|
|
||||||
<style name="ArrowStyle">
|
|
||||||
<item name="android:background">?android:attr/selectableItemBackgroundBorderless</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="MonthStyle">
|
|
||||||
<item name="android:background">?android:attr/selectableItemBackground</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
</resources>
|
|
@@ -49,7 +49,7 @@
|
|||||||
<string name="update_one_only">只更新選擇的事件</string>
|
<string name="update_one_only">只更新選擇的事件</string>
|
||||||
<string name="update_all_occurrences">更新全部事件</string>
|
<string name="update_all_occurrences">更新全部事件</string>
|
||||||
<string name="repeat_till_date">重複直到某日</string>
|
<string name="repeat_till_date">重複直到某日</string>
|
||||||
<string name="stop_repeating_after_x">Stop repeating after x occurrences</string>
|
<string name="stop_repeating_after_x">經過x次後停止重複</string>
|
||||||
<string name="repeat_forever">永遠重複</string>
|
<string name="repeat_forever">永遠重複</string>
|
||||||
<string name="times">次</string>
|
<string name="times">次</string>
|
||||||
<string name="repeat">重複</string>
|
<string name="repeat">重複</string>
|
||||||
@@ -164,10 +164,12 @@
|
|||||||
<string name="alarm_stream">鬧鐘</string>
|
<string name="alarm_stream">鬧鐘</string>
|
||||||
<string name="notification_stream">通知</string>
|
<string name="notification_stream">通知</string>
|
||||||
<string name="ring_stream">鈴聲</string>
|
<string name="ring_stream">鈴聲</string>
|
||||||
<string name="use_last_event_reminders">Use the last events\' reminders as the default for new event</string>
|
<string name="use_last_event_reminders">使用最後活動的提醒作為新活動的預設</string>
|
||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">預設提醒1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">預設提醒2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">預設提醒3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">編輯行事曆失敗</string>
|
<string name="editing_calendar_failed">編輯行事曆失敗</string>
|
||||||
<string name="syncing">同步中…</string>
|
<string name="syncing">同步中…</string>
|
||||||
<string name="synchronization_completed">同步完成</string>
|
<string name="synchronization_completed">同步完成</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
@@ -168,6 +168,8 @@
|
|||||||
<string name="default_reminder_1">Default reminder 1</string>
|
<string name="default_reminder_1">Default reminder 1</string>
|
||||||
<string name="default_reminder_2">Default reminder 2</string>
|
<string name="default_reminder_2">Default reminder 2</string>
|
||||||
<string name="default_reminder_3">Default reminder 3</string>
|
<string name="default_reminder_3">Default reminder 3</string>
|
||||||
|
<string name="view_to_open_from_widget">View to open from the event list widget</string>
|
||||||
|
<string name="last_view">Last view</string>
|
||||||
|
|
||||||
<!-- CalDAV sync -->
|
<!-- CalDAV sync -->
|
||||||
<string name="caldav">CalDAV</string>
|
<string name="caldav">CalDAV</string>
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
<string name="editing_calendar_failed">Editing calendar failed</string>
|
<string name="editing_calendar_failed">Editing calendar failed</string>
|
||||||
<string name="syncing">Syncing…</string>
|
<string name="syncing">Syncing…</string>
|
||||||
<string name="synchronization_completed">Sync completed</string>
|
<string name="synchronization_completed">Sync completed</string>
|
||||||
|
<string name="select_a_different_caldav_color">Select a different color (might be applied locally only)</string>
|
||||||
|
|
||||||
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
|
||||||
<!-- used in repetition, like "Every last Sunday" -->
|
<!-- used in repetition, like "Every last Sunday" -->
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user