#!/bin/sh
# If you change this, please also change the copy in scripts/casper-bottom/30accessibility.

. /usr/share/debconf/confmodule
. /etc/casper.conf

PREREQ=""
DESCRIPTION="Configuring accessibility options..."
db_get passwd/username
TARGET_USERNAME="$RET"

gct() {
    chroot /target sudo -u "$TARGET_USERNAME" gconftool-2 "$@"
}

gct_gdm() {
    chroot /target sudo -u gdm gconftool-2 "$@"
}

kderc_addtoprefixes() {
    if [ -e "/target/etc/kde4rc" ]; then
        sed -i "s|\\(prefixes=/usr/share/kubuntu-default-settings/kde-profile/default/\\)|\\1,$1|" /target/etc/kde4rc
    fi
}

# Code to remove an applet from the default panel setup
# This is rather hacky, but I can't think of a one or two line regular
# expression to do this any more efficiently. Patches welcome.
# In addition, setting these via gconf also doesn't work for some reason.
remove_applet()
{
        local line_no prior_line next_line

        line_no=$(grep -n "<string>$1</string>" /target/usr/share/gconf/defaults/05_panel-default-setup.entries | cut -f 1 -d :)
        [ "$line_no" ] || return
        prior_line=$((line_no-1))
        next_line=$((line_no+1))
        sed -i -n "${prior_line},${next_line}!p" /target/usr/share/gconf/defaults/05_panel-default-setup.entries
        chroot /target update-gconf-defaults
}

