fenix/app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettingsFragment.kt

76 lines
3.2 KiB
Kotlin

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.fenix.settings.wallpaper
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.platform.ViewCompositionStrategy
import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController
import org.mozilla.fenix.R
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.ext.requireComponents
import org.mozilla.fenix.theme.FirefoxTheme
import org.mozilla.fenix.wallpapers.Wallpaper
import org.mozilla.fenix.wallpapers.WallpaperManager
class WallpaperSettingsFragment : Fragment() {
private val wallpaperManager by lazy {
requireComponents.wallpaperManager
}
private val settings by lazy {
requireComponents.settings
}
private val metrics by lazy {
requireComponents.analytics.metrics
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
metrics.track(Event.WallpaperSettingsOpened)
return ComposeView(requireContext()).apply {
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
setContent {
FirefoxTheme {
var currentWallpaper by remember { mutableStateOf(wallpaperManager.currentWallpaper) }
var wallpapersSwitchedByLogo by remember { mutableStateOf(settings.wallpapersSwitchedByLogoTap) }
WallpaperSettings(
wallpapers = wallpaperManager.availableWallpapers,
defaultWallpaper = WallpaperManager.defaultWallpaper,
loadWallpaperResource = {
wallpaperManager.loadSavedWallpaper(requireContext(), it)
},
selectedWallpaper = currentWallpaper,
onSelectWallpaper = { selectedWallpaper: Wallpaper ->
currentWallpaper = selectedWallpaper
wallpaperManager.currentWallpaper = selectedWallpaper
metrics.track(Event.WallpaperSelected(selectedWallpaper))
},
onViewWallpaper = { findNavController().navigate(R.id.homeFragment) },
tapLogoSwitchChecked = wallpapersSwitchedByLogo,
onTapLogoSwitchCheckedChange = {
settings.wallpapersSwitchedByLogoTap = it
wallpapersSwitchedByLogo = it
metrics.track(Event.ChangeWallpaperWithLogoToggled(it))
}
)
}
}
}
}
}