#!/bin/bash

function configurar_wallpaper() {
    ## WALLPAPER
    ## Divert de los archivos que define el fondo de pantalla
    for _FILE in "${BASE_WALLPAPERS}"/*0.png; do
        FILE_DIVERT="${BASE_DIVERT}/$(basename "${_FILE}")"
        [ ! -f "${FILE_DIVERT}" ] && \
        echo "Problemas: No existe el fichero divert ${FILE_DIVERT}" && \
        return 1
        dpkg-divert --add --package "${PAQUETECENTRO}" --rename \
        --divert "${_FILE}.orig" "${_FILE}"
        [ ! -e "${_FILE}" -o -L "${_FILE}" ] && \
        ln -sf "${FILE_DIVERT}" "${_FILE}"
    done
    # Ajustamos  de nuevo las resoluciones
    RESOLUCION=$(/usr/bin/obtener-resolucion-pantalla)
    [ "${RESOLUCION}" == "" ] && RESOLUCION="Indeterminada"
    _FILE1="${BASE_WALLPAPERS}/vitalinux-edu-wallpaper.png"
    _FILE2="${BASE_WALLPAPERS}/vitalinux-login.png"
    
    case $RESOLUCION in
        "4:3" ) FORMATO="4x3-1600x1200" ;;
        "16:9" ) FORMATO="16x9-1920x1080" ;;
        * ) FORMATO="16x9-1920x1080" ;; # Por defecto dejamos la 16x9
    esac
    cp  "${BASE_WALLPAPERS}/vitalinux-edu-wallpaper-${FORMATO}.png" "${_FILE1}"
    cp  "${BASE_WALLPAPERS}/vitalinux-login-${FORMATO}.png" "${_FILE2}"
    
    # GREETER
    FILEGREETER="/etc/lightdm/lightdm-gtk-greeter.conf.d/99_vitalinux.conf"
    [ -f $FILEGREETER ] && \
    sed -i --follow-symlinks "s#background=.*#background=${_FILE2}#g" $FILEGREETER
    return 0
}

function bug_lorele() {
    BUGPAQUETE="vx-dga-l-desktop-wallpaper-lorele"
    for _FILE in $(dpkg-divert --list | grep lorele | awk '{print $3}'); do
        [ -L "${_FILE}" ] && rm "${_FILE}"
        dpkg-divert --remove --package "${BUGPAQUETE}" --rename \
        --divert "${_FILE}.orig" "${_FILE}" > /dev/null 2>/dev/null
    done
}

function desconfigurar_wallpaper()
{
    IS_DIVERTIDO="false"
    bug_lorele
    for _FILE in "${BASE_WALLPAPERS}"/*0.png; do
        if dpkg-divert --list | grep "${PAQUETECENTRO}" | grep -q "${_FILE}" && \
        [ -L "${_FILE}" ] && \
        [ -f "${_FILE}.orig" ]; then
            [ -L "${_FILE}" ] && rm "${_FILE}"
            dpkg-divert --remove --package "${PAQUETECENTRO}" --rename \
            --divert "${_FILE}.orig" "${_FILE}"
            IS_DIVERTIDO="true"
        fi
    done
    ## Restauramos los ficheros de imagen (wallpaper y login) base aplicados
    _FILE1="${BASE_WALLPAPERS}/vitalinux-edu-wallpaper.png"
    _FILE2="${BASE_WALLPAPERS}/vitalinux-login.png"
    _FILE1BASE="${BASE_WALLPAPERS}/vitalinux-edu-wallpaper-16x9-1920x1080.png"
    _FILE2BASE="${BASE_WALLPAPERS}/vitalinux-login-16x9-1920x1080.png"
    if "${IS_DIVERTIDO}" ; then
        [ -f "${_FILE1BASE}" ] && cp "${_FILE1BASE}" "${_FILE1}"
        [ -f "${_FILE2BASE}" ] && cp "${_FILE2BASE}" "${_FILE2}"
        return 0
    else
        return 1
    fi
}

function check_divert_wallpaper() {
    DIVERTIDO="true"
    for _FILE in "${BASE_WALLPAPERS}"/*0.png; do
        if dpkg-divert --list | grep "${PAQUETECENTRO}" | grep -q "${_FILE}" ; then
            DIRBASE="$(dirname "$(readlink -f "${_FILE}")")"
            # DIRBASE="$(dirname "$(ls -l "${_FILE}" | awk -F "-> " '{print $2}')")"
            [[ "${DIRBASE}" != "${BASE_DIVERT}" ]] && DIVERTIDO="false"
        else
            DIVERTIDO="false"
        fi
    done
    "${DIVERTIDO}" && return 0 || return 1
}

ACCION="${1}"
PAQUETECENTRO="${2}"
BASE_DIVERT="${3:-"/usr/share/divert/usr/share/vitalinux/wallpapers"}"
BASE_WALLPAPERS="/usr/share/vitalinux/wallpapers"
case "${ACCION}" in
    "add" )
        if check_divert_wallpaper ; then
            vx-funcs-bash vx-echo_log_ok "El equipo ya tiene el Wallpaper correctamente asignado"
        else
            vx-funcs-bash vx-echo_log_ok "El equipo NO tiene el Wallpaper asignado, vamos a ello ..."
            # Eliminamos previamente el posible Wallpaper que pudiera haber:
            desconfigurar_wallpaper && \
            vx-funcs-bash vx-echo_log_ok "Se ha desconfigurado el wallpaper divertido que había previamente" || \
            vx-funcs-bash vx-echo_log_error "No ha sido necesiario desconfigurar ningún wallpaper divertido previo"
            # Añadimos el wallpaper el nuevo wallpaper:
            configurar_wallpaper && \
            vx-funcs-bash vx-echo_log_ok "Se ha configurado el nuevo wallpaper" || \
            vx-funcs-bash vx-echo_log_error "Problemas para configurar el nuevo wallpaper"
        fi
    ;;
    "del" ) desconfigurar_wallpaper
    ;;
esac

exit 0