diff --git a/app/build.gradle b/app/build.gradle index 4978e99a..e295aa7a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -118,6 +118,15 @@ dependencies { androidTestImplementation composeBom implementation 'androidx.activity:activity-compose:1.5.1' - implementation 'androidx.compose.material:material' + implementation 'androidx.compose.material3:material3' + def voyager = "1.0.0-rc03" + implementation "cafe.adriel.voyager:voyager-navigator:$voyager" + implementation "cafe.adriel.voyager:voyager-bottom-sheet-navigator:$voyager" + implementation "cafe.adriel.voyager:voyager-tab-navigator:$voyager" + implementation "cafe.adriel.voyager:voyager-androidx:$voyager" + //implementation "cafe.adriel.voyager:voyager-koin:$voyager" + + debugImplementation "androidx.compose.ui:ui-tooling:1.3.3" + implementation "androidx.compose.ui:ui-tooling-preview:1.3.3" } diff --git a/app/src/main/java/com/readrops/app/BaseActivity.kt b/app/src/main/java/com/readrops/app/BaseActivity.kt index 426ac252..d5bc080e 100644 --- a/app/src/main/java/com/readrops/app/BaseActivity.kt +++ b/app/src/main/java/com/readrops/app/BaseActivity.kt @@ -1,35 +1,92 @@ package com.readrops.app import android.os.Bundle -import android.os.PersistableBundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Scaffold -import androidx.compose.material.Text +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.AccountBox +import androidx.compose.material.icons.filled.MoreVert +import androidx.compose.material3.* import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource +import cafe.adriel.voyager.navigator.CurrentScreen +import cafe.adriel.voyager.navigator.Navigator +import com.readrops.app.compose.ReadropsTheme +import com.readrops.app.compose.account.AccountScreen +import com.readrops.app.compose.feeds.FeedsScreen +import com.readrops.app.compose.more.MoreScreen +import com.readrops.app.compose.timelime.TimelineScreen class BaseActivity : ComponentActivity() { - override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) { - super.onCreate(savedInstanceState, persistentState) + @OptIn(ExperimentalMaterial3Api::class) + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) setContent { - MaterialTheme { - Scaffold { paddingValues -> - Box( - modifier = Modifier.padding(paddingValues) - ) { - Row { - Text( - text = "Hello World", - ) + ReadropsTheme { + Navigator(screen = TimelineScreen()) { navigator -> + Scaffold( + bottomBar = { + BottomAppBar { + NavigationBarItem( + selected = false, + onClick = { navigator.push(TimelineScreen()) }, + icon = { + Icon( + painter = painterResource(R.drawable.ic_timeline), + contentDescription = null + ) + }, + label = { Text("Timeline") } + ) + + NavigationBarItem( + selected = false, + onClick = { navigator.push(FeedsScreen()) }, + icon = { + Icon( + painter = painterResource(R.drawable.ic_rss_feed_grey), + contentDescription = null + ) + }, + label = { Text("Feeds") } + ) + + NavigationBarItem( + selected = false, + onClick = { navigator.push(AccountScreen()) }, + icon = { + Icon( + imageVector = Icons.Default.AccountBox, + contentDescription = null, + ) + }, + label = { Text("Account") } + ) + + NavigationBarItem( + selected = false, + onClick = { navigator.push(MoreScreen()) }, + icon = { + Icon( + imageVector = Icons.Default.MoreVert, + contentDescription = null, + ) + }, + label = { Text("More") } + ) + } + }, + ) { paddingValues -> + Box( + modifier = Modifier.padding(paddingValues) + ) { + CurrentScreen() } } - } } } diff --git a/app/src/main/java/com/readrops/app/compose/account/AccountScreen.kt b/app/src/main/java/com/readrops/app/compose/account/AccountScreen.kt new file mode 100644 index 00000000..d5250459 --- /dev/null +++ b/app/src/main/java/com/readrops/app/compose/account/AccountScreen.kt @@ -0,0 +1,17 @@ +package com.readrops.app.compose.account + +import androidx.compose.foundation.layout.Column +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import cafe.adriel.voyager.androidx.AndroidScreen + +class AccountScreen : AndroidScreen() { + + @Composable + override fun Content() { + Column { + Text(text = "Account") + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/readrops/app/compose/feeds/FeedsScreen.kt b/app/src/main/java/com/readrops/app/compose/feeds/FeedsScreen.kt new file mode 100644 index 00000000..d0f463fd --- /dev/null +++ b/app/src/main/java/com/readrops/app/compose/feeds/FeedsScreen.kt @@ -0,0 +1,18 @@ +package com.readrops.app.compose.feeds + +import androidx.compose.foundation.layout.Column +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import cafe.adriel.voyager.androidx.AndroidScreen + +class FeedsScreen : AndroidScreen() { + + @Composable + override fun Content() { + Column { + Text( + text = "Feeds" + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/readrops/app/compose/more/MoreScreen.kt b/app/src/main/java/com/readrops/app/compose/more/MoreScreen.kt new file mode 100644 index 00000000..d3d7832e --- /dev/null +++ b/app/src/main/java/com/readrops/app/compose/more/MoreScreen.kt @@ -0,0 +1,18 @@ +package com.readrops.app.compose.more + +import androidx.compose.foundation.layout.Column +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import cafe.adriel.voyager.androidx.AndroidScreen + +class MoreScreen : AndroidScreen() { + + @Composable + override fun Content() { + Column { + Text( + text = "More" + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/readrops/app/compose/timelime/TimelineItem.kt b/app/src/main/java/com/readrops/app/compose/timelime/TimelineItem.kt new file mode 100644 index 00000000..9a88202e --- /dev/null +++ b/app/src/main/java/com/readrops/app/compose/timelime/TimelineItem.kt @@ -0,0 +1,71 @@ +package com.readrops.app.compose.timelime + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.* +import androidx.compose.material3.Card +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp + +@Preview +@Composable +fun TimelineItem() { + Card( + // elevation = 4.card, + modifier = Modifier.background(Color.White) + .padding(8.dp) + ) { + Column( + modifier = Modifier + .fillMaxWidth() + .padding(8.dp) + ) { + Row( + horizontalArrangement = Arrangement.SpaceBetween, + modifier = Modifier.fillMaxWidth() + ) { + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + Icon( + painter = painterResource(id = com.readrops.app.R.drawable.ic_rss_feed_grey), + contentDescription = null, + // modifier = Modifier.size((MaterialTheme.typography.subtitle2.fontSize.value * 1.5).dp) + ) + +// Spacer(Modifier.padding(4.dp)) + + Text( + text = "feed name", + //style = MaterialTheme.typography. + ) + } + + Text( + text = "Item date", + // style = MaterialTheme.typography.subtitle2 + ) + } + + Spacer(Modifier.size(8.dp)) + + Text( + text = "title example", + //style = MaterialTheme.typography.h5, + ) + + Spacer(Modifier.size(8.dp)) + + /* Image( + painter = painterResource(id = com.readrops.app.R.drawable.header_background), + contentDescription = null + )*/ + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/readrops/app/compose/timelime/TimelineScreen.kt b/app/src/main/java/com/readrops/app/compose/timelime/TimelineScreen.kt new file mode 100644 index 00000000..e17b14f3 --- /dev/null +++ b/app/src/main/java/com/readrops/app/compose/timelime/TimelineScreen.kt @@ -0,0 +1,18 @@ +package com.readrops.app.compose.timelime + +import androidx.compose.foundation.layout.Column +import androidx.compose.runtime.Composable +import cafe.adriel.voyager.androidx.AndroidScreen + + +class TimelineScreen : AndroidScreen() { + + @Composable + override fun Content() { + Column { + TimelineItem() + } + } + + +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_timeline.xml b/app/src/main/res/drawable/ic_timeline.xml new file mode 100644 index 00000000..68d26c91 --- /dev/null +++ b/app/src/main/res/drawable/ic_timeline.xml @@ -0,0 +1,5 @@ + + +