diff --git a/app/src/main/java/org/tasks/reminders/SnoozeActivity.java b/app/src/main/java/org/tasks/reminders/SnoozeActivity.java deleted file mode 100644 index 703ee9a5d..000000000 --- a/app/src/main/java/org/tasks/reminders/SnoozeActivity.java +++ /dev/null @@ -1,133 +0,0 @@ -package org.tasks.reminders; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.os.Bundle; -import androidx.fragment.app.FragmentManager; -import com.todoroo.astrid.dao.TaskDaoBlocking; -import com.todoroo.astrid.reminders.ReminderService; -import dagger.hilt.android.AndroidEntryPoint; -import java.util.ArrayList; -import java.util.List; -import javax.inject.Inject; -import org.tasks.activities.DateAndTimePickerActivity; -import org.tasks.dialogs.MyTimePickerDialog; -import org.tasks.injection.InjectingAppCompatActivity; -import org.tasks.notifications.NotificationManager; -import org.tasks.themes.ThemeAccent; -import org.tasks.time.DateTime; - -@AndroidEntryPoint -public class SnoozeActivity extends InjectingAppCompatActivity - implements SnoozeCallback, DialogInterface.OnCancelListener { - - private static final int FLAGS = Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK; - public static final String EXTRA_TASK_ID = "id"; - public static final String EXTRA_TASK_IDS = "ids"; - public static final String EXTRA_SNOOZE_TIME = "snooze_time"; - private static final String FRAG_TAG_SNOOZE_DIALOG = "frag_tag_snooze_dialog"; - private static final String EXTRA_PICKING_DATE_TIME = "extra_picking_date_time"; - private static final int REQUEST_DATE_TIME = 10101; - private final List taskIds = new ArrayList<>(); - @Inject NotificationManager notificationManager; - @Inject TaskDaoBlocking taskDao; - @Inject ReminderService reminderService; - @Inject ThemeAccent themeAccent; - private boolean pickingDateTime; - - public static Intent newIntent(Context context, Long id) { - Intent intent = new Intent(context, SnoozeActivity.class); - intent.setFlags(FLAGS); - intent.putExtra(SnoozeActivity.EXTRA_TASK_ID, id); - return intent; - } - - public static Intent newIntent(Context context, List ids) { - Intent intent = new Intent(context, SnoozeActivity.class); - intent.setFlags(FLAGS); - intent.putExtra(SnoozeActivity.EXTRA_TASK_IDS, new ArrayList(ids)); - return intent; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - themeAccent.applyStyle(getTheme()); - - Intent intent = getIntent(); - - if (intent.hasExtra(EXTRA_TASK_ID)) { - taskIds.add(intent.getLongExtra(EXTRA_TASK_ID, -1L)); - } else if (intent.hasExtra(EXTRA_TASK_IDS)) { - //noinspection unchecked - taskIds.addAll((ArrayList) intent.getSerializableExtra(EXTRA_TASK_IDS)); - } - - if (savedInstanceState != null) { - pickingDateTime = savedInstanceState.getBoolean(EXTRA_PICKING_DATE_TIME, false); - if (pickingDateTime) { - return; - } - } - - if (intent.hasExtra(EXTRA_SNOOZE_TIME)) { - snoozeForTime(new DateTime(intent.getLongExtra(EXTRA_SNOOZE_TIME, 0L))); - } else { - FragmentManager fragmentManager = getSupportFragmentManager(); - SnoozeDialog fragmentByTag = - (SnoozeDialog) fragmentManager.findFragmentByTag(FRAG_TAG_SNOOZE_DIALOG); - if (fragmentByTag == null) { - fragmentByTag = new SnoozeDialog(); - fragmentByTag.show(fragmentManager, FRAG_TAG_SNOOZE_DIALOG); - } - fragmentByTag.setOnCancelListener(this); - fragmentByTag.setSnoozeCallback(this); - } - } - - @Override - public void snoozeForTime(DateTime time) { - taskDao.snooze(taskIds, time.getMillis()); - reminderService.scheduleAllAlarms(taskIds); - notificationManager.cancel(taskIds); - setResult(RESULT_OK); - finish(); - } - - @Override - protected void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - outState.putBoolean(EXTRA_PICKING_DATE_TIME, pickingDateTime); - } - - @Override - public void pickDateTime() { - pickingDateTime = true; - - Intent intent = new Intent(this, DateAndTimePickerActivity.class); - intent.putExtra( - DateAndTimePickerActivity.EXTRA_TIMESTAMP, new DateTime().plusMinutes(30).getMillis()); - startActivityForResult(intent, REQUEST_DATE_TIME); - } - - @Override - public void onCancel(DialogInterface dialog) { - finish(); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == REQUEST_DATE_TIME) { - if (resultCode == RESULT_OK && data != null) { - long timestamp = data.getLongExtra(MyTimePickerDialog.EXTRA_TIMESTAMP, 0L); - snoozeForTime(new DateTime(timestamp)); - } else { - finish(); - } - } else { - super.onActivityResult(requestCode, resultCode, data); - } - } -} diff --git a/app/src/main/java/org/tasks/reminders/SnoozeActivity.kt b/app/src/main/java/org/tasks/reminders/SnoozeActivity.kt new file mode 100644 index 000000000..e7a4d4624 --- /dev/null +++ b/app/src/main/java/org/tasks/reminders/SnoozeActivity.kt @@ -0,0 +1,119 @@ +package org.tasks.reminders + +import android.app.Activity +import android.content.Context +import android.content.DialogInterface +import android.content.Intent +import android.os.Bundle +import com.todoroo.astrid.dao.TaskDaoBlocking +import com.todoroo.astrid.reminders.ReminderService +import dagger.hilt.android.AndroidEntryPoint +import org.tasks.activities.DateAndTimePickerActivity +import org.tasks.dialogs.MyTimePickerDialog +import org.tasks.injection.InjectingAppCompatActivity +import org.tasks.notifications.NotificationManager +import org.tasks.themes.ThemeAccent +import org.tasks.time.DateTime +import java.util.* +import javax.inject.Inject + +@AndroidEntryPoint +class SnoozeActivity : InjectingAppCompatActivity(), SnoozeCallback, DialogInterface.OnCancelListener { + @Inject lateinit var notificationManager: NotificationManager + @Inject lateinit var taskDao: TaskDaoBlocking + @Inject lateinit var reminderService: ReminderService + @Inject lateinit var themeAccent: ThemeAccent + + private val taskIds: MutableList = ArrayList() + private var pickingDateTime = false + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + themeAccent.applyStyle(theme) + val intent = intent + if (intent.hasExtra(EXTRA_TASK_ID)) { + taskIds.add(intent.getLongExtra(EXTRA_TASK_ID, -1L)) + } else if (intent.hasExtra(EXTRA_TASK_IDS)) { + taskIds.addAll(intent.getSerializableExtra(EXTRA_TASK_IDS) as ArrayList) + } + if (savedInstanceState != null) { + pickingDateTime = savedInstanceState.getBoolean(EXTRA_PICKING_DATE_TIME, false) + if (pickingDateTime) { + return + } + } + if (intent.hasExtra(EXTRA_SNOOZE_TIME)) { + snoozeForTime(DateTime(intent.getLongExtra(EXTRA_SNOOZE_TIME, 0L))) + } else { + val fragmentManager = supportFragmentManager + var fragmentByTag = fragmentManager.findFragmentByTag(FRAG_TAG_SNOOZE_DIALOG) as SnoozeDialog? + if (fragmentByTag == null) { + fragmentByTag = SnoozeDialog() + fragmentByTag.show(fragmentManager, FRAG_TAG_SNOOZE_DIALOG) + } + fragmentByTag.setOnCancelListener(this) + fragmentByTag.setSnoozeCallback(this) + } + } + + override fun snoozeForTime(time: DateTime) { + taskDao.snooze(taskIds, time.millis) + reminderService.scheduleAllAlarms(taskIds) + notificationManager.cancel(taskIds) + setResult(Activity.RESULT_OK) + finish() + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + outState.putBoolean(EXTRA_PICKING_DATE_TIME, pickingDateTime) + } + + override fun pickDateTime() { + pickingDateTime = true + val intent = Intent(this, DateAndTimePickerActivity::class.java) + intent.putExtra( + DateAndTimePickerActivity.EXTRA_TIMESTAMP, DateTime().plusMinutes(30).millis) + startActivityForResult(intent, REQUEST_DATE_TIME) + } + + override fun onCancel(dialog: DialogInterface) { + finish() + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + if (requestCode == REQUEST_DATE_TIME) { + if (resultCode == Activity.RESULT_OK && data != null) { + val timestamp = data.getLongExtra(MyTimePickerDialog.EXTRA_TIMESTAMP, 0L) + snoozeForTime(DateTime(timestamp)) + } else { + finish() + } + } else { + super.onActivityResult(requestCode, resultCode, data) + } + } + + companion object { + private const val FLAGS = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK + const val EXTRA_TASK_ID = "id" + const val EXTRA_TASK_IDS = "ids" + const val EXTRA_SNOOZE_TIME = "snooze_time" + private const val FRAG_TAG_SNOOZE_DIALOG = "frag_tag_snooze_dialog" + private const val EXTRA_PICKING_DATE_TIME = "extra_picking_date_time" + private const val REQUEST_DATE_TIME = 10101 + fun newIntent(context: Context?, id: Long?): Intent { + val intent = Intent(context, SnoozeActivity::class.java) + intent.flags = FLAGS + intent.putExtra(EXTRA_TASK_ID, id) + return intent + } + + fun newIntent(context: Context?, ids: List?): Intent { + val intent = Intent(context, SnoozeActivity::class.java) + intent.flags = FLAGS + intent.putExtra(EXTRA_TASK_IDS, ArrayList(ids!!)) + return intent + } + } +} \ No newline at end of file