ui/material2/src/desktopMain/kotlin/OpenSourceLicensesWindow.kt
author Da Risk <da_risk@geekorum.com>
Mon, 26 May 2025 18:27:07 -0400
changeset 107 627dd879e3a4
parent 82 8a915338c80d
permissions -rw-r--r--
material3: add uiTooling dependencies commented as it increase build size
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
82
8a915338c80d ui:material2: add more kdocs
Da Risk <da_risk@geekorum.com>
parents: 49
diff changeset
    37
8a915338c80d ui:material2: add more kdocs
Da Risk <da_risk@geekorum.com>
parents: 49
diff changeset
    38
/**
8a915338c80d ui:material2: add more kdocs
Da Risk <da_risk@geekorum.com>
parents: 49
diff changeset
    39
 * Display opensource licences in a new window
8a915338c80d ui:material2: add more kdocs
Da Risk <da_risk@geekorum.com>
parents: 49
diff changeset
    40
 */
49
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    41
@Composable
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    42
fun OpenSourceLicensesWindow(
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    43
    onCloseRequest: () -> Unit,
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    44
    state: WindowState = rememberWindowState(),
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    45
) {
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    46
    val licenseInfoRepository =  remember {
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    47
        LicenseeLicenseInfoRepository()
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
    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
    50
    OpenSourceLicensesWindow(onCloseRequest, state, viewModel)
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    51
}
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    52
82
8a915338c80d ui:material2: add more kdocs
Da Risk <da_risk@geekorum.com>
parents: 49
diff changeset
    53
/**
8a915338c80d ui:material2: add more kdocs
Da Risk <da_risk@geekorum.com>
parents: 49
diff changeset
    54
 * Display opensource licences in a new window
8a915338c80d ui:material2: add more kdocs
Da Risk <da_risk@geekorum.com>
parents: 49
diff changeset
    55
 */
49
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    56
@Composable
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    57
fun OpenSourceLicensesWindow(
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    58
    onCloseRequest: () -> Unit,
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    59
    state: WindowState = rememberWindowState(),
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    60
    viewModel: OpenSourceLicensesViewModel,
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
    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
    63
    Window(onCloseRequest = onCloseRequest, state = state, title = title) {
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    64
        OpenSourceDependenciesNavHost(
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    65
            openSourceLicensesViewModel = viewModel,
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    66
            navigateUp = {
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    67
                onCloseRequest()
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    68
            }
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    69
        )
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    70
    }
fb2afa1f40d4 ui:material2, ui:material3: add OpenSourceLicensesWindow composable
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    71
}