diff --git a/.crowdin/config.example.yml b/.crowdin/config.example.yml deleted file mode 100644 index 4ef788a3..00000000 --- a/.crowdin/config.example.yml +++ /dev/null @@ -1,10 +0,0 @@ -project_id: "372633" -api_token: "" -base_path: "../app/src/main" -base_url: "https://api.crowdin.com" -preserve_hierarchy: true - -files: -- source: "res/values/strings.xml" - dest: "strings.xml" - translation: "res/values-%android_code%/%original_file_name%" diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index bb4c019b..4dd0941a 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,4 +1,4 @@ +buy_me_a_coffee: beemdevelopment custom: - - "https://www.buymeacoffee.com/beemdevelopment" - "https://www.blockchain.com/btc/address/bc1q26kyxqjkc6tu477pzy0whagwhs4ypv93qls22n" - "https://nanocrawler.cc/explorer/account/nano_1aegisc559b1x4p3839egnu579jkd4htpidy14eo9e31gzqmwuafypnj4q94" diff --git a/.github/workflows/build-app-workflow.yaml b/.github/workflows/build-app-workflow.yaml index 515b2e04..ab511ab7 100644 --- a/.github/workflows/build-app-workflow.yaml +++ b/.github/workflows/build-app-workflow.yaml @@ -5,36 +5,37 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout the code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@55e685c48d84285a5b0418cd094606e199cca3b6 - - uses: actions/setup-java@v3 + uses: gradle/wrapper-validation-action@699bb18358f12c5b78b37bb0111d3a0e2276e0e2 + - uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' cache: 'gradle' - name: Build the app run: ./gradlew build - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: apk path: app/build/outputs/apk/debug/app-debug.apk test: - runs-on: macos-latest - # This is probably pretty expensive for GitHub, so restrict the repositories that this job runs on - if: github.repository == 'beemdevelopment/Aegis' || github.repository == 'alexbakker/Aegis' + runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 + uses: actions/checkout@v4 + - uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' cache: 'gradle' - - name: Install HAXM - run: brew install --cask intel-haxm + - name: Enable KVM group perms + run: | + echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules + sudo udevadm control --reload-rules + sudo udevadm trigger --name-match=kvm - name: Tests - uses: reactivecircus/android-emulator-runner@50986b1464923454c95e261820bc626f38490ec0 + uses: reactivecircus/android-emulator-runner@62dbb605bba737720e10b196cb4220d374026a6d with: api-level: 31 arch: x86_64 @@ -52,8 +53,8 @@ jobs: adb logcat -d > artifacts/logcat.txt cp -r app/build/reports/androidTests/connected/* artifacts/report/ if adb shell '[ -e /sdcard/Pictures/screenshots ]'; then adb pull /sdcard/Pictures/screenshots artifacts/; fi - # test ! -f tests_failing - - uses: actions/upload-artifact@v3 + test ! -f tests_failing + - uses: actions/upload-artifact@v4 if: always() with: name: instrumented-test-report diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 0d3d0dc0..b575535b 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -14,9 +14,10 @@ jobs: actions: read contents: read security-events: write + if: github.event_name != 'schedule' || github.repository == 'beemdevelopment/Aegis' steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Exclude paths # The importers are excluded from analysis, because some of the apps Aegis # can import from don't have such great crypto, which will cause false @@ -24,18 +25,18 @@ jobs: run: | find app/src/main/java/com/beemdevelopment/aegis/importers ! \( -name AegisImporter.java -o -name "DatabaseImporter*" \) -type f -exec rm -f {} + sed -i '/Importer.class/d' app/src/main/java/com/beemdevelopment/aegis/importers/DatabaseImporter.java - - uses: actions/setup-java@v3 + - uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' cache: 'gradle' - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: java - name: Build run: ./gradlew assembleDebug - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/crowdin.yml b/.github/workflows/crowdin.yml index 6b9cb779..e7898362 100644 --- a/.github/workflows/crowdin.yml +++ b/.github/workflows/crowdin.yml @@ -10,22 +10,16 @@ jobs: runs-on: ubuntu-latest if: github.repository == 'beemdevelopment/Aegis' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install crowdin-cli run: | - wget https://github.com/crowdin/crowdin-cli/releases/download/3.7.2/crowdin-cli.zip - echo "ee9f838b819ccedc33c9b2537055e5ba7d7934561b24df1e1a6274cbd6e27f2d crowdin-cli.zip" | sha256sum -c + wget https://github.com/crowdin/crowdin-cli/releases/download/4.6.1/crowdin-cli.zip + echo "7afd70de3a747ac631a5bad7866008163ae1d50c4606b5773f0b90a5481ffde2 crowdin-cli.zip" | sha256sum -c unzip crowdin-cli.zip -d crowdin-cli - name: Upload to Crowdin env: - CROWDIN_TOKEN: "${{ secrets.CROWDIN_TOKEN }}" + CROWDIN_PERSONAL_TOKEN: "${{ secrets.CROWDIN_TOKEN }}" run: | - java -jar ./crowdin-cli/3.7.2/crowdin-cli.jar upload sources \ + java -jar ./crowdin-cli/4.6.1/crowdin-cli.jar upload sources \ --no-progress \ - --token "$CROWDIN_TOKEN" \ - --project-id 372633 \ - --base-path app/src/main \ - --source res/values/strings.xml \ - --translation "res/values-%android_code%/%original_file_name%" \ - --dest strings.xml \ --branch master diff --git a/FAQ.md b/FAQ.md index 815490aa..6d514574 100644 --- a/FAQ.md +++ b/FAQ.md @@ -86,6 +86,14 @@ Another common setup is to configure Aegis to back up to a folder on local storage of your device and then have a separate app (like [Syncthing](https://syncthing.net/)) sync that folder anywhere you want. +## Encrypted Backups + +### Why do I not get prompted to enter an encryption password when exporting? + +Aegis uses the same password you have configured to encrypt your vault as the +password which is used when exporting and importing your vault; so when prompted, +you will enter that when importing your vault. + ## Importing ### When importing from Authenticator Plus, an error is shown claiming that Accounts.txt is missing diff --git a/README.md b/README.md index 382a3c59..195bd4ed 100644 --- a/README.md +++ b/README.md @@ -123,20 +123,33 @@ documentation](docs/iconpacks.md). Unofficial monochrome-styled 2FA icons. [aegis-icons preview](https://github.com/aegis-icons/aegis-icons) + src="metadata/en-US/images/iconPacks/aegis-icons.png">](https://github.com/aegis-icons/aegis-icons) -- [aegis-simple-icons](https://github.com/alexbakker/aegis-simple-icons) * +- [delta-aegis-icons](https://github.com/Delta-Icons/aegis-icons) + + Delta version of the unofficial monochrome-styled 2FA icon pack aegis-icons. + + [delta-icons preview](https://github.com/Delta-Icons/aegis-icons) + +- [aegis-simple-icons](https://github.com/alexbakker/aegis-simple-icons) \* This project periodically generates an icon pack for Aegis based on [Simple Icons](https://simpleicons.org/). -- [aegis-simple-icons-outlined](https://github.com/michaelschattgen/aegis-simple-icons-outlined) * + [aegis-simple-icons preview](https://github.com/alexbakker/aegis-simple-icons) + +- [aegis-simple-icons-outlined](https://github.com/michaelschattgen/aegis-simple-icons-outlined) \* This is a variant on the aegis-simple-icons pack where the icons contain no solid background and just the outlines are being used. - + + [aegis-simple-icons-outlined preview](https://github.com/michaelschattgen/aegis-simple-icons-outlined) + \* The icons are automatically generated, so - not all of them are as high quality as the ones you'll find in - [aegis-icons](https://github.com/aegis-icons/aegis-icons). +not all of them are as high quality as the ones you'll find in +[aegis-icons](https://github.com/aegis-icons/aegis-icons). ## Contributing @@ -151,3 +164,9 @@ Swing by our Matrix room to interact with other contributors: This project is licensed under the GNU General Public License v3.0. See the [LICENSE](LICENSE) file for details. + +A couple of libraries vendored in Aegis' repository are licensed under a +different license: + +- [TextDrawable](app/src/main/java/com/amulyakhare/textdrawable) +- [TrustedIntents](app/src/main/java/info/guardianproject/trustedintents) diff --git a/app/build.gradle b/app/build.gradle index 3faacee6..43512d69 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'com.google.protobuf' apply plugin: 'dagger.hilt.android.plugin' +apply plugin: 'com.mikepenz.aboutlibraries.plugin' def getCmdOutput = { cmd -> def stdout = new ByteArrayOutputStream() @@ -19,21 +20,27 @@ def fileProviderAuthority = "${packageName}.fileprovider" def fileProviderAuthorityDebug = "${packageName}.debug.fileprovider" android { - compileSdk 33 + compileSdk 35 namespace packageName defaultConfig { applicationId "${packageName}" - minSdkVersion 21 - targetSdkVersion 33 - versionCode 60 - versionName "2.2" + minSdkVersion 23 + targetSdkVersion 35 + versionCode 79 + versionName "3.4" multiDexEnabled true buildConfigField "String", "GIT_HASH", "\"${getGitHash()}\"" buildConfigField "String", "GIT_BRANCH", "\"${getGitBranch()}\"" buildConfigField "java.util.concurrent.atomic.AtomicBoolean", "TEST", "new java.util.concurrent.atomic.AtomicBoolean(false)" + javaCompileOptions { + annotationProcessorOptions { + arguments = ["room.schemaLocation": "$projectDir/schemas"] + } + } + testInstrumentationRunner "com.beemdevelopment.aegis.AegisTestRunner" testInstrumentationRunnerArguments clearPackageData: 'true' } @@ -86,28 +93,41 @@ android { } } + // Required to make the APK reproducible + aaptOptions { + cruncherEnabled = false + } + defaultConfig { + vectorDrawables.generatedDensities = [] + } + packagingOptions { // R8 doesn't remove these resources, so exclude them manually. This reduces APK size by 4MB. resources { - excludes += ['/org/bouncycastle/pqc/**/*.properties'] + excludes += [ + '/org/bouncycastle/pqc/**/*.properties', + 'META-INF/versions/9/OSGI-INF/MANIFEST.MF' + ] } } compileOptions { - targetCompatibility 1.8 - sourceCompatibility 1.8 + targetCompatibility JavaVersion.VERSION_17 + sourceCompatibility JavaVersion.VERSION_17 coreLibraryDesugaringEnabled true } lint { abortOnError true checkDependencies true - disable 'MissingQuantity', 'MissingTranslation' + } + buildFeatures { + buildConfig true } } protobuf { protoc { - artifact = 'com.google.protobuf:protoc:3.8.0' + artifact = 'com.google.protobuf:protoc:3.25.1' } generateProtoTasks { all().each { task -> @@ -120,37 +140,46 @@ protobuf { } } -dependencies { - def cameraxVersion = '1.2.3' - def glideVersion = '4.16.0' - def guavaVersion = '32.1.2' - def hiltVersion = '2.47' - def junitVersion = '4.13.2' - def libsuVersion = '5.2.0' +aboutLibraries { + // Tasks for aboutLibraries are not run automatically to keep the build reproducible + // To update manually: ./gradlew app:exportLibraryDefinitions -PaboutLibraries.exportPath=src/main/res/raw + prettyPrint = true + configPath = "app/config" + fetchRemoteFunding = false + registerAndroidTasks = false + exclusionPatterns = [~"javax.annotation.*"] + duplicationMode = com.mikepenz.aboutlibraries.plugin.DuplicateMode.MERGE +} - annotationProcessor 'androidx.annotation:annotation:1.6.0' +dependencies { + def cameraxVersion = '1.4.2' + def glideVersion = '4.16.0' + def guavaVersion = '33.4.8' + def hiltVersion = '2.56.2' + def junitVersion = '4.13.2' + def libsuVersion = '6.0.0' + def roomVersion = '2.7.1' + + annotationProcessor 'androidx.annotation:annotation:1.9.1' + annotationProcessor "androidx.room:room-compiler:$roomVersion" annotationProcessor "com.google.dagger:hilt-compiler:$hiltVersion" annotationProcessor "com.github.bumptech.glide:compiler:${glideVersion}" - // Ridiculous fix for a bunch of "Duplicate class" build errors: - implementation (platform("org.jetbrains.kotlin:kotlin-bom:1.8.0")) - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.activity:activity:1.7.2' - implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'androidx.activity:activity:1.10.1' + implementation 'androidx.appcompat:appcompat:1.7.0' implementation "androidx.biometric:biometric:1.1.0" implementation "androidx.camera:camera-camera2:$cameraxVersion" implementation "androidx.camera:camera-lifecycle:$cameraxVersion" - implementation 'androidx.camera:camera-view:1.2.3' - implementation 'androidx.cardview:cardview:1.0.0' - implementation "androidx.core:core:1.10.1" - implementation 'androidx.constraintlayout:constraintlayout:2.1.4' - implementation 'androidx.documentfile:documentfile:1.0.1' - implementation "androidx.lifecycle:lifecycle-process:2.6.1" + implementation "androidx.camera:camera-view:$cameraxVersion" + implementation 'androidx.core:core:1.16.0' + implementation 'androidx.constraintlayout:constraintlayout:2.2.1' + implementation 'androidx.documentfile:documentfile:1.1.0' + implementation 'androidx.lifecycle:lifecycle-process:2.9.0' implementation "androidx.preference:preference:1.2.1" - implementation 'androidx.recyclerview:recyclerview:1.3.1' - implementation "androidx.viewpager2:viewpager2:1.0.0" - implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' + implementation 'androidx.recyclerview:recyclerview:1.4.0' + implementation "androidx.room:room-runtime:$roomVersion" + implementation 'androidx.viewpager2:viewpager2:1.1.0' implementation 'com.caverock:androidsvg-aar:1.4' implementation "com.google.dagger:hilt-android:$hiltVersion" implementation 'com.github.avito-tech:krop:0.52' @@ -162,36 +191,35 @@ dependencies { implementation "com.github.topjohnwu.libsu:core:${libsuVersion}" implementation "com.github.topjohnwu.libsu:io:${libsuVersion}" implementation "com.google.guava:guava:${guavaVersion}-android" - implementation 'com.google.android.material:material:1.9.0' - implementation 'com.google.protobuf:protobuf-javalite:3.22.0' - implementation 'com.google.zxing:core:3.5.2' - implementation "com.mikepenz:iconics-core:3.2.5" - implementation 'com.mikepenz:material-design-iconic-typeface:2.2.0.5@aar' - implementation 'com.nulab-inc:zxcvbn:1.8.2' - implementation 'de.hdodenhof:circleimageview:3.1.0' - implementation 'de.psdev.licensesdialog:licensesdialog:2.2.0' + implementation 'com.google.android.material:material:1.12.0' + implementation 'com.google.protobuf:protobuf-javalite:4.31.0' + implementation 'com.google.zxing:core:3.5.3' + implementation('com.mikepenz:aboutlibraries:11.2.3') { + exclude group: 'com.mikepenz', module: 'aboutlibraries-core' + } + implementation 'com.mikepenz:aboutlibraries-core-android:11.2.3' + implementation 'com.nulab-inc:zxcvbn:1.9.0' implementation 'net.lingala.zip4j:zip4j:2.11.5' - implementation 'info.guardianproject.trustedintents:trustedintents:0.2' - implementation 'org.bouncycastle:bcprov-jdk18on:1.76' - implementation "org.simpleflatmapper:sfm-csv:8.2.3" + implementation 'org.bouncycastle:bcprov-jdk18on:1.80' + implementation 'org.simpleflatmapper:sfm-csv:8.2.3' androidTestAnnotationProcessor "com.google.dagger:hilt-android-compiler:$hiltVersion" androidTestImplementation "com.google.dagger:hilt-android-testing:$hiltVersion" - androidTestImplementation 'androidx.test:core:1.5.0' - androidTestImplementation 'androidx.test:runner:1.5.2' - androidTestImplementation 'androidx.test:rules:1.5.0' - androidTestImplementation 'androidx.test.ext:junit:1.1.5' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' - androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.5.1' - androidTestImplementation 'androidx.test.espresso:espresso-intents:3.5.1' + androidTestImplementation 'androidx.test:core:1.6.1' + androidTestImplementation 'androidx.test:runner:1.6.2' + androidTestImplementation 'androidx.test:rules:1.6.1' + androidTestImplementation 'androidx.test.ext:junit:1.2.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1' + androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.6.1' + androidTestImplementation 'androidx.test.espresso:espresso-intents:3.6.1' androidTestImplementation "junit:junit:${junitVersion}" - androidTestUtil 'androidx.test:orchestrator:1.4.2' + androidTestUtil 'androidx.test:orchestrator:1.5.1' - testImplementation 'androidx.test:core:1.5.0' + testImplementation 'androidx.test:core:1.6.1' testImplementation "com.google.guava:guava:${guavaVersion}-jre" testImplementation "junit:junit:${junitVersion}" - testImplementation 'org.json:json:20230618' - testImplementation 'org.robolectric:robolectric:4.10.3' + testImplementation 'org.json:json:20250517' + testImplementation 'org.robolectric:robolectric:4.14.1' - coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3' + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.5' } diff --git a/app/config/libraries/krop.json b/app/config/libraries/krop.json new file mode 100644 index 00000000..72731ef0 --- /dev/null +++ b/app/config/libraries/krop.json @@ -0,0 +1,6 @@ +{ + "uniqueId": "com.github.avito-tech:krop", + "licenses": [ + "MIT" + ] +} \ No newline at end of file diff --git a/app/config/libraries/libsu.json b/app/config/libraries/libsu.json new file mode 100644 index 00000000..3ec91d89 --- /dev/null +++ b/app/config/libraries/libsu.json @@ -0,0 +1,6 @@ +{ + "uniqueId": "com.github.topjohnwu.libsu:.*::regex", + "licenses": [ + "Apache-2.0" + ] +} \ No newline at end of file diff --git a/app/config/libraries/textdrawable.json b/app/config/libraries/textdrawable.json new file mode 100644 index 00000000..528a6354 --- /dev/null +++ b/app/config/libraries/textdrawable.json @@ -0,0 +1,15 @@ +{ + "uniqueId": "com.amulyakhare:com.amulyakhare.textdrawable", + "funding": [ + + ], + "developers": [ + + ], + "artifactVersion": "1.0.1", + "description": "This light-weight library provides images with letter/text like the Gmail app. It extends the Drawable class thus can be used with existing/custom/network ImageView classes. Also included is a fluent interface for creating drawables and a customizable ColorGenerator.", + "name": "textdrawable", + "licenses": [ + "MIT" + ] +} \ No newline at end of file diff --git a/app/config/libraries/trustedintents.json b/app/config/libraries/trustedintents.json new file mode 100644 index 00000000..5ba89066 --- /dev/null +++ b/app/config/libraries/trustedintents.json @@ -0,0 +1,23 @@ +{ + "uniqueId": "info.guardianproject.trustedintents:trustedintents", + "funding": [ + + ], + "developers": [ + { + "name": "Guardian Project" + } + ], + "artifactVersion": "0.2", + "description": "TrustedIntents is a library for flexible trusted interactions between Android apps. It is modeled after Android's `signature` protection level for permissions. The key difference is that the framework allows the trusted signature to be set, rather than requiring to match the current app's signature.", + "scm": { + "connection": "scm:https://github.com/guardianproject/TrustedIntents.git", + "url": "scm:https://github.com/guardianproject/TrustedIntents", + "developerConnection": "scm:git@github.com:guardianproject/TrustedIntents.git" + }, + "name": "TrustedIntents", + "website": "https://guardianproject.info/code/trustedintents", + "licenses": [ + "3ca920d1875f7ad7ab04a2a331958577" + ] +} \ No newline at end of file diff --git a/app/config/licenses/3ca920d1875f7ad7ab04a2a331958577.json b/app/config/licenses/3ca920d1875f7ad7ab04a2a331958577.json new file mode 100644 index 00000000..2f0d7c2a --- /dev/null +++ b/app/config/licenses/3ca920d1875f7ad7ab04a2a331958577.json @@ -0,0 +1,5 @@ +{ + "hash": "3ca920d1875f7ad7ab04a2a331958577", + "url": "https://github.com/guardianproject/TrustedIntents/blob/master/LICENSE.txt", + "name": "LGPLv2.1" +} \ No newline at end of file diff --git a/app/lint.xml b/app/lint.xml index 4cdb0450..f9f30d6e 100644 --- a/app/lint.xml +++ b/app/lint.xml @@ -1,10 +1,15 @@ + + - + + + + diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index a8103102..f0789326 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -1,7 +1,10 @@ +-keepattributes LineNumberTable,SourceFile +-renamesourcefileattribute SourceFile +-dontobfuscate + -keepclasseswithmembers public class androidx.recyclerview.widget.RecyclerView { *; } -keep class com.beemdevelopment.aegis.ui.fragments.preferences.* -keep class com.beemdevelopment.aegis.importers.** { *; } -keep class * extends com.google.protobuf.GeneratedMessageLite { *; } --dontobfuscate -dontwarn javax.naming.** diff --git a/app/schemas/com.beemdevelopment.aegis.database.AppDatabase/1.json b/app/schemas/com.beemdevelopment.aegis.database.AppDatabase/1.json new file mode 100644 index 00000000..811e430c --- /dev/null +++ b/app/schemas/com.beemdevelopment.aegis.database.AppDatabase/1.json @@ -0,0 +1,52 @@ +{ + "formatVersion": 1, + "database": { + "version": 1, + "identityHash": "392278bdb797d013cb2ada67a3b1cc60", + "entities": [ + { + "tableName": "audit_logs", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `event_type` TEXT NOT NULL, `reference` TEXT, `timestamp` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "_eventType", + "columnName": "event_type", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "_reference", + "columnName": "reference", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "_timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '392278bdb797d013cb2ada67a3b1cc60')" + ] + } +} \ No newline at end of file diff --git a/app/src/androidTest/java/com/beemdevelopment/aegis/AegisTest.java b/app/src/androidTest/java/com/beemdevelopment/aegis/AegisTest.java index 001facd6..a7322c3c 100644 --- a/app/src/androidTest/java/com/beemdevelopment/aegis/AegisTest.java +++ b/app/src/androidTest/java/com/beemdevelopment/aegis/AegisTest.java @@ -2,15 +2,19 @@ package com.beemdevelopment.aegis; import android.view.View; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.recyclerview.widget.RecyclerView; import androidx.test.espresso.UiController; import androidx.test.espresso.ViewAction; +import androidx.test.espresso.matcher.BoundedMatcher; import androidx.test.platform.app.InstrumentationRegistry; import androidx.test.rule.GrantPermissionRule; import com.beemdevelopment.aegis.crypto.CryptoUtils; import com.beemdevelopment.aegis.crypto.SCryptParameters; import com.beemdevelopment.aegis.otp.OtpInfo; +import com.beemdevelopment.aegis.ui.views.EntryHolder; import com.beemdevelopment.aegis.vault.VaultEntry; import com.beemdevelopment.aegis.vault.VaultFileCredentials; import com.beemdevelopment.aegis.vault.VaultManager; @@ -20,6 +24,7 @@ import com.beemdevelopment.aegis.vault.slots.PasswordSlot; import com.beemdevelopment.aegis.vault.slots.SlotException; import com.beemdevelopment.aegis.vectors.VaultEntries; +import org.hamcrest.Description; import org.hamcrest.Matcher; import org.junit.Before; import org.junit.Rule; @@ -178,4 +183,21 @@ public abstract class AegisTest { } }; } + + @NonNull + protected static Matcher withOtpType(Class otpClass) { + return new BoundedMatcher(EntryHolder.class) { + @Override + public boolean matchesSafely(EntryHolder holder) { + return holder != null + && holder.getEntry() != null + && holder.getEntry().getInfo().getClass().equals(otpClass); + } + + @Override + public void describeTo(Description description) { + description.appendText(String.format("with otp type '%s'", otpClass.getSimpleName())); + } + }; + } } diff --git a/app/src/androidTest/java/com/beemdevelopment/aegis/AegisTestRunner.java b/app/src/androidTest/java/com/beemdevelopment/aegis/AegisTestRunner.java index 44c06845..970f9ff0 100644 --- a/app/src/androidTest/java/com/beemdevelopment/aegis/AegisTestRunner.java +++ b/app/src/androidTest/java/com/beemdevelopment/aegis/AegisTestRunner.java @@ -3,8 +3,8 @@ package com.beemdevelopment.aegis; import android.app.Application; import android.app.Instrumentation; import android.content.Context; -import android.preference.PreferenceManager; +import androidx.preference.PreferenceManager; import androidx.test.core.app.ApplicationProvider; import androidx.test.runner.AndroidJUnitRunner; diff --git a/app/src/androidTest/java/com/beemdevelopment/aegis/BackupExportTest.java b/app/src/androidTest/java/com/beemdevelopment/aegis/BackupExportTest.java index 9f15019b..e0151395 100644 --- a/app/src/androidTest/java/com/beemdevelopment/aegis/BackupExportTest.java +++ b/app/src/androidTest/java/com/beemdevelopment/aegis/BackupExportTest.java @@ -61,13 +61,20 @@ import org.junit.Test; import org.junit.rules.RuleChain; import org.junit.rules.TestRule; import org.junit.runner.RunWith; +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; +import org.xmlpull.v1.XmlPullParserFactory; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.nio.charset.StandardCharsets; import java.util.Collection; import java.util.List; +import java.util.Locale; import javax.crypto.Cipher; import javax.crypto.SecretKey; @@ -183,7 +190,9 @@ public class BackupExportTest extends AegisTest { onView(withText(R.string.export_format_html)).inRoot(RootMatchers.isPlatformPopup()).perform(click()); onView(withId(android.R.id.button1)).perform(click()); onView(withId(R.id.checkbox_accept)).perform(click()); - doExport(); + File file = doExport(); + + checkHtmlExport(file); } @Test @@ -196,7 +205,9 @@ public class BackupExportTest extends AegisTest { onView(withText(R.string.export_format_html)).inRoot(RootMatchers.isPlatformPopup()).perform(click()); onView(withId(android.R.id.button1)).perform(click()); onView(withId(R.id.checkbox_accept)).perform(click()); - doExport(); + File file = doExport(); + + checkHtmlExport(file); } @Test @@ -380,6 +391,26 @@ public class BackupExportTest extends AegisTest { checkReadEntries(entries); } + private void checkHtmlExport(File file) { + try (InputStream inStream = new FileInputStream(file)) { + Reader inReader = new InputStreamReader(inStream, StandardCharsets.UTF_8); + XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); + XmlPullParser parser = factory.newPullParser(); + parser.setInput(inReader); + while (parser.getEventType() != XmlPullParser.START_TAG) { + parser.next(); + } + if (!parser.getName().toLowerCase(Locale.ROOT).equals("html")) { + throw new RuntimeException("not an html document!"); + } + while (parser.getEventType() != XmlPullParser.END_DOCUMENT) { + parser.next(); + } + } catch (IOException | XmlPullParserException e) { + throw new RuntimeException("Unable to read html export file", e); + } + } + private void checkReadEntries(Collection entries) { List vectors = VaultEntries.get(); assertEquals(vectors.size(), entries.size()); diff --git a/app/src/androidTest/java/com/beemdevelopment/aegis/OverallTest.java b/app/src/androidTest/java/com/beemdevelopment/aegis/OverallTest.java index 643adb49..016eb5c6 100644 --- a/app/src/androidTest/java/com/beemdevelopment/aegis/OverallTest.java +++ b/app/src/androidTest/java/com/beemdevelopment/aegis/OverallTest.java @@ -1,13 +1,13 @@ package com.beemdevelopment.aegis; import static androidx.test.espresso.Espresso.onView; -import static androidx.test.espresso.Espresso.openActionBarOverflowOrOptionsMenu; import static androidx.test.espresso.Espresso.openContextualActionModeOverflowMenu; import static androidx.test.espresso.action.ViewActions.clearText; import static androidx.test.espresso.action.ViewActions.click; import static androidx.test.espresso.action.ViewActions.closeSoftKeyboard; import static androidx.test.espresso.action.ViewActions.longClick; import static androidx.test.espresso.action.ViewActions.pressBack; +import static androidx.test.espresso.action.ViewActions.scrollTo; import static androidx.test.espresso.action.ViewActions.typeText; import static androidx.test.espresso.matcher.ViewMatchers.hasDescendant; import static androidx.test.espresso.matcher.ViewMatchers.isDescendantOfA; @@ -18,19 +18,17 @@ import static androidx.test.espresso.matcher.ViewMatchers.withText; import static junit.framework.TestCase.assertFalse; import static junit.framework.TestCase.assertNull; import static junit.framework.TestCase.assertTrue; - import static org.hamcrest.Matchers.allOf; import static org.hamcrest.Matchers.containsString; import androidx.annotation.IdRes; -import androidx.test.core.app.ApplicationProvider; +import androidx.recyclerview.widget.RecyclerView; import androidx.test.espresso.ViewInteraction; import androidx.test.espresso.contrib.RecyclerViewActions; import androidx.test.espresso.matcher.RootMatchers; import androidx.test.ext.junit.rules.ActivityScenarioRule; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.LargeTest; -import androidx.test.platform.app.InstrumentationRegistry; import com.beemdevelopment.aegis.encoding.Base32; import com.beemdevelopment.aegis.encoding.Hex; @@ -41,6 +39,7 @@ import com.beemdevelopment.aegis.otp.TotpInfo; import com.beemdevelopment.aegis.otp.YandexInfo; import com.beemdevelopment.aegis.rules.ScreenshotTestRule; import com.beemdevelopment.aegis.ui.MainActivity; +import com.beemdevelopment.aegis.ui.views.EntryAdapter; import com.beemdevelopment.aegis.vault.VaultEntry; import com.beemdevelopment.aegis.vault.VaultRepository; import com.beemdevelopment.aegis.vault.slots.PasswordSlot; @@ -55,6 +54,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; +import java.util.concurrent.atomic.AtomicBoolean; import dagger.hilt.android.testing.HiltAndroidTest; @@ -104,19 +104,26 @@ public class OverallTest extends AegisTest { } for (int i = 0; i < 10; i++) { - onView(withId(R.id.rvKeyProfiles)).perform(RecyclerViewActions.actionOnItemAtPosition(1, clickChildViewWithId(R.id.buttonRefresh))); + onView(withId(R.id.rvKeyProfiles)).perform(RecyclerViewActions.actionOnHolderItem(withOtpType(HotpInfo.class), clickChildViewWithId(R.id.buttonRefresh))); } - onView(withId(R.id.rvKeyProfiles)).perform(RecyclerViewActions.actionOnItemAtPosition(0, longClick())); + AtomicBoolean isErrorCardShown = new AtomicBoolean(false); + _activityRule.getScenario().onActivity(activity -> { + isErrorCardShown.set(((EntryAdapter)((RecyclerView) activity.findViewById(R.id.rvKeyProfiles)).getAdapter()).isErrorCardShown()); + }); + + int entryPosOffset = isErrorCardShown.get() ? 1 : 0; + onView(withId(R.id.rvKeyProfiles)).perform(RecyclerViewActions.actionOnItemAtPosition(entryPosOffset + 0, longClick())); onView(withId(R.id.action_copy)).perform(click()); - onView(withId(R.id.rvKeyProfiles)).perform(RecyclerViewActions.actionOnItemAtPosition(1, longClick())); + onView(withId(R.id.rvKeyProfiles)).perform(RecyclerViewActions.actionOnItemAtPosition(entryPosOffset + 1, longClick())); onView(withId(R.id.action_edit)).perform(click()); onView(withId(R.id.text_name)).perform(clearText(), typeText("Bob"), closeSoftKeyboard()); - onView(withId(R.id.dropdown_group)).perform(click()); - onView(withText(R.string.new_group)).inRoot(RootMatchers.isPlatformPopup()).perform(click()); + onView(withId(R.id.text_group)).perform(click()); + onView(withId(R.id.addGroup)).inRoot(RootMatchers.isDialog()).perform(click()); onView(withId(R.id.text_input)).perform(typeText(_groupName), closeSoftKeyboard()); onView(withId(android.R.id.button1)).perform(click()); + onView(withText(R.string.save)).perform(click()); onView(isRoot()).perform(pressBack()); onView(withId(android.R.id.button1)).perform(click()); @@ -129,13 +136,13 @@ public class OverallTest extends AegisTest { changeGroupFilter(_groupName); changeGroupFilter(null); - onView(withId(R.id.rvKeyProfiles)).perform(RecyclerViewActions.actionOnItemAtPosition(2, longClick())); - onView(withId(R.id.rvKeyProfiles)).perform(RecyclerViewActions.actionOnItemAtPosition(3, click())); - onView(withId(R.id.rvKeyProfiles)).perform(RecyclerViewActions.actionOnItemAtPosition(4, click())); + onView(withId(R.id.rvKeyProfiles)).perform(RecyclerViewActions.actionOnItemAtPosition(entryPosOffset + 2, longClick())); + onView(withId(R.id.rvKeyProfiles)).perform(RecyclerViewActions.actionOnItemAtPosition(entryPosOffset + 3, click())); + onView(withId(R.id.rvKeyProfiles)).perform(RecyclerViewActions.actionOnItemAtPosition(entryPosOffset + 4, click())); onView(withId(R.id.action_share_qr)).perform(click()); onView(withId(R.id.btnNext)).perform(click()).perform(click()).perform(click()); - onView(withId(R.id.rvKeyProfiles)).perform(RecyclerViewActions.actionOnItemAtPosition(0, longClick())); + onView(withId(R.id.rvKeyProfiles)).perform(RecyclerViewActions.actionOnItemAtPosition(entryPosOffset + 0, longClick())); onView(allOf(isDescendantOfA(withClassName(containsString("ActionBarContextView"))), withClassName(containsString("OverflowMenuButton")))).perform(click()); onView(withText(R.string.action_delete)).perform(click()); onView(withId(android.R.id.button1)).perform(click()); @@ -170,12 +177,10 @@ public class OverallTest extends AegisTest { } private void changeGroupFilter(String text) { - onView(withId(R.id.chip_group)).perform(click()); if (text == null) { - onView(withId(R.id.btnClear)).perform(click()); + onView(allOf(withText(R.string.no_group), isDescendantOfA(withId(R.id.groupChipGroup)))).perform(click()); } else { - onView(withText(text)).perform(click()); - onView(isRoot()).perform(pressBack()); + onView(allOf(withText(text), isDescendantOfA(withId(R.id.groupChipGroup)))).perform(click()); } } @@ -183,7 +188,7 @@ public class OverallTest extends AegisTest { onView(withId(R.id.fab)).perform(click()); onView(withId(R.id.fab_enter)).perform(click()); - onView(withId(R.id.accordian_header)).perform(click()); + onView(withId(R.id.accordian_header)).perform(scrollTo(), click()); onView(withId(R.id.text_name)).perform(typeText(entry.getName()), closeSoftKeyboard()); onView(withId(R.id.text_issuer)).perform(typeText(entry.getIssuer()), closeSoftKeyboard()); @@ -203,7 +208,7 @@ public class OverallTest extends AegisTest { throw new RuntimeException(String.format("Unexpected entry type: %s", entry.getInfo().getClass().getSimpleName())); } - onView(withId(R.id.dropdown_type)).perform(click()); + onView(withId(R.id.dropdown_type)).perform(scrollTo(), click()); onView(withText(otpType)).inRoot(RootMatchers.isPlatformPopup()).perform(click()); } diff --git a/app/src/androidTest/java/com/beemdevelopment/aegis/PanicTriggerTest.java b/app/src/androidTest/java/com/beemdevelopment/aegis/PanicTriggerTest.java index 4a16356c..39feca57 100644 --- a/app/src/androidTest/java/com/beemdevelopment/aegis/PanicTriggerTest.java +++ b/app/src/androidTest/java/com/beemdevelopment/aegis/PanicTriggerTest.java @@ -1,7 +1,6 @@ package com.beemdevelopment.aegis; import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; @@ -32,11 +31,10 @@ public class PanicTriggerTest extends AegisTest { @Test public void testPanicTriggerDisabled() { assertFalse(_prefs.isPanicTriggerEnabled()); + assertTrue(_vaultManager.isVaultLoaded()); launchPanic(); assertTrue(_vaultManager.isVaultLoaded()); _vaultManager.getVault(); - assertFalse(_vaultManager.isVaultFileLoaded()); - assertNull(_vaultManager.getVaultFileError()); assertTrue(VaultRepository.fileExists(getApp())); } @@ -44,11 +42,10 @@ public class PanicTriggerTest extends AegisTest { public void testPanicTriggerEnabled() { _prefs.setIsPanicTriggerEnabled(true); assertTrue(_prefs.isPanicTriggerEnabled()); + assertTrue(_vaultManager.isVaultLoaded()); launchPanic(); assertFalse(_vaultManager.isVaultLoaded()); assertThrows(IllegalStateException.class, () -> _vaultManager.getVault()); - assertFalse(_vaultManager.isVaultFileLoaded()); - assertNull(_vaultManager.getVaultFileError()); assertFalse(VaultRepository.fileExists(getApp())); } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 724e935c..09337184 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,6 +4,7 @@ + - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/color/disabled_textview_colors.xml b/app/src/main/res/color/disabled_textview_colors.xml deleted file mode 100644 index adbd5b7e..00000000 --- a/app/src/main/res/color/disabled_textview_colors.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/color/text_input_box_icon_dark.xml b/app/src/main/res/color/text_input_box_icon_dark.xml deleted file mode 100644 index be0cce59..00000000 --- a/app/src/main/res/color/text_input_box_icon_dark.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/color/text_input_box_stroke_dark.xml b/app/src/main/res/color/text_input_box_stroke_dark.xml deleted file mode 100644 index 378a7381..00000000 --- a/app/src/main/res/color/text_input_box_stroke_dark.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/app/src/main/res/drawable-anydpi/ic_action_sort.xml b/app/src/main/res/drawable-anydpi/ic_action_sort.xml deleted file mode 100644 index ef66d1c4..00000000 --- a/app/src/main/res/drawable-anydpi/ic_action_sort.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/app/src/main/res/drawable-anydpi/ic_set_favorite.xml b/app/src/main/res/drawable-anydpi/ic_set_favorite.xml deleted file mode 100644 index 13942be1..00000000 --- a/app/src/main/res/drawable-anydpi/ic_set_favorite.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable-anydpi/ic_unset_favorite.xml b/app/src/main/res/drawable-anydpi/ic_unset_favorite.xml deleted file mode 100644 index 7752b92f..00000000 --- a/app/src/main/res/drawable-anydpi/ic_unset_favorite.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable-hdpi/ic_action_sort.png b/app/src/main/res/drawable-hdpi/ic_action_sort.png deleted file mode 100644 index fe9573f4..00000000 Binary files a/app/src/main/res/drawable-hdpi/ic_action_sort.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_action_sort.png b/app/src/main/res/drawable-mdpi/ic_action_sort.png deleted file mode 100644 index a9588ed3..00000000 Binary files a/app/src/main/res/drawable-mdpi/ic_action_sort.png and /dev/null differ diff --git a/app/src/main/res/drawable-v24/ic_launcher_background.xml b/app/src/main/res/drawable-v24/ic_launcher_background.xml deleted file mode 100644 index fd4e36ba..00000000 --- a/app/src/main/res/drawable-v24/ic_launcher_background.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable-v24/rounded_dialog.xml b/app/src/main/res/drawable-v24/rounded_dialog.xml deleted file mode 100644 index bd708710..00000000 --- a/app/src/main/res/drawable-v24/rounded_dialog.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/app/src/main/res/drawable-xhdpi/ic_action_sort.png b/app/src/main/res/drawable-xhdpi/ic_action_sort.png deleted file mode 100644 index 2184723d..00000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_action_sort.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_sort.png b/app/src/main/res/drawable-xxhdpi/ic_action_sort.png deleted file mode 100644 index ca1da315..00000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_action_sort.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_plus_black_24dp.xml b/app/src/main/res/drawable/baseline_arrow_right_24.xml similarity index 50% rename from app/src/main/res/drawable/ic_plus_black_24dp.xml rename to app/src/main/res/drawable/baseline_arrow_right_24.xml index ddd6dfe6..0c739cb2 100644 --- a/app/src/main/res/drawable/ic_plus_black_24dp.xml +++ b/app/src/main/res/drawable/baseline_arrow_right_24.xml @@ -1,7 +1,11 @@ - + diff --git a/app/src/main/res/drawable/circular_button_background.xml b/app/src/main/res/drawable/circular_button_background.xml deleted file mode 100644 index dd746464..00000000 --- a/app/src/main/res/drawable/circular_button_background.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/circular_button_done.xml b/app/src/main/res/drawable/circular_button_done.xml deleted file mode 100644 index 9b2563eb..00000000 --- a/app/src/main/res/drawable/circular_button_done.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/circular_button_next.xml b/app/src/main/res/drawable/circular_button_next.xml deleted file mode 100644 index 36065dc7..00000000 --- a/app/src/main/res/drawable/circular_button_next.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/circular_button_prev.xml b/app/src/main/res/drawable/circular_button_prev.xml deleted file mode 100644 index 4fc70293..00000000 --- a/app/src/main/res/drawable/circular_button_prev.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/drag_handle.xml b/app/src/main/res/drawable/drag_handle.xml deleted file mode 100644 index 2a8df473..00000000 --- a/app/src/main/res/drawable/drag_handle.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/drawable/fab_label_background.xml b/app/src/main/res/drawable/fab_label_background.xml deleted file mode 100644 index 908cf84a..00000000 --- a/app/src/main/res/drawable/fab_label_background.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/app/src/main/res/drawable/button_rounded_corners.xml b/app/src/main/res/drawable/favorite_indicator.xml similarity index 52% rename from app/src/main/res/drawable/button_rounded_corners.xml rename to app/src/main/res/drawable/favorite_indicator.xml index 20b385ab..ae283bcd 100644 --- a/app/src/main/res/drawable/button_rounded_corners.xml +++ b/app/src/main/res/drawable/favorite_indicator.xml @@ -2,9 +2,8 @@ - - - + + diff --git a/app/src/main/res/drawable/ic_add_black_24dp.xml b/app/src/main/res/drawable/ic_add_black_24dp.xml deleted file mode 100644 index 0258249c..00000000 --- a/app/src/main/res/drawable/ic_add_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_add_photo_24px.xml b/app/src/main/res/drawable/ic_add_photo_24px.xml deleted file mode 100644 index f7f4a1ea..00000000 --- a/app/src/main/res/drawable/ic_add_photo_24px.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_alert_black_24dp.xml b/app/src/main/res/drawable/ic_alert_black_24dp.xml deleted file mode 100644 index 6ed4cfd7..00000000 --- a/app/src/main/res/drawable/ic_alert_black_24dp.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/ic_android.xml b/app/src/main/res/drawable/ic_android.xml deleted file mode 100644 index af157bd9..00000000 --- a/app/src/main/res/drawable/ic_android.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_arrow_left_black_24dp.xml b/app/src/main/res/drawable/ic_arrow_left_black_24dp.xml deleted file mode 100644 index aff49cb5..00000000 --- a/app/src/main/res/drawable/ic_arrow_left_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_arrow_right_black_24dp.xml b/app/src/main/res/drawable/ic_arrow_right_black_24dp.xml deleted file mode 100644 index 461a6018..00000000 --- a/app/src/main/res/drawable/ic_arrow_right_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_baseline_fiber_pin_24.xml b/app/src/main/res/drawable/ic_baseline_fiber_pin_24.xml deleted file mode 100644 index 957a249f..00000000 --- a/app/src/main/res/drawable/ic_baseline_fiber_pin_24.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_baseline_filter_list_24dp.xml b/app/src/main/res/drawable/ic_baseline_filter_list_24dp.xml deleted file mode 100644 index 997895c9..00000000 --- a/app/src/main/res/drawable/ic_baseline_filter_list_24dp.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/ic_baseline_menu_black_32.xml b/app/src/main/res/drawable/ic_baseline_menu_black_32.xml deleted file mode 100644 index cde3883c..00000000 --- a/app/src/main/res/drawable/ic_baseline_menu_black_32.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_baseline_notes_black_24.xml b/app/src/main/res/drawable/ic_baseline_notes_black_24.xml deleted file mode 100644 index c1925c7d..00000000 --- a/app/src/main/res/drawable/ic_baseline_notes_black_24.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_brush_black_24dp.xml b/app/src/main/res/drawable/ic_brush_black_24dp.xml deleted file mode 100644 index 913e34cf..00000000 --- a/app/src/main/res/drawable/ic_brush_black_24dp.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera_front_24dp.xml b/app/src/main/res/drawable/ic_camera_front_24dp.xml deleted file mode 100644 index 0f70d89b..00000000 --- a/app/src/main/res/drawable/ic_camera_front_24dp.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_camera_rear_24dp.xml b/app/src/main/res/drawable/ic_camera_rear_24dp.xml deleted file mode 100644 index 1c9724b0..00000000 --- a/app/src/main/res/drawable/ic_camera_rear_24dp.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_check_black_24dp.xml b/app/src/main/res/drawable/ic_check_black_24dp.xml deleted file mode 100644 index d986bb97..00000000 --- a/app/src/main/res/drawable/ic_check_black_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_chevron_down_black_24dp.xml b/app/src/main/res/drawable/ic_chevron_down_black_24dp.xml deleted file mode 100644 index 73334a0e..00000000 --- a/app/src/main/res/drawable/ic_chevron_down_black_24dp.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_close.xml b/app/src/main/res/drawable/ic_close.xml deleted file mode 100644 index b5c7319f..00000000 --- a/app/src/main/res/drawable/ic_close.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/ic_cloud_upload_outline_black_24dp.xml b/app/src/main/res/drawable/ic_cloud_upload_outline_black_24dp.xml deleted file mode 100644 index 50f2f687..00000000 --- a/app/src/main/res/drawable/ic_cloud_upload_outline_black_24dp.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_content_copy_white_24dp.xml b/app/src/main/res/drawable/ic_content_copy_white_24dp.xml deleted file mode 100644 index 1e689ac6..00000000 --- a/app/src/main/res/drawable/ic_content_copy_white_24dp.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/ic_counter_black_24dp.xml b/app/src/main/res/drawable/ic_counter_black_24.xml similarity index 90% rename from app/src/main/res/drawable/ic_counter_black_24dp.xml rename to app/src/main/res/drawable/ic_counter_black_24.xml index 30ac856e..885620b9 100644 --- a/app/src/main/res/drawable/ic_counter_black_24dp.xml +++ b/app/src/main/res/drawable/ic_counter_black_24.xml @@ -2,6 +2,7 @@ android:height="24dp" android:width="24dp" android:viewportWidth="24" - android:viewportHeight="24"> + android:viewportHeight="24" + android:tint="?attr/colorControlNormal"> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_create_black_24dp.xml b/app/src/main/res/drawable/ic_create_black_24dp.xml deleted file mode 100644 index 2ab2fb75..00000000 --- a/app/src/main/res/drawable/ic_create_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_delete_black_24dp.xml b/app/src/main/res/drawable/ic_delete_black_24dp.xml deleted file mode 100644 index 39e64d69..00000000 --- a/app/src/main/res/drawable/ic_delete_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_delete_white.xml b/app/src/main/res/drawable/ic_delete_white.xml deleted file mode 100644 index 8bed121a..00000000 --- a/app/src/main/res/drawable/ic_delete_white.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_done_all_black_24dp.xml b/app/src/main/res/drawable/ic_done_all_black_24dp.xml deleted file mode 100644 index dfe4814d..00000000 --- a/app/src/main/res/drawable/ic_done_all_black_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_done_black_24dp.xml b/app/src/main/res/drawable/ic_done_black_24dp.xml deleted file mode 100644 index 7affe9ba..00000000 --- a/app/src/main/res/drawable/ic_done_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dots_vertical_black_24dp.xml b/app/src/main/res/drawable/ic_dots_vertical_black_24dp.xml deleted file mode 100644 index 9a6a9845..00000000 --- a/app/src/main/res/drawable/ic_dots_vertical_black_24dp.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_export_notes.xml b/app/src/main/res/drawable/ic_export_notes.xml new file mode 100644 index 00000000..839aae1d --- /dev/null +++ b/app/src/main/res/drawable/ic_export_notes.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_filled_star_24.xml b/app/src/main/res/drawable/ic_filled_star_24.xml new file mode 100644 index 00000000..1172be74 --- /dev/null +++ b/app/src/main/res/drawable/ic_filled_star_24.xml @@ -0,0 +1,8 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_fingerprint_black_24dp.xml b/app/src/main/res/drawable/ic_fingerprint_black_24dp.xml deleted file mode 100644 index d0f76e34..00000000 --- a/app/src/main/res/drawable/ic_fingerprint_black_24dp.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_folder_zip.xml b/app/src/main/res/drawable/ic_folder_zip.xml new file mode 100644 index 00000000..aab56560 --- /dev/null +++ b/app/src/main/res/drawable/ic_folder_zip.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_gesture_tap_24dp.xml b/app/src/main/res/drawable/ic_gesture_tap_24dp.xml deleted file mode 100644 index 0bd74d8b..00000000 --- a/app/src/main/res/drawable/ic_gesture_tap_24dp.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_info_outline_black_24dp.xml b/app/src/main/res/drawable/ic_info_outline_black_24dp.xml deleted file mode 100644 index ab95f29e..00000000 --- a/app/src/main/res/drawable/ic_info_outline_black_24dp.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - diff --git a/app/src/main/res/drawable/ic_keyboard_arrow_down_black_24dp.xml b/app/src/main/res/drawable/ic_keyboard_arrow_down_black_24dp.xml deleted file mode 100644 index ad33063c..00000000 --- a/app/src/main/res/drawable/ic_keyboard_arrow_down_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml deleted file mode 100644 index c7bd21db..00000000 --- a/app/src/main/res/drawable/ic_launcher_foreground.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_layers_black_24dp.xml b/app/src/main/res/drawable/ic_layers_black_24dp.xml deleted file mode 100644 index 84f5bb50..00000000 --- a/app/src/main/res/drawable/ic_layers_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_lock.xml b/app/src/main/res/drawable/ic_lock.xml index 1987c062..96617192 100644 --- a/app/src/main/res/drawable/ic_lock.xml +++ b/app/src/main/res/drawable/ic_lock.xml @@ -1,5 +1,5 @@ - - - + + diff --git a/app/src/main/res/drawable/ic_lock_open.xml b/app/src/main/res/drawable/ic_lock_open.xml new file mode 100644 index 00000000..e2cec03e --- /dev/null +++ b/app/src/main/res/drawable/ic_lock_open.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_mode_edit.xml b/app/src/main/res/drawable/ic_mode_edit.xml deleted file mode 100644 index 46462b57..00000000 --- a/app/src/main/res/drawable/ic_mode_edit.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_outline_add_24.xml b/app/src/main/res/drawable/ic_outline_add_24.xml new file mode 100644 index 00000000..40c23537 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_add_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_add_photo_alternate_24.xml b/app/src/main/res/drawable/ic_outline_add_photo_alternate_24.xml new file mode 100644 index 00000000..93980c52 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_add_photo_alternate_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_android_24.xml b/app/src/main/res/drawable/ic_outline_android_24.xml new file mode 100644 index 00000000..f2c7005d --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_android_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_arrow_left_alt_24.xml b/app/src/main/res/drawable/ic_outline_arrow_left_alt_24.xml new file mode 100644 index 00000000..88603a45 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_arrow_left_alt_24.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_arrow_right_alt_24.xml b/app/src/main/res/drawable/ic_outline_arrow_right_alt_24.xml new file mode 100644 index 00000000..aff8e219 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_arrow_right_alt_24.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_brush_24.xml b/app/src/main/res/drawable/ic_outline_brush_24.xml new file mode 100644 index 00000000..4ba51513 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_brush_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_camera_front_24.xml b/app/src/main/res/drawable/ic_outline_camera_front_24.xml new file mode 100644 index 00000000..2dc5475b --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_camera_front_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_camera_rear_24.xml b/app/src/main/res/drawable/ic_outline_camera_rear_24.xml new file mode 100644 index 00000000..c4e7cb02 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_camera_rear_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_check_24.xml b/app/src/main/res/drawable/ic_outline_check_24.xml new file mode 100644 index 00000000..034ea238 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_check_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_close_24.xml b/app/src/main/res/drawable/ic_outline_close_24.xml new file mode 100644 index 00000000..fe302f56 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_close_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_cloud_upload_24.xml b/app/src/main/res/drawable/ic_outline_cloud_upload_24.xml new file mode 100644 index 00000000..87071b00 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_cloud_upload_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_code_24.xml b/app/src/main/res/drawable/ic_outline_code_24.xml new file mode 100644 index 00000000..b1c70298 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_code_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_construction_24.xml b/app/src/main/res/drawable/ic_outline_construction_24.xml new file mode 100644 index 00000000..2d6a3d3b --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_construction_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_content_copy_24.xml b/app/src/main/res/drawable/ic_outline_content_copy_24.xml new file mode 100644 index 00000000..be8d9ba9 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_content_copy_24.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_delete_24.xml b/app/src/main/res/drawable/ic_outline_delete_24.xml new file mode 100644 index 00000000..d7de5795 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_delete_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_description_24.xml b/app/src/main/res/drawable/ic_outline_description_24.xml new file mode 100644 index 00000000..54604506 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_description_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_done_all_24.xml b/app/src/main/res/drawable/ic_outline_done_all_24.xml new file mode 100644 index 00000000..646f4c5f --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_done_all_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_edit_24.xml b/app/src/main/res/drawable/ic_outline_edit_24.xml new file mode 100644 index 00000000..ce76cb6d --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_edit_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_error_24.xml b/app/src/main/res/drawable/ic_outline_error_24.xml new file mode 100644 index 00000000..4d0faf6e --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_error_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_expand_more_24.xml b/app/src/main/res/drawable/ic_outline_expand_more_24.xml new file mode 100644 index 00000000..fff246ca --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_expand_more_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_fiber_pin_24.xml b/app/src/main/res/drawable/ic_outline_fiber_pin_24.xml new file mode 100644 index 00000000..25eb5f1d --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_fiber_pin_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_group_24.xml b/app/src/main/res/drawable/ic_outline_group_24.xml new file mode 100644 index 00000000..5c60ea3e --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_group_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_history_24.xml b/app/src/main/res/drawable/ic_outline_history_24.xml new file mode 100644 index 00000000..f6a2288f --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_history_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_info_24.xml b/app/src/main/res/drawable/ic_outline_info_24.xml new file mode 100644 index 00000000..4b939194 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_info_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_key_24.xml b/app/src/main/res/drawable/ic_outline_key_24.xml new file mode 100644 index 00000000..c2890642 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_key_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_layers_24.xml b/app/src/main/res/drawable/ic_outline_layers_24.xml new file mode 100644 index 00000000..89074479 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_layers_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_lock_24.xml b/app/src/main/res/drawable/ic_outline_lock_24.xml new file mode 100644 index 00000000..cbf45968 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_lock_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_mail_24.xml b/app/src/main/res/drawable/ic_outline_mail_24.xml new file mode 100644 index 00000000..62da4745 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_mail_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_menu_24.xml b/app/src/main/res/drawable/ic_outline_menu_24.xml new file mode 100644 index 00000000..b33cfc1f --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_menu_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_more_vert_24.xml b/app/src/main/res/drawable/ic_outline_more_vert_24.xml new file mode 100644 index 00000000..1ff4b01a --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_more_vert_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_notes_24.xml b/app/src/main/res/drawable/ic_outline_notes_24.xml new file mode 100644 index 00000000..0b9beb2d --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_notes_24.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_package_variant_24.xml b/app/src/main/res/drawable/ic_outline_package_variant_24.xml new file mode 100644 index 00000000..a87b00d0 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_package_variant_24.xml @@ -0,0 +1,10 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_outline_person_24.xml b/app/src/main/res/drawable/ic_outline_person_24.xml new file mode 100644 index 00000000..c1a494a4 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_person_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_public_24.xml b/app/src/main/res/drawable/ic_outline_public_24.xml new file mode 100644 index 00000000..5f047654 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_public_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_qr_code_2_24.xml b/app/src/main/res/drawable/ic_outline_qr_code_2_24.xml new file mode 100644 index 00000000..ba2653ea --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_qr_code_2_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_refresh_24.xml b/app/src/main/res/drawable/ic_outline_refresh_24.xml new file mode 100644 index 00000000..c70bd4e6 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_refresh_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_reset_image_24.xml b/app/src/main/res/drawable/ic_outline_reset_image_24.xml new file mode 100644 index 00000000..76050c2e --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_reset_image_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_sort_24.xml b/app/src/main/res/drawable/ic_outline_sort_24.xml new file mode 100644 index 00000000..955f3c64 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_sort_24.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_star_24.xml b/app/src/main/res/drawable/ic_outline_star_24.xml new file mode 100644 index 00000000..7757a988 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_star_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_touch_app_24.xml b/app/src/main/res/drawable/ic_outline_touch_app_24.xml new file mode 100644 index 00000000..d9046698 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_touch_app_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_warning_24.xml b/app/src/main/res/drawable/ic_outline_warning_24.xml new file mode 100644 index 00000000..f53029a6 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_warning_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_package_variant_black_24dp.xml b/app/src/main/res/drawable/ic_package_variant_black_24dp.xml deleted file mode 100644 index ee927181..00000000 --- a/app/src/main/res/drawable/ic_package_variant_black_24dp.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_person_black_24dp.xml b/app/src/main/res/drawable/ic_person_black_24dp.xml deleted file mode 100644 index b2cb337b..00000000 --- a/app/src/main/res/drawable/ic_person_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_qr_code_full.xml b/app/src/main/res/drawable/ic_qr_code_full.xml deleted file mode 100644 index 9b5e128f..00000000 --- a/app/src/main/res/drawable/ic_qr_code_full.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_qrcode_scan.xml b/app/src/main/res/drawable/ic_qrcode_scan.xml index ee1670e0..69281097 100644 --- a/app/src/main/res/drawable/ic_qrcode_scan.xml +++ b/app/src/main/res/drawable/ic_qrcode_scan.xml @@ -1,8 +1,11 @@ - + diff --git a/app/src/main/res/drawable/ic_refresh_black_24dp.xml b/app/src/main/res/drawable/ic_refresh_black_24dp.xml deleted file mode 100644 index 5e434f43..00000000 --- a/app/src/main/res/drawable/ic_refresh_black_24dp.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_share.xml b/app/src/main/res/drawable/ic_share.xml new file mode 100644 index 00000000..27610432 --- /dev/null +++ b/app/src/main/res/drawable/ic_share.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_tag_24.xml b/app/src/main/res/drawable/ic_tag_24.xml new file mode 100644 index 00000000..66360540 --- /dev/null +++ b/app/src/main/res/drawable/ic_tag_24.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_timeline_24.xml b/app/src/main/res/drawable/ic_timeline_24.xml new file mode 100644 index 00000000..1657a3a7 --- /dev/null +++ b/app/src/main/res/drawable/ic_timeline_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_tools_black_24dp.xml b/app/src/main/res/drawable/ic_tools_black_24dp.xml deleted file mode 100644 index 42af86dd..00000000 --- a/app/src/main/res/drawable/ic_tools_black_24dp.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_unselected.xml b/app/src/main/res/drawable/ic_unselected.xml new file mode 100644 index 00000000..5ea9582f --- /dev/null +++ b/app/src/main/res/drawable/ic_unselected.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/ic_vpn_key_black_24dp.xml b/app/src/main/res/drawable/ic_vpn_key_black_24dp.xml deleted file mode 100644 index 2eddd16f..00000000 --- a/app/src/main/res/drawable/ic_vpn_key_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/item_selected.xml b/app/src/main/res/drawable/item_selected.xml index 040cdcbe..8e17b320 100644 --- a/app/src/main/res/drawable/item_selected.xml +++ b/app/src/main/res/drawable/item_selected.xml @@ -9,4 +9,4 @@ > - + \ No newline at end of file diff --git a/app/src/main/res/drawable/progress_horizontal.xml b/app/src/main/res/drawable/progress_horizontal.xml index d4abd09d..f6b62766 100644 --- a/app/src/main/res/drawable/progress_horizontal.xml +++ b/app/src/main/res/drawable/progress_horizontal.xml @@ -1,10 +1,14 @@ - + - + + - + - \ No newline at end of file diff --git a/app/src/main/res/drawable/rounded_popup.xml b/app/src/main/res/drawable/rounded_popup.xml new file mode 100644 index 00000000..1a3e3c4e --- /dev/null +++ b/app/src/main/res/drawable/rounded_popup.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml index 2caa4ad2..d4b17d0b 100644 --- a/app/src/main/res/layout/activity_about.xml +++ b/app/src/main/res/layout/activity_about.xml @@ -4,19 +4,20 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="?attr/background" + android:fitsSystemWindows="true" tools:context="com.beemdevelopment.aegis.ui.AboutActivity"> - + + android:layout_height="?attr/actionBarSize" /> + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_auth.xml b/app/src/main/res/layout/activity_auth.xml index 6476e9b0..45e4ae12 100644 --- a/app/src/main/res/layout/activity_auth.xml +++ b/app/src/main/res/layout/activity_auth.xml @@ -5,15 +5,14 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" + android:fitsSystemWindows="true" tools:context="com.beemdevelopment.aegis.ui.AuthActivity"> + android:textSize="32sp"/> + app:passwordToggleTint="?attr/colorOnSurface"> + android:text="@string/unlock" /> @@ -109,10 +101,11 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|center" - android:textStyle="bold" - android:textAllCaps="true" android:text="@string/app_name_full" - android:paddingVertical="50dp" - android:textColor="@color/divider" /> + android:textSize="15sp" + android:textAllCaps="true" + android:textStyle="bold" + android:textColor="?attr/colorOnSurfaceDim" + android:paddingVertical="50dp" /> diff --git a/app/src/main/res/layout/activity_edit_entry.xml b/app/src/main/res/layout/activity_edit_entry.xml index 0991bf06..e9f19027 100644 --- a/app/src/main/res/layout/activity_edit_entry.xml +++ b/app/src/main/res/layout/activity_edit_entry.xml @@ -1,263 +1,280 @@ - - + + android:layout_height="?attr/actionBarSize" /> - - + - - - - - - - - - - - - - + android:layout_height="match_parent" + android:clipToPadding="false" + android:isScrollContainer="true" + app:layout_behavior="@string/appbar_scrolling_view_behavior"> - + + - + + + + - - + + - - + android:layout_gravity="bottom|end" + android:layout_margin="15dp" + android:src="@drawable/ic_outline_check_24" + app:tint="?attr/colorOnSurface" /> + + + + + - + + + + + + + - + - - + + + + + - + - + android:src="@drawable/ic_outline_group_24" + app:tint="?attr/colorOnSurface" + android:layout_marginStart="5dp" + android:layout_marginEnd="15dp" + android:layout_gravity="center_vertical"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + - + android:id="@+id/accordian_header" + android:focusable="true" + android:clickable="true"> + - - - - - - + + + android:layout_alignParentTop="true" + android:layout_toEndOf="@+id/down_btn" + android:padding="16dp" + android:text="@string/advanced" + android:textStyle="bold" /> - - - - - - - - - - - - - - - - - - - - - - - + @@ -352,8 +369,8 @@ @@ -378,8 +395,19 @@ + - - - - + + + + + + diff --git a/app/src/main/res/layout/activity_groups.xml b/app/src/main/res/layout/activity_groups.xml index 427d5e4e..c9226446 100644 --- a/app/src/main/res/layout/activity_groups.xml +++ b/app/src/main/res/layout/activity_groups.xml @@ -4,37 +4,25 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="?attr/background" + android:fitsSystemWindows="true" tools:context="com.beemdevelopment.aegis.ui.GroupManagerActivity"> - + + android:layout_height="?attr/actionBarSize" /> - - - - - - - + android:layout_width="match_parent" + app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" /> + android:src="@drawable/ic_outline_layers_24" /> - + + android:layout_height="?attr/actionBarSize" /> @@ -35,6 +33,5 @@ android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin" - android:src="@drawable/ic_check_black_24dp" - app:tint="@color/icon_primary_dark" /> + android:src="@drawable/ic_outline_check_24" /> diff --git a/app/src/main/res/layout/activity_intro.xml b/app/src/main/res/layout/activity_intro.xml index 79600e46..e2e4b8cc 100644 --- a/app/src/main/res/layout/activity_intro.xml +++ b/app/src/main/res/layout/activity_intro.xml @@ -5,7 +5,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="?attr/background" + android:fitsSystemWindows="true" tools:context="com.beemdevelopment.aegis.ui.IntroActivity"> - + app:layout_constraintStart_toStartOf="parent" + style="@style/Widget.Material3.Button.IconButton.Filled.Tonal" /> - + app:layout_constraintEnd_toEndOf="parent" + style="@style/Widget.Material3.Button.IconButton.Filled.Tonal" /> diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index f2b26f43..b2ca2d00 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,68 +1,62 @@ - - + + + android:layout_height="?attr/actionBarSize" /> + + + + + + + + + - - - - - - - - + android:orientation="vertical" + app:layout_behavior="@string/appbar_scrolling_view_behavior"> + android:layout_height="fill_parent" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + android:src="@drawable/ic_outline_add_24" /> diff --git a/app/src/main/res/layout/activity_preferences.xml b/app/src/main/res/layout/activity_preferences.xml index b16858f8..3dc74edf 100644 --- a/app/src/main/res/layout/activity_preferences.xml +++ b/app/src/main/res/layout/activity_preferences.xml @@ -1,22 +1,24 @@ - + xmlns:app="http://schemas.android.com/apk/res-auto" + android:orientation="vertical" + android:fitsSystemWindows="true"> - + + android:layout_height="?attr/actionBarSize" /> - + android:layout_height="match_parent" + android:isScrollContainer="true" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + diff --git a/app/src/main/res/layout/activity_scanner.xml b/app/src/main/res/layout/activity_scanner.xml index 2516c89a..29b4ed7e 100644 --- a/app/src/main/res/layout/activity_scanner.xml +++ b/app/src/main/res/layout/activity_scanner.xml @@ -1,36 +1,31 @@ - - + + android:layout_height="?attr/actionBarSize" + app:titleTextColor="?attr/colorOnDark" /> + android:layout_height="match_parent" /> - + diff --git a/app/src/main/res/layout/activity_share_entry.xml b/app/src/main/res/layout/activity_share_entry.xml index 9044a0ec..455f3356 100644 --- a/app/src/main/res/layout/activity_share_entry.xml +++ b/app/src/main/res/layout/activity_share_entry.xml @@ -1,132 +1,135 @@ - - + + + android:layout_height="?attr/actionBarSize" /> + - + - + - + - + - + -