From cc418047454f17cd612a31cea412a8d2b95fca4c Mon Sep 17 00:00:00 2001 From: fatih ergin Date: Mon, 24 Jul 2023 01:41:16 +0300 Subject: [PATCH] update settings for requesting location permission & saving user preference --- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 3 ++ .../camera/activities/SettingsActivity.kt | 35 +++++++++++++++++-- .../camera/extensions/Context.kt | 10 +++++- .../camera/helpers/Config.kt | 4 +++ .../camera/helpers/Constants.kt | 1 + app/src/main/res/layout/activity_settings.xml | 15 ++++++++ 7 files changed, 65 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index fcd06a89..eec54d04 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -63,7 +63,7 @@ android { } dependencies { - implementation 'com.github.SimpleMobileTools:Simple-Commons:4c83ec8740' + implementation 'com.github.fatihergin:Simple-Commons:49f496ea16' implementation 'androidx.documentfile:documentfile:1.0.1' implementation "androidx.exifinterface:exifinterface:1.3.5" implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.5.1" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5037bff3..053bf145 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -23,6 +23,9 @@ + + + diff --git a/app/src/main/kotlin/com/simplemobiletools/camera/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/camera/activities/SettingsActivity.kt index cf77ea1b..b69afeb4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/camera/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/camera/activities/SettingsActivity.kt @@ -4,15 +4,15 @@ import android.annotation.SuppressLint import android.os.Bundle import com.simplemobiletools.camera.BuildConfig import com.simplemobiletools.camera.R +import com.simplemobiletools.camera.extensions.checkLocationPermission import com.simplemobiletools.camera.extensions.config import com.simplemobiletools.camera.models.CaptureMode import com.simplemobiletools.commons.dialogs.FeatureLockedDialog import com.simplemobiletools.commons.dialogs.FilePickerDialog +import com.simplemobiletools.commons.dialogs.OpenAppSettingsDialog import com.simplemobiletools.commons.dialogs.RadioGroupDialog import com.simplemobiletools.commons.extensions.* -import com.simplemobiletools.commons.helpers.LICENSE_GLIDE -import com.simplemobiletools.commons.helpers.NavigationIcon -import com.simplemobiletools.commons.helpers.isTiramisuPlus +import com.simplemobiletools.commons.helpers.* import com.simplemobiletools.commons.models.FAQItem import com.simplemobiletools.commons.models.RadioItem import kotlinx.android.synthetic.main.activity_settings.* @@ -43,6 +43,7 @@ class SettingsActivity : SimpleActivity() { setupVolumeButtonsAsShutter() setupFlipPhotos() setupSavePhotoMetadata() + setupSaveMediaLocation() setupSavePhotosFolder() setupPhotoQuality() setupCaptureMode() @@ -165,6 +166,34 @@ class SettingsActivity : SimpleActivity() { } } + private fun setupSaveMediaLocation() { + settings_save_media_location.isChecked = config.saveMediaLocation + settings_save_media_location_holder.setOnClickListener { + val willEnableSaveMediaLocation = !config.saveMediaLocation + + if (willEnableSaveMediaLocation) { + if (checkLocationPermission()) { + updateSaveMediaLocationConfig(true) + } else { + handlePermission(PERMISSION_ACCESS_FINE_LOCATION) { _ -> + if (checkLocationPermission()) { + updateSaveMediaLocationConfig(true) + } else { + OpenAppSettingsDialog(activity = this@SettingsActivity, permissionId = R.string.permission_name_location) + } + } + } + } else { + updateSaveMediaLocationConfig(false) + } + } + } + + private fun updateSaveMediaLocationConfig(enabled: Boolean) { + settings_save_media_location.isChecked = enabled + config.saveMediaLocation = enabled + } + private fun setupSavePhotosFolder() { settings_save_photos_label.text = addLockedLabelIfNeeded(R.string.save_photos) settings_save_photos.text = getLastPart(config.savePhotosFolder) diff --git a/app/src/main/kotlin/com/simplemobiletools/camera/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/camera/extensions/Context.kt index 4587a5c0..90fa434f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/camera/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/camera/extensions/Context.kt @@ -2,9 +2,13 @@ package com.simplemobiletools.camera.extensions import android.content.Context import com.simplemobiletools.camera.helpers.Config +import com.simplemobiletools.commons.extensions.hasPermission +import com.simplemobiletools.commons.helpers.PERMISSION_ACCESS_COARSE_LOCATION +import com.simplemobiletools.commons.helpers.PERMISSION_ACCESS_FINE_LOCATION import java.io.File import java.text.SimpleDateFormat -import java.util.* +import java.util.Date +import java.util.Locale val Context.config: Config get() = Config.newInstance(applicationContext) @@ -41,3 +45,7 @@ fun getRandomMediaName(isPhoto: Boolean): String { "VID_$timestamp" } } + +fun Context.checkLocationPermission(): Boolean { + return hasPermission(PERMISSION_ACCESS_FINE_LOCATION) || hasPermission(PERMISSION_ACCESS_COARSE_LOCATION) +} diff --git a/app/src/main/kotlin/com/simplemobiletools/camera/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/camera/helpers/Config.kt index 01b80789..c2fe1631 100644 --- a/app/src/main/kotlin/com/simplemobiletools/camera/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/camera/helpers/Config.kt @@ -68,6 +68,10 @@ class Config(context: Context) : BaseConfig(context) { get() = prefs.getBoolean(SAVE_PHOTO_METADATA, true) set(savePhotoMetadata) = prefs.edit().putBoolean(SAVE_PHOTO_METADATA, savePhotoMetadata).apply() + var saveMediaLocation: Boolean + get() = prefs.getBoolean(SAVE_MEDIA_LOCATION, false) + set(saveMediaLocation) = prefs.edit().putBoolean(SAVE_MEDIA_LOCATION, saveMediaLocation).apply() + var photoQuality: Int get() = prefs.getInt(PHOTO_QUALITY, 80) set(photoQuality) = prefs.edit().putInt(PHOTO_QUALITY, photoQuality).apply() diff --git a/app/src/main/kotlin/com/simplemobiletools/camera/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/camera/helpers/Constants.kt index 2850e250..194127be 100644 --- a/app/src/main/kotlin/com/simplemobiletools/camera/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/camera/helpers/Constants.kt @@ -18,6 +18,7 @@ const val BACK_VIDEO_RESOLUTION_INDEX = "back_video_resolution_index_3" const val FRONT_PHOTO_RESOLUTION_INDEX = "front_photo_resolution_index_3" const val FRONT_VIDEO_RESOLUTION_INDEX = "front_video_resolution_index_3" const val SAVE_PHOTO_METADATA = "save_photo_metadata" +const val SAVE_MEDIA_LOCATION = "save_media_location" const val PHOTO_QUALITY = "photo_quality" const val CAPTURE_MODE = "capture_mode" const val TIMER_MODE = "timer_mode" diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 60e0b3aa..e2930245 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -204,6 +204,21 @@ + + + + + +