From 773378430b091f636688d7ccada403b299da0b94 Mon Sep 17 00:00:00 2001 From: Charles Lombardo Date: Mon, 4 Nov 2024 23:09:38 -0500 Subject: [PATCH 01/16] Enable predictive back --- app/src/main/AndroidManifest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 94558d31c..cb45d3e2d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -29,6 +29,7 @@ android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/Theme.App" + android:enableOnBackInvokedCallback="true" tools:ignore="UnusedAttribute"> From ed3172bd8ce37d14dd5a443e53ff43eb0e4f6ba0 Mon Sep 17 00:00:00 2001 From: Charles Lombardo Date: Mon, 4 Nov 2024 23:10:35 -0500 Subject: [PATCH 02/16] Apply dynamic colors to activities --- app/src/main/java/app/grapheneos/camera/App.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/app/grapheneos/camera/App.kt b/app/src/main/java/app/grapheneos/camera/App.kt index 6a3df84b9..77d2d2999 100644 --- a/app/src/main/java/app/grapheneos/camera/App.kt +++ b/app/src/main/java/app/grapheneos/camera/App.kt @@ -11,6 +11,7 @@ import android.view.WindowManager import androidx.annotation.RequiresPermission import androidx.appcompat.app.AppCompatActivity import app.grapheneos.camera.ui.activities.MainActivity +import com.google.android.material.color.DynamicColors class App : Application() { private var activity: MainActivity? = null @@ -91,6 +92,7 @@ class App : Application() { override fun onCreate() { super.onCreate() registerActivityLifecycleCallbacks(activityLifeCycleHelper) + DynamicColors.applyToActivitiesIfAvailable(this) } @RequiresPermission(allOf = [Manifest.permission.ACCESS_COARSE_LOCATION]) From 98c01ec23d0c6b59927c48e90703dd2e2c0712c8 Mon Sep 17 00:00:00 2001 From: Charles Lombardo Date: Mon, 4 Nov 2024 23:12:24 -0500 Subject: [PATCH 03/16] Use MaterialAlertDialogBuilder where applicable --- .../java/app/grapheneos/camera/CamConfig.kt | 21 +++++++------ .../camera/capturer/ImageCapturer.kt | 6 ++-- .../camera/ui/activities/InAppGallery.kt | 9 +++--- .../camera/ui/activities/MainActivity.kt | 31 ++++++++----------- .../camera/ui/activities/MoreSettings.kt | 4 +-- .../res/drawable/qr_result_background.xml | 2 +- .../main/res/layout/scan_result_dialog.xml | 3 +- app/src/main/res/values-night/colors.xml | 4 --- app/src/main/res/values-night/themes.xml | 7 ----- app/src/main/res/values/colors.xml | 2 -- app/src/main/res/values/themes.xml | 5 --- 11 files changed, 36 insertions(+), 58 deletions(-) delete mode 100644 app/src/main/res/values-night/colors.xml delete mode 100644 app/src/main/res/values-night/themes.xml diff --git a/app/src/main/java/app/grapheneos/camera/CamConfig.kt b/app/src/main/java/app/grapheneos/camera/CamConfig.kt index 784112e37..71c6e573c 100644 --- a/app/src/main/java/app/grapheneos/camera/CamConfig.kt +++ b/app/src/main/java/app/grapheneos/camera/CamConfig.kt @@ -1,7 +1,6 @@ package app.grapheneos.camera import android.annotation.SuppressLint -import android.app.AlertDialog import android.content.Context import android.content.SharedPreferences import android.net.Uri @@ -16,6 +15,7 @@ import android.view.animation.Animation import android.view.animation.LinearInterpolator import android.widget.Button import androidx.annotation.StringRes +import androidx.appcompat.app.AlertDialog import androidx.camera.core.AspectRatio import androidx.camera.core.Camera import androidx.camera.core.CameraInfo @@ -48,6 +48,7 @@ import app.grapheneos.camera.ui.activities.SecureMainActivity import app.grapheneos.camera.ui.activities.VideoCaptureActivity import app.grapheneos.camera.ui.activities.VideoOnlyActivity import app.grapheneos.camera.util.edit +import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.zxing.BarcodeFormat import java.util.concurrent.ExecutionException import java.util.concurrent.Executors @@ -1517,7 +1518,7 @@ class CamConfig(private val mActivity: MainActivity) { val dialog = builder.create() dialog.setOnShowListener { - val button: Button = (dialog as AlertDialog).getButton(AlertDialog.BUTTON_NEUTRAL) + val button: Button = dialog.getButton(AlertDialog.BUTTON_NEUTRAL) button.setOnClickListener { } @@ -1530,14 +1531,14 @@ class CamConfig(private val mActivity: MainActivity) { // Reverting back to DEFAULT_MEDIA_STORE_CAPTURE_PATH storageLocation = SettingValues.Default.STORAGE_LOCATION - val builder = AlertDialog.Builder(mActivity) - builder.setTitle(R.string.folder_not_found) - builder.setMessage(R.string.reverting_to_default_folder) - builder.setPositiveButton(R.string.ok, null) - builder.setNeutralButton(R.string.more_settings) { _, _ -> - MoreSettings.start(mActivity) - } - val alertDialog: AlertDialog = builder.create() + val builder = MaterialAlertDialogBuilder(mActivity) + .setTitle(R.string.folder_not_found) + .setMessage(R.string.reverting_to_default_folder) + .setPositiveButton(R.string.ok, null) + .setNeutralButton(R.string.more_settings) { _, _ -> + MoreSettings.start(mActivity) + } + val alertDialog = builder.create() alertDialog.setCancelable(false) alertDialog.show() } diff --git a/app/src/main/java/app/grapheneos/camera/capturer/ImageCapturer.kt b/app/src/main/java/app/grapheneos/camera/capturer/ImageCapturer.kt index 791acbda7..4d8d68a40 100644 --- a/app/src/main/java/app/grapheneos/camera/capturer/ImageCapturer.kt +++ b/app/src/main/java/app/grapheneos/camera/capturer/ImageCapturer.kt @@ -1,7 +1,6 @@ package app.grapheneos.camera.capturer import android.annotation.SuppressLint -import android.app.AlertDialog import android.app.Notification import android.app.NotificationChannel import android.app.NotificationManager @@ -23,6 +22,7 @@ import app.grapheneos.camera.R import app.grapheneos.camera.ui.activities.MainActivity import app.grapheneos.camera.ui.activities.SecureMainActivity import app.grapheneos.camera.util.printStackTraceToString +import com.google.android.material.dialog.MaterialAlertDialogBuilder private const val imageFileFormat = ".jpg" var isTakingPicture: Boolean = false @@ -196,7 +196,7 @@ class ImageCapturer(val mActivity: MainActivity) { private fun showErrorDialog(message: String, exception: Throwable) { val ctx = mActivity - AlertDialog.Builder(ctx).apply { + MaterialAlertDialogBuilder(ctx).apply { setMessage(message) setPositiveButton(R.string.show_details) { _, _ -> val pkgName = ctx.packageName @@ -205,7 +205,7 @@ class ImageCapturer(val mActivity: MainActivity) { "\npackage: $pkgName:$pkgVersion" + "\n\n${exception.printStackTraceToString()}" - AlertDialog.Builder(ctx).apply { + MaterialAlertDialogBuilder(ctx).apply { setItems(text.lines().toTypedArray(), null) setNeutralButton(R.string.copy_to_clipboard) { _, _ -> val clipData = ClipData.newPlainText(exception.javaClass.name, text) diff --git a/app/src/main/java/app/grapheneos/camera/ui/activities/InAppGallery.kt b/app/src/main/java/app/grapheneos/camera/ui/activities/InAppGallery.kt index 76f9b501c..6e51938ef 100644 --- a/app/src/main/java/app/grapheneos/camera/ui/activities/InAppGallery.kt +++ b/app/src/main/java/app/grapheneos/camera/ui/activities/InAppGallery.kt @@ -40,6 +40,7 @@ import app.grapheneos.camera.databinding.GalleryBinding import app.grapheneos.camera.util.getParcelableArrayListExtra import app.grapheneos.camera.util.getParcelableExtra import app.grapheneos.camera.util.storageLocationToUiString +import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.snackbar.Snackbar import java.text.SimpleDateFormat import java.util.Date @@ -203,7 +204,7 @@ class InAppGallery : AppCompatActivity() { private fun deleteCurrentMedia() { val curItem = getCurrentItem() - AlertDialog.Builder(this, android.R.style.Theme_DeviceDefault_Dialog_Alert) + MaterialAlertDialogBuilder(this) .setTitle(R.string.delete_title) .setMessage(getString(R.string.delete_description, curItem.uiName())) .setPositiveButton(R.string.delete) { _, _ -> @@ -293,10 +294,8 @@ class InAppGallery : AppCompatActivity() { } - val alertDialog: AlertDialog.Builder = - AlertDialog.Builder(this, android.R.style.Theme_DeviceDefault_Dialog_Alert) - - alertDialog.setTitle(getString(R.string.file_details)) + val alertDialog = MaterialAlertDialogBuilder(this) + .setTitle(getString(R.string.file_details)) val detailsBuilder = StringBuilder() diff --git a/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt b/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt index d94c01d4f..ab57aae2e 100644 --- a/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt +++ b/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt @@ -3,7 +3,6 @@ package app.grapheneos.camera.ui.activities import android.Manifest import android.animation.Animator import android.annotation.SuppressLint -import android.app.AlertDialog import android.app.Dialog import android.content.ClipData import android.content.ClipboardManager @@ -11,7 +10,6 @@ import android.content.Context import android.content.DialogInterface import android.content.Intent import android.content.pm.PackageManager -import android.database.ContentObserver import android.graphics.Bitmap import android.graphics.ImageDecoder import android.graphics.Point @@ -51,6 +49,7 @@ import android.widget.TextView import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts.RequestMultiplePermissions import androidx.annotation.StringRes +import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import androidx.camera.core.FocusMeteringAction import androidx.camera.core.MeteringPointFactory @@ -94,6 +93,7 @@ import app.grapheneos.camera.util.ImageResizer import app.grapheneos.camera.util.executeIfAlive import app.grapheneos.camera.util.resolveActivity import app.grapheneos.camera.util.setBlurBitmapCompat +import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.imageview.ShapeableImageView import com.google.android.material.snackbar.Snackbar import com.google.android.material.tabs.TabLayout @@ -305,10 +305,9 @@ open class MainActivity : AppCompatActivity(), } private fun showAudioPermissionDeniedDialog(onDisableAudio: () -> Unit = {}) { - val builder = - AlertDialog.Builder(this, android.R.style.Theme_DeviceDefault_Dialog_Alert) - builder.setTitle(R.string.audio_permission_dialog_title) - builder.setMessage(R.string.audio_permission_dialog_message) + val builder = MaterialAlertDialogBuilder(this) + .setTitle(R.string.audio_permission_dialog_title) + .setMessage(R.string.audio_permission_dialog_message) // Open the settings menu for the current app builder.setPositiveButton(R.string.settings) { _: DialogInterface?, _: Int -> @@ -446,10 +445,9 @@ open class MainActivity : AppCompatActivity(), // Don't build and show a new dialog if it's already visible if (cameraPermissionDialog != null && cameraPermissionDialog!!.isShowing) return - val builder = - AlertDialog.Builder(this, android.R.style.Theme_DeviceDefault_Dialog_Alert) - builder.setTitle(R.string.camera_permission_dialog_title) - builder.setMessage(R.string.camera_permission_dialog_message) + val builder = MaterialAlertDialogBuilder(this) + .setTitle(R.string.camera_permission_dialog_title) + .setMessage(R.string.camera_permission_dialog_message) val positiveClicked = AtomicBoolean(false) // Open the settings menu for the current app @@ -1088,8 +1086,6 @@ open class MainActivity : AppCompatActivity(), } } - private lateinit var dialog: Dialog - open fun bytesToHex(bytes: ByteArray): String { if (bytes.isEmpty()) return "" // outLen will be wrong for empty inputs @@ -1137,10 +1133,9 @@ open class MainActivity : AppCompatActivity(), ) runOnUiThread { - dialog = Dialog(this, R.style.Theme_Dialog) - dialog.requestWindowFeature(Window.FEATURE_NO_TITLE) + val builder = MaterialAlertDialogBuilder(this) val dialogBinding = ScanResultDialogBinding.inflate(layoutInflater) - dialog.setContentView(dialogBinding.root) + builder.setView(dialogBinding.root) val tabLayout: TabLayout = dialogBinding.encodingTabs val textView = dialogBinding.scanResultText @@ -1212,14 +1207,14 @@ open class MainActivity : AppCompatActivity(), ) } - dialog.setOnDismissListener { + builder.setOnDismissListener { isQRDialogShowing = false camConfig.startCamera(true) } camConfig.cameraProvider?.unbindAll() - dialog.show() + builder.show() } } @@ -1681,7 +1676,7 @@ open class MainActivity : AppCompatActivity(), ) && ActivityCompat.shouldShowRequestPermissionRationale( this, Manifest.permission.ACCESS_COARSE_LOCATION ) -> { - AlertDialog.Builder(this, android.R.style.Theme_DeviceDefault_Dialog_Alert).let { + MaterialAlertDialogBuilder(this).let { it.setTitle(R.string.location_permission_dialog_title) it.setMessage(R.string.location_permission_dialog_message) diff --git a/app/src/main/java/app/grapheneos/camera/ui/activities/MoreSettings.kt b/app/src/main/java/app/grapheneos/camera/ui/activities/MoreSettings.kt index 163a74ffd..3d46a1414 100644 --- a/app/src/main/java/app/grapheneos/camera/ui/activities/MoreSettings.kt +++ b/app/src/main/java/app/grapheneos/camera/ui/activities/MoreSettings.kt @@ -14,7 +14,6 @@ import android.widget.EditText import android.widget.ImageView import android.widget.TextView import androidx.activity.result.contract.ActivityResultContracts -import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import app.grapheneos.camera.CamConfig import app.grapheneos.camera.CapturedItems @@ -22,6 +21,7 @@ import app.grapheneos.camera.NumInputFilter import app.grapheneos.camera.R import app.grapheneos.camera.databinding.MoreSettingsBinding import app.grapheneos.camera.util.storageLocationToUiString +import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.snackbar.Snackbar open class MoreSettings : AppCompatActivity(), TextView.OnEditorActionListener { @@ -120,7 +120,7 @@ open class MoreSettings : AppCompatActivity(), TextView.OnEditorActionListener { rSLocation = binding.refreshStorageLocation rSLocation.setOnClickListener { - val dialog = AlertDialog.Builder(this) + val dialog = MaterialAlertDialogBuilder(this) dialog.setTitle(R.string.are_you_sure) diff --git a/app/src/main/res/drawable/qr_result_background.xml b/app/src/main/res/drawable/qr_result_background.xml index 3fc1cb840..4525b51d6 100644 --- a/app/src/main/res/drawable/qr_result_background.xml +++ b/app/src/main/res/drawable/qr_result_background.xml @@ -1,6 +1,6 @@ - + diff --git a/app/src/main/res/layout/scan_result_dialog.xml b/app/src/main/res/layout/scan_result_dialog.xml index 36f097c1d..34fc7afe3 100644 --- a/app/src/main/res/layout/scan_result_dialog.xml +++ b/app/src/main/res/layout/scan_result_dialog.xml @@ -66,7 +66,8 @@ android:id="@+id/encoding_tabs" app:tabMode="scrollable" android:layout_width="wrap_content" - android:layout_height="wrap_content"/> + android:layout_height="wrap_content" + android:backgroundTint="@android:color/transparent" /> - - #2E3133 - \ No newline at end of file diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml deleted file mode 100644 index 9cf201432..000000000 --- a/app/src/main/res/values-night/themes.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 74ec80273..42e214024 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -17,6 +17,4 @@ #ffe8cf #ffdf00 - - #E1E3E5 \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 1b09e8034..172de2d3f 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -14,11 +14,6 @@ 50% - - + + - + + - \ No newline at end of file + From 925456569e2614d56130bcdbf219989d7fe0989f Mon Sep 17 00:00:00 2001 From: Charles Lombardo Date: Mon, 4 Nov 2024 23:49:03 -0500 Subject: [PATCH 09/16] Adjust drawables and remove extra colors Some of the drawables had to be separated into two because some icons need to both be always white and dynamically change. --- .../grapheneos/camera/ui/activities/MainActivity.kt | 2 +- app/src/main/res/drawable/aspect_ratio.xml | 2 +- app/src/main/res/drawable/back.xml | 10 ++++++++++ app/src/main/res/drawable/back_white.xml | 10 ++++++++++ app/src/main/res/drawable/camera_shutter_normal.xml | 2 +- app/src/main/res/drawable/camera_shutter_pressed.xml | 2 +- app/src/main/res/drawable/delete.xml | 2 -- app/src/main/res/drawable/dropdown.xml | 2 +- app/src/main/res/drawable/exposure_neg.xml | 2 +- app/src/main/res/drawable/exposure_plus.xml | 2 +- app/src/main/res/drawable/flash_auto.xml | 2 +- app/src/main/res/drawable/flash_auto_circle.xml | 2 +- app/src/main/res/drawable/flash_off.xml | 2 +- app/src/main/res/drawable/flash_off_circle.xml | 2 +- app/src/main/res/drawable/flash_on.xml | 4 ++-- app/src/main/res/drawable/flash_on_circle.xml | 2 +- app/src/main/res/drawable/folder.xml | 3 +-- app/src/main/res/drawable/grid_3x3.xml | 1 + app/src/main/res/drawable/grid_3x3_circle.xml | 2 +- app/src/main/res/drawable/grid_4x4.xml | 3 +-- app/src/main/res/drawable/grid_4x4_circle.xml | 2 +- app/src/main/res/drawable/grid_goldenratio.xml | 1 + app/src/main/res/drawable/grid_goldenratio_circle.xml | 2 +- app/src/main/res/drawable/grid_off.xml | 2 +- app/src/main/res/drawable/grid_off_circle.xml | 2 +- app/src/main/res/drawable/image_quality.xml | 3 +-- app/src/main/res/drawable/info_adaptable.xml | 3 +-- app/src/main/res/drawable/location.xml | 4 ++-- app/src/main/res/drawable/location_off.xml | 2 +- app/src/main/res/drawable/location_on.xml | 2 +- app/src/main/res/drawable/mode_indicator.xml | 9 +-------- app/src/main/res/drawable/more.xml | 9 +++++++++ app/src/main/res/drawable/option_circle.xml | 2 +- app/src/main/res/drawable/refresh.xml | 3 +-- app/src/main/res/drawable/retake.xml | 2 -- app/src/main/res/drawable/selfie_preview.xml | 3 +-- app/src/main/res/drawable/settings_bg.xml | 10 +++------- app/src/main/res/drawable/settings_normal.xml | 2 +- app/src/main/res/drawable/settings_pressed.xml | 2 +- app/src/main/res/drawable/share.xml | 2 +- .../res/drawable/{share_grey.xml => share_white.xml} | 2 +- app/src/main/res/drawable/storage.xml | 3 +-- app/src/main/res/drawable/straighten.xml | 5 ++--- app/src/main/res/drawable/torch.xml | 4 ++-- app/src/main/res/drawable/torch_off.xml | 6 ++---- app/src/main/res/drawable/torch_off_button.xml | 10 +++++----- app/src/main/res/drawable/torch_off_white.xml | 10 ++++++++++ app/src/main/res/drawable/torch_on.xml | 5 ++--- app/src/main/res/drawable/torch_on_button.xml | 8 ++++---- app/src/main/res/drawable/torch_on_white.xml | 10 ++++++++++ app/src/main/res/drawable/volume_up.xml | 3 +-- app/src/main/res/drawable/white_option_circle.xml | 2 +- app/src/main/res/drawable/zsl.xml | 3 +-- app/src/main/res/layout/activity_main.xml | 10 +++++----- app/src/main/res/layout/gallery.xml | 2 +- app/src/main/res/layout/scan_result_dialog.xml | 5 ++--- app/src/main/res/layout/video_player.xml | 6 +++--- app/src/main/res/menu/gallery.xml | 2 +- app/src/main/res/values/colors.xml | 8 +------- 59 files changed, 123 insertions(+), 107 deletions(-) create mode 100644 app/src/main/res/drawable/back.xml create mode 100644 app/src/main/res/drawable/back_white.xml create mode 100644 app/src/main/res/drawable/more.xml rename app/src/main/res/drawable/{share_grey.xml => share_white.xml} (92%) create mode 100644 app/src/main/res/drawable/torch_off_white.xml create mode 100644 app/src/main/res/drawable/torch_on_white.xml diff --git a/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt b/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt index 5cea73805..3c6ca2f91 100644 --- a/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt +++ b/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt @@ -1593,7 +1593,7 @@ open class MainActivity : AppCompatActivity(), gLeftDash.setBackgroundResource(R.drawable.white_shadow_rect) gRightDash.setBackgroundResource(R.drawable.white_shadow_rect) - gAngleTextView.setTextColor(ContextCompat.getColor(this, R.color.white)) + gAngleTextView.setTextColor(ContextCompat.getColor(this, android.R.color.white)) } val zOffset = (lzAngle / 60) * dp32 diff --git a/app/src/main/res/drawable/aspect_ratio.xml b/app/src/main/res/drawable/aspect_ratio.xml index 147f3c42b..768477b12 100644 --- a/app/src/main/res/drawable/aspect_ratio.xml +++ b/app/src/main/res/drawable/aspect_ratio.xml @@ -3,7 +3,7 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> - + diff --git a/app/src/main/res/drawable/back.xml b/app/src/main/res/drawable/back.xml new file mode 100644 index 000000000..f99fea719 --- /dev/null +++ b/app/src/main/res/drawable/back.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/back_white.xml b/app/src/main/res/drawable/back_white.xml new file mode 100644 index 000000000..670b59ebe --- /dev/null +++ b/app/src/main/res/drawable/back_white.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/camera_shutter_normal.xml b/app/src/main/res/drawable/camera_shutter_normal.xml index 666b267fc..35489efdc 100644 --- a/app/src/main/res/drawable/camera_shutter_normal.xml +++ b/app/src/main/res/drawable/camera_shutter_normal.xml @@ -4,7 +4,7 @@ android:shape="oval"> diff --git a/app/src/main/res/drawable/dropdown.xml b/app/src/main/res/drawable/dropdown.xml index 0f42a052e..32519d404 100644 --- a/app/src/main/res/drawable/dropdown.xml +++ b/app/src/main/res/drawable/dropdown.xml @@ -1,4 +1,4 @@ - diff --git a/app/src/main/res/drawable/exposure_neg.xml b/app/src/main/res/drawable/exposure_neg.xml index 15473672e..dbde23dfc 100644 --- a/app/src/main/res/drawable/exposure_neg.xml +++ b/app/src/main/res/drawable/exposure_neg.xml @@ -7,7 +7,7 @@ diff --git a/app/src/main/res/drawable/exposure_plus.xml b/app/src/main/res/drawable/exposure_plus.xml index 90136e96d..aaad104a9 100644 --- a/app/src/main/res/drawable/exposure_plus.xml +++ b/app/src/main/res/drawable/exposure_plus.xml @@ -7,7 +7,7 @@ diff --git a/app/src/main/res/drawable/flash_auto.xml b/app/src/main/res/drawable/flash_auto.xml index f65697266..bbec0b026 100644 --- a/app/src/main/res/drawable/flash_auto.xml +++ b/app/src/main/res/drawable/flash_auto.xml @@ -1,5 +1,5 @@ - + diff --git a/app/src/main/res/drawable/flash_auto_circle.xml b/app/src/main/res/drawable/flash_auto_circle.xml index ff7d1cf2e..2242768a4 100644 --- a/app/src/main/res/drawable/flash_auto_circle.xml +++ b/app/src/main/res/drawable/flash_auto_circle.xml @@ -2,7 +2,7 @@ - + - + diff --git a/app/src/main/res/drawable/flash_off_circle.xml b/app/src/main/res/drawable/flash_off_circle.xml index b7936f2b6..0e1300af9 100644 --- a/app/src/main/res/drawable/flash_off_circle.xml +++ b/app/src/main/res/drawable/flash_off_circle.xml @@ -2,7 +2,7 @@ - + - + diff --git a/app/src/main/res/drawable/flash_on_circle.xml b/app/src/main/res/drawable/flash_on_circle.xml index 7cf1c3b02..590775ff8 100644 --- a/app/src/main/res/drawable/flash_on_circle.xml +++ b/app/src/main/res/drawable/flash_on_circle.xml @@ -2,7 +2,7 @@ - + diff --git a/app/src/main/res/drawable/grid_3x3.xml b/app/src/main/res/drawable/grid_3x3.xml index ba1bd84fe..aba9e643f 100644 --- a/app/src/main/res/drawable/grid_3x3.xml +++ b/app/src/main/res/drawable/grid_3x3.xml @@ -3,6 +3,7 @@ android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" + android:tint="?attr/colorOnPrimary" xmlns:android="http://schemas.android.com/apk/res/android"> - + - + - + diff --git a/app/src/main/res/drawable/grid_off_circle.xml b/app/src/main/res/drawable/grid_off_circle.xml index 5566f87d0..98c97e15d 100644 --- a/app/src/main/res/drawable/grid_off_circle.xml +++ b/app/src/main/res/drawable/grid_off_circle.xml @@ -2,7 +2,7 @@ - + diff --git a/app/src/main/res/drawable/info_adaptable.xml b/app/src/main/res/drawable/info_adaptable.xml index 6a5c448b1..82d83c785 100644 --- a/app/src/main/res/drawable/info_adaptable.xml +++ b/app/src/main/res/drawable/info_adaptable.xml @@ -1,13 +1,12 @@ diff --git a/app/src/main/res/drawable/location.xml b/app/src/main/res/drawable/location.xml index fe627e973..e3446a9a0 100644 --- a/app/src/main/res/drawable/location.xml +++ b/app/src/main/res/drawable/location.xml @@ -4,7 +4,7 @@ - + - + diff --git a/app/src/main/res/drawable/location_on.xml b/app/src/main/res/drawable/location_on.xml index 8128e2d59..a1555821d 100644 --- a/app/src/main/res/drawable/location_on.xml +++ b/app/src/main/res/drawable/location_on.xml @@ -6,7 +6,7 @@ xmlns:android="http://schemas.android.com/apk/res/android"> diff --git a/app/src/main/res/drawable/mode_indicator.xml b/app/src/main/res/drawable/mode_indicator.xml index 289ec37de..51187f77b 100644 --- a/app/src/main/res/drawable/mode_indicator.xml +++ b/app/src/main/res/drawable/mode_indicator.xml @@ -4,15 +4,8 @@ - - - - - - + diff --git a/app/src/main/res/drawable/more.xml b/app/src/main/res/drawable/more.xml new file mode 100644 index 000000000..b29b2aef5 --- /dev/null +++ b/app/src/main/res/drawable/more.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/option_circle.xml b/app/src/main/res/drawable/option_circle.xml index 09ea19ed3..f5e289f2c 100644 --- a/app/src/main/res/drawable/option_circle.xml +++ b/app/src/main/res/drawable/option_circle.xml @@ -11,6 +11,6 @@ + android:color="@android:color/white"/> diff --git a/app/src/main/res/drawable/refresh.xml b/app/src/main/res/drawable/refresh.xml index b064e3c44..6229bd0af 100644 --- a/app/src/main/res/drawable/refresh.xml +++ b/app/src/main/res/drawable/refresh.xml @@ -1,12 +1,11 @@ diff --git a/app/src/main/res/drawable/retake.xml b/app/src/main/res/drawable/retake.xml index d650a69ea..3b9fbd7ad 100644 --- a/app/src/main/res/drawable/retake.xml +++ b/app/src/main/res/drawable/retake.xml @@ -7,8 +7,6 @@ diff --git a/app/src/main/res/drawable/selfie_preview.xml b/app/src/main/res/drawable/selfie_preview.xml index 548644ef6..076b8a5a3 100644 --- a/app/src/main/res/drawable/selfie_preview.xml +++ b/app/src/main/res/drawable/selfie_preview.xml @@ -1,13 +1,12 @@ diff --git a/app/src/main/res/drawable/settings_bg.xml b/app/src/main/res/drawable/settings_bg.xml index 0af17f3c2..8fdf761d7 100644 --- a/app/src/main/res/drawable/settings_bg.xml +++ b/app/src/main/res/drawable/settings_bg.xml @@ -1,8 +1,4 @@ - - - - - - \ No newline at end of file + + + diff --git a/app/src/main/res/drawable/settings_normal.xml b/app/src/main/res/drawable/settings_normal.xml index 7dd89d53a..f7f14f4ab 100644 --- a/app/src/main/res/drawable/settings_normal.xml +++ b/app/src/main/res/drawable/settings_normal.xml @@ -8,7 +8,7 @@ - + diff --git a/app/src/main/res/drawable/settings_pressed.xml b/app/src/main/res/drawable/settings_pressed.xml index 8b06fcc50..f0fae8dd7 100644 --- a/app/src/main/res/drawable/settings_pressed.xml +++ b/app/src/main/res/drawable/settings_pressed.xml @@ -8,7 +8,7 @@ - + diff --git a/app/src/main/res/drawable/share.xml b/app/src/main/res/drawable/share.xml index ed8423f0d..87fe3479f 100644 --- a/app/src/main/res/drawable/share.xml +++ b/app/src/main/res/drawable/share.xml @@ -4,6 +4,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/app/src/main/res/drawable/share_grey.xml b/app/src/main/res/drawable/share_white.xml similarity index 92% rename from app/src/main/res/drawable/share_grey.xml rename to app/src/main/res/drawable/share_white.xml index 13bb17316..88147d8e8 100644 --- a/app/src/main/res/drawable/share_grey.xml +++ b/app/src/main/res/drawable/share_white.xml @@ -4,6 +4,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/app/src/main/res/drawable/storage.xml b/app/src/main/res/drawable/storage.xml index fdc32a324..9588f5573 100644 --- a/app/src/main/res/drawable/storage.xml +++ b/app/src/main/res/drawable/storage.xml @@ -1,13 +1,12 @@ diff --git a/app/src/main/res/drawable/straighten.xml b/app/src/main/res/drawable/straighten.xml index 4f72fbff3..e3b4de3a5 100644 --- a/app/src/main/res/drawable/straighten.xml +++ b/app/src/main/res/drawable/straighten.xml @@ -1,13 +1,12 @@ + android:fillColor="?attr/colorControlNormal" + android:pathData="M21,6L3,6c-1.1,0 -2,0.9 -2,2v8c0,1.1 0.9,2 2,2h18c1.1,0 2,-0.9 2,-2L23,8c0,-1.1 -0.9,-2 -2,-2zM21,16L3,16L3,8h2v4h2L7,8h2v4h2L11,8h2v4h2L15,8h2v4h2L19,8h2v8z" /> diff --git a/app/src/main/res/drawable/torch.xml b/app/src/main/res/drawable/torch.xml index 88f7c2597..65f49d77b 100644 --- a/app/src/main/res/drawable/torch.xml +++ b/app/src/main/res/drawable/torch.xml @@ -4,7 +4,7 @@ - + - + + android:fillColor="?attr/colorControlNormal" + android:pathData="M6,14l3,3v7h6v-7l3,-3V9H6V14zM11,1" /> diff --git a/app/src/main/res/drawable/torch_off_button.xml b/app/src/main/res/drawable/torch_off_button.xml index 87d0cb0d4..aa366ee33 100644 --- a/app/src/main/res/drawable/torch_off_button.xml +++ b/app/src/main/res/drawable/torch_off_button.xml @@ -9,17 +9,17 @@ + android:width="4dp" + android:color="@android:color/white" /> + android:width="36dp" + android:height="36dp"/> diff --git a/app/src/main/res/drawable/torch_off_white.xml b/app/src/main/res/drawable/torch_off_white.xml new file mode 100644 index 000000000..a819ee184 --- /dev/null +++ b/app/src/main/res/drawable/torch_off_white.xml @@ -0,0 +1,10 @@ + + + + diff --git a/app/src/main/res/drawable/torch_on.xml b/app/src/main/res/drawable/torch_on.xml index 7fdbb6000..d5cdddeaa 100644 --- a/app/src/main/res/drawable/torch_on.xml +++ b/app/src/main/res/drawable/torch_on.xml @@ -4,12 +4,11 @@ android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" + android:tint="?attr/colorOnPrimary" xmlns:android="http://schemas.android.com/apk/res/android"> \ No newline at end of file diff --git a/app/src/main/res/drawable/torch_on_button.xml b/app/src/main/res/drawable/torch_on_button.xml index 0b67390c5..ccc4d2431 100644 --- a/app/src/main/res/drawable/torch_on_button.xml +++ b/app/src/main/res/drawable/torch_on_button.xml @@ -8,7 +8,7 @@ @@ -16,9 +16,9 @@ + android:width="36dp" + android:height="36dp"/> diff --git a/app/src/main/res/drawable/torch_on_white.xml b/app/src/main/res/drawable/torch_on_white.xml new file mode 100644 index 000000000..361c8de9c --- /dev/null +++ b/app/src/main/res/drawable/torch_on_white.xml @@ -0,0 +1,10 @@ + + + + diff --git a/app/src/main/res/drawable/volume_up.xml b/app/src/main/res/drawable/volume_up.xml index c8cec25e7..39f8ca901 100644 --- a/app/src/main/res/drawable/volume_up.xml +++ b/app/src/main/res/drawable/volume_up.xml @@ -1,13 +1,12 @@ diff --git a/app/src/main/res/drawable/white_option_circle.xml b/app/src/main/res/drawable/white_option_circle.xml index 658f26876..1f5978d66 100644 --- a/app/src/main/res/drawable/white_option_circle.xml +++ b/app/src/main/res/drawable/white_option_circle.xml @@ -11,6 +11,6 @@ + android:color="@android:color/white"/> diff --git a/app/src/main/res/drawable/zsl.xml b/app/src/main/res/drawable/zsl.xml index 2b62257c6..d4ada277c 100644 --- a/app/src/main/res/drawable/zsl.xml +++ b/app/src/main/res/drawable/zsl.xml @@ -1,13 +1,12 @@ \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 0c524d1a1..03bf16423 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -5,13 +5,13 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="@android:color/black" tools:context=".ui.activities.MainActivity"> @@ -90,7 +90,7 @@ android:shadowDx="1.5" android:shadowDy="1.3" android:shadowRadius="1.6" - android:textColor="@color/white" + android:textColor="@android:color/white" android:textAlignment="center"/> + android:textColor="@android:color/white"/> diff --git a/app/src/main/res/layout/gallery.xml b/app/src/main/res/layout/gallery.xml index 4b61405bb..db514febf 100644 --- a/app/src/main/res/layout/gallery.xml +++ b/app/src/main/res/layout/gallery.xml @@ -2,7 +2,7 @@ diff --git a/app/src/main/res/layout/scan_result_dialog.xml b/app/src/main/res/layout/scan_result_dialog.xml index 34fc7afe3..5a37639e7 100644 --- a/app/src/main/res/layout/scan_result_dialog.xml +++ b/app/src/main/res/layout/scan_result_dialog.xml @@ -5,8 +5,7 @@ android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical" - android:padding="18dp" - android:theme="@style/Theme_Dialog"> + android:padding="18dp"> + android:layout_gravity="center" /> diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 42e214024..696617df3 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,20 +1,14 @@ - #FF000000 - #FFFFFFFF - #cbe2ff - #1b69c5 #dde2e9 #181c1f - @color/black - @color/system_accent1_500 #2d3034 #77000000 #ffe8cf #ffdf00 - \ No newline at end of file + From a1d537b29397f8854af2e4e7ab5def17bd66daba Mon Sep 17 00:00:00 2001 From: Charles Lombardo Date: Mon, 4 Nov 2024 23:49:36 -0500 Subject: [PATCH 10/16] Use Material3 theming on mode indicator --- app/src/main/res/layout/activity_main.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 03bf16423..79eb338c0 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -430,6 +430,8 @@ app:tabIndicator="@drawable/mode_indicator" android:overScrollMode="never" app:tabIndicatorHeight="30dp" + app:tabTextColor="@android:color/white" + app:tabSelectedTextColor="?attr/colorOnPrimary" android:background="@android:color/transparent" android:layout_marginTop="12dp" android:layout_marginBottom="4dp" /> From 63e653b4aa2590c59d6365ee2049ac5c7bf0c79f Mon Sep 17 00:00:00 2001 From: Charles Lombardo Date: Tue, 5 Nov 2024 00:13:18 -0500 Subject: [PATCH 11/16] Adjust padding around settings items --- app/src/main/res/layout/more_settings.xml | 43 ++++++++++------------- 1 file changed, 18 insertions(+), 25 deletions(-) diff --git a/app/src/main/res/layout/more_settings.xml b/app/src/main/res/layout/more_settings.xml index b3412d5b7..c3b8117f2 100644 --- a/app/src/main/res/layout/more_settings.xml +++ b/app/src/main/res/layout/more_settings.xml @@ -46,7 +46,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginVertical="12dp" - android:layout_marginStart="68dp" + android:layout_marginStart="78dp" android:text="@string/general" /> @@ -116,9 +115,8 @@ android:clickable="true" android:focusable="true" android:orientation="horizontal" - android:paddingStart="10dp" android:paddingTop="8dp" - android:paddingEnd="6dp" + android:paddingHorizontal="16dp" android:paddingBottom="10dp"> @@ -180,7 +178,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginVertical="12dp" - android:layout_marginStart="68dp" + android:layout_marginStart="78dp" android:text="@string/photo" /> @@ -310,9 +307,8 @@ android:clickable="true" android:focusable="true" android:orientation="horizontal" - android:paddingStart="10dp" android:paddingTop="8dp" - android:paddingEnd="6dp" + android:paddingHorizontal="16dp" android:paddingBottom="10dp"> @@ -395,9 +391,8 @@ android:clickable="true" android:focusable="true" android:orientation="horizontal" - android:paddingStart="10dp" android:paddingTop="8dp" - android:paddingEnd="6dp" + android:paddingHorizontal="16dp" android:paddingBottom="10dp"> @@ -459,7 +454,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginVertical="12dp" - android:layout_marginStart="68dp" + android:layout_marginStart="78dp" android:text="@string/video_setting_title" /> @@ -534,7 +528,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginVertical="12dp" - android:layout_marginStart="68dp" + android:layout_marginStart="78dp" android:text="@string/storage" /> From 91b4b0589a68fa734a53dd004f35d4db8ab6ad21 Mon Sep 17 00:00:00 2001 From: Charles Lombardo Date: Tue, 5 Nov 2024 08:53:51 -0500 Subject: [PATCH 12/16] Target SDK 35 --- app/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c15f0f5b6..9e137fb44 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -48,7 +48,7 @@ android { defaultConfig { applicationId = "app.grapheneos.camera" minSdk = 29 - targetSdk = 34 + targetSdk = 35 versionCode = 75 versionName = versionCode.toString() resourceConfigurations.add("en") From afc77dfbcb6e75ec63061dfd076d3546906705ba Mon Sep 17 00:00:00 2001 From: Charles Lombardo Date: Tue, 5 Nov 2024 14:11:12 -0500 Subject: [PATCH 13/16] Always use dark mode in main activity --- app/src/main/AndroidManifest.xml | 6 ++++-- app/src/main/res/values/themes.xml | 7 +++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c6ba6bb4d..e6f770750 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -39,7 +39,8 @@ android:configChanges="orientation|keyboardHidden|screenSize" android:windowSoftInputMode="stateAlwaysHidden|adjustPan" android:screenOrientation="nosensor" - android:exported="true"> + android:exported="true" + android:theme="@style/Theme.Camera"> @@ -72,7 +73,8 @@ android:screenOrientation="nosensor" android:showWhenLocked="true" android:excludeFromRecents="true" - android:exported="true"> + android:exported="true" + android:theme="@style/Theme.Camera"> diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 1dcaac11a..fbd01863f 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,6 +1,13 @@ + +