feat(message): add overflow menu to message screen (#2540)

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
This commit is contained in:
James Rich 2025-07-27 17:09:41 -05:00 committed by GitHub
parent bbaac9e143
commit 26530cbe18
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 282 additions and 262 deletions

View file

@ -321,52 +321,46 @@ constructor(
private val showPrecisionCircleOnMap =
MutableStateFlow(preferences.getBoolean("show-precision-circle-on-map", true))
private val showIgnored = MutableStateFlow(preferences.getBoolean("show-ignored", false))
private val _showIgnored = MutableStateFlow(preferences.getBoolean("show-ignored", false))
val showIgnored: StateFlow<Boolean> = _showIgnored
fun toggleShowIgnored() {
showIgnored.value = !showIgnored.value
preferences.edit { putBoolean("show-ignored", showIgnored.value) }
private val _showQuickChat = MutableStateFlow(preferences.getBoolean("show-quick-chat", false))
val showQuickChat: StateFlow<Boolean> = _showQuickChat
private fun toggleBooleanPreference(
state: MutableStateFlow<Boolean>,
key: String,
onChanged: (Boolean) -> Unit = {},
) {
val newValue = !state.value
state.value = newValue
preferences.edit { putBoolean(key, newValue) }
onChanged(newValue)
}
fun toggleShowIgnored() = toggleBooleanPreference(_showIgnored, "show-ignored")
fun toggleShowQuickChat() = toggleBooleanPreference(_showQuickChat, "show-quick-chat")
fun setSortOption(sort: NodeSortOption) {
nodeSortOption.value = sort
preferences.edit { putInt("node-sort-option", sort.ordinal) }
}
fun toggleShowDetails() {
showDetails.value = !showDetails.value
preferences.edit { putBoolean("show-details", showDetails.value) }
}
fun toggleShowDetails() = toggleBooleanPreference(showDetails, "show-details")
fun toggleIncludeUnknown() {
includeUnknown.value = !includeUnknown.value
preferences.edit { putBoolean("include-unknown", includeUnknown.value) }
}
fun toggleIncludeUnknown() = toggleBooleanPreference(includeUnknown, "include-unknown")
fun toggleOnlyOnline() {
onlyOnline.value = !onlyOnline.value
preferences.edit { putBoolean("only-online", onlyOnline.value) }
}
fun toggleOnlyOnline() = toggleBooleanPreference(onlyOnline, "only-online")
fun toggleOnlyDirect() {
onlyDirect.value = !onlyDirect.value
preferences.edit { putBoolean("only-direct", onlyDirect.value) }
}
fun toggleOnlyDirect() = toggleBooleanPreference(onlyDirect, "only-direct")
fun setOnlyFavorites(value: Boolean) {
onlyFavorites.value = value
preferences.edit { putBoolean("only-favorites", onlyFavorites.value) }
}
fun toggleOnlyFavorites() = toggleBooleanPreference(onlyFavorites, "only-favorites")
fun setShowWaypointsOnMap(value: Boolean) {
showWaypointsOnMap.value = value
preferences.edit { putBoolean("show-waypoints-on-map", value) }
}
fun toggleShowWaypointsOnMap() = toggleBooleanPreference(showWaypointsOnMap, "show-waypoints-on-map")
fun setShowPrecisionCircleOnMap(value: Boolean) {
showPrecisionCircleOnMap.value = value
preferences.edit { putBoolean("show-precision-circle-on-map", value) }
}
fun toggleShowPrecisionCircleOnMap() =
toggleBooleanPreference(showPrecisionCircleOnMap, "show-precision-circle-on-map")
data class NodeFilterState(
val filterText: String,