app: integrate settings into main UI

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
Harsh Shandilya 2021-04-02 13:37:26 +05:30
parent ef09b241ea
commit cf5410622f
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80
6 changed files with 55 additions and 1 deletions

View file

@ -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 = {},
)
}
}

View file

@ -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>

View file

@ -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(

View file

@ -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() }
},
)
}
)
}

View file

@ -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) } }
}
}

View 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>