Restore '+' button to drawer customization screen

renovate/retrofit-monorepo
Alex Baker 3 months ago
parent c2feb2144f
commit f459541902

@ -4,17 +4,28 @@ import android.app.Activity
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import com.todoroo.astrid.activity.MainActivity.Companion.REQUEST_NEW_LIST
import com.todoroo.astrid.activity.MainActivity.Companion.REQUEST_NEW_PLACE
import com.todoroo.astrid.activity.MainActivity.Companion.REQUEST_NEW_TAGS
import kotlinx.coroutines.launch
import org.tasks.LocalBroadcastManager
import org.tasks.activities.GoogleTaskListSettingsActivity
import org.tasks.activities.TagSettingsActivity
import org.tasks.caldav.BaseCaldavCalendarSettingsActivity
import org.tasks.data.dao.CaldavDao
import org.tasks.data.listSettingsClass
import org.tasks.dialogs.NewFilterDialog
import org.tasks.filters.FilterProvider
import org.tasks.filters.NavigationDrawerSubheader
import org.tasks.filters.NavigationDrawerSubheader.SubheaderType.CALDAV
import org.tasks.filters.NavigationDrawerSubheader.SubheaderType.ETESYNC
import org.tasks.filters.NavigationDrawerSubheader.SubheaderType.GOOGLE_TASKS
import org.tasks.filters.NavigationDrawerSubheader.SubheaderType.PREFERENCE
import org.tasks.filters.NavigationDrawerSubheader.SubheaderType.TASKS
import org.tasks.location.LocationPickerActivity
import org.tasks.preferences.MainPreferences
import org.tasks.preferences.Preferences
import timber.log.Timber
import javax.inject.Inject
class SubheaderClickHandler @Inject constructor(
@ -37,6 +48,58 @@ class SubheaderClickHandler @Inject constructor(
}
}
override fun onAdd(subheader: NavigationDrawerSubheader) {
when (subheader.addIntentRc) {
FilterProvider.REQUEST_NEW_FILTER ->
NewFilterDialog.newFilterDialog().show(
(activity as AppCompatActivity).supportFragmentManager,
FRAG_TAG_NEW_FILTER
)
REQUEST_NEW_PLACE ->
activity.startActivityForResult(
Intent(activity, LocationPickerActivity::class.java),
REQUEST_NEW_PLACE
)
REQUEST_NEW_TAGS ->
activity.startActivityForResult(
Intent(activity, TagSettingsActivity::class.java),
REQUEST_NEW_LIST
)
REQUEST_NEW_LIST -> {
(activity as AppCompatActivity).lifecycleScope.launch {
val account = caldavDao.getAccount(subheader.id) ?: return@launch
when (subheader.subheaderType) {
NavigationDrawerSubheader.SubheaderType.GOOGLE_TASKS ->
activity.startActivityForResult(
Intent(activity, GoogleTaskListSettingsActivity::class.java)
.putExtra(
GoogleTaskListSettingsActivity.EXTRA_ACCOUNT,
account
),
REQUEST_NEW_LIST
)
NavigationDrawerSubheader.SubheaderType.CALDAV,
NavigationDrawerSubheader.SubheaderType.TASKS,
NavigationDrawerSubheader.SubheaderType.ETESYNC ->
activity.startActivityForResult(
Intent(activity, account.listSettingsClass())
.putExtra(
BaseCaldavCalendarSettingsActivity.EXTRA_CALDAV_ACCOUNT,
account
),
REQUEST_NEW_LIST
)
else -> {}
}
}
}
else -> Timber.e("Unhandled request code: $subheader")
}
}
override fun showError() =
activity.startActivity(Intent(activity, MainPreferences::class.java))

@ -18,6 +18,7 @@ internal class SubheaderViewHolder(
interface ClickHandler {
fun onClick(subheader: NavigationDrawerSubheader)
fun onAdd(subheader: NavigationDrawerSubheader)
fun showError()
}
@ -30,7 +31,7 @@ internal class SubheaderViewHolder(
private lateinit var subheader: NavigationDrawerSubheader
fun bind(subheader: NavigationDrawerSubheader) {
add.isVisible = false
add.isVisible = subheader.addIntentRc > 0
this.subheader = subheader
text.text = subheader.title
when {
@ -60,6 +61,9 @@ internal class SubheaderViewHolder(
rotate()
clickHandler.onClick(subheader)
}
it.addItem.setOnClickListener {
clickHandler.onAdd(subheader)
}
}
errorIcon.setOnClickListener { clickHandler.showError() }
}

@ -57,7 +57,7 @@ class FilterProvider @Inject constructor(
getAllFilters(showCreate = false)
suspend fun drawerCustomizationItems(): List<FilterListItem> =
getAllFilters(showBuiltIn = false)
getAllFilters(showBuiltIn = false, showCreate = true)
private fun getDebugFilters(): List<FilterListItem> =
if (BuildConfig.DEBUG) {

Loading…
Cancel
Save