#!/bin/bash

set -e

# Tag to allow some debhelper commands to inject relevant code
#DEBHELPER#

if [[ "$1" = "configure" ]]; then
	if dpkg --compare-versions "$2" lt "2.3+kaisen2"; then
		for images in `find . -type d -name images`;do ln -sf 3840x2160.jpg $images/1920x1080.png;done
	fi
fi

if [ "${1}" = "configure" ] && [ ! -z "${2}" ]; then
    if dpkg --compare-versions ${2} le "9.0.0~exp1"; then
        # Try remove folder if empty, left after 9.0.0~exp1 conf suppression
        # by debhelper conffile handling
        OLD_KDM_DIR=/etc/default/kdm.d
        if [ -d ${OLD_KDM_DIR} ] ; then
            echo "Removing old KDM configuration directory \"${OLD_KDM_DIR}\""
            rmdir ${OLD_KDM_DIR} || true
        fi
    fi
fi

if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-remove" ]; then
# Ensure of old themes will be removed after an any update
rm -rf /usr/share/desktop-base/kaisen-additionnal1-theme
rm -rf /usr/share/desktop-base/kaisen-additionnal2-theme
rm -rf /usr/share/desktop-base/kaisen-cassis-theme
rm -rf /usr/share/desktop-base/kaisen-sddm-theme

    # Vendor logo alternative
        update-alternatives --install \
            /usr/share/images/vendor-logos \
            vendor-logos \
            /usr/share/desktop-base/kaisen-logos 50 \
            --slave /usr/share/icons/vendor/64x64/emblems/emblem-vendor.png \
                emblem-vendor-64 \
                /usr/share/icons/desktop-base/64x64/emblems/emblem-kaisen.png \
            --slave /usr/share/icons/vendor/128x128/emblems/emblem-vendor.png \
                emblem-vendor-128 \
                /usr/share/icons/desktop-base/128x128/emblems/emblem-kaisen.png \
            --slave /usr/share/icons/vendor/256x256/emblems/emblem-vendor.png \
                emblem-vendor-256 \
                /usr/share/icons/desktop-base/256x256/emblems/emblem-kaisen.png \
            --slave /usr/share/icons/vendor/64x64/emblems/emblem-vendor-white.png \
                emblem-vendor-white-64 \
                /usr/share/icons/desktop-base/64x64/emblems/emblem-debian-white.png \
            --slave /usr/share/icons/vendor/128x128/emblems/emblem-vendor-white.png \
                emblem-vendor-white-128 \
                /usr/share/icons/desktop-base/128x128/emblems/emblem-debian-white.png \
            --slave /usr/share/icons/vendor/256x256/emblems/emblem-vendor-white.png \
                emblem-vendor-white-256 \
                /usr/share/icons/desktop-base/256x256/emblems/emblem-debian-white.png \

    # Theme package alternatives
    while read theme priority; do
        update-alternatives --install \
            /usr/share/desktop-base/active-theme \
            desktop-theme \
            /usr/share/desktop-base/$theme-theme $priority
    done << EOF
