|
|
|
@ -9,10 +9,9 @@ import com.todoroo.astrid.service.TaskCompleter
|
|
|
|
import dagger.hilt.android.AndroidEntryPoint
|
|
|
|
import dagger.hilt.android.AndroidEntryPoint
|
|
|
|
import kotlinx.coroutines.NonCancellable
|
|
|
|
import kotlinx.coroutines.NonCancellable
|
|
|
|
import kotlinx.coroutines.launch
|
|
|
|
import kotlinx.coroutines.launch
|
|
|
|
import org.tasks.broadcast.RefreshBroadcaster
|
|
|
|
|
|
|
|
import org.tasks.R
|
|
|
|
import org.tasks.R
|
|
|
|
import org.tasks.analytics.Firebase
|
|
|
|
import org.tasks.analytics.Firebase
|
|
|
|
import org.tasks.data.entity.Task
|
|
|
|
import org.tasks.broadcast.RefreshBroadcaster
|
|
|
|
import org.tasks.dialogs.BaseDateTimePicker.OnDismissHandler
|
|
|
|
import org.tasks.dialogs.BaseDateTimePicker.OnDismissHandler
|
|
|
|
import org.tasks.dialogs.DateTimePicker.Companion.newDateTimePicker
|
|
|
|
import org.tasks.dialogs.DateTimePicker.Companion.newDateTimePicker
|
|
|
|
import org.tasks.filters.Filter
|
|
|
|
import org.tasks.filters.Filter
|
|
|
|
@ -34,29 +33,38 @@ class WidgetClickActivity : AppCompatActivity(), OnDismissHandler {
|
|
|
|
val intent = intent
|
|
|
|
val intent = intent
|
|
|
|
val action = intent.action
|
|
|
|
val action = intent.action
|
|
|
|
if (action.isNullOrEmpty()) {
|
|
|
|
if (action.isNullOrEmpty()) {
|
|
|
|
|
|
|
|
finish()
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
when (action) {
|
|
|
|
when (action) {
|
|
|
|
COMPLETE_TASK -> {
|
|
|
|
COMPLETE_TASK -> {
|
|
|
|
val task = task
|
|
|
|
val taskId = intent.getLongExtra(EXTRA_TASK_ID, 0L)
|
|
|
|
Timber.tag("$action task=$task")
|
|
|
|
val completed = intent.getBooleanExtra(EXTRA_COMPLETED, false)
|
|
|
|
|
|
|
|
Timber.tag("$action taskId=$taskId completed=$completed")
|
|
|
|
|
|
|
|
if (taskId > 0) {
|
|
|
|
lifecycleScope.launch(NonCancellable) {
|
|
|
|
lifecycleScope.launch(NonCancellable) {
|
|
|
|
taskCompleter.setComplete(task, !task.isCompleted)
|
|
|
|
taskCompleter.setComplete(taskId, completed)
|
|
|
|
firebase.completeTask("widget")
|
|
|
|
firebase.completeTask("widget")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
finish()
|
|
|
|
finish()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
EDIT_TASK -> {
|
|
|
|
EDIT_TASK -> {
|
|
|
|
val filter = intent.getParcelableExtra<Filter?>(EXTRA_FILTER)
|
|
|
|
val filter = intent.getParcelableExtra<Filter?>(EXTRA_FILTER)
|
|
|
|
val task = task
|
|
|
|
val taskId = intent.getLongExtra(EXTRA_TASK_ID, 0L)
|
|
|
|
Timber.tag("$action task=$task filter=$filter")
|
|
|
|
Timber.tag("$action taskId=$taskId filter=$filter")
|
|
|
|
|
|
|
|
lifecycleScope.launch {
|
|
|
|
|
|
|
|
if (taskId > 0) {
|
|
|
|
|
|
|
|
val task = taskDao.fetch(taskId)
|
|
|
|
startActivity(
|
|
|
|
startActivity(
|
|
|
|
TaskIntents
|
|
|
|
TaskIntents
|
|
|
|
.getEditTaskIntent(this, filter, task)
|
|
|
|
.getEditTaskIntent(this@WidgetClickActivity, filter, task)
|
|
|
|
.putExtra(FINISH_AFFINITY, true)
|
|
|
|
.putExtra(FINISH_AFFINITY, true)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
}
|
|
|
|
finish()
|
|
|
|
finish()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
OPEN_TASK_LIST -> {
|
|
|
|
OPEN_TASK_LIST -> {
|
|
|
|
val filter = intent.getParcelableExtra<Filter?>(EXTRA_FILTER)
|
|
|
|
val filter = intent.getParcelableExtra<Filter?>(EXTRA_FILTER)
|
|
|
|
Timber.tag("$action filter=$filter")
|
|
|
|
Timber.tag("$action filter=$filter")
|
|
|
|
@ -68,23 +76,36 @@ class WidgetClickActivity : AppCompatActivity(), OnDismissHandler {
|
|
|
|
finish()
|
|
|
|
finish()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
TOGGLE_SUBTASKS -> {
|
|
|
|
TOGGLE_SUBTASKS -> {
|
|
|
|
val task = task
|
|
|
|
val taskId = intent.getLongExtra(EXTRA_TASK_ID, 0L)
|
|
|
|
val collapsed = intent.getBooleanExtra(EXTRA_COLLAPSED, false)
|
|
|
|
val collapsed = intent.getBooleanExtra(EXTRA_COLLAPSED, false)
|
|
|
|
Timber.d("$action collapsed=$collapsed task=$task")
|
|
|
|
Timber.d("$action collapsed=$collapsed taskId=$taskId")
|
|
|
|
|
|
|
|
if (taskId > 0) {
|
|
|
|
lifecycleScope.launch(NonCancellable) {
|
|
|
|
lifecycleScope.launch(NonCancellable) {
|
|
|
|
taskDao.setCollapsed(task.id, collapsed)
|
|
|
|
taskDao.setCollapsed(taskId, collapsed)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
finish()
|
|
|
|
finish()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
RESCHEDULE_TASK -> {
|
|
|
|
RESCHEDULE_TASK -> {
|
|
|
|
val task = task
|
|
|
|
val taskId = intent.getLongExtra(EXTRA_TASK_ID, 0L)
|
|
|
|
Timber.d("$action task=$task")
|
|
|
|
Timber.d("$action taskId=$taskId")
|
|
|
|
val fragmentManager = supportFragmentManager
|
|
|
|
val fragmentManager = supportFragmentManager
|
|
|
|
if (fragmentManager.findFragmentByTag(FRAG_TAG_DATE_TIME_PICKER) == null) {
|
|
|
|
if (fragmentManager.findFragmentByTag(FRAG_TAG_DATE_TIME_PICKER) == null) {
|
|
|
|
|
|
|
|
lifecycleScope.launch {
|
|
|
|
|
|
|
|
val task = taskDao.fetch(taskId)
|
|
|
|
|
|
|
|
if (task != null) {
|
|
|
|
newDateTimePicker(
|
|
|
|
newDateTimePicker(
|
|
|
|
preferences.getBoolean(R.string.p_auto_dismiss_datetime_widget, false),
|
|
|
|
preferences.getBoolean(
|
|
|
|
task)
|
|
|
|
R.string.p_auto_dismiss_datetime_widget,
|
|
|
|
|
|
|
|
false
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
task
|
|
|
|
|
|
|
|
)
|
|
|
|
.show(fragmentManager, FRAG_TAG_DATE_TIME_PICKER)
|
|
|
|
.show(fragmentManager, FRAG_TAG_DATE_TIME_PICKER)
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
finish()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
TOGGLE_GROUP -> {
|
|
|
|
TOGGLE_GROUP -> {
|
|
|
|
@ -106,13 +127,11 @@ class WidgetClickActivity : AppCompatActivity(), OnDismissHandler {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else -> {
|
|
|
|
else -> {
|
|
|
|
Timber.e("Unknown action $action")
|
|
|
|
Timber.e("Unknown action $action")
|
|
|
|
|
|
|
|
finish()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
val task: Task
|
|
|
|
|
|
|
|
get() = intent.getParcelableExtra(EXTRA_TASK)!!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun onDismiss() {
|
|
|
|
override fun onDismiss() {
|
|
|
|
finish()
|
|
|
|
finish()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -125,8 +144,9 @@ class WidgetClickActivity : AppCompatActivity(), OnDismissHandler {
|
|
|
|
const val RESCHEDULE_TASK = "RESCHEDULE_TASK"
|
|
|
|
const val RESCHEDULE_TASK = "RESCHEDULE_TASK"
|
|
|
|
const val TOGGLE_GROUP = "TOGGLE_GROUP"
|
|
|
|
const val TOGGLE_GROUP = "TOGGLE_GROUP"
|
|
|
|
const val EXTRA_FILTER = "extra_filter"
|
|
|
|
const val EXTRA_FILTER = "extra_filter"
|
|
|
|
const val EXTRA_TASK = "extra_task" // $NON-NLS-1$
|
|
|
|
const val EXTRA_TASK_ID = "extra_task_id"
|
|
|
|
const val EXTRA_COLLAPSED = "extra_collapsed"
|
|
|
|
const val EXTRA_COLLAPSED = "extra_collapsed"
|
|
|
|
|
|
|
|
const val EXTRA_COMPLETED = "extra_completed"
|
|
|
|
const val EXTRA_GROUP = "extra_group"
|
|
|
|
const val EXTRA_GROUP = "extra_group"
|
|
|
|
const val EXTRA_WIDGET = "extra_widget"
|
|
|
|
const val EXTRA_WIDGET = "extra_widget"
|
|
|
|
private const val FRAG_TAG_DATE_TIME_PICKER = "frag_tag_date_time_picker"
|
|
|
|
private const val FRAG_TAG_DATE_TIME_PICKER = "frag_tag_date_time_picker"
|
|
|
|
|