Launch new list activities from HomeScreen

pull/3548/head
Alex Baker 7 months ago
parent a779dc331a
commit 202af2d451

@ -52,7 +52,6 @@ import org.tasks.data.dao.AlarmDao
import org.tasks.data.dao.CaldavDao import org.tasks.data.dao.CaldavDao
import org.tasks.data.dao.LocationDao import org.tasks.data.dao.LocationDao
import org.tasks.data.dao.TagDataDao import org.tasks.data.dao.TagDataDao
import org.tasks.data.entity.Place
import org.tasks.data.entity.Task import org.tasks.data.entity.Task
import org.tasks.dialogs.NewFilterDialog import org.tasks.dialogs.NewFilterDialog
import org.tasks.extensions.Context.nightMode import org.tasks.extensions.Context.nightMode
@ -60,10 +59,6 @@ import org.tasks.extensions.broughtToFront
import org.tasks.extensions.flagsToString import org.tasks.extensions.flagsToString
import org.tasks.extensions.isFromHistory import org.tasks.extensions.isFromHistory
import org.tasks.filters.Filter import org.tasks.filters.Filter
import org.tasks.filters.FilterProvider.Companion.REQUEST_NEW_LIST
import org.tasks.filters.FilterProvider.Companion.REQUEST_NEW_PLACE
import org.tasks.filters.PlaceFilter
import org.tasks.location.LocationPickerActivity.Companion.EXTRA_PLACE
import org.tasks.preferences.DefaultFilterProvider import org.tasks.preferences.DefaultFilterProvider
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.themes.ColorProvider import org.tasks.themes.ColorProvider
@ -204,12 +199,6 @@ class MainActivity : AppCompatActivity() {
state = state, state = state,
drawerState = drawerState, drawerState = drawerState,
navigator = navigator, navigator = navigator,
newList = {
startActivityForResult(
Intent(this@MainActivity, it),
REQUEST_NEW_LIST
)
},
showNewFilterDialog = { showNewFilterDialog = {
NewFilterDialog.newFilterDialog().show( NewFilterDialog.newFilterDialog().show(
supportFragmentManager, supportFragmentManager,
@ -225,27 +214,6 @@ class MainActivity : AppCompatActivity() {
handleIntent() handleIntent()
} }
@Deprecated("Deprecated in Java")
public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
when (requestCode) {
REQUEST_NEW_LIST ->
if (resultCode == RESULT_OK && data != null) {
getParcelableExtra(data, OPEN_FILTER, Filter::class.java)?.let {
viewModel.setFilter(it)
}
}
REQUEST_NEW_PLACE ->
if (resultCode == RESULT_OK && data != null) {
getParcelableExtra(data, EXTRA_PLACE, Place::class.java)?.let {
viewModel.setFilter(PlaceFilter(it))
}
}
else ->
super.onActivityResult(requestCode, resultCode, data)
}
}
override fun onNewIntent(intent: Intent) { override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent) super.onNewIntent(intent)
setIntent(intent) setIntent(intent)

@ -1,10 +1,12 @@
package org.tasks.compose.home package org.tasks.compose.home
import android.app.Activity
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.activity.compose.LocalActivity import androidx.activity.compose.LocalActivity
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity.RESULT_OK
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
@ -41,9 +43,11 @@ import androidx.compose.ui.platform.LocalLayoutDirection
import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.core.content.IntentCompat.getParcelableExtra
import androidx.fragment.compose.AndroidFragment import androidx.fragment.compose.AndroidFragment
import androidx.fragment.compose.rememberFragmentState import androidx.fragment.compose.rememberFragmentState
import androidx.hilt.navigation.compose.hiltViewModel import androidx.hilt.navigation.compose.hiltViewModel
import com.todoroo.astrid.activity.MainActivity.Companion.OPEN_FILTER
import com.todoroo.astrid.activity.MainActivityViewModel import com.todoroo.astrid.activity.MainActivityViewModel
import com.todoroo.astrid.activity.TaskEditFragment import com.todoroo.astrid.activity.TaskEditFragment
import com.todoroo.astrid.activity.TaskEditFragment.Companion.EXTRA_TASK import com.todoroo.astrid.activity.TaskEditFragment.Companion.EXTRA_TASK
@ -60,6 +64,7 @@ import org.tasks.compose.drawer.MenuSearchBar
import org.tasks.compose.drawer.TaskListDrawer import org.tasks.compose.drawer.TaskListDrawer
import org.tasks.data.listSettingsClass import org.tasks.data.listSettingsClass
import org.tasks.extensions.Context.openUri import org.tasks.extensions.Context.openUri
import org.tasks.filters.Filter
import org.tasks.filters.FilterProvider import org.tasks.filters.FilterProvider
import org.tasks.filters.FilterProvider.Companion.REQUEST_NEW_LIST import org.tasks.filters.FilterProvider.Companion.REQUEST_NEW_LIST
import org.tasks.filters.FilterProvider.Companion.REQUEST_NEW_PLACE import org.tasks.filters.FilterProvider.Companion.REQUEST_NEW_PLACE
@ -76,7 +81,6 @@ import timber.log.Timber
@Composable @Composable
fun HomeScreen( fun HomeScreen(
viewModel: MainActivityViewModel = hiltViewModel(LocalActivity.current as ComponentActivity), viewModel: MainActivityViewModel = hiltViewModel(LocalActivity.current as ComponentActivity),
newList: suspend (Class<out Activity>) -> Unit,
state: MainActivityViewModel.State, state: MainActivityViewModel.State,
drawerState: DrawerState, drawerState: DrawerState,
showNewFilterDialog: () -> Unit, showNewFilterDialog: () -> Unit,
@ -85,6 +89,14 @@ fun HomeScreen(
val currentWindowInsets = WindowInsets.systemBars.asPaddingValues() val currentWindowInsets = WindowInsets.systemBars.asPaddingValues()
val windowInsets = remember { mutableStateOf(currentWindowInsets) } val windowInsets = remember { mutableStateOf(currentWindowInsets) }
val keyboard = LocalSoftwareKeyboardController.current val keyboard = LocalSoftwareKeyboardController.current
val newList =
rememberLauncherForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == RESULT_OK) {
result.data
?.let { getParcelableExtra(it, OPEN_FILTER, Filter::class.java) }
?.let { viewModel.setFilter(it) }
}
}
LaunchedEffect(currentWindowInsets) { LaunchedEffect(currentWindowInsets) {
Timber.d("insets: $currentWindowInsets") Timber.d("insets: $currentWindowInsets")
@ -134,10 +146,10 @@ fun HomeScreen(
showNewFilterDialog() showNewFilterDialog()
REQUEST_NEW_PLACE -> REQUEST_NEW_PLACE ->
newList(LocationPickerActivity::class.java) newList.launch(Intent(context, LocationPickerActivity::class.java))
REQUEST_NEW_TAGS -> REQUEST_NEW_TAGS ->
newList(TagSettingsActivity::class.java) newList.launch(Intent(context, TagSettingsActivity::class.java))
REQUEST_NEW_LIST -> REQUEST_NEW_LIST ->
when (it.header.subheaderType) { when (it.header.subheaderType) {
@ -145,7 +157,7 @@ fun HomeScreen(
NavigationDrawerSubheader.SubheaderType.TASKS -> NavigationDrawerSubheader.SubheaderType.TASKS ->
viewModel viewModel
.getAccount(it.header.id.toLong()) .getAccount(it.header.id.toLong())
?.let { newList(it.listSettingsClass()) } ?.let { newList.launch(Intent(context, it.listSettingsClass())) }
else -> {} else -> {}
} }

Loading…
Cancel
Save