kaisen 300
kaisen-lightdm 40
kaisen-lightdm-blue 40
kaisen-lockscreen 40
kaisen-additional1 40
kaisen-additional2 40
kaisen-additional3 40
kaisen-additional4 40
kaisen-additional5 40
kaisen-additional6 40
kaisen-additional7 40
EOF

    # Use active theme as highest priority for background
    active_background=/usr/share/desktop-base/active-theme/wallpaper/contents/images/*.jpg
    if [ -e ${active_background} ]; then
        update-alternatives --install \
            /usr/share/images/desktop-base/desktop-background \
            desktop-background ${active_background} 300
    fi
    # Alternatives for the background in theme packages
    while read theme filename priority; do
        update-alternatives --install \
            /usr/share/images/desktop-base/desktop-background \
            desktop-background \
            /usr/share/desktop-base/$theme-theme/wallpaper/contents/images/$filename $priority
    done << EOF
kaisen 3840x2160.jpg 200
kaisen-lightdm 3840x2160.jpg 70
kaisen-lightdm-blue 3840x2160.jpg 70
kaisen-lockscreen 3840x2160.jpg 70
kaisen-additional1 3840x2160.jpg 70
kaisen-additional2 3840x2160.jpg 70
kaisen-additional3 3840x2160.jpg 70
kaisen-additional4 3840x2160.jpg 70
kaisen-additional5 3840x2160.jpg 70
kaisen-additional6 3840x2160.jpg 70
kaisen-additional7 3840x2160.jpg 70
EOF

    # Set up an alternative for the XML version of the background
    # (for GNOME)
    # Highest priority for active theme
    active_background_xml=/usr/share/desktop-base/active-theme/wallpaper/gnome-background.xml
    if [ -e ${active_background_xml} ]; then
        update-alternatives --install \
            /usr/share/images/desktop-base/desktop-background.xml \
            desktop-background.xml ${active_background_xml} 50
    fi
    # Alternatives for theme packages
    while read theme priority; do
        update-alternatives --install \
            /usr/share/images/desktop-base/desktop-background.xml \
            desktop-background.xml \
            /usr/share/desktop-base/$theme-theme/wallpaper/gnome-background.xml $priority
    done << EOF
kaisen 300
kaisen-lightdm 40
kaisen-lightdm-blue 40
kaisen-lockscreen 40
kaisen-additional1 40
kaisen-additional2 40
kaisen-additional3 40
kaisen-additional4 40
kaisen-additional5 40
kaisen-additional6 40
kaisen-additional7 40
EOF

    # Set up an alternative for the XML version of the lock screen
    # (for GNOME)
    # Highest priority for active theme
    active_lockscreen=/usr/share/desktop-base/active-theme/lockscreen/gnome-background.xml
    if [ -e ${active_lockscreen} ]; then
        update-alternatives --install \
            /usr/share/images/desktop-base/desktop-lockscreen.xml \
            desktop-lockscreen.xml ${active_lockscreen} 50
    fi
    # Alternatives for theme packages
    while read theme priority; do
        update-alternatives --install \
            /usr/share/images/desktop-base/desktop-lockscreen.xml \
            desktop-lockscreen.xml \
            /usr/share/desktop-base/$theme-theme/lockscreen/gnome-background.xml $priority
    done << EOF
kaisen 300
kaisen-lightdm 40
kaisen-lightdm-blue 40
kaisen-lockscreen 40
kaisen-additional1 40
kaisen-additional2 40
kaisen-additional3 40
kaisen-additional4 40
kaisen-additional5 40
kaisen-additional6 40
kaisen-additional7 40
EOF

    # Login theme
    # Highest priority for active theme
    active_login_background=/usr/share/desktop-base/active-theme/login/background.jpg
    if [ -e ${active_login_background} ]; then
        update-alternatives --install /usr/share/images/desktop-base/login-background.jpg \
            desktop-login-background ${active_login_background} 50
    fi
    # Alternatives for theme packages
    while read theme background priority; do
        update-alternatives --install /usr/share/images/desktop-base/login-background.jpg \
            desktop-login-background \
            /usr/share/desktop-base/$theme-theme/login/$background $priority
    done << EOF
kaisen background.jpg 300
kaisen-lightdm background.jpg 40
kaisen-lightdm-blue background.jpg 40
kaisen-lockscreen background.jpg 40
kaisen-additional1 background.jpg 40
kaisen-additional2 background.jpg 40
kaisen-additional3 background.jpg 40
kaisen-additional4 background.jpg 40
kaisen-additional5 background.jpg 40
kaisen-additional6 background.jpg 40
kaisen-additional7 background.jpg 40
EOF

    # Set up an alternative for the GRUB background/colors config
    # Highest priority for active theme
    # Favor widescreen / hi-res background for efi installations detected
    # by the presence of grub-efi* packages (not the grub-efi*-bin which don’t
    # necessary account for grub being the active bootloader).
    if dpkg-query --list grub-efi* | grep -v "^... grub-efi[^[:space:]]*-bin" | grep -q "^[ih][HUFWti] " ; then
        echo "grub-efi* packages found, using 16/9 as default grub background ratio"
        grub_first_ratio="16x9"
        grub_second_ratio="4x3"
    else
        echo "No grub-efi* package found, using 4/3 as default grub background ratio"
        grub_first_ratio="4x3"
        grub_second_ratio="16x9"
    fi
    active_grub_background=/usr/share/desktop-base/active-theme/grub/grub_background.sh
    active_grub_first_ratio=/usr/share/desktop-base/active-theme/grub/grub-${grub_first_ratio}.png
    if [ -e ${active_grub_first_ratio} ] && [ -e ${active_grub_background} ]; then
        update-alternatives --install \
            /usr/share/images/desktop-base/desktop-grub.png \
            desktop-grub ${active_grub_first_ratio} 50 \
            --slave /usr/share/desktop-base/grub_background.sh \
            desktop-grub.sh ${active_grub_background}
    fi
    active_grub_second_ratio=/usr/share/desktop-base/active-theme/grub/grub-${grub_second_ratio}.png
    if [ -e ${active_grub_second_ratio} ] && [ -e ${active_grub_background} ]; then
        update-alternatives --install \
            /usr/share/images/desktop-base/desktop-grub.png \
            desktop-grub ${active_grub_second_ratio} 45 \
            --slave /usr/share/desktop-base/grub_background.sh \
            desktop-grub.sh ${active_grub_background}
    fi
    # Alternatives for theme packages
    while read theme ratio priority; do
        update-alternatives --install /usr/share/images/desktop-base/desktop-grub.png \
            desktop-grub \
            /usr/share/desktop-base/$theme-theme/grub/grub-$ratio.png $priority \
            --slave /usr/share/desktop-base/grub_background.sh \
            desktop-grub.sh \
            /usr/share/desktop-base/$theme-theme/grub/grub_background.sh
    done << EOF
kaisen 4x3 300
kaisen 16x9 300
EOF

    # Apply GRUB background update into /boot
    # Try detecting active grub packages (so not -doc, -common, -bin) as a hint
    # that GRUB is being used as bootloader before calling update-grub.
    # Some people use the *-bin packages without using GRUB as bootloader
    # (see #851893 for more context).
    if dpkg-query --list "grub-*" | grep -v "^... grub\(-common\|-emu\|[^[:space:]]*\(-bin\|-doc\)\)" | grep -q "^[ih][HUFWti] " \
            && which update-grub > /dev/null ; then
        # Ensure the background image file has actually been written to disc
        # before updating.
        sync
        # Report success whatever grub return status. This is needed at least
        # in live systems fon installation to succeed (see #850601).
        # Until we find a better solution like detecting we’re in a live image
        # and not calling update-grub at all.
        update-grub || echo "Updating grub failed, report success anyway!"
    fi

    if which update-initramfs > /dev/null; then
        update-initramfs -u -k all
    fi

fi