for x in $(cat /proc/cmdline); do
                case $x in
                        # Lesser Visual Impairment
                        access=v1)
                        gct -s -t string /desktop/gnome/interface/gtk_theme HighContrastLargePrint
                        gct -s -t string /desktop/gnome/interface/icon_theme HighContrast
                        gct -s -t string /desktop/gnome/interface/monospace_font_name "monospace 18"
                        gct -s -t string /desktop/gnome/interface/font_name "sans 18"
                        gct -s -t string /apps/metacity/general/theme Atlanta
                        gct -s -t string /desktop/gnome/background/picture_filename ""
                        gct -s -t string /desktop/gnome/background/picture_options none
                        gct -s -t string /desktop/gnome/background/primary_color \#666666
                        gct -s -t string /desktop/gnome/background/secondary_color \#7F7F7F
                        gct -s -t string /desktop/gnome/background/color_shading_type solid
                        gct -s -t int /desktop/gnome/peripherals/mouse/cursor_size 48
                        gct -s -t string /desktop/gnome/peripherals/mouse/cursor_theme whiteglass
                        kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/lesser-visual-impairment/
                        if [ -d /target/usr/share/xubuntu-default-settings/accessibility ]; then
                            cp -a /target/usr/share/xubuntu-default-settings/accessibility/* /target/etc/xdg/
                        fi
                        ;;
                        # Moderate Visual Impairment
                        access=v2)
                        gct -s -t bool /desktop/gnome/interface/accessibility true
                        gct -s -t bool /apps/gksu/disable-grab true
                        gct -s -t string /desktop/gnome/applications/window_manager/default /usr/bin/metacity
                        gct -s -t bool /desktop/gnome/applications/at/visual/startup true
                        gct -s -t string /desktop/gnome/applications/at/visual/exec orca

                        if [ -d /usr/share/xubuntu-default-settings ]; then
                          apt-install gnome-orca gnome-mag
                        fi

			if [ -x /target/usr/bin/orca ]; then
				if [ -f /home/$USERNAME/.orca/user-settings.py ]; then
					cp -r /home/$USERNAME/.orca /target/home/$TARGET_USERNAME/
					chroot /target chown -R $TARGET_USERNAME.$TARGET_USERNAME /home/$TARGET_USERNAME/.orca
				else
					mkdir -p /target/home/$TARGET_USERNAME/.orca
					echo "import orca.settings" >> /target/home/$TARGET_USERNAME/.orca/user-settings.py
					echo "orca.settings.enableSpeech = True" >> /target/home/$TARGET_USERNAME/.orca/user-settings.py
					echo "orca.settings.enableMagnifier = True" >> /target/home/$TARGET_USERNAME/.orca/user-settings.py
					chroot /target chown -R $TARGET_USERNAME.$TARGET_USERNAME /home/$TARGET_USERNAME/.orca
				fi
			fi
                        sed -i -e 's/# Host alias specification/Defaults\tenv_keep = "ORBIT_SOCKETDIR XDG_SESSION_COOKIE GTK_MODULES"\n\n# Host alias specification/g' /target/etc/sudoers

                        kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/lesser-visual-impairment/,/usr/share/kubuntu-default-settings/kde-profile/moderate-visual-impairment/
                        ;;
                        # Blindness
                        access=v3)
                        gct -s -t bool /desktop/gnome/interface/accessibility true
                        gct -s -t bool /apps/gksu/disable-grab true
                        gct -s -t string /desktop/gnome/applications/window_manager/default /usr/bin/metacity
                        gct -s -t bool /desktop/gnome/applications/at/visual/startup true
                        gct -s -t string /desktop/gnome/applications/at/visual/exec orca
                        gct -s -t string /apps/empathy/conversation/theme classic                        
                        gct_gdm -s -t bool /desktop/gnome/interface/accessibility true
                        gct_gdm -s -t bool /desktop/gnome/applications/at/visual/startup true
                        gct_gdm -s -t string /desktop/gnome/applications/at/visual/exec orca 
                        gct_gdm -s -t bool /desktop/gnome/applications/at/screen_reader_enabled true
                        remove_applet fast_user_switch
                        sed -i -e 's/# Host alias specification/Defaults\tenv_keep = "ORBIT_SOCKETDIR XDG_SESSION_COOKIE GTK_MODULES"\n\n# Host alias specification/g' /target/etc/sudoers
			if [ -x /target/usr/bin/orca ]; then
				if [ -f /home/$USERNAME/.orca/user-settings.py ]; then
					cp -r /home/$USERNAME/.orca /target/home/$TARGET_USERNAME/
					chroot /target chown -R $TARGET_USERNAME.$TARGET_USERNAME /home/$TARGET_USERNAME/.orca
					cp -r /home/$USERNAME/.orca /target/var/lib/gdm
					chroot /target chown -R gdm.gdm /var/lib/gdm/.orca
				else
					mkdir -p /target/home/$TARGET_USERNAME/.orca
					chroot /target chown -R $TARGET_USERNAME.$TARGET_USERNAME /home/$TARGET_USERNAME/.orca
				fi
			fi

                        if [ -d /usr/share/xubuntu-default-settings ]; then
                          apt-install gnome-orca
                        fi
                        ;;
                        # Braille
                        braille=ask)
                        gct -s -t bool /desktop/gnome/interface/accessibility true
                        gct -s -t bool /desktop/gnome/applications/at/visual/startup true
                        gct -s -t string /desktop/gnome/applications/at/visual/exec orca
                        if [ -x /target/usr/bin/orca ]; then
				if [ -f /home/$USERNAME/.orca/user-settings.py ]; then
					cp -r /home/$USERNAME/.orca /target/home/$TARGET_USERNAME/
					chroot /target chown -R $TARGET_USERNAME.$TARGET_USERNAME /home/$TARGET_USERNAME/.orca
					cp -r /home/$USERNAME/.orca /target/var/lib/gdm
					chroot /target chown -R gdm.gdm /var/lib/gdm/.orca
				else
	                                mkdir -p /target/home/$TARGET_USERNAME/.orca
					echo "import orca.settings" >> /target/home/$TARGET_USERNAME/.orca/user-settings.py
	                                echo "orca.settings.enableSpeech = False" >> /target/home/$TARGET_USERNAME/.orca/user-settings.py
	                                echo "orca.settings.enableBraille = True" >> /target/home/$TARGET_USERNAME/.orca/user-settings.py
					chroot /target chown -R $TARGET_USERNAME.$TARGET_USERNAME /home/$TARGET_USERNAME/.orca
					cp -r /home/$TARGET_USERNAME/.orca /target/var/lib/gdm
					chroot /target chown -R gdm.gdm /var/lib/gdm/.orca
				fi
                        fi
                        gct -s -t bool /apps/gksu/disable-grab true
                        gct -s -t string /desktop/gnome/applications/window_manager/default /usr/bin/metacity
                        gct -s -t string /apps/empathy/conversation/theme classic                        
                        gct_gdm -s -t bool /desktop/gnome/interface/accessibility true
                        gct_gdm -s -t bool /desktop/gnome/applications/at/visual/startup true
                        gct_gdm -s -t string /desktop/gnome/applications/at/visual/exec orca 
                        gct_gdm -s -t bool /desktop/gnome/applications/at/screen_reader_enabled true
                        remove_applet fast_user_switch
                        sed -i -e 's/# Host alias specification/Defaults\tenv_keep = "ORBIT_SOCKETDIR XDG_SESSION_COOKIE GTK_MODULES"\n\n# Host alias specification/g' /target/etc/sudoers
                        ;;
                        # Minor Motor Difficulties
                        access=m1)
                        gct -s -t bool /desktop/gnome/accessibility/keyboard/enable true
                        gct -s -t bool /desktop/gnome/accessibility/keyboard/mousekeys_enable true
                        gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_enable true
                        gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_modifier_beep true
                        gct -s -t bool /desktop/accessibility/gnome/keyboard/stickykeys_two_key_off false
                        gct -s -t bool /desktop/gnome/peripherals/keyboard/repeat true
                        gct -s -t int /desktop/gnome/peripherals/keyboard/delay 700
                        gct -s -t int /desktop/gnome/peripherals/keyboard/rate 10
                        gct -s -t bool /apps/gksu/disable-grab true
                        kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/minor-motor-difficulties/
                        if [ -e /target/etc/xdg/xfce4/mcs_settings/keyboard.xml ]; then
                            sed -i 's/0/1/' /target/etc/xdg/xfce4/mcs_settings/keyboard.xml
                        fi
                        ;;
                        # Motor Difficulties - pointing devices
                        access=m2)
                        gct -s -t bool /desktop/gnome/accessibility/keyboard/enable true
			gct -s -t bool /desktop/gnome/interface/accessibility true
                        gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_enable true
                        gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_modifier_beep false
                        gct -s -t bool /desktop/accessibility/gnome/keyboard/stickykeys_two_key_off false
                        gct -s -t bool /desktop/gnome/applications/at/mobility/startup true
                        gct -s -t string /desktop/gnome/applications/at/mobility/exec onboard
                        kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/minor-motor-difficulties/,/usr/share/kubuntu-default-settings/kde-profile/motor-difficulties-pointing-devices/
                        if [ -e /target/etc/xdg/xfce4/mcs_settings/keyboard.xml ]; then
                            sed -i '/Sticky/ s/0/1/' /target/etc/xdg/xfce4/mcs_settings/keyboard.xml
                        fi
                        ;;
		esac
done
