#!/usr/bin/env bash

# Make sure only root can run our script
if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

do_screen_size() {
    EPD_SIZE=""
    if [ -f /etc/default/epd-fuse ]; then
        source /etc/default/epd-fuse
    fi
    SEL=$(whiptail --title "Please select your screen size" --default-item " $EPD_SIZE" \
    --menu  "" 12 50 5 \
    " 1.44" "Inch (128 *  98) " \
    " 1.9"  "Inch (144 * 128) " \
    " 2.0"  "Inch (200 *  96) " \
    " 2.6"  "Inch (232 * 128) " \
    " 2.7"  "Inch (264 * 176) "  3>&1 1>&2 2>&3)

    exitstatus=$?
    if [ $exitstatus = 0 ]; then
        papirus-set $SEL
        whiptail  --msgbox "Screen size set to$SEL inch" 8 40
    fi
}

do_epaper_driver() {
    if (whiptail --title "ePaper Driver" --yes-button "Enable" --no-button "Disable" \
            --yesno "Enable or disable the ePaper driver" 10 60) then
        systemctl enable epd-fuse.service
        systemctl start epd-fuse.service
        whiptail --msgbox "ePaper Driver enabled and started" 8 40
    else
        systemctl stop epd-fuse.service
        systemctl disable epd-fuse.service
        whiptail --msgbox "ePaper Driver stopped and disabled" 8 40
    fi
}

do_mirror_framebuffer() {
    if (whiptail --title "Framebuffer Mirroring" --yesno "Do you want to enable framebuffer mirroring?" 10 60) then
        :
    else
        :
    fi
    whiptail --msgbox "Sorry, not implemented yet" 8 40
}

do_web_interface () {
    if (whiptail --title "Web Interface"  --yesno "Would you like to enable the web interface?" 10 60) then
        :
    else
        :
    fi
    whiptail --msgbox "Sorry, not implemented yet" 8 40
}

do_test_mode() {
    if (whiptail --title "Test mode"  --yesno "Do you want to enable auto test mode?" 10 60) then
        :
    else
        :
    fi
    whiptail --msgbox "Sorry, not implemented yet" 8 40
}

while true; do
    OPTION=$(whiptail --title "PaPiRus Config" --menu "Choose an option" 14 78 6 \
            --cancel-button Finish --ok-button Select \
            "1 Screen Size" "Change the screen ePaper screen size." \
            "2 ePaper Driver" "Enable and disable the ePaper driver." \
            "3 Mirror Framebuffer" "Use ePaper as a general display." \
            "4 Web Interface" "Enable the web interface." \
            "5 Test Mode" "Enable auto test when HAT is plugged in." 3>&1 1>&2 2>&3)
    exitstatus=$?
    if [ $exitstatus = 1 ]; then
        exit 0
    elif [ $exitstatus = 0 ]; then
        case "$OPTION" in
            1\ *) do_screen_size ;;
            2\ *) do_epaper_driver ;;
            3\ *) do_mirror_framebuffer ;;
            4\ *) do_web_interface ;;
            5\ *) do_test_mode ;;
        esac
    fi
done
