From 3663c4273e28d4ce1caef6eb1d42e393dcc703fe Mon Sep 17 00:00:00 2001 From: SuperMonster003 Date: Fri, 9 May 2025 17:12:38 +0800 Subject: [PATCH] =?UTF-8?q?6.6.3=20-=20Alpha2=20-=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E9=A1=B5=E9=9D=A2=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E5=B9=BF=E6=92=AD=E5=86=85=E5=AE=B9=E7=9A=84?= =?UTF-8?q?=E8=BE=93=E5=85=A5=E6=B3=95=E9=81=AE=E6=8C=A1=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changelog/lang_zh-Hans.json | 1 + .../autojs/autojs/theme/ThemeColorHelper.java | 25 ++ .../ui/timing/TimedTaskSettingActivity.kt | 343 +++++++++++------- 3 files changed, 233 insertions(+), 136 deletions(-) diff --git a/.changelog/lang_zh-Hans.json b/.changelog/lang_zh-Hans.json index b28abea5..c8bc9d1f 100644 --- a/.changelog/lang_zh-Hans.json +++ b/.changelog/lang_zh-Hans.json @@ -12,6 +12,7 @@ "部分设备代码编辑器空行显示方框字符的问题", "主题色设置页面调色盘对话框可能无限叠加的问题", "无障碍服务关闭时音量加键停止所有脚本功能失效的问题", + "定时任务页面编辑自定义广播内容时出现的输入法遮挡问题", "APK 文件类型信息对话框可能无法获取应用名称及 SDK 信息的问题", "Android 15 部分页面状态栏背景颜色可能无法动态跟随主题色的问题", "dialogs 模块无法正常使用 customView 属性的问题 _[`issue #364`](http://issues.autojs6.com/364)_", diff --git a/app/src/main/java/org/autojs/autojs/theme/ThemeColorHelper.java b/app/src/main/java/org/autojs/autojs/theme/ThemeColorHelper.java index fb0e177d..4b6dd2ad 100644 --- a/app/src/main/java/org/autojs/autojs/theme/ThemeColorHelper.java +++ b/app/src/main/java/org/autojs/autojs/theme/ThemeColorHelper.java @@ -16,8 +16,11 @@ import android.view.WindowManager; import android.widget.AbsListView; import android.widget.CheckBox; import android.widget.Switch; +import androidx.annotation.ColorInt; import androidx.appcompat.widget.SwitchCompat; import androidx.core.graphics.drawable.DrawableCompat; +import com.wdullaer.materialdatetimepicker.date.DatePickerDialog; +import com.wdullaer.materialdatetimepicker.time.TimePickerDialog; import org.autojs.autojs.theme.internal.ScrollingViewEdgeGlowColorHelper; import org.autojs.autojs.util.ColorUtils; import org.autojs.autojs.util.ViewUtils; @@ -57,6 +60,28 @@ public class ThemeColorHelper { } } + public static void setThemeColorPrimary(TimePickerDialog timePickerDialog, Context context, boolean contrastMatters) { + setThemeColorPrimary(timePickerDialog, context, ThemeColorManager.getColorPrimary(), contrastMatters); + } + + public static void setThemeColorPrimary(TimePickerDialog timePickerDialog, Context context, @ColorInt int color, boolean contrastMatters) { + if (contrastMatters) { + color = ColorUtils.adjustColorForContrast(context.getColor(R.color.window_background), color, 2.3); + } + timePickerDialog.setAccentColor(color); + } + + public static void setThemeColorPrimary(DatePickerDialog datePickerDialog, Context context, boolean contrastMatters) { + setThemeColorPrimary(datePickerDialog, context, ThemeColorManager.getColorPrimary(), contrastMatters); + } + + public static void setThemeColorPrimary(DatePickerDialog datePickerDialog, Context context, @ColorInt int color, boolean contrastMatters) { + if (contrastMatters) { + color = ColorUtils.adjustColorForContrast(context.getColor(R.color.window_background), color, 2.3); + } + datePickerDialog.setAccentColor(color); + } + public static void setColorPrimary(SwitchCompat switchCompat, int color) { setColorPrimary(switchCompat, color, false); } diff --git a/app/src/main/java/org/autojs/autojs/ui/timing/TimedTaskSettingActivity.kt b/app/src/main/java/org/autojs/autojs/ui/timing/TimedTaskSettingActivity.kt index 5479b6b5..8d4b059f 100644 --- a/app/src/main/java/org/autojs/autojs/ui/timing/TimedTaskSettingActivity.kt +++ b/app/src/main/java/org/autojs/autojs/ui/timing/TimedTaskSettingActivity.kt @@ -1,13 +1,9 @@ package org.autojs.autojs.ui.timing import android.annotation.SuppressLint -import android.app.DatePickerDialog -import android.app.TimePickerDialog import android.content.ActivityNotFoundException -import android.content.Context import android.content.Intent import android.net.ConnectivityManager -import android.net.Uri import android.os.Bundle import android.os.PowerManager import android.provider.Settings @@ -26,6 +22,11 @@ import android.widget.RadioGroup import android.widget.TextView import android.widget.TimePicker import androidx.appcompat.widget.Toolbar +import androidx.core.graphics.Insets +import androidx.core.net.toUri +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.forEach import com.github.aakira.expandablelayout.ExpandableRelativeLayout import org.autojs.autojs.core.ui.BiMaps import org.autojs.autojs.execution.ExecutionConfig @@ -33,6 +34,7 @@ import org.autojs.autojs.execution.ExecutionConfig.CREATOR.default import org.autojs.autojs.external.ScriptIntents import org.autojs.autojs.external.receiver.DynamicBroadcastReceivers import org.autojs.autojs.model.script.ScriptFile +import org.autojs.autojs.theme.ThemeColorHelper import org.autojs.autojs.timing.IntentTask import org.autojs.autojs.timing.TaskReceiver import org.autojs.autojs.timing.TimedTask @@ -44,6 +46,7 @@ import org.autojs.autojs.timing.TimedTaskManager.updateTask import org.autojs.autojs.tool.MapBuilder import org.autojs.autojs.ui.BaseActivity import org.autojs.autojs.util.ViewUtils +import org.autojs.autojs.util.ViewUtils.setMenuIconsColorByThemeColorLuminance import org.autojs.autojs.util.ViewUtils.showToast import org.autojs.autojs6.R import org.autojs.autojs6.databinding.ActivityTimedTaskSettingBinding @@ -51,6 +54,8 @@ import org.joda.time.LocalDate import org.joda.time.LocalDateTime import org.joda.time.LocalTime import org.joda.time.format.DateTimeFormat +import com.wdullaer.materialdatetimepicker.date.DatePickerDialog as MaterialDatePickerDialog +import com.wdullaer.materialdatetimepicker.time.TimePickerDialog as MaterialTimePickerDialog /** * Created by Stardust on Nov 28, 2017. @@ -64,8 +69,8 @@ class TimedTaskSettingActivity : BaseActivity() { private lateinit var mDailyTaskRadio: RadioButton private lateinit var mWeeklyTaskRadio: RadioButton private lateinit var mRunOnBroadcastRadio: RadioButton - private lateinit var mRunOnOtherBroadcast: RadioButton - private lateinit var mOtherBroadcastAction: EditText + private lateinit var mRunOnCustomBroadcast: RadioButton + private lateinit var mCustomBroadcastAction: EditText private lateinit var mBroadcastGroup: RadioGroup private lateinit var mDisposableTaskTime: TextView private lateinit var mDisposableTaskDate: TextView @@ -74,9 +79,10 @@ class TimedTaskSettingActivity : BaseActivity() { private lateinit var mWeeklyTaskContainer: LinearLayout private val mDayOfWeekCheckBoxes: MutableList = ArrayList() - private var mScriptFile: ScriptFile? = null + private var mTimedTask: TimedTask? = null private var mIntentTask: IntentTask? = null + private lateinit var mScriptFile: ScriptFile override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -86,129 +92,179 @@ class TimedTaskSettingActivity : BaseActivity() { mToolbar = binding.toolbar mTimingGroup = binding.timingGroup - mRunOnOtherBroadcast = binding.runOnOtherBroadcast - mOtherBroadcastAction = binding.action - mBroadcastGroup = binding.broadcastGroup - mDailyTaskTimePicker = binding.dailyTaskTimePicker - mWeeklyTaskTimePicker = binding.weeklyTaskTimePicker - mWeeklyTaskContainer = binding.weeklyTaskContainer + mRunOnCustomBroadcast = binding.runOnCustomBroadcast + mCustomBroadcastAction = binding.action.apply { + setOnFocusChangeListener { _, hasFocus -> + if (hasFocus) { + mRunOnCustomBroadcast.isChecked = true + } + } + } + mBroadcastGroup = binding.broadcastGroup.apply { + setUpRadioButtonListeners() + } + mWeeklyTaskContainer = binding.weeklyTaskContainer.apply { + setUpDayOfWeekCheckBoxes() + } + mWeeklyTaskTimePicker = binding.weeklyTaskTimePicker.apply { + setIs24HourView(true) + } + mDailyTaskTimePicker = binding.dailyTaskTimePicker.apply { + setIs24HourView(true) + } mDailyTaskRadio = binding.dailyTaskRadio.apply { - setOnCheckedChangeListener { buttonView, _ -> onCheckedChanged(buttonView) } + setUpRadioButton() } mWeeklyTaskRadio = binding.weeklyTaskRadio.apply { - setOnCheckedChangeListener { buttonView, _ -> onCheckedChanged(buttonView) } + setUpRadioButton() } mDisposableTaskRadio = binding.disposableTaskRadio.apply { - setOnCheckedChangeListener { buttonView, _ -> onCheckedChanged(buttonView) } + setUpRadioButton() } mRunOnBroadcastRadio = binding.runOnBroadcast.apply { - setOnCheckedChangeListener { buttonView, _ -> onCheckedChanged(buttonView) } + setUpRadioButton() } mDisposableTaskTime = binding.disposableTaskTime.apply { + text = TIME_FORMATTER.print(LocalTime.now()) setOnClickListener { showDisposableTaskTimePicker() } } mDisposableTaskDate = binding.disposableTaskDate.apply { + text = DATE_FORMATTER.print(LocalDate.now()) setOnClickListener { showDisposableTaskDatePicker() } } - val taskId = intent.getLongExtra(EXTRA_TASK_ID, -1) - if (taskId != -1L) { - mTimedTask = getTimedTask(taskId) - if (mTimedTask != null) { - mScriptFile = ScriptFile(mTimedTask!!.scriptPath) - } - } else { - val intentTaskId = intent.getLongExtra(EXTRA_INTENT_TASK_ID, -1) - if (intentTaskId != -1L) { - mIntentTask = getIntentTask(intentTaskId) - if (mIntentTask != null) { - mScriptFile = ScriptFile(mIntentTask!!.scriptPath) - } - } else { - val path = intent.getStringExtra(ScriptIntents.EXTRA_KEY_PATH) - if (TextUtils.isEmpty(path)) { - finish() - } - mScriptFile = ScriptFile(path) - } - } - + loadTaskFromIntent() setToolbarAsBack(R.string.text_timed_task) - mToolbar.subtitle = mScriptFile!!.name - mDailyTaskTimePicker.setIs24HourView(true) - mWeeklyTaskTimePicker.setIs24HourView(true) - findDayOfWeekCheckBoxes(mWeeklyTaskContainer) - setUpTaskSettings(this) + mToolbar.subtitle = mScriptFile.name + + setUpTaskSettings() ViewUtils.excludePaddingClippableViewFromNavigationBar(binding.scrollView) + + ViewCompat.setOnApplyWindowInsetsListener(findViewById(android.R.id.content)) { v, insets -> + val sysBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + val ime = insets.getInsets(WindowInsetsCompat.Type.ime()) + + v.setPadding(0, 0, 0, maxOf(sysBars.bottom, ime.bottom)) + + // 只把 IME 的 inset 标记为已消费, 其余继续下传 + val outInsets = WindowInsetsCompat.Builder(insets) + .setInsets(WindowInsetsCompat.Type.ime(), Insets.NONE) + .build() + + outInsets + } } - private fun findDayOfWeekCheckBoxes(parent: ViewGroup) { - for (i in 0 until parent.childCount) { - val child = parent.getChildAt(i) + private fun loadTaskFromIntent() { + when (val taskId = intent.getLongExtra(EXTRA_TASK_ID, -1)) { + -1L -> when (val intentTaskId = intent.getLongExtra(EXTRA_INTENT_TASK_ID, -1)) { + -1L -> { + val path = intent.getStringExtra(ScriptIntents.EXTRA_KEY_PATH) + if (TextUtils.isEmpty(path)) { + finish() + } + mScriptFile = ScriptFile(path) + } + else -> mIntentTask = getIntentTask(intentTaskId)?.also { + mScriptFile = ScriptFile(it.scriptPath) + } + } + else -> mTimedTask = getTimedTask(taskId)?.also { + mScriptFile = ScriptFile(it.scriptPath) + } + } + } + + private fun RadioGroup.setUpRadioButtonListeners() { + forEach { view -> + if (view !is RadioButton) { + return@forEach + } + view.setOnClickListener { + mCustomBroadcastAction.apply { + if (view == mRunOnCustomBroadcast) { + requestFocus() + setSelection(length()) + ViewUtils.showSoftInput(this) + } else { + clearFocus() + ViewUtils.hideSoftInput(this) + } + } + } + } + } + + private fun RadioButton.setUpRadioButton() { + setOnCheckedChangeListener { buttonView, _ -> onCheckedChanged(buttonView) } + } + + private fun ViewGroup.setUpDayOfWeekCheckBoxes() { + for (i in 0 until this.childCount) { + val child = this.getChildAt(i) if (child is CheckBox) { mDayOfWeekCheckBoxes.add(child) } else if (child is ViewGroup) { - findDayOfWeekCheckBoxes(child) + child.setUpDayOfWeekCheckBoxes() } if (mDayOfWeekCheckBoxes.size >= 7) break } } - private fun setUpTaskSettings(context: Context) { - mDisposableTaskDate.text = DATE_FORMATTER.print(LocalDate.now()) - mDisposableTaskTime.text = TIME_FORMATTER.print(LocalTime.now()) - if (mTimedTask != null) { - setupTime(context) + private fun setUpTaskSettings() { + mTimedTask?.let { + setUpTime(it) return } - if (mIntentTask != null) { - setupAction() + mIntentTask?.let { + setUpAction(it) return } mDailyTaskRadio.isChecked = true } - private fun setupAction() { + private fun setUpTime(timedTask: TimedTask) { + if (timedTask.isDisposable) { + mDisposableTaskRadio.isChecked = true + mDisposableTaskTime.text = TIME_FORMATTER.print(timedTask.millis) + mDisposableTaskDate.text = DATE_FORMATTER.print(timedTask.millis) + return + } + val time = LocalTime.fromMillisOfDay(timedTask.millis) + mDailyTaskTimePicker.hour = time.hourOfDay + mDailyTaskTimePicker.minute = time.minuteOfHour + mWeeklyTaskTimePicker.hour = time.hourOfDay + mWeeklyTaskTimePicker.minute = time.minuteOfHour + if (timedTask.isDaily) { + mDailyTaskRadio.isChecked = true + } else { + mWeeklyTaskRadio.isChecked = true + for (i in mDayOfWeekCheckBoxes.indices) { + mDayOfWeekCheckBoxes[i].isChecked = timedTask.hasDayOfWeek(this, i + 1) + } + } + } + + private fun setUpAction(intentTask: IntentTask) { mRunOnBroadcastRadio.isChecked = true - val buttonId = ACTIONS.getKey(mIntentTask!!.action) + val buttonId = ACTIONS.getKey(intentTask.action) if (buttonId == null) { - mRunOnOtherBroadcast.isChecked = true - mOtherBroadcastAction.setText(mIntentTask!!.action) + mRunOnCustomBroadcast.isChecked = true + mCustomBroadcastAction.setText(intentTask.action) } else { (findViewById(buttonId) as RadioButton).isChecked = true } } - private fun setupTime(context: Context) { - if (mTimedTask!!.isDisposable) { - mDisposableTaskRadio.isChecked = true - mDisposableTaskTime.text = TIME_FORMATTER.print(mTimedTask!!.millis) - mDisposableTaskDate.text = DATE_FORMATTER.print(mTimedTask!!.millis) - return - } - val time = LocalTime.fromMillisOfDay(mTimedTask!!.millis) - mDailyTaskTimePicker.hour = time.hourOfDay - mDailyTaskTimePicker.minute = time.minuteOfHour - mWeeklyTaskTimePicker.hour = time.hourOfDay - mWeeklyTaskTimePicker.minute = time.minuteOfHour - if (mTimedTask!!.isDaily) { - mDailyTaskRadio.isChecked = true - } else { - mWeeklyTaskRadio.isChecked = true - for (i in mDayOfWeekCheckBoxes.indices) { - mDayOfWeekCheckBoxes[i].isChecked = mTimedTask!!.hasDayOfWeek(context, i + 1) + fun onCheckedChanged(button: CompoundButton) { + findExpandableLayoutOf(button).run { + when (button.isChecked) { + true -> post { expand() } + else -> post { collapse() } } } - } - - fun onCheckedChanged(button: CompoundButton) { - val relativeLayout = findExpandableLayoutOf(button) - if (button.isChecked) { - relativeLayout.post { relativeLayout.expand() } - } else { - relativeLayout.collapse() - } + ViewUtils.hideSoftInput(mCustomBroadcastAction) } private fun findExpandableLayoutOf(button: CompoundButton): ExpandableRelativeLayout { @@ -223,29 +279,36 @@ class TimedTaskSettingActivity : BaseActivity() { private fun showDisposableTaskTimePicker() { val time = TIME_FORMATTER.parseLocalTime(mDisposableTaskTime.text.toString()) - TimePickerDialog(this, { _, hourOfDay, minute -> mDisposableTaskTime.text = TIME_FORMATTER.print(LocalTime(hourOfDay, minute)) }, time.hourOfDay, time.minuteOfHour, true) - .show() + MaterialTimePickerDialog.newInstance( + /* callback = */ { _, hourOfDay, minute, _ -> mDisposableTaskTime.text = TIME_FORMATTER.print(LocalTime(hourOfDay, minute)) }, + /* hourOfDay = */ time.hourOfDay, + /* minute = */ time.minuteOfHour, + /* is24HourMode = */ true, + ).apply { + version = MaterialTimePickerDialog.Version.VERSION_2 + ThemeColorHelper.setThemeColorPrimary(this, this@TimedTaskSettingActivity, true) + isThemeDark = ViewUtils.isNightModeYes(this@TimedTaskSettingActivity) + }.show(supportFragmentManager, "TimedTaskTimePickerDialog") } private fun showDisposableTaskDatePicker() { val date = DATE_FORMATTER.parseLocalDate(mDisposableTaskDate.text.toString()) - DatePickerDialog( - this, - { _, year, month, dayOfMonth -> mDisposableTaskDate.text = DATE_FORMATTER.print(LocalDate(year, month + 1, dayOfMonth)) }, - date.year, - date.monthOfYear - 1, - date.dayOfMonth - ).show() + MaterialDatePickerDialog.newInstance( + /* callBack = */ { _, year, month, dayOfMonth -> mDisposableTaskDate.text = DATE_FORMATTER.print(LocalDate(year, month + 1, dayOfMonth)) }, + /* year = */ date.year, + /* monthOfYear = */ date.monthOfYear - 1, + /* dayOfMonth = */ date.dayOfMonth, + ).apply { + version = MaterialDatePickerDialog.Version.VERSION_2 + ThemeColorHelper.setThemeColorPrimary(this, this@TimedTaskSettingActivity, true) + isThemeDark = ViewUtils.isNightModeYes(this@TimedTaskSettingActivity) + }.show(supportFragmentManager, "TimedTaskDatePickerDialog") } - private fun createTimedTask(): TimedTask? { - return if (mDisposableTaskRadio.isChecked) { - createDisposableTask() - } else if (mDailyTaskRadio.isChecked) { - createDailyTask() - } else { - createWeeklyTask() - } + private fun createTimedTask(): TimedTask? = when { + mDisposableTaskRadio.isChecked -> createDisposableTask() + mDailyTaskRadio.isChecked -> createDailyTask() + else -> createWeeklyTask() } private fun createWeeklyTask(): TimedTask? { @@ -260,12 +323,12 @@ class TimedTaskSettingActivity : BaseActivity() { return null } val time = LocalTime(mWeeklyTaskTimePicker.hour, mWeeklyTaskTimePicker.minute) - return TimedTask.weeklyTask(time, timeFlag, mScriptFile!!.path, default) + return TimedTask.weeklyTask(time, timeFlag, mScriptFile.path, default) } private fun createDailyTask(): TimedTask { val time = LocalTime(mDailyTaskTimePicker.hour, mDailyTaskTimePicker.minute) - return TimedTask.dailyTask(time, mScriptFile!!.path, ExecutionConfig()) + return TimedTask.dailyTask(time, mScriptFile.path, ExecutionConfig()) } private fun createDisposableTask(): TimedTask? { @@ -279,11 +342,12 @@ class TimedTaskSettingActivity : BaseActivity() { showToast(this, R.string.text_disposable_task_time_before_now) return null } - return TimedTask.disposableTask(dateTime, mScriptFile!!.path, default) + return TimedTask.disposableTask(dateTime, mScriptFile.path, default) } override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.menu_timed_task_setting, menu) + mToolbar.setMenuIconsColorByThemeColorLuminance(this) return true } @@ -291,17 +355,18 @@ class TimedTaskSettingActivity : BaseActivity() { if (item.itemId == R.id.action_done) { if ((getSystemService(POWER_SERVICE) as PowerManager).isIgnoringBatteryOptimizations(packageName)) { createOrUpdateTask() - } else { - try { - @SuppressLint("BatteryLife") val intent = Intent() - .setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS) - .setData(Uri.parse("package:$packageName")) - @Suppress("DEPRECATION") - startActivityForResult(intent, REQUEST_CODE_IGNORE_BATTERY) - } catch (e: ActivityNotFoundException) { - e.printStackTrace() - createOrUpdateTask() - } + return true + } + try { + @SuppressLint("BatteryLife") + val intent = Intent() + .setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS) + .setData("package:$packageName".toUri()) + @Suppress("DEPRECATION") + startActivityForResult(intent, REQUEST_CODE_IGNORE_BATTERY) + } catch (e: ActivityNotFoundException) { + e.printStackTrace() + createOrUpdateTask() } return true } @@ -339,41 +404,46 @@ class TimedTaskSettingActivity : BaseActivity() { private fun createOrUpdateIntentTask() { val buttonId = mBroadcastGroup.checkedRadioButtonId if (buttonId == -1) { - showToast(this, R.string.error_empty_broadcast_selection) + showToast(this, R.string.error_empty_broadcast_selection, true) return } - val action: String? - if (buttonId == R.id.run_on_other_broadcast) { - action = mOtherBroadcastAction.text.toString() - if (action.isEmpty()) { - mOtherBroadcastAction.error = getString(R.string.text_should_not_be_empty) + val actionString: String? + if (buttonId == R.id.run_on_custom_broadcast) { + actionString = mCustomBroadcastAction.text.toString() + if (actionString.isEmpty()) { + mCustomBroadcastAction.error = getString(R.string.text_should_not_be_empty) return } } else { - action = ACTIONS[buttonId] + actionString = ACTIONS[buttonId] } - val task = IntentTask() - task.action = action - task.scriptPath = mScriptFile!!.path - task.isLocal = action != null && action == DynamicBroadcastReceivers.ACTION_STARTUP - if (mIntentTask != null) { - task.id = mIntentTask!!.id - updateTask(task) - showToast(this, R.string.text_already_created) - } else { - addTask(task) - if (mTimedTask != null) { - removeTask(mTimedTask!!) + val task = IntentTask().apply { + action = actionString + scriptPath = mScriptFile.path + isLocal = actionString == DynamicBroadcastReceivers.ACTION_STARTUP + } + when (val intentTask = mIntentTask) { + null -> { + addTask(task) + mTimedTask?.let { removeTask(it) } + } + else -> { + task.id = intentTask.id + updateTask(task) } } + showToast(this, R.string.text_already_created) finish() } companion object { + const val EXTRA_INTENT_TASK_ID = "intent_task_id" const val EXTRA_TASK_ID = TaskReceiver.EXTRA_TASK_ID + private val TIME_FORMATTER = DateTimeFormat.forPattern("HH:mm") private val DATE_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd") + private const val REQUEST_CODE_IGNORE_BATTERY = 27101 private const val LOG_TAG = "TimedTaskSettings" @@ -415,6 +485,7 @@ class TimedTaskSettingActivity : BaseActivity() { .put(R.id.run_on_config_change, Intent.ACTION_CONFIGURATION_CHANGED) .put(R.id.run_on_time_tick, Intent.ACTION_TIME_TICK) .build() + } }