diff options
| author | Danilo M. <danix@danix.xyz> | 2026-11-05 12:27:37 +0100 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-11-05 12:36:08 +0100 |
| commit | 1a22af34711be86061a57abd5140262f27568b5f (patch) | |
| tree | 30add05371c418c19b797ff9aca46fc20a57e6f2 /app/src | |
| parent | 68714bf78feb5a5a59354da624f2d69d6705e8ab (diff) | |
| download | HardenedPass-1a22af34711be86061a57abd5140262f27568b5f.tar.gz HardenedPass-1a22af34711be86061a57abd5140262f27568b5f.zip | |
refactor(app): take the app's own code off AppCompat
Activities extend FragmentActivity, window themes derive from the platform's
Material theme and night mode uses UiModeManager. APSTheme colors the system
bars, which DynamicColors did through the window theme. AppCompat stays in the
APK through zxing.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Diffstat (limited to 'app/src')
30 files changed, 60 insertions, 133 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 90375040..0eabbab4 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -35,8 +35,7 @@ <activity android:name=".ui.main.LaunchActivity" android:configChanges="orientation|screenSize" - android:exported="true" - android:theme="@style/NoActionBarThemeM3"> + android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> @@ -48,7 +47,6 @@ android:name=".ui.main.MainActivity" android:configChanges="orientation|screenSize" android:exported="false" - android:theme="@style/NoActionBarThemeM3" android:windowSoftInputMode="adjustResize" /> <activity @@ -100,7 +98,6 @@ android:name=".ui.autofill.AutofillSaveActivity" android:configChanges="orientation|screenSize" android:exported="false" - android:theme="@style/NoActionBarThemeM3" android:windowSoftInputMode="adjustResize" /> <activity android:name=".ui.autofill.AutofillPublisherChangedActivity" diff --git a/app/src/main/java/app/passwordstore/Application.kt b/app/src/main/java/app/passwordstore/Application.kt index 60b58cc1..dbeb4ffb 100644 --- a/app/src/main/java/app/passwordstore/Application.kt +++ b/app/src/main/java/app/passwordstore/Application.kt @@ -4,13 +4,13 @@ */ package app.passwordstore +import android.app.UiModeManager import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter import android.content.SharedPreferences import android.os.StrictMode -import androidx.appcompat.app.AppCompatDelegate.* import app.passwordstore.data.crypto.PGPPassphraseCache import app.passwordstore.injection.context.FilesDirPath import app.passwordstore.injection.prefs.SettingsPreferences @@ -23,7 +23,6 @@ import app.passwordstore.util.settings.GitSettings import app.passwordstore.util.settings.PreferenceKeys import app.passwordstore.util.settings.removeSecurityCryptoData import app.passwordstore.util.settings.runMigrations -import com.google.android.material.color.DynamicColors import dagger.hilt.android.HiltAndroidApp import java.util.concurrent.Executors import javax.inject.Inject @@ -64,7 +63,6 @@ class Application : android.app.Application(), SharedPreferences.OnSharedPrefere removeSecurityCryptoData(this, prefs) runMigrations(filesDirPath, prefs, gitSettings) proxyUtils.setDefaultProxy() - DynamicColors.applyToActivitiesIfAvailable(this) setupScreenOffHandler() } @@ -112,14 +110,14 @@ class Application : android.app.Application(), SharedPreferences.OnSharedPrefere } private fun setNightMode() { - setDefaultNightMode( - when (prefs.getString(PreferenceKeys.APP_THEME) ?: getString(R.string.app_theme_def)) { - "light" -> MODE_NIGHT_NO - "dark" -> MODE_NIGHT_YES - "follow_system" -> MODE_NIGHT_FOLLOW_SYSTEM - else -> MODE_NIGHT_AUTO_BATTERY - } - ) + getSystemService(UiModeManager::class.java) + .setApplicationNightMode( + when (prefs.getString(PreferenceKeys.APP_THEME) ?: getString(R.string.app_theme_def)) { + "light" -> UiModeManager.MODE_NIGHT_NO + "dark" -> UiModeManager.MODE_NIGHT_YES + else -> UiModeManager.MODE_NIGHT_AUTO + } + ) } companion object { diff --git a/app/src/main/java/app/passwordstore/ui/autofill/AutofillDecryptActivity.kt b/app/src/main/java/app/passwordstore/ui/autofill/AutofillDecryptActivity.kt index 6354359f..3b62de4c 100644 --- a/app/src/main/java/app/passwordstore/ui/autofill/AutofillDecryptActivity.kt +++ b/app/src/main/java/app/passwordstore/ui/autofill/AutofillDecryptActivity.kt @@ -15,7 +15,6 @@ import android.view.autofill.AutofillManager import android.widget.Toast import androidx.activity.compose.setContent import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult -import androidx.appcompat.app.AppCompatActivity import androidx.compose.material3.AlertDialog import androidx.compose.material3.Text import androidx.compose.material3.TextButton @@ -24,6 +23,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.ui.res.stringResource import androidx.core.content.edit +import androidx.fragment.app.FragmentActivity import androidx.lifecycle.lifecycleScope import app.passwordstore.Application.Companion.screenWasOff import app.passwordstore.R @@ -70,7 +70,7 @@ import logcat.logcat * FLAG_SECURE window shows only the "no keys" and passphrase dialogs. */ @AndroidEntryPoint -class AutofillDecryptActivity : AppCompatActivity() { +class AutofillDecryptActivity : FragmentActivity() { @SettingsPreferences @Inject lateinit var settings: SharedPreferences @Inject lateinit var repository: CryptoRepository diff --git a/app/src/main/java/app/passwordstore/ui/autofill/AutofillFilterView.kt b/app/src/main/java/app/passwordstore/ui/autofill/AutofillFilterView.kt index 86c2d51d..474005b5 100644 --- a/app/src/main/java/app/passwordstore/ui/autofill/AutofillFilterView.kt +++ b/app/src/main/java/app/passwordstore/ui/autofill/AutofillFilterView.kt @@ -13,13 +13,13 @@ import android.view.autofill.AutofillManager import androidx.activity.compose.setContent import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult import androidx.activity.viewModels -import androidx.appcompat.app.AppCompatActivity import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue +import androidx.fragment.app.FragmentActivity import androidx.lifecycle.compose.collectAsStateWithLifecycle import app.passwordstore.R import app.passwordstore.data.repo.PasswordRepository @@ -43,7 +43,7 @@ import logcat.LogPriority.ERROR import logcat.logcat @AndroidEntryPoint -class AutofillFilterView : AppCompatActivity() { +class AutofillFilterView : FragmentActivity() { @Inject lateinit var dispatcherProvider: DispatcherProvider @@ -128,7 +128,6 @@ class AutofillFilterView : AppCompatActivity() { return } } - supportActionBar?.hide() setResult(RESULT_CANCELED) val isWeb = formOrigin is FormOrigin.Web diff --git a/app/src/main/java/app/passwordstore/ui/autofill/AutofillPublisherChangedActivity.kt b/app/src/main/java/app/passwordstore/ui/autofill/AutofillPublisherChangedActivity.kt index b0dd5dd9..74637ca1 100644 --- a/app/src/main/java/app/passwordstore/ui/autofill/AutofillPublisherChangedActivity.kt +++ b/app/src/main/java/app/passwordstore/ui/autofill/AutofillPublisherChangedActivity.kt @@ -14,8 +14,8 @@ import android.service.autofill.FillResponse import android.text.format.DateUtils import android.view.autofill.AutofillManager import androidx.activity.compose.setContent -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.IntentCompat +import androidx.fragment.app.FragmentActivity import app.passwordstore.R import app.passwordstore.ui.compose.theme.APSTheme import app.passwordstore.util.autofill.AutofillMatcher @@ -30,7 +30,7 @@ import com.github.michaelbull.result.runCatching import logcat.LogPriority.ERROR import logcat.logcat -class AutofillPublisherChangedActivity : AppCompatActivity() { +class AutofillPublisherChangedActivity : FragmentActivity() { companion object { @@ -74,7 +74,6 @@ class AutofillPublisherChangedActivity : AppCompatActivity() { finish() return } - supportActionBar?.hide() val (packageInfo, appInfo, hash) = runCatching { Triple( diff --git a/app/src/main/java/app/passwordstore/ui/autofill/AutofillSaveActivity.kt b/app/src/main/java/app/passwordstore/ui/autofill/AutofillSaveActivity.kt index dde6a7ae..2ed0adef 100644 --- a/app/src/main/java/app/passwordstore/ui/autofill/AutofillSaveActivity.kt +++ b/app/src/main/java/app/passwordstore/ui/autofill/AutofillSaveActivity.kt @@ -12,8 +12,8 @@ import android.os.Bundle import android.view.WindowManager import android.view.autofill.AutofillManager import androidx.activity.compose.setContent -import androidx.appcompat.app.AppCompatActivity import androidx.core.os.bundleOf +import androidx.fragment.app.FragmentActivity import app.passwordstore.data.passfile.PasswordEntry import app.passwordstore.ui.compose.theme.APSTheme import app.passwordstore.ui.editor.EditorDestination @@ -39,7 +39,7 @@ import logcat.logcat * password, fills it in. */ @AndroidEntryPoint -class AutofillSaveActivity : AppCompatActivity() { +class AutofillSaveActivity : FragmentActivity() { companion object { diff --git a/app/src/main/java/app/passwordstore/ui/git/base/BaseGitActivity.kt b/app/src/main/java/app/passwordstore/ui/git/base/BaseGitActivity.kt index fb29b810..f7181c4e 100644 --- a/app/src/main/java/app/passwordstore/ui/git/base/BaseGitActivity.kt +++ b/app/src/main/java/app/passwordstore/ui/git/base/BaseGitActivity.kt @@ -5,8 +5,8 @@ package app.passwordstore.ui.git.base import android.content.SharedPreferences -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.edit +import androidx.fragment.app.FragmentActivity import app.passwordstore.R import app.passwordstore.injection.prefs.GitPreferences import app.passwordstore.ui.prompts.prompts @@ -36,11 +36,11 @@ import net.schmizz.sshj.transport.TransportException import net.schmizz.sshj.userauth.UserAuthException /** - * Abstract [AppCompatActivity] that holds some information that is commonly shared across + * Abstract [FragmentActivity] that holds some information that is commonly shared across * git-related tasks and makes sense to be held here. */ @AndroidEntryPoint -abstract class BaseGitActivity : AppCompatActivity() { +abstract class BaseGitActivity : FragmentActivity() { /** Enum of possible Git operations than can be run through [launchGitOperation]. */ enum class GitOp { diff --git a/app/src/main/java/app/passwordstore/ui/main/LaunchActivity.kt b/app/src/main/java/app/passwordstore/ui/main/LaunchActivity.kt index c0af5742..54aaf9de 100644 --- a/app/src/main/java/app/passwordstore/ui/main/LaunchActivity.kt +++ b/app/src/main/java/app/passwordstore/ui/main/LaunchActivity.kt @@ -9,8 +9,8 @@ import android.content.Intent import android.os.Bundle import android.os.Handler import android.os.Looper -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.edit +import androidx.fragment.app.FragmentActivity import app.passwordstore.data.repo.PasswordRepository import app.passwordstore.util.auth.BiometricAuthenticator import app.passwordstore.util.auth.BiometricAuthenticator.Result @@ -19,7 +19,7 @@ import app.passwordstore.util.settings.PreferenceKeys import java.io.File @SuppressLint("CustomSplashScreen") -class LaunchActivity : AppCompatActivity() { +class LaunchActivity : FragmentActivity() { private var prompted = false diff --git a/app/src/main/java/app/passwordstore/ui/main/MainActivity.kt b/app/src/main/java/app/passwordstore/ui/main/MainActivity.kt index 7ef4f906..f3d7d3a0 100644 --- a/app/src/main/java/app/passwordstore/ui/main/MainActivity.kt +++ b/app/src/main/java/app/passwordstore/ui/main/MainActivity.kt @@ -71,8 +71,8 @@ import kotlinx.serialization.Serializable /** * Single-activity host for the Compose UI. Not exported: it is only started by [LaunchActivity], * after its biometric gate and path check, and by the app itself through [setupIntent]. Extends - * [BaseGitActivity] (an AppCompatActivity, so also the FragmentActivity BiometricPrompt needs) - * because the git operations require one; it hosts no fragments. + * [BaseGitActivity] (a FragmentActivity, which BiometricPrompt needs) because the git operations + * require one; it hosts no fragments. */ @AndroidEntryPoint class MainActivity : BaseGitActivity() { diff --git a/app/src/main/java/app/passwordstore/util/git/operation/BreakOutOfDetached.kt b/app/src/main/java/app/passwordstore/util/git/operation/BreakOutOfDetached.kt index 126b2be5..a08f2a35 100644 --- a/app/src/main/java/app/passwordstore/util/git/operation/BreakOutOfDetached.kt +++ b/app/src/main/java/app/passwordstore/util/git/operation/BreakOutOfDetached.kt @@ -4,7 +4,7 @@ */ package app.passwordstore.util.git.operation -import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.FragmentActivity import app.passwordstore.R import app.passwordstore.data.repo.PasswordRepository import app.passwordstore.ui.prompts.prompts @@ -14,7 +14,7 @@ import org.eclipse.jgit.api.RebaseCommand import org.eclipse.jgit.api.ResetCommand import org.eclipse.jgit.lib.RepositoryState -class BreakOutOfDetached(callingActivity: AppCompatActivity) : GitOperation(callingActivity) { +class BreakOutOfDetached(callingActivity: FragmentActivity) : GitOperation(callingActivity) { private val merging = repository.repositoryState == RepositoryState.MERGING private val localBranch = PasswordRepository.getCurrentBranch() diff --git a/app/src/main/java/app/passwordstore/util/git/operation/CloneOperation.kt b/app/src/main/java/app/passwordstore/util/git/operation/CloneOperation.kt index 0386f674..0d74835f 100644 --- a/app/src/main/java/app/passwordstore/util/git/operation/CloneOperation.kt +++ b/app/src/main/java/app/passwordstore/util/git/operation/CloneOperation.kt @@ -4,7 +4,7 @@ */ package app.passwordstore.util.git.operation -import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.FragmentActivity import org.eclipse.jgit.api.Git import org.eclipse.jgit.api.GitCommand @@ -14,7 +14,7 @@ import org.eclipse.jgit.api.GitCommand * @param uri URL to clone the repository from * @param callingActivity the calling activity */ -class CloneOperation(callingActivity: AppCompatActivity, uri: String) : +class CloneOperation(callingActivity: FragmentActivity, uri: String) : GitOperation(callingActivity) { override val commands: Array<GitCommand<out Any>> = diff --git a/app/src/main/java/app/passwordstore/util/git/operation/GcOperation.kt b/app/src/main/java/app/passwordstore/util/git/operation/GcOperation.kt index c1487fbf..64467f3e 100644 --- a/app/src/main/java/app/passwordstore/util/git/operation/GcOperation.kt +++ b/app/src/main/java/app/passwordstore/util/git/operation/GcOperation.kt @@ -5,7 +5,7 @@ package app.passwordstore.util.git.operation -import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.FragmentActivity import org.eclipse.jgit.api.GitCommand import org.eclipse.jgit.internal.storage.file.FileRepository import org.eclipse.jgit.internal.storage.file.GC @@ -14,7 +14,7 @@ import org.eclipse.jgit.internal.storage.file.GC * Run an aggressive garbage collection job on the repository, expiring every loose object to * achieve the best compression. */ -class GcOperation(callingActivity: AppCompatActivity) : GitOperation(callingActivity) { +class GcOperation(callingActivity: FragmentActivity) : GitOperation(callingActivity) { override val requiresAuth: Boolean = false override val commands: Array<GitCommand<out Any>> = diff --git a/app/src/main/java/app/passwordstore/util/git/operation/GitOperation.kt b/app/src/main/java/app/passwordstore/util/git/operation/GitOperation.kt index a4bc33df..f4ed7cd1 100644 --- a/app/src/main/java/app/passwordstore/util/git/operation/GitOperation.kt +++ b/app/src/main/java/app/passwordstore/util/git/operation/GitOperation.kt @@ -5,7 +5,6 @@ package app.passwordstore.util.git.operation import android.widget.Toast -import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.FragmentActivity import app.passwordstore.R import app.passwordstore.data.repo.PasswordRepository @@ -64,8 +63,6 @@ abstract class GitOperation(protected val callingActivity: FragmentActivity) { EntryPointAccessors.fromApplication<GitOperationEntryPoint>(callingActivity) protected val repository = PasswordRepository.repository!! protected val git = Git(repository) - private val authActivity - get() = callingActivity as AppCompatActivity private class HttpsCredentialsProvider(private val passwordFinder: PasswordFinder) : CredentialsProvider() { @@ -170,7 +167,7 @@ abstract class GitOperation(protected val callingActivity: FragmentActivity) { } when (result) { is Success -> { - registerAuthProviders(SshAuthMethod.SshKey(authActivity)) + registerAuthProviders(SshAuthMethod.SshKey(callingActivity)) } is CanceledByUser -> { return Err(SSHException(DisconnectReason.AUTH_CANCELLED_BY_USER)) @@ -190,7 +187,7 @@ abstract class GitOperation(protected val callingActivity: FragmentActivity) { } } } else { - registerAuthProviders(SshAuthMethod.SshKey(authActivity)) + registerAuthProviders(SshAuthMethod.SshKey(callingActivity)) } } else { onMissingSshKeyFile() @@ -208,7 +205,7 @@ abstract class GitOperation(protected val callingActivity: FragmentActivity) { hiltEntryPoint.dispatcherProvider(), ) ) - registerAuthProviders(SshAuthMethod.Password(authActivity), httpsCredentialProvider) + registerAuthProviders(SshAuthMethod.Password(callingActivity), httpsCredentialProvider) } AuthMode.None -> {} } diff --git a/app/src/main/java/app/passwordstore/util/git/operation/PullOperation.kt b/app/src/main/java/app/passwordstore/util/git/operation/PullOperation.kt index 1966c4ab..4738d7ee 100644 --- a/app/src/main/java/app/passwordstore/util/git/operation/PullOperation.kt +++ b/app/src/main/java/app/passwordstore/util/git/operation/PullOperation.kt @@ -4,10 +4,10 @@ */ package app.passwordstore.util.git.operation -import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.FragmentActivity import org.eclipse.jgit.api.GitCommand -class PullOperation(callingActivity: AppCompatActivity, rebase: Boolean) : +class PullOperation(callingActivity: FragmentActivity, rebase: Boolean) : GitOperation(callingActivity) { /** diff --git a/app/src/main/java/app/passwordstore/util/git/operation/PushOperation.kt b/app/src/main/java/app/passwordstore/util/git/operation/PushOperation.kt index e013b401..a998cda5 100644 --- a/app/src/main/java/app/passwordstore/util/git/operation/PushOperation.kt +++ b/app/src/main/java/app/passwordstore/util/git/operation/PushOperation.kt @@ -4,10 +4,10 @@ */ package app.passwordstore.util.git.operation -import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.FragmentActivity import org.eclipse.jgit.api.GitCommand -class PushOperation(callingActivity: AppCompatActivity) : GitOperation(callingActivity) { +class PushOperation(callingActivity: FragmentActivity) : GitOperation(callingActivity) { override val commands: Array<GitCommand<out Any>> = arrayOf(git.push().setPushAll().setRemote("origin")) diff --git a/app/src/main/java/app/passwordstore/util/git/operation/ResetToRemoteOperation.kt b/app/src/main/java/app/passwordstore/util/git/operation/ResetToRemoteOperation.kt index 7ca1282b..904c62ee 100644 --- a/app/src/main/java/app/passwordstore/util/git/operation/ResetToRemoteOperation.kt +++ b/app/src/main/java/app/passwordstore/util/git/operation/ResetToRemoteOperation.kt @@ -4,12 +4,12 @@ */ package app.passwordstore.util.git.operation -import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.FragmentActivity import org.eclipse.jgit.api.CreateBranchCommand.SetupUpstreamMode.TRACK import org.eclipse.jgit.api.GitCommand import org.eclipse.jgit.api.ResetCommand -class ResetToRemoteOperation(callingActivity: AppCompatActivity, remoteBranch: String) : +class ResetToRemoteOperation(callingActivity: FragmentActivity, remoteBranch: String) : GitOperation(callingActivity) { override val commands: Array<GitCommand<out Any>> = diff --git a/app/src/main/java/app/passwordstore/util/git/operation/SyncOperation.kt b/app/src/main/java/app/passwordstore/util/git/operation/SyncOperation.kt index 25078e8a..c598b829 100644 --- a/app/src/main/java/app/passwordstore/util/git/operation/SyncOperation.kt +++ b/app/src/main/java/app/passwordstore/util/git/operation/SyncOperation.kt @@ -4,10 +4,10 @@ */ package app.passwordstore.util.git.operation -import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.FragmentActivity import org.eclipse.jgit.api.GitCommand -class SyncOperation(callingActivity: AppCompatActivity, rebase: Boolean) : +class SyncOperation(callingActivity: FragmentActivity, rebase: Boolean) : GitOperation(callingActivity) { override val commands: Array<GitCommand<out Any>> = diff --git a/app/src/main/java/app/passwordstore/util/git/sshj/SshjSessionFactory.kt b/app/src/main/java/app/passwordstore/util/git/sshj/SshjSessionFactory.kt index ceae70bb..631e416f 100644 --- a/app/src/main/java/app/passwordstore/util/git/sshj/SshjSessionFactory.kt +++ b/app/src/main/java/app/passwordstore/util/git/sshj/SshjSessionFactory.kt @@ -5,7 +5,7 @@ package app.passwordstore.util.git.sshj import android.util.Base64 -import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.FragmentActivity import app.passwordstore.ui.prompts.Prompts import app.passwordstore.ui.prompts.prompts import app.passwordstore.util.coroutines.DispatcherProvider @@ -44,16 +44,16 @@ import org.eclipse.jgit.transport.SshSessionFactory import org.eclipse.jgit.transport.URIish import org.eclipse.jgit.util.FS -sealed class SshAuthMethod(val activity: AppCompatActivity) { +sealed class SshAuthMethod(val activity: FragmentActivity) { /** * The activity's [Prompts], taken while it is alive: the SSH thread reads it later, and asking an * activity that was finished meanwhile for it would create one nothing draws. */ val prompts = activity.prompts - class Password(activity: AppCompatActivity) : SshAuthMethod(activity) + class Password(activity: FragmentActivity) : SshAuthMethod(activity) - class SshKey(activity: AppCompatActivity) : SshAuthMethod(activity) + class SshKey(activity: FragmentActivity) : SshAuthMethod(activity) } abstract class InteractivePasswordFinder(private val dispatcherProvider: DispatcherProvider) : diff --git a/app/src/main/res/drawable/ic_action_new_folder.xml b/app/src/main/res/drawable/ic_action_new_folder.xml index 6db26eaf..7bccd8a6 100644 --- a/app/src/main/res/drawable/ic_action_new_folder.xml +++ b/app/src/main/res/drawable/ic_action_new_folder.xml @@ -6,7 +6,7 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" - android:tint="?attr/colorControlNormal" + android:tint="?android:attr/colorControlNormal" android:viewportWidth="24" android:viewportHeight="24"> <path diff --git a/app/src/main/res/drawable/ic_action_new_password.xml b/app/src/main/res/drawable/ic_action_new_password.xml index 1b3df410..f204ea59 100644 --- a/app/src/main/res/drawable/ic_action_new_password.xml +++ b/app/src/main/res/drawable/ic_action_new_password.xml @@ -6,7 +6,7 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" - android:tint="?attr/colorControlNormal" + android:tint="?android:attr/colorControlNormal" android:viewportWidth="24" android:viewportHeight="24"> <path diff --git a/app/src/main/res/drawable/ic_action_secure_24dp.xml b/app/src/main/res/drawable/ic_action_secure_24dp.xml index 9eb00ee4..5a62a473 100644 --- a/app/src/main/res/drawable/ic_action_secure_24dp.xml +++ b/app/src/main/res/drawable/ic_action_secure_24dp.xml @@ -6,7 +6,7 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" - android:tint="?attr/colorControlNormal" + android:tint="?android:attr/colorControlNormal" android:viewportWidth="24" android:viewportHeight="24"> <path diff --git a/app/src/main/res/drawable/ic_delete_24dp.xml b/app/src/main/res/drawable/ic_delete_24dp.xml index 27865f8d..151f808e 100644 --- a/app/src/main/res/drawable/ic_delete_24dp.xml +++ b/app/src/main/res/drawable/ic_delete_24dp.xml @@ -6,7 +6,7 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" - android:tint="?attr/colorControlNormal" + android:tint="?android:attr/colorControlNormal" android:viewportWidth="24" android:viewportHeight="24"> <path diff --git a/app/src/main/res/drawable/ic_edit_24dp.xml b/app/src/main/res/drawable/ic_edit_24dp.xml index 8bcfb841..b5f43cfd 100644 --- a/app/src/main/res/drawable/ic_edit_24dp.xml +++ b/app/src/main/res/drawable/ic_edit_24dp.xml @@ -6,7 +6,7 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" - android:tint="?attr/colorControlNormal" + android:tint="?android:attr/colorControlNormal" android:viewportWidth="24" android:viewportHeight="24"> <path diff --git a/app/src/main/res/drawable/ic_move_folder_24dp.xml b/app/src/main/res/drawable/ic_move_folder_24dp.xml index 3df87291..e12ddaee 100644 --- a/app/src/main/res/drawable/ic_move_folder_24dp.xml +++ b/app/src/main/res/drawable/ic_move_folder_24dp.xml @@ -6,7 +6,7 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" - android:tint="?attr/colorControlNormal" + android:tint="?android:attr/colorControlNormal" android:viewportWidth="24" android:viewportHeight="24"> <path diff --git a/app/src/main/res/drawable/ic_push_pin_24dp.xml b/app/src/main/res/drawable/ic_push_pin_24dp.xml index c542d784..41f61e0a 100644 --- a/app/src/main/res/drawable/ic_push_pin_24dp.xml +++ b/app/src/main/res/drawable/ic_push_pin_24dp.xml @@ -6,7 +6,7 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" - android:tint="?attr/colorControlNormal" + android:tint="?android:attr/colorControlNormal" android:viewportWidth="24" android:viewportHeight="24"> <path diff --git a/app/src/main/res/drawable/ic_round_import_export.xml b/app/src/main/res/drawable/ic_round_import_export.xml index 2f243b22..7ab2aa1c 100644 --- a/app/src/main/res/drawable/ic_round_import_export.xml +++ b/app/src/main/res/drawable/ic_round_import_export.xml @@ -6,7 +6,7 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" - android:tint="?attr/colorControlNormal" + android:tint="?android:attr/colorControlNormal" android:viewportWidth="24" android:viewportHeight="24"> <path diff --git a/app/src/main/res/drawable/ic_search_24dp.xml b/app/src/main/res/drawable/ic_search_24dp.xml index bb454f5b..666883b6 100644 --- a/app/src/main/res/drawable/ic_search_24dp.xml +++ b/app/src/main/res/drawable/ic_search_24dp.xml @@ -6,7 +6,7 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" - android:tint="?attr/colorControlNormal" + android:tint="?android:attr/colorControlNormal" android:viewportWidth="24" android:viewportHeight="24"> <path diff --git a/app/src/main/res/drawable/ic_share_24dp.xml b/app/src/main/res/drawable/ic_share_24dp.xml index 2295122c..83d28c8d 100644 --- a/app/src/main/res/drawable/ic_share_24dp.xml +++ b/app/src/main/res/drawable/ic_share_24dp.xml @@ -6,7 +6,7 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" - android:tint="?attr/colorControlNormal" + android:tint="?android:attr/colorControlNormal" android:viewportWidth="24" android:viewportHeight="24"> <path diff --git a/app/src/main/res/values-night/themes_material3.xml b/app/src/main/res/values-night/themes_material3.xml index 548afa5f..22b62088 100644 --- a/app/src/main/res/values-night/themes_material3.xml +++ b/app/src/main/res/values-night/themes_material3.xml @@ -5,32 +5,7 @@ <resources> - <style name="APSThemeM3" parent="Theme.Material3.DayNight"> - <item name="colorPrimary">@color/md_theme_dark_primary</item> - <item name="colorOnPrimary">@color/md_theme_dark_onPrimary</item> - <item name="colorPrimaryContainer">@color/md_theme_dark_primaryContainer</item> - <item name="colorOnPrimaryContainer">@color/md_theme_dark_onPrimaryContainer</item> - <item name="colorSecondary">@color/md_theme_dark_secondary</item> - <item name="colorOnSecondary">@color/md_theme_dark_onSecondary</item> - <item name="colorSecondaryContainer">@color/md_theme_dark_secondaryContainer</item> - <item name="colorOnSecondaryContainer">@color/md_theme_dark_onSecondaryContainer</item> - <item name="colorTertiary">@color/md_theme_dark_tertiary</item> - <item name="colorOnTertiary">@color/md_theme_dark_onTertiary</item> - <item name="colorTertiaryContainer">@color/md_theme_dark_tertiaryContainer</item> - <item name="colorOnTertiaryContainer">@color/md_theme_dark_onTertiaryContainer</item> - <item name="colorError">@color/md_theme_dark_error</item> - <item name="colorErrorContainer">@color/md_theme_dark_errorContainer</item> - <item name="colorOnError">@color/md_theme_dark_onError</item> - <item name="colorOnErrorContainer">@color/md_theme_dark_onErrorContainer</item> - <item name="android:colorBackground">@color/md_theme_dark_background</item> - <item name="colorOnBackground">@color/md_theme_dark_onBackground</item> - <item name="colorSurface">@color/md_theme_dark_surface</item> - <item name="colorOnSurface">@color/md_theme_dark_onSurface</item> - <item name="colorSurfaceVariant">@color/md_theme_dark_surfaceVariant</item> - <item name="colorOnSurfaceVariant">@color/md_theme_dark_onSurfaceVariant</item> - <item name="colorOutline">@color/md_theme_dark_outline</item> - <item name="colorOnSurfaceInverse">@color/md_theme_dark_inverseOnSurface</item> - <item name="colorSurfaceInverse">@color/md_theme_dark_inverseSurface</item> - <item name="colorPrimaryInverse">@color/md_theme_dark_primaryInverse</item> + <style name="APSThemeM3" parent="android:Theme.Material.NoActionBar"> + <item name="android:colorBackground">@android:color/system_neutral2_900</item> </style> </resources> diff --git a/app/src/main/res/values/themes_material3.xml b/app/src/main/res/values/themes_material3.xml index 0ec74a45..7db01be0 100644 --- a/app/src/main/res/values/themes_material3.xml +++ b/app/src/main/res/values/themes_material3.xml @@ -6,18 +6,11 @@ <resources> <style name="AppThemeM3" parent="APSThemeM3"> - <item name="fontFamily">@font/manrope</item> <item name="android:windowLightStatusBar">@bool/light_status_bar</item> <item name="android:statusBarColor">?android:colorBackground</item> <item name="android:navigationBarColor">?android:colorBackground</item> </style> - <!-- AppCompat activities whose whole UI is Compose --> - <style name="NoActionBarThemeM3" parent="AppThemeM3"> - <item name="windowActionBar">false</item> - <item name="windowNoTitle">true</item> - </style> - <style name="NoBackgroundThemeM3" parent="@style/AppThemeM3"> <item name="android:background">@android:color/transparent</item> <item name="android:backgroundDimEnabled">true</item> @@ -25,48 +18,17 @@ <item name="android:statusBarColor">@android:color/transparent</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowContentOverlay">@null</item> - <item name="android:windowActionBar">false</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowEnterAnimation">@android:anim/fade_in</item> <item name="android:windowExitAnimation">@android:anim/fade_out</item> - <item name="colorPrimaryDark">@android:color/transparent</item> - <item name="windowNoTitle">true</item> </style> <style name="DialogLikeThemeM3" parent="AppThemeM3"> - <item name="android:windowActionBar">false</item> <item name="android:windowIsFloating">true</item> <item name="android:backgroundDimEnabled">true</item> - <!-- Needs to be set without android: prefix as per https://stackoverflow.com/a/33417456 --> - <item name="windowNoTitle">true</item> </style> - <style name="APSThemeM3" parent="Theme.Material3.DayNight"> - <item name="colorPrimary">@color/md_theme_light_primary</item> - <item name="colorOnPrimary">@color/md_theme_light_onPrimary</item> - <item name="colorPrimaryContainer">@color/md_theme_light_primaryContainer</item> - <item name="colorOnPrimaryContainer">@color/md_theme_light_onPrimaryContainer</item> - <item name="colorSecondary">@color/md_theme_light_secondary</item> - <item name="colorOnSecondary">@color/md_theme_light_onSecondary</item> - <item name="colorSecondaryContainer">@color/md_theme_light_secondaryContainer</item> - <item name="colorOnSecondaryContainer">@color/md_theme_light_onSecondaryContainer</item> - <item name="colorTertiary">@color/md_theme_light_tertiary</item> - <item name="colorOnTertiary">@color/md_theme_light_onTertiary</item> - <item name="colorTertiaryContainer">@color/md_theme_light_tertiaryContainer</item> - <item name="colorOnTertiaryContainer">@color/md_theme_light_onTertiaryContainer</item> - <item name="colorError">@color/md_theme_light_error</item> - <item name="colorErrorContainer">@color/md_theme_light_errorContainer</item> - <item name="colorOnError">@color/md_theme_light_onError</item> - <item name="colorOnErrorContainer">@color/md_theme_light_onErrorContainer</item> - <item name="android:colorBackground">@color/md_theme_light_background</item> - <item name="colorOnBackground">@color/md_theme_light_onBackground</item> - <item name="colorSurface">@color/md_theme_light_surface</item> - <item name="colorOnSurface">@color/md_theme_light_onSurface</item> - <item name="colorSurfaceVariant">@color/md_theme_light_surfaceVariant</item> - <item name="colorOnSurfaceVariant">@color/md_theme_light_onSurfaceVariant</item> - <item name="colorOutline">@color/md_theme_light_outline</item> - <item name="colorOnSurfaceInverse">@color/md_theme_light_inverseOnSurface</item> - <item name="colorSurfaceInverse">@color/md_theme_light_inverseSurface</item> - <item name="colorPrimaryInverse">@color/md_theme_light_primaryInverse</item> + <style name="APSThemeM3" parent="android:Theme.Material.Light.NoActionBar"> + <item name="android:colorBackground">@android:color/system_neutral2_10</item> </style> </resources> |
