Add GPS geotagging toggle to camera top bar

Users can now opt out of embedding GPS coordinates in photos.
The toggle is persisted via SharedPreferences and defaults to enabled.
When disabled, effectiveLocation returns null so no EXIF GPS tags are written.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Ole-Morten Duesund 2026-03-05 13:50:33 +01:00
commit e9bef0607f
3 changed files with 39 additions and 4 deletions

View file

@ -39,6 +39,8 @@ import androidx.compose.material.icons.filled.Close
import androidx.compose.material.icons.filled.FlipCameraAndroid
import androidx.compose.material.icons.filled.PhotoLibrary
import androidx.compose.material.icons.filled.RestartAlt
import androidx.compose.material.icons.filled.LocationOff
import androidx.compose.material.icons.filled.LocationOn
import androidx.compose.material.icons.filled.Tune
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.Icon
@ -107,6 +109,7 @@ fun CameraScreen(
val lastSavedUri by viewModel.lastSavedUri.collectAsState()
val lastThumbnailBitmap by viewModel.lastThumbnailBitmap.collectAsState()
val galleryPreviewBitmap by viewModel.galleryPreviewBitmap.collectAsState()
val geotagEnabled by viewModel.geotagEnabled.collectAsState()
val isGalleryPreview = galleryPreviewBitmap != null
val zoomRatio by viewModel.cameraManager.zoomRatio.collectAsState()
@ -254,6 +257,20 @@ fun CameraScreen(
}
Row(verticalAlignment = Alignment.CenterVertically) {
// GPS geotagging toggle
IconButton(
onClick = {
viewModel.toggleGeotag()
viewModel.haptics.tick()
}
) {
Icon(
imageVector = if (geotagEnabled) Icons.Default.LocationOn else Icons.Default.LocationOff,
contentDescription = if (geotagEnabled) "Disable GPS geotagging" else "Enable GPS geotagging",
tint = if (geotagEnabled) Color.White else Color.White.copy(alpha = 0.5f)
)
}
if (!isGalleryPreview) {
// Camera flip button
IconButton(