From 1f4bb65e6e7fac0585954052bd5c7b0dad76ec1b Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 24 Feb 2022 10:02:18 +0100 Subject: [PATCH] lets actually handle tasks as special events --- .../calendar/pro/activities/TaskActivity.kt | 10 ++-- .../calendar/pro/databases/EventsDatabase.kt | 9 +--- .../calendar/pro/helpers/Constants.kt | 3 ++ .../calendar/pro/helpers/EventsHelper.kt | 6 +++ .../calendar/pro/helpers/TasksHelper.kt | 35 ------------ .../calendar/pro/interfaces/TasksDao.kt | 16 ------ .../calendar/pro/models/Event.kt | 4 +- .../calendar/pro/models/Task.kt | 54 ------------------- 8 files changed, 19 insertions(+), 118 deletions(-) delete mode 100644 app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/TasksHelper.kt delete mode 100644 app/src/main/kotlin/com/simplemobiletools/calendar/pro/interfaces/TasksDao.kt delete mode 100644 app/src/main/kotlin/com/simplemobiletools/calendar/pro/models/Task.kt diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/TaskActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/TaskActivity.kt index c93e6b058..2d192d2e0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/TaskActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/TaskActivity.kt @@ -11,7 +11,7 @@ import com.simplemobiletools.calendar.pro.extensions.config import com.simplemobiletools.calendar.pro.extensions.seconds import com.simplemobiletools.calendar.pro.helpers.* import com.simplemobiletools.calendar.pro.helpers.Formatter -import com.simplemobiletools.calendar.pro.models.Task +import com.simplemobiletools.calendar.pro.models.Event import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.ensureBackgroundThread import kotlinx.android.synthetic.main.activity_task.* @@ -21,7 +21,7 @@ import java.util.* class TaskActivity : SimpleActivity() { private var mDialogTheme = 0 private lateinit var mTaskDateTime: DateTime - private lateinit var mTask: Task + private lateinit var mTask: Event override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -59,11 +59,11 @@ class TaskActivity : SimpleActivity() { return true } - private fun gotTask(task: Task?) { + private fun gotTask(task: Event?) { if (task != null) { mTask = task } else { - mTask = Task(null) + mTask = Event(null) } task_all_day.setOnCheckedChangeListener { compoundButton, isChecked -> toggleAllDay(isChecked) } @@ -108,7 +108,7 @@ class TaskActivity : SimpleActivity() { } ensureBackgroundThread { - TasksHelper(this).insertTask(mTask) { + EventsHelper(this).insertTask(mTask) { hideKeyboard() finish() } diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/databases/EventsDatabase.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/databases/EventsDatabase.kt index dd7cf1e41..c2054710c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/databases/EventsDatabase.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/databases/EventsDatabase.kt @@ -13,15 +13,13 @@ import com.simplemobiletools.calendar.pro.helpers.Converters import com.simplemobiletools.calendar.pro.helpers.REGULAR_EVENT_TYPE_ID import com.simplemobiletools.calendar.pro.interfaces.EventTypesDao import com.simplemobiletools.calendar.pro.interfaces.EventsDao -import com.simplemobiletools.calendar.pro.interfaces.TasksDao import com.simplemobiletools.calendar.pro.interfaces.WidgetsDao import com.simplemobiletools.calendar.pro.models.Event import com.simplemobiletools.calendar.pro.models.EventType -import com.simplemobiletools.calendar.pro.models.Task import com.simplemobiletools.calendar.pro.models.Widget import java.util.concurrent.Executors -@Database(entities = [Event::class, EventType::class, Widget::class, Task::class], version = 6) +@Database(entities = [Event::class, EventType::class, Widget::class], version = 6) @TypeConverters(Converters::class) abstract class EventsDatabase : RoomDatabase() { @@ -31,8 +29,6 @@ abstract class EventsDatabase : RoomDatabase() { abstract fun WidgetsDao(): WidgetsDao - abstract fun TasksDao(): TasksDao - companion object { private var db: EventsDatabase? = null @@ -112,8 +108,7 @@ abstract class EventsDatabase : RoomDatabase() { private val MIGRATION_5_6 = object : Migration(5, 6) { override fun migrate(database: SupportSQLiteDatabase) { database.apply { - execSQL("CREATE TABLE IF NOT EXISTS `tasks` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `start_ts` INTEGER NOT NULL, `title` TEXT NOT NULL, `description` TEXT NOT NULL, `reminder_1_minutes` INTEGER NOT NULL, `reminder_2_minutes` INTEGER NOT NULL, `reminder_3_minutes` INTEGER NOT NULL, `repeat_interval` INTEGER NOT NULL, `repeat_rule` INTEGER NOT NULL, `repeat_limit` INTEGER NOT NULL, `repetition_exceptions` TEXT NOT NULL, `import_id` TEXT NOT NULL, `time_zone` TEXT NOT NULL, `flags` INTEGER NOT NULL, `event_type` INTEGER NOT NULL, `last_updated` INTEGER NOT NULL, `source` TEXT NOT NULL, `color` INTEGER NOT NULL)") - execSQL("CREATE UNIQUE INDEX IF NOT EXISTS `index_tasks_id` ON `tasks` (`id`)") + execSQL("ALTER TABLE events ADD COLUMN type INTEGER NOT NULL DEFAULT 0") } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/Constants.kt index 780cb8d92..51839827a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/Constants.kt @@ -45,6 +45,9 @@ const val ITEM_SECTION_MONTH = 2 const val DEFAULT_START_TIME_NEXT_FULL_HOUR = -1 const val DEFAULT_START_TIME_CURRENT_TIME = -2 +const val TYPE_EVENT = 0 +const val TYPE_TASK = 1 + const val DAY = 86400 const val WEEK = 604800 const val MONTH = 2592001 // exact value not taken into account, Joda is used for adding months and years diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/EventsHelper.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/EventsHelper.kt index bb9a11b8b..16e108557 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/EventsHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/EventsHelper.kt @@ -120,6 +120,12 @@ class EventsHelper(val context: Context) { callback?.invoke(event.id!!) } + fun insertTask(task: Event, callback: () -> Unit) { + eventsDB.insertOrUpdate(task) + context.updateWidgets() + callback() + } + fun insertEvents(events: ArrayList, addToCalDAV: Boolean) { try { for (event in events) { diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/TasksHelper.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/TasksHelper.kt deleted file mode 100644 index 033b201a9..000000000 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/TasksHelper.kt +++ /dev/null @@ -1,35 +0,0 @@ -package com.simplemobiletools.calendar.pro.helpers - -import android.app.Activity -import android.content.Context -import com.simplemobiletools.calendar.pro.extensions.eventTypesDB -import com.simplemobiletools.calendar.pro.extensions.tasksDB -import com.simplemobiletools.calendar.pro.extensions.updateWidgets -import com.simplemobiletools.calendar.pro.models.EventType -import com.simplemobiletools.calendar.pro.models.Task -import com.simplemobiletools.commons.helpers.ensureBackgroundThread - -class TasksHelper(val context: Context) { - private val tasksDB = context.tasksDB - private val eventTypesDB = context.eventTypesDB - - fun getEventTypes(activity: Activity, callback: (notes: ArrayList) -> Unit) { - ensureBackgroundThread { - var eventTypes = ArrayList() - try { - eventTypes = eventTypesDB.getEventTypes().toMutableList() as ArrayList - } catch (ignored: Exception) { - } - - activity.runOnUiThread { - callback(eventTypes) - } - } - } - - fun insertTask(task: Task, callback: () -> Unit) { - tasksDB.insertOrUpdate(task) - context.updateWidgets() - callback() - } -} diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/interfaces/TasksDao.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/interfaces/TasksDao.kt deleted file mode 100644 index 94a4dc179..000000000 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/interfaces/TasksDao.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.simplemobiletools.calendar.pro.interfaces - -import androidx.room.Dao -import androidx.room.Insert -import androidx.room.OnConflictStrategy -import androidx.room.Query -import com.simplemobiletools.calendar.pro.models.Task - -@Dao -interface TasksDao { - @Query("SELECT * FROM tasks") - fun getAllTasks(): List - - @Insert(onConflict = OnConflictStrategy.REPLACE) - fun insertOrUpdate(task: Task): Long -} diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/models/Event.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/models/Event.kt index c28ca42f1..50a2c58da 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/models/Event.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/models/Event.kt @@ -39,7 +39,8 @@ data class Event( @ColumnInfo(name = "last_updated") var lastUpdated: Long = 0L, @ColumnInfo(name = "source") var source: String = SOURCE_SIMPLE_CALENDAR, @ColumnInfo(name = "availability") var availability: Int = 0, - @ColumnInfo(name = "color") var color: Int = 0 + @ColumnInfo(name = "color") var color: Int = 0, + @ColumnInfo(name = "type") var type: Int = TYPE_EVENT ) : Serializable { companion object { @@ -140,6 +141,7 @@ data class Event( fun getIsAllDay() = flags and FLAG_ALL_DAY != 0 fun hasMissingYear() = flags and FLAG_MISSING_YEAR != 0 + fun isTask() = type == TYPE_TASK fun getReminders() = listOf( Reminder(reminder1Minutes, reminder1Type), diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/models/Task.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/models/Task.kt deleted file mode 100644 index 293bead0f..000000000 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/models/Task.kt +++ /dev/null @@ -1,54 +0,0 @@ -package com.simplemobiletools.calendar.pro.models - -import androidx.room.ColumnInfo -import androidx.room.Entity -import androidx.room.Index -import androidx.room.PrimaryKey -import com.simplemobiletools.calendar.pro.extensions.seconds -import com.simplemobiletools.calendar.pro.helpers.* -import com.simplemobiletools.commons.extensions.addBitIf -import java.io.Serializable - -@Entity(tableName = "tasks", indices = [(Index(value = ["id"], unique = true))]) -data class Task( - @PrimaryKey(autoGenerate = true) var id: Long?, - @ColumnInfo(name = "start_ts") var startTS: Long = 0L, - @ColumnInfo(name = "title") var title: String = "", - @ColumnInfo(name = "description") var description: String = "", - @ColumnInfo(name = "reminder_1_minutes") var reminder1Minutes: Int = REMINDER_OFF, - @ColumnInfo(name = "reminder_2_minutes") var reminder2Minutes: Int = REMINDER_OFF, - @ColumnInfo(name = "reminder_3_minutes") var reminder3Minutes: Int = REMINDER_OFF, - @ColumnInfo(name = "repeat_interval") var repeatInterval: Int = 0, - @ColumnInfo(name = "repeat_rule") var repeatRule: Int = 0, - @ColumnInfo(name = "repeat_limit") var repeatLimit: Long = 0L, - @ColumnInfo(name = "repetition_exceptions") var repetitionExceptions: ArrayList = ArrayList(), - @ColumnInfo(name = "import_id") var importId: String = "", - @ColumnInfo(name = "time_zone") var timeZone: String = "", - @ColumnInfo(name = "flags") var flags: Int = 0, - @ColumnInfo(name = "event_type") var eventType: Long = REGULAR_EVENT_TYPE_ID, - @ColumnInfo(name = "last_updated") var lastUpdated: Long = 0L, - @ColumnInfo(name = "source") var source: String = SOURCE_SIMPLE_CALENDAR, - @ColumnInfo(name = "color") var color: Int = 0 -) : Serializable { - - companion object { - private const val serialVersionUID = -32456795132345616L - } - - fun getIsAllDay() = flags and FLAG_ALL_DAY != 0 - - // properly return the start time of all-day tasks as midnight - fun getTaskStartTS(): Long { - return if (getIsAllDay()) { - Formatter.getDateTimeFromTS(startTS).withTime(0, 0, 0, 0).seconds() - } else { - startTS - } - } - - var isPastTask: Boolean - get() = flags and FLAG_IS_IN_PAST != 0 - set(isPastTask) { - flags = flags.addBitIf(isPastTask, FLAG_IS_IN_PAST) - } -}