Skip to content

Commit

Permalink
* Improve offline mode map UI
Browse files Browse the repository at this point in the history
* Make fdroid offline mode true by default
  • Loading branch information
Semper-Viventem committed Feb 21, 2024
1 parent d8bc977 commit 33f781b
Show file tree
Hide file tree
Showing 8 changed files with 29 additions and 8 deletions.
2 changes: 2 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ android {
buildConfigField("String", "GITHUB_URL", "\"https://github.com/Semper-Viventem/MetaRadar\"")
buildConfigField("String", "STORE_PAGE_URL", "\"Not specified\"")
buildConfigField("String", "MAP_LICENSE_URL", "\"https://www.openstreetmap.org/copyright\"")
buildConfigField("Boolean", "OFFLINE_MODE_DEFAULT_STATE", "false")

buildConfigField("String", "DISTRIBUTION", "\"Not specified\"")
}
Expand Down Expand Up @@ -99,6 +100,7 @@ android {
isDefault = false
dimension = "distribution"

buildConfigField("Boolean", "OFFLINE_MODE_DEFAULT_STATE", "true")
buildConfigField("Boolean", "STORE_RATING_IS_APPLICABLE", "false")
buildConfigField("String", "DISTRIBUTION", "\"F-Droid\"")
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package f.cking.software.data.repo

import android.content.SharedPreferences
import f.cking.software.BuildConfig
import f.cking.software.TheAppConfig
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
Expand Down Expand Up @@ -73,7 +74,7 @@ class SettingsRepository(
}

fun getSilentMode(): Boolean {
return sharedPreferences.getBoolean(KEY_SILENT_NETWORK_MODE, false)
return sharedPreferences.getBoolean(KEY_SILENT_NETWORK_MODE, BuildConfig.OFFLINE_MODE_DEFAULT_STATE)
}

fun observeSilentMode(): Flow<Boolean> {
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/f/cking/software/ui/UiModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,6 @@ object UiModule {
viewModel { SelectDeviceViewModel(get(), get()) }
viewModel { DeviceDetailsViewModel(address = it[0], get(), get(), get(), get(), get(), get(), get(), get()) }
viewModel { JournalViewModel(get(), get(), get(), get(), get()) }
viewModel { MapViewModel(get(), get()) }
viewModel { MapViewModel(get(), get(), get()) }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -390,12 +390,12 @@ object DeviceDetailsScreen {
@Composable
private fun LocationHistory(modifier: Modifier = Modifier, deviceData: DeviceData, viewModel: DeviceDetailsViewModel) {
RoundedBox(modifier = modifier, internalPaddings = 0.dp) {
val mapIsReady = remember { mutableStateOf(false) }
Box(
modifier = Modifier
.fillMaxWidth()
.weight(1f)
) {
val mapIsReady = remember { mutableStateOf(false) }
Map(
Modifier.fillMaxSize(),
viewModel = viewModel,
Expand All @@ -408,7 +408,9 @@ object DeviceDetailsScreen {
MapOverlay(viewModel = viewModel)
}
}
HistoryPeriod(deviceData = deviceData, viewModel = viewModel)
if (mapIsReady.value) {
HistoryPeriod(deviceData = deviceData, viewModel = viewModel)
}
}
}

Expand Down
18 changes: 14 additions & 4 deletions app/src/main/java/f/cking/software/ui/map/ComposableMap.kt
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package f.cking.software.ui.map

import androidx.compose.foundation.Image
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Text
Expand All @@ -14,8 +15,10 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
Expand All @@ -24,6 +27,7 @@ import androidx.compose.ui.viewinterop.AndroidView
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
import f.cking.software.R
import f.cking.software.utils.graphic.RoundedBox
import f.cking.software.utils.graphic.Switcher
import org.koin.androidx.compose.koinViewModel
import org.osmdroid.views.MapView
Expand Down Expand Up @@ -53,9 +57,15 @@ fun MapView(

@Composable
fun SilentModeDisclaimer(modifier: Modifier, viewModel: MapViewModel) {
Box(modifier.padding(16.dp), contentAlignment = Alignment.Center) {
Column {
Text(text = stringResource(id = R.string.silent_mode_is_enabled_disclaimer))
Box(modifier, contentAlignment = Alignment.Center) {
Image(
modifier = Modifier.fillMaxSize().alpha(0.5f),
painter = painterResource(id = R.drawable.map_placeholder),
contentDescription = null,
contentScale = ContentScale.Crop,
)
RoundedBox(internalPaddings = 0.dp) {
Text(modifier = Modifier.padding(16.dp), text = stringResource(id = R.string.silent_mode_is_enabled_disclaimer))
Spacer(modifier = Modifier.height(8.dp))
Switcher(
value = viewModel.silentModeEnabled,
Expand Down
5 changes: 5 additions & 0 deletions app/src/main/java/f/cking/software/ui/map/MapViewModel.kt
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
package f.cking.software.ui.map

import android.widget.Toast
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import f.cking.software.BuildConfig
import f.cking.software.R
import f.cking.software.data.helpers.ActivityProvider
import f.cking.software.data.helpers.IntentHelper
import f.cking.software.data.repo.SettingsRepository
import kotlinx.coroutines.launch

class MapViewModel(
private val settingsRepository: SettingsRepository,
private val intentHelper: IntentHelper,
private val activityProvider: ActivityProvider,
) : ViewModel() {

var silentModeEnabled by mutableStateOf(settingsRepository.getSilentMode())
Expand All @@ -30,5 +34,6 @@ class MapViewModel(

fun changeSilentModeState() {
settingsRepository.setSilentMode(!settingsRepository.getSilentMode())
Toast.makeText(activityProvider.requireActivity(), R.string.silent_mode_is_off_toast, Toast.LENGTH_LONG).show()
}
}
Binary file added app/src/main/res/drawable/map_placeholder.webp
Binary file not shown.
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@
<string name="silent_mode_subtitle">Turn off any network communications in the app. It might be helpful to save traffic.</string>
<string name="database_block_title">Database actions</string>
<string name="app_settings_title">App settings</string>
<string name="silent_mode_is_off_toast">Offline mode is turned off. You can change it in the settings.</string>

<!-- Select manufacturer -->
<string name="select_manufacturer">Search manufacturer</string>
Expand Down

0 comments on commit 33f781b

Please sign in to comment.