Skip to content

Commit

Permalink
WIP: Handle settings navigation from various UIs
Browse files Browse the repository at this point in the history
  • Loading branch information
christianrowlands committed Oct 28, 2024
1 parent 9256b3b commit eeb3605
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import android.view.View
import android.view.ViewGroup
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.platform.ViewCompositionStrategy
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.fragment.findNavController
import androidx.preference.PreferenceManager
Expand All @@ -19,6 +20,7 @@ import com.craxiom.networksurvey.services.NetworkSurveyService
import com.craxiom.networksurvey.ui.UNKNOWN_RSSI
import com.craxiom.networksurvey.ui.bluetooth.BluetoothDetailsScreen
import com.craxiom.networksurvey.ui.bluetooth.BluetoothDetailsViewModel
import com.craxiom.networksurvey.ui.main.SharedViewModel
import com.craxiom.networksurvey.util.NsTheme
import com.craxiom.networksurvey.util.PreferenceUtils
import timber.log.Timber
Expand Down Expand Up @@ -159,6 +161,8 @@ class BluetoothDetailsFragment : AServiceDataFragment(), IBluetoothSurveyRecordL
* Navigates to the Settings UI (primarily for the user to change the scan rate)
*/
fun navigateToSettings() {
findNavController().navigate(BluetoothDetailsFragmentDirections.actionBluetoothDetailsToSettings())
}
val nsActivity = activity ?: return

val viewModel = ViewModelProvider(nsActivity)[SharedViewModel::class.java]
viewModel.triggerNavigationToSettings() }
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,16 @@ import android.view.View
import android.view.ViewGroup
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.platform.ViewCompositionStrategy
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.fragment.findNavController
import androidx.preference.PreferenceManager
import com.craxiom.networksurvey.constants.NetworkSurveyConstants
import com.craxiom.networksurvey.listeners.IWifiSurveyRecordListener
import com.craxiom.networksurvey.model.WifiNetwork
import com.craxiom.networksurvey.model.WifiRecordWrapper
import com.craxiom.networksurvey.services.NetworkSurveyService
import com.craxiom.networksurvey.ui.UNKNOWN_RSSI
import com.craxiom.networksurvey.ui.main.SharedViewModel
import com.craxiom.networksurvey.ui.wifi.WifiDetailsScreen
import com.craxiom.networksurvey.ui.wifi.model.WifiDetailsViewModel
import com.craxiom.networksurvey.util.NsTheme
Expand Down Expand Up @@ -152,7 +153,9 @@ class WifiDetailsFragment : AServiceDataFragment(), IWifiSurveyRecordListener {
* Navigates to the Settings UI (primarily for the user to change the scan rate)
*/
fun navigateToSettings() {
// TODO Update this for Compose Navigation
findNavController().navigate(WifiDetailsFragmentDirections.actionWifiDetailsToSettings())
val nsActivity = activity ?: return

val viewModel = ViewModelProvider(nsActivity)[SharedViewModel::class.java]
viewModel.triggerNavigationToSettings()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,15 @@ import android.view.View
import android.view.ViewGroup
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.platform.ViewCompositionStrategy
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.fragment.findNavController
import androidx.preference.PreferenceManager
import com.craxiom.messaging.wifi.WifiBandwidth
import com.craxiom.networksurvey.constants.NetworkSurveyConstants
import com.craxiom.networksurvey.listeners.IWifiSurveyRecordListener
import com.craxiom.networksurvey.model.WifiRecordWrapper
import com.craxiom.networksurvey.services.NetworkSurveyService
import com.craxiom.networksurvey.ui.main.SharedViewModel
import com.craxiom.networksurvey.ui.wifi.WifiSpectrumScreen
import com.craxiom.networksurvey.ui.wifi.model.WifiNetworkInfoList
import com.craxiom.networksurvey.ui.wifi.model.WifiSpectrum24ViewModel
Expand Down Expand Up @@ -172,7 +173,10 @@ class WifiSpectrumFragment : AServiceDataFragment(), IWifiSurveyRecordListener {
* Navigates to the Settings UI (primarily for the user to change the scan rate)
*/
fun navigateToSettings() {
findNavController().navigate(WifiDetailsFragmentDirections.actionWifiDetailsToSettings())
val nsActivity = activity ?: return

val viewModel = ViewModelProvider(nsActivity)[SharedViewModel::class.java]
viewModel.triggerNavigationToSettings()
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,15 @@ fun MainCompose(
}
}

LaunchedEffect(viewModel.navigateToSettings) {
viewModel.navigateToSettings.observe(lifecycleOwner) { shouldNavigate ->
if (shouldNavigate) {
mainNavController.navigate(NavDrawerOption.Settings.name)
viewModel.resetNavigationFlag()
}
}
}

NsTheme {
Scaffold { paddingValues ->
ModalNavigationDrawer(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@ class SharedViewModel @Inject constructor(application: Application) :
val bluetoothData: BluetoothRecordData?
get() = _bluetoothData

private val _navigateToSettings = MutableLiveData(false)
val navigateToSettings: LiveData<Boolean> = _navigateToSettings

fun triggerNavigationToQrCodeScanner() {
_navigateToQrCodeScanner.value = true
}
Expand Down Expand Up @@ -70,6 +73,10 @@ class SharedViewModel @Inject constructor(application: Application) :
_navigateToBluetoothDetails.value = true
}

fun triggerNavigationToSettings() {
_navigateToSettings.value = true
}

fun resetNavigationFlag() {
// TODO is this a good idea to set them all in one method?
_navigateToQrCodeScanner.value = false
Expand All @@ -78,5 +85,6 @@ class SharedViewModel @Inject constructor(application: Application) :
//_navigateToWifiSpectrum.value = false
_navigateToWifiDetails.value = false
_navigateToBluetoothDetails.value = false
_navigateToSettings.value = false
}
}

0 comments on commit eeb3605

Please sign in to comment.