From 2eb6695d5aa0f41ad0f96d5fa5230d63d4cf623b Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 20 Jan 2026 08:20:15 +0900 Subject: [PATCH 1/6] =?UTF-8?q?about-libraries=E5=B0=8E=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AndroidApp/.idea/kotlinc.xml | 2 +- AndroidApp/app/build.gradle.kts | 2 ++ AndroidApp/build.gradle.kts | 1 + AndroidApp/gradle/libs.versions.toml | 10 +++++++++- AndroidApp/ui/build.gradle.kts | 2 ++ 5 files changed, 15 insertions(+), 2 deletions(-) diff --git a/AndroidApp/.idea/kotlinc.xml b/AndroidApp/.idea/kotlinc.xml index 8ad8c861..03fcfb7b 100644 --- a/AndroidApp/.idea/kotlinc.xml +++ b/AndroidApp/.idea/kotlinc.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/AndroidApp/app/build.gradle.kts b/AndroidApp/app/build.gradle.kts index cf3c389e..f57641e8 100644 --- a/AndroidApp/app/build.gradle.kts +++ b/AndroidApp/app/build.gradle.kts @@ -1,5 +1,6 @@ plugins { id("common.android") + alias(libs.plugins.about.libraries) } android { @@ -26,4 +27,5 @@ dependencies { // その他 implementation(libs.io.insert.koin) debugImplementation(libs.com.squareup.leakcanary.android) + implementation(libs.about.libraries.core) } \ No newline at end of file diff --git a/AndroidApp/build.gradle.kts b/AndroidApp/build.gradle.kts index db0d8c00..875bcf05 100644 --- a/AndroidApp/build.gradle.kts +++ b/AndroidApp/build.gradle.kts @@ -5,4 +5,5 @@ plugins { alias(libs.plugins.compose.compiler) apply false alias(libs.plugins.com.google.devtools.ksp) apply false alias(libs.plugins.com.jaredsburrows.license) apply false + alias(libs.plugins.about.libraries) apply false } diff --git a/AndroidApp/gradle/libs.versions.toml b/AndroidApp/gradle/libs.versions.toml index a36a4208..1de9a94b 100644 --- a/AndroidApp/gradle/libs.versions.toml +++ b/AndroidApp/gradle/libs.versions.toml @@ -33,6 +33,7 @@ io-insert-koin = "4.1.1" com-google-code-gson = "2.13.2" com-squareup-leakcanary = "2.14" mockk = "1.14.7" +about-libraries = "14.0.0-b01" [plugins] com-android-application = { id = "com.android.application", version.ref = "agp" } @@ -42,6 +43,7 @@ compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = " com-google-devtools-ksp = { id = "com.google.devtools.ksp", version.ref = "com-google-devtools-ksp" } com-jaredsburrows-license = { id = "com.jaredsburrows.license", version.ref = "com-jaredsburrows-license" } screenshot = { id = "com.android.compose.screenshot", version.ref = "androidx-compose-screenshot" } +about-libraries = { id = "com.mikepenz.aboutlibraries.plugin.android", version.ref = "about-libraries" } [libraries] # androidx @@ -77,10 +79,16 @@ screenshot-validation-api = { group = "com.android.tools.screenshot", name = "sc android-gradle-plugin = { module = "com.android.tools.build:gradle", version.ref = "agp" } # その他 +com-google-code-gson = { module = "com.google.code.gson:gson", version.ref = "com-google-code-gson" } +# DI io-insert-koin = { module = "io.insert-koin:koin-android", version.ref = "io-insert-koin" } io-insert-koin-compose = { module = "io.insert-koin:koin-androidx-compose", version.ref = "io-insert-koin" } -com-google-code-gson = { module = "com.google.code.gson:gson", version.ref = "com-google-code-gson" } +# analyze com-squareup-leakcanary-android = { module = "com.squareup.leakcanary:leakcanary-android", version.ref = "com-squareup-leakcanary" } +# license +about-libraries-core = { module = "com.mikepenz:aboutlibraries-core", version.ref = "about-libraries" } +about-libraries-compose-core = { module = "com.mikepenz:aboutlibraries-compose-core", version.ref = "about-libraries" } +about-libraries-compose-m3 = { module = "com.mikepenz:aboutlibraries-compose-m3", version.ref = "about-libraries" } [bundles] androidx-compose = [ diff --git a/AndroidApp/ui/build.gradle.kts b/AndroidApp/ui/build.gradle.kts index 702551d3..4c1da9e7 100644 --- a/AndroidApp/ui/build.gradle.kts +++ b/AndroidApp/ui/build.gradle.kts @@ -29,4 +29,6 @@ dependencies { // その他 implementation(libs.io.insert.koin) implementation(libs.io.insert.koin.compose) + implementation(libs.about.libraries.compose.core) + implementation(libs.about.libraries.compose.m3) } From cd959fe4d0e6f6092b9beb8352a62d0aa5b8e979 Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 20 Jan 2026 08:20:33 +0900 Subject: [PATCH 2/6] =?UTF-8?q?=E3=83=A9=E3=82=A4=E3=82=BB=E3=83=B3?= =?UTF-8?q?=E3=82=B9=E7=94=BB=E9=9D=A2=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/screen/license/LicenseScreen.kt | 42 ++++++++++++++----- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/AndroidApp/ui/src/main/kotlin/me/nya_n/notificationnotifier/ui/screen/license/LicenseScreen.kt b/AndroidApp/ui/src/main/kotlin/me/nya_n/notificationnotifier/ui/screen/license/LicenseScreen.kt index 305ec4a6..7a680ab5 100644 --- a/AndroidApp/ui/src/main/kotlin/me/nya_n/notificationnotifier/ui/screen/license/LicenseScreen.kt +++ b/AndroidApp/ui/src/main/kotlin/me/nya_n/notificationnotifier/ui/screen/license/LicenseScreen.kt @@ -1,36 +1,56 @@ package me.nya_n.notificationnotifier.ui.screen.license -import android.webkit.WebView -import android.webkit.WebViewClient +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.material3.AlertDialogDefaults +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.SnackbarHostState import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.viewinterop.AndroidView +import androidx.compose.ui.unit.dp import androidx.navigation.NavController import androidx.navigation.compose.rememberNavController +import com.mikepenz.aboutlibraries.ui.compose.LibraryDefaults +import com.mikepenz.aboutlibraries.ui.compose.android.produceLibraries +import com.mikepenz.aboutlibraries.ui.compose.m3.LibrariesContainer +import com.mikepenz.aboutlibraries.ui.compose.m3.libraryColors import me.nya_n.notificationnotifier.ui.common.AppScaffold import me.nya_n.notificationnotifier.ui.theme.AppTheme @Composable fun LicenseScreen(navController: NavController) { val snackbarHostState = remember { SnackbarHostState() } + val libraries by produceLibraries() AppScaffold( snackbarHostState = snackbarHostState, onBack = { navController.popBackStack() } ) { - AndroidView( - modifier = Modifier.padding(it), - factory = { context -> - WebView(context).apply { - webViewClient = WebViewClient() - loadUrl("file:///android_asset/open_source_licenses.html") - } - }, + LibrariesContainer( + libraries, + Modifier.padding(it), + colors = LibraryDefaults.libraryColors( + libraryBackgroundColor = Color.Transparent, + dialogBackgroundColor = AlertDialogDefaults.containerColor, + dialogConfirmButtonColor = AlertDialogDefaults.textContentColor + ), + divider = { + Box( + Modifier + .fillMaxWidth() + .height(1.dp) + .padding(horizontal = 16.dp) + .background(MaterialTheme.colorScheme.secondaryContainer) + ) + } ) } } From 93232b50a9809b7681c37b53bc040f09bcf7c094 Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 20 Jan 2026 23:07:37 +0900 Subject: [PATCH 3/6] =?UTF-8?q?=E4=B8=8D=E8=A6=81=E3=81=AB=E3=81=AA?= =?UTF-8?q?=E3=81=A3=E3=81=9F=E3=83=A9=E3=82=A4=E3=83=96=E3=83=A9=E3=83=AA?= =?UTF-8?q?=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AndroidApp/build.gradle.kts | 1 - AndroidApp/gradle/libs.versions.toml | 2 -- AndroidApp/ui/build.gradle.kts | 2 -- 3 files changed, 5 deletions(-) diff --git a/AndroidApp/build.gradle.kts b/AndroidApp/build.gradle.kts index 875bcf05..9c2e7bff 100644 --- a/AndroidApp/build.gradle.kts +++ b/AndroidApp/build.gradle.kts @@ -4,6 +4,5 @@ plugins { alias(libs.plugins.org.jetbrains.kotlin.android) apply false alias(libs.plugins.compose.compiler) apply false alias(libs.plugins.com.google.devtools.ksp) apply false - alias(libs.plugins.com.jaredsburrows.license) apply false alias(libs.plugins.about.libraries) apply false } diff --git a/AndroidApp/gradle/libs.versions.toml b/AndroidApp/gradle/libs.versions.toml index 1de9a94b..6f844e73 100644 --- a/AndroidApp/gradle/libs.versions.toml +++ b/AndroidApp/gradle/libs.versions.toml @@ -14,7 +14,6 @@ agp = "9.0.0" kotlin = "2.3.0" kotlinx-coroutines = "1.10.2" com-google-devtools-ksp = "2.3.4" -com-jaredsburrows-license = "0.9.8" androidx-core = "1.17.0" androidx-appcompat = "1.7.1" androidx-security = "1.1.0" @@ -41,7 +40,6 @@ com-android-library = { id = "com.android.library", version.ref = "agp" } org-jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } com-google-devtools-ksp = { id = "com.google.devtools.ksp", version.ref = "com-google-devtools-ksp" } -com-jaredsburrows-license = { id = "com.jaredsburrows.license", version.ref = "com-jaredsburrows-license" } screenshot = { id = "com.android.compose.screenshot", version.ref = "androidx-compose-screenshot" } about-libraries = { id = "com.mikepenz.aboutlibraries.plugin.android", version.ref = "about-libraries" } diff --git a/AndroidApp/ui/build.gradle.kts b/AndroidApp/ui/build.gradle.kts index 4c1da9e7..5fef9d62 100644 --- a/AndroidApp/ui/build.gradle.kts +++ b/AndroidApp/ui/build.gradle.kts @@ -1,7 +1,5 @@ plugins { id("common.library.compose") - // note: 最新のgradle/agp非対応 -// alias(libs.plugins.com.jaredsburrows.license) alias(libs.plugins.screenshot) } From 22ca5d871308f1a50c814a539a701834e8757916 Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 20 Jan 2026 23:09:53 +0900 Subject: [PATCH 4/6] =?UTF-8?q?=E4=B8=8D=E8=A6=81=E3=81=AB=E3=81=AA?= =?UTF-8?q?=E3=81=A3=E3=81=9F=E3=83=A9=E3=82=A4=E3=82=BB=E3=83=B3=E3=82=B9?= =?UTF-8?q?=E9=96=A2=E4=BF=82=E3=81=AE=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB?= =?UTF-8?q?=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AndroidApp/app/licenses.yml | 12 - .../src/main/assets/open_source_licenses.html | 937 ------------------ 2 files changed, 949 deletions(-) delete mode 100644 AndroidApp/app/licenses.yml delete mode 100644 AndroidApp/ui/src/main/assets/open_source_licenses.html diff --git a/AndroidApp/app/licenses.yml b/AndroidApp/app/licenses.yml deleted file mode 100644 index a869d172..00000000 --- a/AndroidApp/app/licenses.yml +++ /dev/null @@ -1,12 +0,0 @@ -- artifact: io.insert-koin:koin-android:+ - name: koin-android - copyrightHolder: Arnaud GIULIANI, Laurent BARESSE - license: The Apache Software License, Version 2.0 - licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt - url: https://insert-koin.io/ -- artifact: com.google.code.gson:gson:+ - name: gson - copyrightHolder: Google Inc. - license: The Apache Software License, Version 2.0 - licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt - url: https://github.com/google/gson diff --git a/AndroidApp/ui/src/main/assets/open_source_licenses.html b/AndroidApp/ui/src/main/assets/open_source_licenses.html deleted file mode 100644 index b90d6c62..00000000 --- a/AndroidApp/ui/src/main/assets/open_source_licenses.html +++ /dev/null @@ -1,937 +0,0 @@ - - - - - - Open source licenses - - -

Notice for packages:

-
    -
  • Accompanist System UI Controller library (0.32.0) -
    -
    Copyright © 20xx Google
    -
    -
  • -
  • Activity (1.7.2) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • Activity Compose (1.7.2) -
    -
    Copyright © 2020 The Android Open Source Project
    -
    -
  • -
  • Activity Kotlin Extensions (1.7.2) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • Android App Startup Runtime (1.1.1) -
    -
    Copyright © 2020 The Android Open Source Project
    -
    -
  • -
  • Android AppCompat Library (1.6.1) -
    -
    Copyright © 2011 The Android Open Source Project
    -
    -
  • -
  • Android Arch-Common (2.2.0) -
    -
    Copyright © 2017 The Android Open Source Project
    -
    -
  • -
  • Android Arch-Runtime (2.2.0) -
    -
    Copyright © 2017 The Android Open Source Project
    -
    -
  • -
  • Android ConstraintLayout (2.0.1) -
    -
    Copyright © 2007 The Android Open Source Project
    -
    -
  • -
  • Android ConstraintLayout Solver (2.0.1) -
    -
    Copyright © 2007 The Android Open Source Project
    -
    -
  • -
  • Android DB (2.3.1) -
    -
    Copyright © 2017 The Android Open Source Project
    -
    -
  • -
  • Android Lifecycle Kotlin Extensions (2.6.2) -
    -
    Copyright © 2019 The Android Open Source Project
    -
    -
  • -
  • Android Lifecycle LiveData (2.6.2) -
    -
    Copyright © 2017 The Android Open Source Project
    -
    -
  • -
  • Android Lifecycle LiveData Core (2.6.2) -
    -
    Copyright © 2017 The Android Open Source Project
    -
    -
  • -
  • Android Lifecycle Process (2.6.2) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • Android Lifecycle Runtime (2.6.2) -
    -
    Copyright © 2017 The Android Open Source Project
    -
    -
  • -
  • Android Lifecycle ViewModel (2.6.2) -
    -
    Copyright © 2017 The Android Open Source Project
    -
    -
  • -
  • Android Lifecycle ViewModel Kotlin Extensions (2.6.2) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • Android Lifecycle ViewModel with SavedState (2.6.2) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • Android Lifecycle-Common (2.6.2) -
    -
    Copyright © 2017 The Android Open Source Project
    -
    -
  • -
  • Android Lifecycle-Common for Java 8 Language (2.6.2) -
    -
    Copyright © 2017 The Android Open Source Project
    -
    -
  • -
  • Android Resource Inspection - Annotations (1.0.1) -
    -
    Copyright © 2021 The Android Open Source Project
    -
    -
  • -
  • Android Resources Library (1.6.1) -
    -
    Copyright © 2019 The Android Open Source Project
    -
    -
  • -
  • Android Room-Common (2.5.2) -
    -
    Copyright © 2017 The Android Open Source Project
    -
    -
  • -
  • Android Room-Runtime (2.5.2) -
    -
    Copyright © 2017 The Android Open Source Project
    -
    -
  • -
  • Android Support AnimatedVectorDrawable (1.1.0) -
    -
    Copyright © 2015 The Android Open Source Project
    -
    -
  • -
  • Android Support CardView v7 (1.0.0) -
    -
    Copyright © 2011 The Android Open Source Project
    -
    -
  • -
  • Android Support DynamicAnimation (1.0.0) -
    -
    Copyright © 2017 The Android Open Source Project
    -
    -
  • -
  • Android Support Library Annotations (1.6.0) -
    -
    Copyright © 2013 The Android Open Source Project
    -
    -
  • -
  • Android Support Library collections (1.1.0) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • Android Support Library Coordinator Layout (1.1.0) -
    -
    Copyright © 2011 The Android Open Source Project
    -
    -
  • -
  • Android Support Library core utils (1.0.0) -
    -
    Copyright © 2011 The Android Open Source Project
    -
    -
  • -
  • Android Support Library Cursor Adapter (1.0.0) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • Android Support Library Custom View (1.1.0) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • Android Support Library Document File (1.0.0) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • Android Support Library Drawer Layout (1.1.1) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • Android Support Library fragment (1.5.7) -
    -
    Copyright © 2011 The Android Open Source Project
    -
    -
  • -
  • Android Support Library Interpolators (1.0.0) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • Android Support Library loader (1.0.0) -
    -
    Copyright © 2011 The Android Open Source Project
    -
    -
  • -
  • Android Support Library Local Broadcast Manager (1.0.0) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • Android Support Library Print (1.0.0) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • Android Support Library View Pager (1.0.0) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • Android Support RecyclerView v7 (1.1.0) -
    -
    Copyright © 2014 The Android Open Source Project
    -
    -
  • -
  • Android Support SQLite - Framework Implementation (2.3.1) -
    -
    Copyright © 2017 The Android Open Source Project
    -
    -
  • -
  • Android Support VectorDrawable (1.1.0) -
    -
    Copyright © 2015 The Android Open Source Project
    -
    -
  • -
  • Android Tracing (1.0.0) -
    -
    Copyright © 2020 The Android Open Source Project
    -
    -
  • -
  • Android Transition Support Library (1.2.0) -
    -
    Copyright © 2016 The Android Open Source Project
    -
    -
  • -
  • AndroidX Autofill (1.0.0) -
    -
    Copyright © 2019 The Android Open Source Project
    -
    -
  • -
  • AndroidX Futures (1.1.0) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • AndroidX Security (1.1.0-alpha06) -
    -
    Copyright © 2019 The Android Open Source Project
    -
    -
  • -
  • AndroidX Test Library (1.5.2) -
    -
    Copyright © 2015 The Android Open Source Project
    -
    -
  • -
  • AndroidX Test Library (1.6.1) -
    -
    Copyright © 2015 The Android Open Source Project
    -
    -
  • -
  • AndroidX Test Library (1.5.0) -
    -
    Copyright © 2015 The Android Open Source Project
    -
    -
  • -
  • AndroidX Test Library (3.5.1) -
    -
    Copyright © 2015 The Android Open Source Project
    -
    -
  • -
  • AndroidX Test Library (1.0.1) -
    -
    Copyright © 2015 The Android Open Source Project
    -
    -
  • -
  • AndroidX Test Library (1.1.5) -
    -
    Copyright © 2015 The Android Open Source Project
    -
    -
  • -
  • AndroidX Test Library (3.5.1) -
    -
    Copyright © 2015 The Android Open Source Project
    -
    -
  • -
  • AndroidX Test Library (1.4.2) -
    -
    Copyright © 2015 The Android Open Source Project
    -
    -
  • -
  • AndroidX Widget ViewPager2 (1.0.0) -
    -
    Copyright © 2017 The Android Open Source Project
    -
    -
  • -
  • androidx.customview:poolingcontainer (1.0.0) -
    -
    Copyright © 2021 The Android Open Source Project
    -
    -
  • -
  • androidx.profileinstaller:profileinstaller (1.3.0) -
    -
    Copyright © 2021 The Android Open Source Project
    -
    -
  • -
  • atomicfu (0.17.0) -
    -
    Copyright © 20xx JetBrains Team
    -
    -
  • -
  • AutoValue Annotations (1.10.1) -
    -
    Copyright © 20xx The original author or authors
    -
    -
  • -
  • Collections Kotlin Extensions (1.1.0) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • Compose Animation (1.5.1) -
    -
    Copyright © 2019 The Android Open Source Project
    -
    -
  • -
  • Compose Animation Core (1.5.1) -
    -
    Copyright © 2019 The Android Open Source Project
    -
    -
  • -
  • Compose Foundation (1.5.1) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • Compose Geometry (1.5.1) -
    -
    Copyright © 2020 The Android Open Source Project
    -
    -
  • -
  • Compose Graphics (1.5.1) -
    -
    Copyright © 2020 The Android Open Source Project
    -
    -
  • -
  • Compose Layouts (1.5.1) -
    -
    Copyright © 2019 The Android Open Source Project
    -
    -
  • -
  • Compose Material Components (1.5.1) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • Compose Material Icons Core (1.5.1) -
    -
    Copyright © 2020 The Android Open Source Project
    -
    -
  • -
  • Compose Material Icons Extended (1.5.1) -
    -
    Copyright © 2020 The Android Open Source Project
    -
    -
  • -
  • Compose Material Ripple (1.5.1) -
    -
    Copyright © 2020 The Android Open Source Project
    -
    -
  • -
  • Compose Navigation (2.7.2) -
    -
    Copyright © 2020 The Android Open Source Project
    -
    -
  • -
  • Compose Runtime (1.5.1) -
    -
    Copyright © 2019 The Android Open Source Project
    -
    -
  • -
  • Compose Runtime (1.4.3) -
    -
    Copyright © 2020 Compose Multiplatform Team
    -
    -
  • -
  • Compose Saveable (1.5.1) -
    -
    Copyright © 2020 The Android Open Source Project
    -
    -
  • -
  • Compose Tooling (1.5.1) -
    -
    Copyright © 2019 The Android Open Source Project
    -
    -
  • -
  • Compose Tooling Data (1.5.1) -
    -
    Copyright © 2021 The Android Open Source Project
    -
    -
  • -
  • Compose UI (1.5.1) -
    -
    Copyright © 2019 The Android Open Source Project
    -
    -
  • -
  • Compose UI Preview Tooling (1.5.1) -
    -
    Copyright © 2021 The Android Open Source Project
    -
    -
  • -
  • Compose UI Text (1.5.1) -
    -
    Copyright © 2019 The Android Open Source Project
    -
    -
  • -
  • Compose Unit (1.5.1) -
    -
    Copyright © 2020 The Android Open Source Project
    -
    -
  • -
  • Compose Util (1.5.1) -
    -
    Copyright © 2020 The Android Open Source Project
    -
    -
  • -
  • Core (1.12.0) -
    -
    Copyright © 2015 The Android Open Source Project
    -
    -
  • -
  • Core Kotlin Extensions (1.12.0) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • Emoji2 (1.4.0) -
    -
    Copyright © 2017 The Android Open Source Project
    -
    -
  • -
  • Emoji2 Views Helper (1.4.0) -
    -
    Copyright © 2017 The Android Open Source Project
    -
    -
  • -
  • error-prone annotations (2.19.1) -
    -
    Copyright © 20xx The original author or authors
    -
    -
  • -
  • Experimental annotation (1.3.0) -
    -
    Copyright © 2019 The Android Open Source Project
    -
    -
  • -
  • FindBugs-jsr305 (3.0.2) -
    -
    Copyright © 20xx The original author or authors
    -
    -
  • -
  • Fragment Kotlin Extensions (1.5.7) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • Gson (2.10.1) -
    -
    Copyright © 20xx The original author or authors
    -
    -
  • -
  • Guava InternalFutureFailureAccess and InternalFutures (1.0.1) -
    -
    Copyright © 20xx The original author or authors
    -
    -
  • -
  • Guava ListenableFuture only - (9999.0-empty-to-avoid-conflict-with-guava) -
    -
    Copyright © 20xx The original author or authors
    -
    -
  • -
  • Guava: Google Core Libraries for Java (32.0.1-android) -
    -
    Copyright © 20xx The original author or authors
    -
    -
  • -
  • IntelliJ IDEA Annotations (13.0) -
    -
    Copyright © 20xx JetBrains Team
    -
    -
  • -
  • J2ObjC Annotations (2.8) -
    -
    Copyright © 20xx The original author or authors
    -
    -
  • -
  • JavaWriter (2.1.1) -
    -
    Copyright © 20xx The original author or authors
    -
    -
  • -
  • javax.inject (1) -
    -
    Copyright © 20xx The original author or authors
    -
    -
  • -
  • koin-android (3.4.3) -
    -
    Copyright © 20xx Arnaud Giuliani
    -
    -
  • -
  • koin-androidx-compose (3.4.6) -
    -
    Copyright © 20xx Arnaud Giuliani
    -
    -
  • -
  • koin-compose (1.0.4) -
    -
    Copyright © 20xx Arnaud Giuliani
    -
    -
  • -
  • koin-core (3.4.3) -
    -
    Copyright © 20xx Arnaud Giuliani
    -
    -
  • -
  • Kotlin Stdlib (1.9.0) -
    -
    Copyright © 20xx Kotlin Team
    -
    -
  • -
  • Kotlin Stdlib Common (1.9.0) -
    -
    Copyright © 20xx Kotlin Team
    -
    -
  • -
  • Kotlin Stdlib Jdk7 (1.9.0) -
    -
    Copyright © 20xx Kotlin Team
    -
    -
  • -
  • Kotlin Stdlib Jdk8 (1.9.0) -
    -
    Copyright © 20xx Kotlin Team
    -
    -
  • -
  • kotlinx-coroutines-android (1.6.4) -
    -
    Copyright © 20xx JetBrains Team
    -
    -
  • -
  • kotlinx-coroutines-core (1.6.4) -
    -
    Copyright © 20xx JetBrains Team
    -
    -
  • -
  • Lifecycle ViewModel Compose (2.6.2) -
    -
    Copyright © 2021 The Android Open Source Project
    -
    -
  • -
  • LiveData Core Kotlin Extensions (2.6.2) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • Material Components for Android (1.9.0) -
    -
    Copyright © 2015 The Android Open Source Project
    -
    -
  • -
  • Navigation Common (2.7.2) -
    -
    Copyright © 2017 The Android Open Source Project
    -
    -
  • -
  • Navigation Common Kotlin Extensions (2.7.2) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • Navigation Runtime (2.7.2) -
    -
    Copyright © 2017 The Android Open Source Project
    -
    -
  • -
  • Navigation Runtime Kotlin Extensions (2.7.2) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • Saved State (1.2.1) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • -
  • SavedState Kotlin Extensions (1.2.1) -
    -
    Copyright © 2020 The Android Open Source Project
    -
    -
  • -
  • Tink Cryptography API for Android (1.8.0) -
    -
    Copyright © 20xx
    -
    -
  • -
  • Truth Core (1.1.5) -
    -
    Copyright © 20xx The original author or authors
    -
    -
  • -
  • VersionedParcelable (1.1.1) -
    -
    Copyright © 2018 The Android Open Source Project
    -
    -
  • - -
                                     Apache License
    -                           Version 2.0, January 2004
    -                        http://www.apache.org/licenses/
    -
    -   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
    -
    -   1. Definitions.
    -
    -      "License" shall mean the terms and conditions for use, reproduction,
    -      and distribution as defined by Sections 1 through 9 of this document.
    -
    -      "Licensor" shall mean the copyright owner or entity authorized by
    -      the copyright owner that is granting the License.
    -
    -      "Legal Entity" shall mean the union of the acting entity and all
    -      other entities that control, are controlled by, or are under common
    -      control with that entity. For the purposes of this definition,
    -      "control" means (i) the power, direct or indirect, to cause the
    -      direction or management of such entity, whether by contract or
    -      otherwise, or (ii) ownership of fifty percent (50%) or more of the
    -      outstanding shares, or (iii) beneficial ownership of such entity.
    -
    -      "You" (or "Your") shall mean an individual or Legal Entity
    -      exercising permissions granted by this License.
    -
    -      "Source" form shall mean the preferred form for making modifications,
    -      including but not limited to software source code, documentation
    -      source, and configuration files.
    -
    -      "Object" form shall mean any form resulting from mechanical
    -      transformation or translation of a Source form, including but
    -      not limited to compiled object code, generated documentation,
    -      and conversions to other media types.
    -
    -      "Work" shall mean the work of authorship, whether in Source or
    -      Object form, made available under the License, as indicated by a
    -      copyright notice that is included in or attached to the work
    -      (an example is provided in the Appendix below).
    -
    -      "Derivative Works" shall mean any work, whether in Source or Object
    -      form, that is based on (or derived from) the Work and for which the
    -      editorial revisions, annotations, elaborations, or other modifications
    -      represent, as a whole, an original work of authorship. For the purposes
    -      of this License, Derivative Works shall not include works that remain
    -      separable from, or merely link (or bind by name) to the interfaces of,
    -      the Work and Derivative Works thereof.
    -
    -      "Contribution" shall mean any work of authorship, including
    -      the original version of the Work and any modifications or additions
    -      to that Work or Derivative Works thereof, that is intentionally
    -      submitted to Licensor for inclusion in the Work by the copyright owner
    -      or by an individual or Legal Entity authorized to submit on behalf of
    -      the copyright owner. For the purposes of this definition, "submitted"
    -      means any form of electronic, verbal, or written communication sent
    -      to the Licensor or its representatives, including but not limited to
    -      communication on electronic mailing lists, source code control systems,
    -      and issue tracking systems that are managed by, or on behalf of, the
    -      Licensor for the purpose of discussing and improving the Work, but
    -      excluding communication that is conspicuously marked or otherwise
    -      designated in writing by the copyright owner as "Not a Contribution."
    -
    -      "Contributor" shall mean Licensor and any individual or Legal Entity
    -      on behalf of whom a Contribution has been received by Licensor and
    -      subsequently incorporated within the Work.
    -
    -   2. Grant of Copyright License. Subject to the terms and conditions of
    -      this License, each Contributor hereby grants to You a perpetual,
    -      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
    -      copyright license to reproduce, prepare Derivative Works of,
    -      publicly display, publicly perform, sublicense, and distribute the
    -      Work and such Derivative Works in Source or Object form.
    -
    -   3. Grant of Patent License. Subject to the terms and conditions of
    -      this License, each Contributor hereby grants to You a perpetual,
    -      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
    -      (except as stated in this section) patent license to make, have made,
    -      use, offer to sell, sell, import, and otherwise transfer the Work,
    -      where such license applies only to those patent claims licensable
    -      by such Contributor that are necessarily infringed by their
    -      Contribution(s) alone or by combination of their Contribution(s)
    -      with the Work to which such Contribution(s) was submitted. If You
    -      institute patent litigation against any entity (including a
    -      cross-claim or counterclaim in a lawsuit) alleging that the Work
    -      or a Contribution incorporated within the Work constitutes direct
    -      or contributory patent infringement, then any patent licenses
    -      granted to You under this License for that Work shall terminate
    -      as of the date such litigation is filed.
    -
    -   4. Redistribution. You may reproduce and distribute copies of the
    -      Work or Derivative Works thereof in any medium, with or without
    -      modifications, and in Source or Object form, provided that You
    -      meet the following conditions:
    -
    -      (a) You must give any other recipients of the Work or
    -          Derivative Works a copy of this License; and
    -
    -      (b) You must cause any modified files to carry prominent notices
    -          stating that You changed the files; and
    -
    -      (c) You must retain, in the Source form of any Derivative Works
    -          that You distribute, all copyright, patent, trademark, and
    -          attribution notices from the Source form of the Work,
    -          excluding those notices that do not pertain to any part of
    -          the Derivative Works; and
    -
    -      (d) If the Work includes a "NOTICE" text file as part of its
    -          distribution, then any Derivative Works that You distribute must
    -          include a readable copy of the attribution notices contained
    -          within such NOTICE file, excluding those notices that do not
    -          pertain to any part of the Derivative Works, in at least one
    -          of the following places: within a NOTICE text file distributed
    -          as part of the Derivative Works; within the Source form or
    -          documentation, if provided along with the Derivative Works; or,
    -          within a display generated by the Derivative Works, if and
    -          wherever such third-party notices normally appear. The contents
    -          of the NOTICE file are for informational purposes only and
    -          do not modify the License. You may add Your own attribution
    -          notices within Derivative Works that You distribute, alongside
    -          or as an addendum to the NOTICE text from the Work, provided
    -          that such additional attribution notices cannot be construed
    -          as modifying the License.
    -
    -      You may add Your own copyright statement to Your modifications and
    -      may provide additional or different license terms and conditions
    -      for use, reproduction, or distribution of Your modifications, or
    -      for any such Derivative Works as a whole, provided Your use,
    -      reproduction, and distribution of the Work otherwise complies with
    -      the conditions stated in this License.
    -
    -   5. Submission of Contributions. Unless You explicitly state otherwise,
    -      any Contribution intentionally submitted for inclusion in the Work
    -      by You to the Licensor shall be under the terms and conditions of
    -      this License, without any additional terms or conditions.
    -      Notwithstanding the above, nothing herein shall supersede or modify
    -      the terms of any separate license agreement you may have executed
    -      with Licensor regarding such Contributions.
    -
    -   6. Trademarks. This License does not grant permission to use the trade
    -      names, trademarks, service marks, or product names of the Licensor,
    -      except as required for reasonable and customary use in describing the
    -      origin of the Work and reproducing the content of the NOTICE file.
    -
    -   7. Disclaimer of Warranty. Unless required by applicable law or
    -      agreed to in writing, Licensor provides the Work (and each
    -      Contributor provides its Contributions) on an "AS IS" BASIS,
    -      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
    -      implied, including, without limitation, any warranties or conditions
    -      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
    -      PARTICULAR PURPOSE. You are solely responsible for determining the
    -      appropriateness of using or redistributing the Work and assume any
    -      risks associated with Your exercise of permissions under this License.
    -
    -   8. Limitation of Liability. In no event and under no legal theory,
    -      whether in tort (including negligence), contract, or otherwise,
    -      unless required by applicable law (such as deliberate and grossly
    -      negligent acts) or agreed to in writing, shall any Contributor be
    -      liable to You for damages, including any direct, indirect, special,
    -      incidental, or consequential damages of any character arising as a
    -      result of this License or out of the use or inability to use the
    -      Work (including but not limited to damages for loss of goodwill,
    -      work stoppage, computer failure or malfunction, or any and all
    -      other commercial damages or losses), even if such Contributor
    -      has been advised of the possibility of such damages.
    -
    -   9. Accepting Warranty or Additional Liability. While redistributing
    -      the Work or Derivative Works thereof, You may choose to offer,
    -      and charge a fee for, acceptance of support, warranty, indemnity,
    -      or other liability obligations and/or rights consistent with this
    -      License. However, in accepting such obligations, You may act only
    -      on Your own behalf and on Your sole responsibility, not on behalf
    -      of any other Contributor, and only if You agree to indemnify,
    -      defend, and hold each Contributor harmless for any liability
    -      incurred by, or claims asserted against, such Contributor by reason
    -      of your accepting any such warranty or additional liability.
    -
    -   END OF TERMS AND CONDITIONS
    -
    -   APPENDIX: How to apply the Apache License to your work.
    -
    -      To apply the Apache License to your work, attach the following
    -      boilerplate notice, with the fields enclosed by brackets "[]"
    -      replaced with your own identifying information. (Don't include
    -      the brackets!)  The text should be enclosed in the appropriate
    -      comment syntax for the file format. We also recommend that a
    -      file or class name and description of purpose be included on the
    -      same "printed page" as the copyright notice for easier
    -      identification within third-party archives.
    -
    -   Copyright [yyyy] [name of copyright owner]
    -
    -   Licensed under the Apache License, Version 2.0 (the "License");
    -   you may not use this file except in compliance with the License.
    -   You may obtain a copy of the License at
    -
    -       http://www.apache.org/licenses/LICENSE-2.0
    -
    -   Unless required by applicable law or agreed to in writing, software
    -   distributed under the License is distributed on an "AS IS" BASIS,
    -   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -   See the License for the specific language governing permissions and
    -   limitations under the License.
    -
    -
    -
    -
  • asm (9.5) -
    -
    Copyright © 2000 Eric Bruneton
    -
    Copyright © 2000 Eugene Kuleshov
    -
    Copyright © 2000 Remi Forax
    -
    -
  • - -
    BSD-3-Clause
    -https://asm.ow2.io/license.html
    -
    -
    -
  • Hamcrest Core (1.3) -
    -
    Copyright © 20xx The original author or authors
    -
    -
  • -
  • Hamcrest Integration (1.3) -
    -
    Copyright © 20xx The original author or authors
    -
    -
  • -
  • Hamcrest library (1.3) -
    -
    Copyright © 20xx The original author or authors
    -
    -
  • - -
    New BSD License
    -http://www.opensource.org/licenses/bsd-license.php
    -
    -
    -
  • Checker Qual (3.35.0) -
    -
    Copyright © 20xx Michael Ernst
    -
    Copyright © 20xx Suzanne Millstein
    -
    -
  • - -
    MIT License
    -
    -Copyright (c) [year] [fullname]
    -
    -Permission is hereby granted, free of charge, to any person obtaining a copy
    -of this software and associated documentation files (the "Software"), to deal
    -in the Software without restriction, including without limitation the rights
    -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    -copies of the Software, and to permit persons to whom the Software is
    -furnished to do so, subject to the following conditions:
    -
    -The above copyright notice and this permission notice shall be included in all
    -copies or substantial portions of the Software.
    -
    -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    -SOFTWARE.
    -
    -
    -
    -
  • JUnit (4.13.2) -
    -
    Copyright © 2002 David Saff
    -
    Copyright © 2002 Kevin Cooney
    -
    Copyright © 2002 Stefan Birkner
    -
    Copyright © 2002 Marc Philipp
    -
    -
  • - -
    Eclipse Public License 1.0
    -http://www.eclipse.org/legal/epl-v10.html
    -
    -
    -
  • play-services-base (18.0.1) -
    -
    Copyright © 20xx The original author or authors
    -
    -
  • -
  • play-services-basement (18.0.0) -
    -
    Copyright © 20xx The original author or authors
    -
    -
  • -
  • play-services-oss-licenses (17.0.1) -
    -
    Copyright © 20xx The original author or authors
    -
    -
  • -
  • play-services-tasks (18.0.1) -
    -
    Copyright © 20xx The original author or authors
    -
    -
  • - -
    Android Software Development Kit License
    -https://developer.android.com/studio/terms.html
    -
    -
    -
- - From 76355e172f318319d12602b89e9ee177e62d421c Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 20 Jan 2026 23:31:18 +0900 Subject: [PATCH 5/6] =?UTF-8?q?Preview=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/screen/license/LicenseScreen.kt | 79 +++++++++++++++++-- 1 file changed, 74 insertions(+), 5 deletions(-) diff --git a/AndroidApp/ui/src/main/kotlin/me/nya_n/notificationnotifier/ui/screen/license/LicenseScreen.kt b/AndroidApp/ui/src/main/kotlin/me/nya_n/notificationnotifier/ui/screen/license/LicenseScreen.kt index 7a680ab5..d9abfe33 100644 --- a/AndroidApp/ui/src/main/kotlin/me/nya_n/notificationnotifier/ui/screen/license/LicenseScreen.kt +++ b/AndroidApp/ui/src/main/kotlin/me/nya_n/notificationnotifier/ui/screen/license/LicenseScreen.kt @@ -16,7 +16,11 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.navigation.NavController -import androidx.navigation.compose.rememberNavController +import com.mikepenz.aboutlibraries.Libs +import com.mikepenz.aboutlibraries.entity.Developer +import com.mikepenz.aboutlibraries.entity.Library +import com.mikepenz.aboutlibraries.entity.License +import com.mikepenz.aboutlibraries.entity.Scm import com.mikepenz.aboutlibraries.ui.compose.LibraryDefaults import com.mikepenz.aboutlibraries.ui.compose.android.produceLibraries import com.mikepenz.aboutlibraries.ui.compose.m3.LibrariesContainer @@ -28,11 +32,24 @@ import me.nya_n.notificationnotifier.ui.theme.AppTheme fun LicenseScreen(navController: NavController) { val snackbarHostState = remember { SnackbarHostState() } val libraries by produceLibraries() - AppScaffold( + LicenseContent( snackbarHostState = snackbarHostState, + libraries = libraries, onBack = { navController.popBackStack() } + ) +} + +@Composable +fun LicenseContent( + snackbarHostState: SnackbarHostState, + libraries: Libs?, + onBack: () -> Unit +) { + AppScaffold( + snackbarHostState = snackbarHostState, + onBack = onBack ) { LibrariesContainer( libraries, @@ -58,10 +75,62 @@ fun LicenseScreen(navController: NavController) { @Preview @Composable private fun LicensePreview() { - val navController = rememberNavController() + val snackbarHostState = remember { SnackbarHostState() } + val libs = Libs( + libraries = listOf( + Library( + uniqueId = "sample1", + artifactVersion = "1.2.3", + name = "sample1", + description = "test description", + website = "https://nya-n.me", + developers = listOf(Developer("kani", null)), + organization = null, + scm = Scm(null, null, null), + licenses = setOf( + License( + name = "Apache-2.0", + url = "https://www.apache.org/licenses/LICENSE-2.0", + hash = "abc123hash" + ) + ) + ), + Library( + uniqueId = "sample2", + artifactVersion = null, + name = "sample2", + description = null, + website = null, + developers = listOf(), + organization = null, + scm = Scm(null, null, null), + licenses = setOf( + License( + name = "MIT", + url = "https://opensource.org/licenses/MIT", + hash = "def456hash" + ) + ), + ), + Library( + uniqueId = "sample3", + artifactVersion = null, + name = "sample3", + description = null, + website = null, + developers = listOf(), + organization = null, + scm = null, + licenses = setOf() + ) + ), + licenses = setOf(), + ) AppTheme { - LicenseScreen( - navController = navController + LicenseContent( + snackbarHostState = snackbarHostState, + libraries = libs, + onBack = { } ) } } From 2331f11c577b9c16e03df1aae40a54b39003f889 Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Wed, 21 Jan 2026 00:22:02 +0900 Subject: [PATCH 6/6] =?UTF-8?q?screenshottest=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../screenshotTest/preview/debug/index.html | 16 ++-- ...ationnotifier.ComponentScreenshotTest.html | 4 +- ...icationnotifier.ContentScreenshotTest.html | 36 +++++++-- .../debug/me.nya_n.notificationnotifier.html | 12 +-- .../ContentScreenshotTest.kt | 72 +++++++++++++++++- ...icenseContentScreenshotTest_a51312a5_0.png | Bin 0 -> 44823 bytes .../MainContentScreenshotTest_a51312a5_0.png | Bin 0 -> 36635 bytes 7 files changed, 118 insertions(+), 22 deletions(-) create mode 100644 AndroidApp/ui/src/screenshotTestDebug/reference/me/nya_n/notificationnotifier/ContentScreenshotTest/LicenseContentScreenshotTest_a51312a5_0.png create mode 100644 AndroidApp/ui/src/screenshotTestDebug/reference/me/nya_n/notificationnotifier/ContentScreenshotTest/MainContentScreenshotTest_a51312a5_0.png diff --git a/AndroidApp/ui/build/reports/screenshotTest/preview/debug/index.html b/AndroidApp/ui/build/reports/screenshotTest/preview/debug/index.html index 39dd0577..88644a28 100644 --- a/AndroidApp/ui/build/reports/screenshotTest/preview/debug/index.html +++ b/AndroidApp/ui/build/reports/screenshotTest/preview/debug/index.html @@ -19,7 +19,7 @@

Test Summary

-
16
+
17

tests

@@ -43,7 +43,7 @@

Test Summary

-
3.154s
+
3.747s

duration

@@ -88,11 +88,11 @@

Packages

me.nya_n.notificationnotifier -16 +17 0 0 0 -3.154s +3.747s 100% @@ -120,17 +120,17 @@

Classes

0 0 0 -1.615s +1.931s 100% me.nya_n.notificationnotifier.ContentScreenshotTest -5 +6 0 0 0 -1.539s +1.816s 100% @@ -139,7 +139,7 @@

Classes

\ No newline at end of file diff --git a/AndroidApp/ui/build/reports/screenshotTest/preview/debug/me.nya_n.notificationnotifier.ComponentScreenshotTest.html b/AndroidApp/ui/build/reports/screenshotTest/preview/debug/me.nya_n.notificationnotifier.ComponentScreenshotTest.html index f02cbc13..bfa77071 100644 --- a/AndroidApp/ui/build/reports/screenshotTest/preview/debug/me.nya_n.notificationnotifier.ComponentScreenshotTest.html +++ b/AndroidApp/ui/build/reports/screenshotTest/preview/debug/me.nya_n.notificationnotifier.ComponentScreenshotTest.html @@ -46,7 +46,7 @@

Class me.nya_n.notificationnotifier.ComponentScreenshotTest

-
1.615s
+
1.931s

duration

@@ -361,7 +361,7 @@

TopBarComponentScreenshotTest

\ No newline at end of file diff --git a/AndroidApp/ui/build/reports/screenshotTest/preview/debug/me.nya_n.notificationnotifier.ContentScreenshotTest.html b/AndroidApp/ui/build/reports/screenshotTest/preview/debug/me.nya_n.notificationnotifier.ContentScreenshotTest.html index 05e45bdb..2d2f3883 100644 --- a/AndroidApp/ui/build/reports/screenshotTest/preview/debug/me.nya_n.notificationnotifier.ContentScreenshotTest.html +++ b/AndroidApp/ui/build/reports/screenshotTest/preview/debug/me.nya_n.notificationnotifier.ContentScreenshotTest.html @@ -22,7 +22,7 @@

Class me.nya_n.notificationnotifier.ContentScreenshotTest

-
5
+
6

tests

@@ -46,7 +46,7 @@

Class me.nya_n.notificationnotifier.ContentScreenshotTest

-
1.539s
+
1.816s

duration

@@ -98,6 +98,32 @@

DetailContentScreenshotTest

+ +

LicenseContentScreenshotTest

+ + + + + + + + + + + + + + + + +
Reference ImageActual ImageDiff Image
+Error displaying image at /mnt/e/workspace/ann/AndroidApp/ui/src/screenshotTestDebug/reference/me/nya_n/notificationnotifier/ContentScreenshotTest/LicenseContentScreenshotTest_a51312a5_0.png + +Error displaying image at /mnt/e/workspace/ann/AndroidApp/ui/build/outputs/screenshotTest-results/preview/debug/rendered/me/nya_n/notificationnotifier/ContentScreenshotTest/LicenseContentScreenshotTest_a51312a5_0.png +
+
+
+

MainContentScreenshotTest

@@ -112,10 +138,10 @@

MainContentScreenshotTest

-Error displaying image at /mnt/e/workspace/ann/AndroidApp/ui/src/screenshotTestDebug/reference/me/nya_n/notificationnotifier/ContentScreenshotTest/MainContentScreenshotTest_0.png +Error displaying image at /mnt/e/workspace/ann/AndroidApp/ui/src/screenshotTestDebug/reference/me/nya_n/notificationnotifier/ContentScreenshotTest/MainContentScreenshotTest_a51312a5_0.png -Error displaying image at /mnt/e/workspace/ann/AndroidApp/ui/build/outputs/screenshotTest-results/preview/debug/rendered/me/nya_n/notificationnotifier/ContentScreenshotTest/MainContentScreenshotTest_0.png +Error displaying image at /mnt/e/workspace/ann/AndroidApp/ui/build/outputs/screenshotTest-results/preview/debug/rendered/me/nya_n/notificationnotifier/ContentScreenshotTest/MainContentScreenshotTest_a51312a5_0.png @@ -205,7 +231,7 @@

TargetContentScreenshotTest

\ No newline at end of file diff --git a/AndroidApp/ui/build/reports/screenshotTest/preview/debug/me.nya_n.notificationnotifier.html b/AndroidApp/ui/build/reports/screenshotTest/preview/debug/me.nya_n.notificationnotifier.html index a0610ae8..eeb98b2c 100644 --- a/AndroidApp/ui/build/reports/screenshotTest/preview/debug/me.nya_n.notificationnotifier.html +++ b/AndroidApp/ui/build/reports/screenshotTest/preview/debug/me.nya_n.notificationnotifier.html @@ -21,7 +21,7 @@

Package me.nya_n.notificationnotifier

-
16
+
17

tests

@@ -45,7 +45,7 @@

Package me.nya_n.notificationnotifier

-
3.154s
+
3.747s

duration

@@ -90,18 +90,18 @@

Classes

0 0 0 -1.615s +1.931s 100% ContentScreenshotTest -5 +6 0 0 0 -1.539s +1.816s 100% @@ -109,7 +109,7 @@

Classes

\ No newline at end of file diff --git a/AndroidApp/ui/src/screenshotTest/kotlin/me/nya_n/notificationnotifier/ContentScreenshotTest.kt b/AndroidApp/ui/src/screenshotTest/kotlin/me/nya_n/notificationnotifier/ContentScreenshotTest.kt index 0440cefa..3ae4ebca 100644 --- a/AndroidApp/ui/src/screenshotTest/kotlin/me/nya_n/notificationnotifier/ContentScreenshotTest.kt +++ b/AndroidApp/ui/src/screenshotTest/kotlin/me/nya_n/notificationnotifier/ContentScreenshotTest.kt @@ -10,8 +10,14 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.tooling.preview.Preview import com.android.tools.screenshot.PreviewTest +import com.mikepenz.aboutlibraries.Libs +import com.mikepenz.aboutlibraries.entity.Developer +import com.mikepenz.aboutlibraries.entity.Library +import com.mikepenz.aboutlibraries.entity.License +import com.mikepenz.aboutlibraries.entity.Scm import me.nya_n.notificationnotifier.model.InstalledApp import me.nya_n.notificationnotifier.ui.screen.detail.DetailContent +import me.nya_n.notificationnotifier.ui.screen.license.LicenseContent import me.nya_n.notificationnotifier.ui.screen.main.MainContent import me.nya_n.notificationnotifier.ui.screen.main.TabItem import me.nya_n.notificationnotifier.ui.screen.selection.SelectionContent @@ -23,7 +29,7 @@ import me.nya_n.notificationnotifier.ui.util.Sample class ContentScreenshotTest { @PreviewTest - @Preview + @Preview(backgroundColor = 0xFFC7B5A8, showBackground = true) @Composable fun MainContentScreenshotTest() { val snackbarHostState = remember { SnackbarHostState() } @@ -111,4 +117,68 @@ class ContentScreenshotTest { ) } } + + @PreviewTest + @Preview(backgroundColor = 0xFFC7B5A8, showBackground = true) + @Composable + fun LicenseContentScreenshotTest() { + val snackbarHostState = remember { SnackbarHostState() } + val libs = Libs( + libraries = listOf( + Library( + uniqueId = "sample1", + artifactVersion = "1.2.3", + name = "sample1", + description = "test description", + website = "https://nya-n.me", + developers = listOf(Developer("kani", null)), + organization = null, + scm = Scm(null, null, null), + licenses = setOf( + License( + name = "Apache-2.0", + url = "https://www.apache.org/licenses/LICENSE-2.0", + hash = "abc123hash" + ) + ) + ), + Library( + uniqueId = "sample2", + artifactVersion = null, + name = "sample2", + description = null, + website = null, + developers = listOf(), + organization = null, + scm = Scm(null, null, null), + licenses = setOf( + License( + name = "MIT", + url = "https://opensource.org/licenses/MIT", + hash = "def456hash" + ) + ), + ), + Library( + uniqueId = "sample3", + artifactVersion = null, + name = "sample3", + description = null, + website = null, + developers = listOf(), + organization = null, + scm = null, + licenses = setOf() + ) + ), + licenses = setOf(), + ) + AppTheme { + LicenseContent( + snackbarHostState = snackbarHostState, + libraries = libs, + onBack = { } + ) + } + } } \ No newline at end of file diff --git a/AndroidApp/ui/src/screenshotTestDebug/reference/me/nya_n/notificationnotifier/ContentScreenshotTest/LicenseContentScreenshotTest_a51312a5_0.png b/AndroidApp/ui/src/screenshotTestDebug/reference/me/nya_n/notificationnotifier/ContentScreenshotTest/LicenseContentScreenshotTest_a51312a5_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f6d2caa1eb86f8ae0e645e347e4f3dbb706e054e GIT binary patch literal 44823 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 literal 0 HcmV?d00001 diff --git a/AndroidApp/ui/src/screenshotTestDebug/reference/me/nya_n/notificationnotifier/ContentScreenshotTest/MainContentScreenshotTest_a51312a5_0.png b/AndroidApp/ui/src/screenshotTestDebug/reference/me/nya_n/notificationnotifier/ContentScreenshotTest/MainContentScreenshotTest_a51312a5_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9a151270ab2f4c403064f43df5291fceed899c97 GIT binary patch literal 36635 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 a2&8ISi<-(-A9t?}(j^PK3-~{8-2V>?kAMaM literal 0 HcmV?d00001