#! /bin/sh
set -e

EDUTHEME="lines"

change_ldm_background() {
	update-alternatives --install /usr/share/ldm/themes/default \
	    ldm-theme /usr/share/ldm/themes/debian-edu-${EDUTHEME} 85
	update-alternatives --set ldm-theme \
	    /usr/share/ldm/themes/debian-edu-${EDUTHEME}
}

restore_ldm_background() {
	update-alternatives --remove ldm-theme /usr/share/ldm/themes/debian-edu-${EDUTHEME}
}

## GRUB
change_grub_background() {
	priority=50 # value higher than 20 used for ${EDUTHEME}-grub.png in desktop-base
	update-alternatives --install \
	    /usr/share/images/desktop-base/desktop-grub.png \
	    desktop-grub \
	    /usr/share/pixmaps/splash/debian-edu-${EDUTHEME}-splash-grub.png $priority
	update-alternatives --set desktop-grub \
	    /usr/share/pixmaps/splash/debian-edu-${EDUTHEME}-splash-grub.png
	ln -sf debian-edu-${EDUTHEME}-splash.png /usr/share/pixmaps/splash/debian-edu-splash.png
	if which update-grub2 > /dev/null ; then
		sync
		update-grub2 || true
	fi
}

restore_grub_background() {
	update-alternatives --remove desktop-grub \
	    /usr/share/pixmaps/splash/debian-edu-${EDUTHEME}-splash-grub.png
	rm -f /usr/share/pixmaps/splash/debian-edu-splash.png

	if which update-grub2 > /dev/null ; then
		update-grub2 || true
	fi
}

## Wallpaper
change_desktop_background() {
	update-alternatives --install \
	    /usr/share/images/desktop-base/desktop-background \
	    desktop-background \
	    /usr/share/images/desktop-base/debian-edu-${EDUTHEME}-wallpaper_1920x1080.svg 75
	update-alternatives --set desktop-background \
	    /usr/share/images/desktop-base/debian-edu-${EDUTHEME}-wallpaper_1920x1080.svg
	update-alternatives --install \
	    /usr/share/images/desktop-base/desktop-background.xml \
	    desktop-background.xml \
	    /usr/share/images/desktop-base/debian-edu-${EDUTHEME}.xml 20
	update-alternatives --set desktop-background.xml \
	    /usr/share/images/desktop-base/debian-edu-${EDUTHEME}.xml

	for WALLPAPER in debian-edu-${EDUTHEME}-wallpaper_1280x1024.svg \
	                 debian-edu-${EDUTHEME}-wallpaper_1600x1200.svg \
	                 debian-edu-${EDUTHEME}-wallpaper_1920x1080.svg \
	                 debian-edu-${EDUTHEME}-wallpaper_1920x1200.svg \
	                 debian-edu-${EDUTHEME}-wallpaper_2560x1080.svg; do
		update-alternatives --install \
		    /usr/share/images/desktop-base/desktop-background \
		    desktop-background \
		    /usr/share/images/desktop-base/$WALLPAPER 50
	done
}

restore_desktop_background() {
	update-alternatives --remove \
	    desktop-background \
	    /usr/share/images/desktop-base/debian-edu-${EDUTHEME}-wallpaper_1920x1080.svg
	update-alternatives --remove \
	    desktop-background.xml \
	    /usr/share/images/desktop-base/debian-edu-${EDUTHEME}.xml

	for WALLPAPER in debian-edu-${EDUTHEME}-wallpaper_1280x1024.svg \
	                 debian-edu-${EDUTHEME}-wallpaper_1600x1200.svg \
	                 debian-edu-${EDUTHEME}-wallpaper_1920x1080.svg \
	                 debian-edu-${EDUTHEME}-wallpaper_1920x1200.svg \
	                 debian-edu-${EDUTHEME}-wallpaper_2560x1080.svg; do
		update-alternatives --remove desktop-background \
		    /usr/share/images/desktop-base/$WALLPAPER
	done
}

## Wallpaper
change_ksplash() {
	update-alternatives --install \
	    /usr/share/images/desktop-base/desktop-splash \
	    desktop-splash \
	    /usr/share/kde4/apps/kdm/themes/debian-edu-${EDUTHEME}/background.svg 55
	update-alternatives --set desktop-splash \
	    /usr/share/kde4/apps/kdm/themes/debian-edu-${EDUTHEME}/background.svg
}

restore_ksplash() {
	update-alternatives --remove desktop-splash \
	    /usr/share/kde4/apps/kdm/themes/debian-edu-${EDUTHEME}/background.svg
}

compile_gschemas() {
	if [ -d /usr/share/glib-2.0/schemas/ ] && [ -x /usr/bin/glib-compile-schemas ]; then
		glib-compile-schemas /usr/share/glib-2.0/schemas/
	fi
}

symlink_login_background() {
	if [ -f /usr/share/images/desktop-base/login-background.svg.edu-diverted ]; then
		ln -fs /usr/share/images/desktop-base/debian-edu-${EDUTHEME}-login+grub.svg /usr/share/images/desktop-base/login-background.svg
	fi
}

symlink_gnome_shell_css() {
	if [ -f /usr/share/gnome-shell/theme/gnome-shell.css.edu-diverted ]; then
		ln -fs /usr/share/gnome-shell/theme/debian-edu-${EDUTHEME}-gnome-shell.css /usr/share/gnome-shell/theme/gnome-shell.css
	fi
}

unlink_gnome_shell_css() {
	if [ -h /usr/share/gnome-shell/theme/gnome-shell.css ] && \
	   [ "$(readlink /usr/share/gnome-shell/theme/gnome-shell.css)" = "/usr/share/gnome-shell/theme/debian-edu-${EDUTHEME}-gnome-shell.css" ]; then
		rm -f /usr/share/gnome-shell/theme/gnome-shell.css
	fi
}

symlink_kde_base_edu_js() {
	if [ -f /usr/share/debian-edu-artwork-${EDUTHEME}/kde4/apps/plasma-desktop/init/20-desktop-base-edu.js ]; then
		ln -fs /usr/share/debian-edu-artwork-${EDUTHEME}/kde4/apps/plasma-desktop/init/20-desktop-base-edu.js /usr/share/kde4/apps/plasma-desktop/init/
	fi
}

unlink_kde_base_edu_js() {
	if [ -h /usr/share/kde4/apps/plasma-desktop/init/20-desktop-base-edu.js ] && \
	   [ "$(readlink /usr/share/kde4/apps/plasma-desktop/init/20-desktop-base-edu.js)" = "/usr/share/debian-edu-artwork-${EDUTHEME}/kde4/apps/plasma-desktop/init/20-desktop-base-edu.js" ]; then
		rm -f /usr/share/kde4/apps/plasma-desktop/init/20-desktop-base-edu.js
	fi
}

case "$1" in
	configure)
		change_ldm_background
		change_grub_background
		change_desktop_background
		change_ksplash
		compile_gschemas
		symlink_login_background
		symlink_kde_base_edu_js
		symlink_gnome_shell_css
	;;
	remove)
		restore_ldm_background
		restore_grub_background
		restore_desktop_background
		restore_ksplash
		compile_gschemas
		unlink_kde_base_edu_js
		unlink_gnome_shell_css
	;;
esac
