ui/material2/src/desktopMain/kotlin/OpenSourceLicensesWindow.kt
author Da Risk <da_risk@geekorum.com>
Mon, 28 Apr 2025 13:35:53 -0400
changeset 67 581f0b7dc09d
parent 49 fb2afa1f40d4
child 82 8a915338c80d
permissions -rw-r--r--
sample: add iosApp
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
49
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
     1
/*
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
     2
 * AboutOss is an utility library to retrieve and display
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
     3
 * opensource licenses in Android applications.
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
     4
 *
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
     5
 * Copyright (C) 2023-2025 by Frederic-Charles Barthelery.
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
     6
 *
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
     7
 * This file is part of AboutOss.
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
     8
 *
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
     9
 * AboutOss is free software: you can redistribute it and/or modify
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    10
 * it under the terms of the GNU General Public License as published by
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    11
 * the Free Software Foundation, either version 3 of the License, or
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    12
 * (at your option) any later version.
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    13
 *
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    14
 * AboutOss is distributed in the hope that it will be useful,
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    17
 * GNU General Public License for more details.
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    18
 *
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    19
 * You should have received a copy of the GNU General Public License
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    20
 * along with AboutOss.  If not, see <http://www.gnu.org/licenses/>.
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    21
 */
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    22
package com.geekorum.aboutoss.ui.material
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    23
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    24
import androidx.compose.runtime.Composable
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    25
import androidx.compose.runtime.remember
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    26
import androidx.compose.ui.window.Window
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    27
import androidx.compose.ui.window.WindowState
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    28
import androidx.compose.ui.window.rememberWindowState
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    29
import androidx.lifecycle.viewmodel.compose.viewModel
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    30
import com.geekorum.aboutoss.common.generated.resources.Res
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    31
import com.geekorum.aboutoss.common.generated.resources.title_oss_licenses
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    32
import com.geekorum.aboutoss.core.licensee.LicenseeLicenseInfoRepository
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    33
import com.geekorum.aboutoss.ui.common.Factory
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    34
import com.geekorum.aboutoss.ui.common.OpenSourceLicensesViewModel
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    35
import org.jetbrains.compose.resources.stringResource
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    36
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    37
@Composable
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    38
fun OpenSourceLicensesWindow(
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    39
    onCloseRequest: () -> Unit,
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    40
    state: WindowState = rememberWindowState(),
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    41
) {
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    42
    val licenseInfoRepository =  remember {
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    43
        LicenseeLicenseInfoRepository()
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    44
    }
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    45
    val viewModel: OpenSourceLicensesViewModel = viewModel(factory = OpenSourceLicensesViewModel.Factory(licenseInfoRepository))
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    46
    OpenSourceLicensesWindow(onCloseRequest, state, viewModel)
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    47
}
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    48
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    49
@Composable
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    50
fun OpenSourceLicensesWindow(
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    51
    onCloseRequest: () -> Unit,
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    52
    state: WindowState = rememberWindowState(),
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    53
    viewModel: OpenSourceLicensesViewModel,
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    54
) {
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    55
    val title = stringResource(Res.string.title_oss_licenses)
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    56
    Window(onCloseRequest = onCloseRequest, state = state, title = title) {
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    57
        OpenSourceDependenciesNavHost(
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    58
            openSourceLicensesViewModel = viewModel,
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    59
            navigateUp = {
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    60
                onCloseRequest()
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    61
            }
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    62
        )
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    63
    }
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    64
}