# SPDX-FileCopyrightText: Huawei Inc.
#
# SPDX-License-Identifier: Apache-2.0

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:${OHOS_COREBASE}/assets:"

SRC_URI += "${@oe.utils.conditional('WESTON_INI_BACKGROUND_IMAGE', '', '', "file://${WESTON_INI_BACKGROUND_IMAGE_BASENAME}", d)}"

WESTON_DYNAMIC_INI ?= "0"
WESTON_INI_PATH ?= "etc/xdg/weston/weston.ini"

WESTON_INI_NO_TOOLBAR ?= "0"
WESTON_INI_BACKGROUND_IMAGE ?= ""
WESTON_INI_BACKGROUND_IMAGE_BASENAME = "${@os.path.basename("${WESTON_INI_BACKGROUND_IMAGE}")}"
WESTON_INI_BACKGROUND_COLOR ?= "0xffffffff"
WESTON_INI_BACKGROUND_TYPE ?= "centered"

do_install_append() {
	# The filename references in WESTON_INI_BACKGROUND_IMAGE needs to be
	# provided in SRC_URI/WORKDIR.
	if [ -n "${WESTON_INI_BACKGROUND_IMAGE}" ]; then
		mkdir -p "${D}/$(dirname ${WESTON_INI_BACKGROUND_IMAGE})"
		install -m 0644 "${WORKDIR}/$(basename ${WESTON_INI_BACKGROUND_IMAGE})" \
			"${D}/$(dirname ${WESTON_INI_BACKGROUND_IMAGE})"
	fi
}

python generate_dynamic_ini() {
    import configparser

    # Avoid everything if dynamic configuration is not requested .
    do = d.getVar('WESTON_DYNAMIC_INI', True)
    if do != '1':
        bb.note("No dynamic weston.ini configuration requested.")
        return
    bb.note("Dynamic weston.ini configuration requested.")

    config = configparser.ConfigParser()
    ini_path = os.path.join(d.getVar('D', True), d.getVar('WESTON_INI_PATH', True))

    # Prepopulate an existing configuration.
    if os.path.exists(ini_path):
        if not os.path.isfile(ini_path):
            bb.fatal("weston.ini already exists and it is not a regular file")
        config.read(ini_path)

    # Handle no toolbar configuration.
    if d.getVar('WESTON_INI_NO_TOOLBAR', True) == '1':
        bb.note('Handling WESTON_INI_NO_TOOLBAR.')
        if 'shell' not in config.sections():
            config.add_section('shell')
        config.set('shell', 'panel-position', 'none')

    # Handle background.
    background_image = d.getVar('WESTON_INI_BACKGROUND_IMAGE', True)
    if background_image:
        bb.note('Handling WESTON_INI_BACKGROUND_IMAGE.')
        background_color = d.getVar('WESTON_INI_BACKGROUND_COLOR', True)
        background_type = d.getVar('WESTON_INI_BACKGROUND_TYPE', True)
        if 'shell' not in config.sections():
            config.add_section('shell')
        config.set('shell', 'background-image', background_image)
        config.set('shell', 'background-color', background_color)
        config.set('shell', 'background-type', background_type)

    # Finally, write the configuration. Keep this at the end.
    with open(ini_path, 'w') as init_path_fo:
        config.write(init_path_fo, space_around_delimiters=False)
}
do_install[postfuncs] += "generate_dynamic_ini"

FILES_${PN} += "${WESTON_INI_BACKGROUND_IMAGE}"