mirror of
https://github.com/thunderbird/thunderbird-android.git
synced 2024-09-20 04:02:14 +02:00
Merge pull request #8119 from wmontwe/add-drawer-compose-ui-integration
Add drawer compose UI integration
This commit is contained in:
commit
8e6c326603
@ -0,0 +1,84 @@
|
||||
package app.k9mail.feature.navigation.drawer
|
||||
|
||||
import android.view.Surface
|
||||
import android.view.View
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.platform.ComposeView
|
||||
import androidx.core.view.GravityCompat
|
||||
import androidx.drawerlayout.widget.DrawerLayout
|
||||
import app.k9mail.core.ui.compose.designsystem.atom.Surface
|
||||
import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyLarge
|
||||
import app.k9mail.core.ui.theme.api.FeatureThemeProvider
|
||||
import app.k9mail.legacy.account.Account
|
||||
import com.mikepenz.materialdrawer.widget.MaterialDrawerSliderView
|
||||
import org.koin.core.component.KoinComponent
|
||||
import org.koin.core.component.inject
|
||||
|
||||
class FolderDrawer(
|
||||
override val parent: AppCompatActivity,
|
||||
) : NavigationDrawer, KoinComponent {
|
||||
|
||||
private val themeProvider: FeatureThemeProvider by inject()
|
||||
|
||||
private val drawer: DrawerLayout = parent.findViewById(R.id.navigation_drawer_layout)
|
||||
private val drawerView: ComposeView = parent.findViewById(R.id.material_drawer_compose_view)
|
||||
private val sliderView: MaterialDrawerSliderView = parent.findViewById(R.id.material_drawer_slider)
|
||||
|
||||
init {
|
||||
sliderView.visibility = View.GONE
|
||||
drawerView.visibility = View.VISIBLE
|
||||
|
||||
drawerView.setContent {
|
||||
themeProvider.WithTheme {
|
||||
Surface(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
color = Color.Red,
|
||||
) {
|
||||
TextBodyLarge("Folder Drawer")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override val isOpen: Boolean
|
||||
get() = drawer.isOpen
|
||||
|
||||
override fun updateUserAccountsAndFolders(account: Account?) {
|
||||
// TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun selectAccount(accountUuid: String) {
|
||||
// TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun selectFolder(folderId: Long) {
|
||||
// TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun selectUnifiedInbox() {
|
||||
// TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun deselect() {
|
||||
// TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun open() {
|
||||
drawer.openDrawer(GravityCompat.START)
|
||||
}
|
||||
|
||||
override fun close() {
|
||||
drawer.closeDrawer(GravityCompat.START)
|
||||
}
|
||||
|
||||
override fun lock() {
|
||||
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)
|
||||
}
|
||||
|
||||
override fun unlock() {
|
||||
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED)
|
||||
}
|
||||
}
|
@ -7,6 +7,7 @@ import android.graphics.PorterDuff
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.view.GravityCompat
|
||||
@ -84,6 +85,7 @@ class LegacyDrawer(
|
||||
|
||||
private val drawer: DrawerLayout = parent.findViewById(R.id.navigation_drawer_layout)
|
||||
private val sliderView: MaterialDrawerSliderView = parent.findViewById(R.id.material_drawer_slider)
|
||||
private val composeView: View = parent.findViewById(R.id.material_drawer_compose_view)
|
||||
private val headerView: AccountHeaderView = AccountHeaderView(parent).apply {
|
||||
attachToSliderView(this@LegacyDrawer.sliderView)
|
||||
dividerBelowHeader = false
|
||||
@ -101,13 +103,13 @@ class LegacyDrawer(
|
||||
private var openedFolderId: Long? = null
|
||||
private var latestFolderList: FolderList? = null
|
||||
|
||||
val layout: DrawerLayout
|
||||
get() = drawer
|
||||
|
||||
override val isOpen: Boolean
|
||||
get() = drawer.isOpen
|
||||
|
||||
init {
|
||||
composeView.visibility = View.GONE
|
||||
sliderView.visibility = View.VISIBLE
|
||||
|
||||
textColor = parent.obtainDrawerTextColor()
|
||||
|
||||
initializeImageLoader()
|
||||
@ -553,8 +555,10 @@ private fun Context.obtainDrawerTextColor(): Int {
|
||||
MaterialDrawerR.attr.materialDrawerStyle,
|
||||
MaterialDrawerR.style.Widget_MaterialDrawerStyle,
|
||||
)
|
||||
val textColor =
|
||||
styledAttributes.getColor(MaterialDrawerR.styleable.MaterialDrawerSliderView_materialDrawerPrimaryText, 0)
|
||||
val textColor = styledAttributes.getColor(
|
||||
MaterialDrawerR.styleable.MaterialDrawerSliderView_materialDrawerPrimaryText,
|
||||
0,
|
||||
)
|
||||
styledAttributes.recycle()
|
||||
|
||||
return textColor
|
||||
|
@ -7,10 +7,24 @@
|
||||
android:layout_gravity="start"
|
||||
>
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.mikepenz.materialdrawer.widget.MaterialDrawerSliderView
|
||||
android:id="@+id/material_drawer_slider"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:visibility="invisible"
|
||||
/>
|
||||
|
||||
<androidx.compose.ui.platform.ComposeView
|
||||
android:id="@+id/material_drawer_compose_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:visibility="invisible"
|
||||
/>
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||
|
@ -1,5 +1,5 @@
|
||||
plugins {
|
||||
id(ThunderbirdPlugins.Library.android)
|
||||
id(ThunderbirdPlugins.Library.androidCompose)
|
||||
alias(libs.plugins.kotlin.parcelize)
|
||||
}
|
||||
|
||||
|
@ -29,6 +29,7 @@ import app.k9mail.core.featureflag.FeatureFlagKey
|
||||
import app.k9mail.core.featureflag.FeatureFlagProvider
|
||||
import app.k9mail.core.ui.legacy.designsystem.atom.icon.Icons
|
||||
import app.k9mail.feature.launcher.FeatureLauncherActivity
|
||||
import app.k9mail.feature.navigation.drawer.FolderDrawer
|
||||
import app.k9mail.feature.navigation.drawer.LegacyDrawer
|
||||
import app.k9mail.feature.navigation.drawer.NavigationDrawer
|
||||
import app.k9mail.legacy.account.Account
|
||||
@ -584,7 +585,7 @@ open class MessageList :
|
||||
|
||||
featureFlagProvider.provide(FeatureFlagKey("material3_navigation_drawer"))
|
||||
.onEnabled {
|
||||
TODO()
|
||||
initializeFolderDrawer()
|
||||
}
|
||||
.onDisabledOrUnavailable {
|
||||
initializeLegacyDrawer(savedInstanceState)
|
||||
@ -604,6 +605,12 @@ open class MessageList :
|
||||
)
|
||||
}
|
||||
|
||||
private fun initializeFolderDrawer() {
|
||||
navigationDrawer = FolderDrawer(
|
||||
parent = this,
|
||||
)
|
||||
}
|
||||
|
||||
private fun createDrawerListener(): DrawerListener {
|
||||
return object : DrawerListener {
|
||||
override fun onDrawerClosed(drawerView: View) {
|
||||
|
Loading…
Reference in New Issue
Block a user