mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-17 21:27:01 +05:30
app: integrate settings into main UI
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
parent
ef09b241ea
commit
cf5410622f
6 changed files with 55 additions and 1 deletions
|
@ -24,6 +24,7 @@ class LobstersTopBarTest : ScreenshotTest {
|
|||
LobstersTopAppBar(
|
||||
currentDestination = Destination.Hottest,
|
||||
toggleSortingOrder = {},
|
||||
launchSettings = {},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -38,6 +39,7 @@ class LobstersTopBarTest : ScreenshotTest {
|
|||
LobstersTopAppBar(
|
||||
currentDestination = Destination.Hottest,
|
||||
toggleSortingOrder = {},
|
||||
launchSettings = {},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -52,6 +54,7 @@ class LobstersTopBarTest : ScreenshotTest {
|
|||
LobstersTopAppBar(
|
||||
currentDestination = Destination.Saved,
|
||||
toggleSortingOrder = {},
|
||||
launchSettings = {},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -66,6 +69,7 @@ class LobstersTopBarTest : ScreenshotTest {
|
|||
LobstersTopAppBar(
|
||||
currentDestination = Destination.Saved,
|
||||
toggleSortingOrder = {},
|
||||
launchSettings = {},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,6 +25,14 @@
|
|||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.settings.SettingsActivity"
|
||||
android:theme="@style/Platform.Theme.Claw"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package dev.msfjarvis.lobsters.ui.main
|
||||
|
||||
import android.content.Intent
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.BottomNavigation
|
||||
|
@ -11,6 +12,7 @@ import androidx.compose.runtime.collectAsState
|
|||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.platform.testTag
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import androidx.navigation.compose.KEY_ROUTE
|
||||
|
@ -24,6 +26,7 @@ import androidx.paging.compose.collectAsLazyPagingItems
|
|||
import dev.msfjarvis.lobsters.ui.navigation.Destination
|
||||
import dev.msfjarvis.lobsters.ui.posts.NetworkPosts
|
||||
import dev.msfjarvis.lobsters.ui.posts.SavedPosts
|
||||
import dev.msfjarvis.lobsters.ui.settings.SettingsActivity
|
||||
import dev.msfjarvis.lobsters.ui.viewmodel.LobstersViewModel
|
||||
import dev.msfjarvis.lobsters.util.IconResource
|
||||
import dev.msfjarvis.lobsters.utils.get
|
||||
|
@ -32,6 +35,7 @@ import kotlinx.coroutines.launch
|
|||
@Composable
|
||||
fun LobstersApp() {
|
||||
val viewModel: LobstersViewModel = viewModel()
|
||||
val context = LocalContext.current
|
||||
val navController = rememberNavController()
|
||||
val hottestPosts = viewModel.hottestPosts.collectAsLazyPagingItems()
|
||||
val newestPosts = viewModel.newestPosts.collectAsLazyPagingItems()
|
||||
|
@ -70,7 +74,7 @@ fun LobstersApp() {
|
|||
LobstersTopAppBar(
|
||||
currentDestination,
|
||||
viewModel::toggleSortOrder,
|
||||
)
|
||||
) { context.startActivity(Intent(context, SettingsActivity::class.java)) }
|
||||
},
|
||||
bottomBar = {
|
||||
LobstersBottomNav(
|
||||
|
|
|
@ -22,6 +22,7 @@ import kotlinx.coroutines.launch
|
|||
fun LobstersTopAppBar(
|
||||
currentDestination: Destination,
|
||||
toggleSortingOrder: suspend () -> Unit,
|
||||
launchSettings: () -> Unit,
|
||||
) {
|
||||
val scope = rememberCoroutineScope()
|
||||
TopAppBar(
|
||||
|
@ -42,6 +43,14 @@ fun LobstersTopAppBar(
|
|||
},
|
||||
)
|
||||
}
|
||||
IconResource(
|
||||
resourceId = R.drawable.ic_app_settings_24px,
|
||||
contentDescription = Strings.Settings.get(),
|
||||
modifier =
|
||||
Modifier.padding(horizontal = 8.dp, vertical = 8.dp).clickable {
|
||||
scope.launch { launchSettings() }
|
||||
},
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
package dev.msfjarvis.lobsters.ui.settings
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.compose.setContent
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import dev.msfjarvis.lobsters.data.backup.BackupHandler
|
||||
import dev.msfjarvis.lobsters.ui.theme.LobstersTheme
|
||||
import javax.inject.Inject
|
||||
|
||||
@AndroidEntryPoint
|
||||
class SettingsActivity : ComponentActivity() {
|
||||
|
||||
@Inject lateinit var backupHandler: BackupHandler
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContent { LobstersTheme { LobstersSettings(backupHandler) } }
|
||||
}
|
||||
}
|
9
app/src/main/res/drawable/ic_app_settings_24px.xml
Normal file
9
app/src/main/res/drawable/ic_app_settings_24px.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M21.81,12.74l-0.82,-0.63v-0.22l0.8,-0.63c0.16,-0.12 0.2,-0.34 0.1,-0.51l-0.85,-1.48c-0.07,-0.13 -0.21,-0.2 -0.35,-0.2 -0.05,0 -0.1,0.01 -0.15,0.03l-0.95,0.38c-0.08,-0.05 -0.11,-0.07 -0.19,-0.11l-0.15,-1.01c-0.03,-0.21 -0.2,-0.36 -0.4,-0.36h-1.71c-0.2,0 -0.37,0.15 -0.4,0.34l-0.14,1.01c-0.03,0.02 -0.07,0.03 -0.1,0.05l-0.09,0.06 -0.95,-0.38c-0.05,-0.02 -0.1,-0.03 -0.15,-0.03 -0.14,0 -0.27,0.07 -0.35,0.2l-0.85,1.48c-0.1,0.17 -0.06,0.39 0.1,0.51l0.8,0.63v0.23l-0.8,0.63c-0.16,0.12 -0.2,0.34 -0.1,0.51l0.85,1.48c0.07,0.13 0.21,0.2 0.35,0.2 0.05,0 0.1,-0.01 0.15,-0.03l0.95,-0.37c0.08,0.05 0.12,0.07 0.2,0.11l0.15,1.01c0.03,0.2 0.2,0.34 0.4,0.34h1.71c0.2,0 0.37,-0.15 0.4,-0.34l0.15,-1.01c0.03,-0.02 0.07,-0.03 0.1,-0.05l0.09,-0.06 0.95,0.38c0.05,0.02 0.1,0.03 0.15,0.03 0.14,0 0.27,-0.07 0.35,-0.2l0.85,-1.48c0.1,-0.17 0.06,-0.39 -0.1,-0.51zM18,13.5c-0.83,0 -1.5,-0.67 -1.5,-1.5s0.67,-1.5 1.5,-1.5 1.5,0.67 1.5,1.5 -0.67,1.5 -1.5,1.5zM17,17h2v4c0,1.1 -0.9,2 -2,2H7c-1.1,0 -2,-0.9 -2,-2V3c0,-1.1 0.9,-2 2,-2h10c1.1,0 2,0.9 2,2v4h-2V6H7v12h10v-1z" />
|
||||
</vector>
|
Loading…
Add table
Add a link
Reference in a new issue