Merge 1ac0f6c973
into 1e6b3ec67f
This commit is contained in:
commit
b2d6bf9a96
|
@ -1,13 +1,23 @@
|
|||
package com.simplemobiletools.calendar.pro.activities
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.Activity
|
||||
import android.app.DatePickerDialog
|
||||
import android.app.TimePickerDialog
|
||||
import android.content.ActivityNotFoundException
|
||||
import android.content.Intent
|
||||
import android.icu.util.Calendar
|
||||
import android.media.AudioManager
|
||||
import android.media.RingtoneManager
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.widget.RelativeLayout
|
||||
import android.widget.Button
|
||||
import android.widget.DatePicker
|
||||
import android.widget.ImageButton
|
||||
import android.widget.Toast
|
||||
import androidx.annotation.RequiresApi
|
||||
import com.google.android.material.timepicker.MaterialTimePicker
|
||||
import com.google.android.material.timepicker.TimeFormat
|
||||
import com.simplemobiletools.calendar.pro.R
|
||||
|
@ -27,7 +37,6 @@ import java.io.File
|
|||
import java.io.InputStream
|
||||
import java.io.OutputStream
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Calendar
|
||||
import java.util.Locale
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
|
@ -36,13 +45,12 @@ class SettingsActivity : SimpleActivity() {
|
|||
private val PICK_SETTINGS_IMPORT_SOURCE_INTENT = 2
|
||||
private val PICK_EVENTS_IMPORT_SOURCE_INTENT = 3
|
||||
private val PICK_EVENTS_EXPORT_FILE_INTENT = 4
|
||||
|
||||
private var mStoredPrimaryColor = 0
|
||||
|
||||
private var eventTypesToExport = listOf<Long>()
|
||||
|
||||
private val binding by viewBinding(ActivitySettingsBinding::inflate)
|
||||
|
||||
@SuppressLint("WrongViewCast")
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
isMaterialActivity = true
|
||||
super.onCreate(savedInstanceState)
|
||||
|
@ -51,14 +59,42 @@ class SettingsActivity : SimpleActivity() {
|
|||
|
||||
updateMaterialActivityViews(binding.settingsCoordinator, binding.settingsHolder, useTransparentNavigation = true, useTopSearchMenu = false)
|
||||
setupMaterialScrollListener(binding.settingsNestedScrollview, binding.settingsToolbar)
|
||||
|
||||
val settingsDeleteEventsBeforeDateHolder: RelativeLayout = findViewById(R.id.settings_delete_events_before_date_holder)
|
||||
settingsDeleteEventsBeforeDateHolder.setOnClickListener {
|
||||
showDatePickerDialog()
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
private fun showDatePickerDialog() {
|
||||
val currentDate = Calendar.getInstance()
|
||||
val year = currentDate.get(Calendar.YEAR)
|
||||
val month = currentDate.get(Calendar.MONTH)
|
||||
val day = currentDate.get(Calendar.DAY_OF_MONTH)
|
||||
val datePickerDialog = DatePickerDialog(
|
||||
this,
|
||||
{ _, year, month, day ->
|
||||
val selectedDate = Calendar.getInstance()
|
||||
selectedDate.set(year, month, day)
|
||||
val chosenDateTimestamp = selectedDate.timeInMillis
|
||||
setupDeleteEventsBeforeDate(chosenDateTimestamp)
|
||||
},
|
||||
year,
|
||||
month,
|
||||
day
|
||||
)
|
||||
datePickerDialog.show()
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
setupToolbar(binding.settingsToolbar, NavigationIcon.Arrow)
|
||||
setupSettingItems()
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
private fun setupSettingItems() {
|
||||
setupCustomizeColors()
|
||||
setupCustomizeNotifications()
|
||||
|
@ -112,6 +148,7 @@ class SettingsActivity : SimpleActivity() {
|
|||
setupExportSettings()
|
||||
setupImportSettings()
|
||||
|
||||
|
||||
arrayOf(
|
||||
binding.settingsColorCustomizationSectionLabel,
|
||||
binding.settingsGeneralSettingsLabel,
|
||||
|
@ -144,6 +181,7 @@ class SettingsActivity : SimpleActivity() {
|
|||
config.defaultReminder3 = reminders.getOrElse(2) { REMINDER_OFF }
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
|
||||
super.onActivityResult(requestCode, resultCode, resultData)
|
||||
if (requestCode == GET_RINGTONE_URI && resultCode == RESULT_OK && resultData != null) {
|
||||
|
@ -402,10 +440,16 @@ class SettingsActivity : SimpleActivity() {
|
|||
settingsDeleteAllEventsHolder.setOnClickListener {
|
||||
ConfirmationDialog(this@SettingsActivity, messageId = R.string.delete_all_events_confirmation) {
|
||||
eventsHelper.deleteAllEvents()
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
private fun setupDeleteEventsBeforeDate(chosenDateTimestamp: Long) = binding.apply {
|
||||
eventsHelper.deleteEventsBeforeDate(chosenDateTimestamp)
|
||||
}
|
||||
|
||||
private fun setupDisplayDescription() = binding.apply {
|
||||
settingsDisplayDescription.isChecked = config.displayDescription
|
||||
settingsReplaceDescriptionHolder.beVisibleIf(config.displayDescription)
|
||||
|
@ -424,6 +468,7 @@ class SettingsActivity : SimpleActivity() {
|
|||
}
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
private fun setupWeeklyStart() = binding.apply {
|
||||
settingsStartWeeklyAt.text = getHoursString(config.startWeeklyAt)
|
||||
settingsStartWeeklyAtHolder.setOnClickListener {
|
||||
|
@ -620,6 +665,7 @@ class SettingsActivity : SimpleActivity() {
|
|||
}
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
private fun getHoursString(hours: Int): String {
|
||||
return if (config.use24HourFormat) {
|
||||
String.format("%02d:00", hours)
|
||||
|
@ -972,6 +1018,7 @@ class SettingsActivity : SimpleActivity() {
|
|||
}
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
private fun setupImportSettings() {
|
||||
binding.settingsImportHolder.setOnClickListener {
|
||||
if (isQPlus()) {
|
||||
|
@ -1001,6 +1048,7 @@ class SettingsActivity : SimpleActivity() {
|
|||
}
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
private fun parseFile(inputStream: InputStream?) {
|
||||
if (inputStream == null) {
|
||||
toast(com.simplemobiletools.commons.R.string.unknown_error_occurred)
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.simplemobiletools.calendar.pro.helpers
|
|||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import android.widget.Toast
|
||||
import androidx.annotation.ColorRes
|
||||
import androidx.collection.LongSparseArray
|
||||
|
@ -13,6 +14,7 @@ import com.simplemobiletools.commons.extensions.getProperPrimaryColor
|
|||
import com.simplemobiletools.commons.extensions.toast
|
||||
import com.simplemobiletools.commons.helpers.CHOPPED_LIST_DEFAULT_SIZE
|
||||
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
|
||||
import java.util.Calendar
|
||||
|
||||
class EventsHelper(val context: Context) {
|
||||
private val config = context.config
|
||||
|
@ -257,6 +259,13 @@ class EventsHelper(val context: Context) {
|
|||
}
|
||||
}
|
||||
|
||||
fun deleteEventsBeforeDate(chosenDateTimestamp: Long) {
|
||||
ensureBackgroundThread {
|
||||
val eventIds = eventsDB.getEventIdsBeforeDate(chosenDateTimestamp).toMutableList()
|
||||
deleteEvents(eventIds, true)
|
||||
}
|
||||
}
|
||||
|
||||
fun deleteEvent(id: Long, deleteFromCalDAV: Boolean) = deleteEvents(arrayListOf(id), deleteFromCalDAV)
|
||||
|
||||
fun deleteEvents(ids: MutableList<Long>, deleteFromCalDAV: Boolean) {
|
||||
|
|
|
@ -136,4 +136,6 @@ interface EventsDao {
|
|||
|
||||
@Query("DELETE FROM events WHERE source = :source AND import_id = :importId")
|
||||
fun deleteBirthdayAnniversary(source: String, importId: String): Int
|
||||
@Query("SELECT id FROM events WHERE start_ts*1000 < :chosenDateTimestamp")
|
||||
fun getEventIdsBeforeDate(chosenDateTimestamp: Long): List<Long>
|
||||
}
|
||||
|
|
|
@ -884,6 +884,22 @@
|
|||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_delete_events_before_date_holder"
|
||||
style="@style/SettingsHolderTextViewOneLinerStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:clickable="true">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_before_events_from_date"
|
||||
style="@style/SettingsTextLabelStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Delete events and tasks before a specific date" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<include
|
||||
android:id="@+id/settings_events_divider"
|
||||
layout="@layout/divider" />
|
||||
|
|
Loading…
Reference in New Issue