#!/bin/bash

Info () {
local year
title="Info"
author="Peter Starfinger"
mail="E-Mail: info@die-starfingers.de"
year="2024"
app="$(basename $0)"
msgid="The Starbuntu application
<i>\$app</i>
was written by"
info="$(gettext "$msgid" | (export PATH `envsubst --variables "$msgid"`; envsubst "$msgid"))"

yad --center --fixed --title="$title" --window-icon="info" --image="info" --borders=20 --text="$info"$'\n'$'\n'"$author"$'\n'"$mail"$'\n'$'\n'"$year"$'\n' --text-align=center --selectable-labels --button="OK" &
wunwa "$title" > /dev/null; xdotool key Home key Down
}

param="$1"
[ "$param" = "info" ] && Info && exit 0

calendar_dir=$XDG_DOCUMENTS_DIR/$"Calendar"
calendar=$"Appointment Calendar"

lang="$LANG"; lang="${lang/GB/US}"
LANGUAGE="${LANG::2}"
case $LANGUAGE in
    de) date_format="%d.%m.%Y" ;;
    en) date_format="%m/%d/%Y" ;;
    es) date_format="%d/%m/%Y" ;;
    fr) date_format="%d/%m/%Y" ;;
    it) date_format="%d/%m/%Y" ;;
esac

title=$(gettext "Calendar")
path=$calendar_dir/$calendar-$(date +%Y)
IFS=$'\t'
while pgrep -x calendar > /dev/null; do sleep 1; done
cell=($(cat $path.csv | sed 's/& /\&amp; /g'))
for ((k=0; k<${#cell[@]}; k++)); do [ "${cell[$k]::1}" = $'\n' ] && cell[$k]="${cell[$k]:1}"; done
rm $path
for ((n=0; n<((${#cell[@]}/14+1)); n++)); do for ((k=0; k<7; k++)); do echo "${cell[$((n*14+k))]} <b>${cell[$((n*14+7+k))]//$'\n'/ }</b>" >> "$path"; done; done
sed -i '/^ <b><\/b>/d' "$path"
unset IFS
while true; do
    text="$(gettext "Present time: ")$(date +"%H:%M")"$'\n'"$(gettext "Choose date:")"
    datum=$(LC_ALL=$LANG timeout 60s yad --center --calendar --title="$title" --text="$text" --text-align=center --details="$path" --date-format="$date_format" --window-icon="$HOME/.icons/kalender.png" --button=$(gettext "Quit"):1 --button="Info":"$0 info" --button="Edit":0)
    button=$?
    if [ $button -eq 0 ]; then
	date="${datum:6:4}-${datum:3:2}-${datum::2}"
	[ "$LANG" = "en_GB.UTF-8" ] && date="${datum##*/}-${datum::2}-${datum:3:2}"
	eval "$(cat $HOME/.profile)"
	if [ "$datum" != "$(date +$date_format)" ]; then
	    sudo timedatectl set-ntp 0
	    sleep 1
	    sudo timedatectl set-time "$date"
	    calendar
	    sleep 10
	    sudo timedatectl set-ntp 1
	else
	    calendar
	fi
	break
    elif [ $button -eq 1 ]; then
	break
    fi
done

