#!/bin/bash

Info () {
title="Info"
author="Peter Starfinger"
mail="E-Mail: info@die-starfingers.de"
year="2020"
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
}

mode () {
  local ask button gm knopf md pre title
  gm=($"Centred" $"Fit" $"Scaled" $"Stretched" $"Tiled")
  gm=($(echo "${gm[*]}" | sort))
  for ((k=0; k<${#gm[@]}; k++)); do gm[$k]="          "${gm[$k]}; done
  title=$"Set Graphics Mode"
  ask=$"&#9;Select the graphics mode&#10;&#9;from the following list:&#10;"
  button=$"Cancel"
  md=$(yad --center --height=265 --title="$title" --window-icon="/usr/share/icons/gnome/48x48/status/dialog-warning.png" --borders=20 --text="$ask" --list --no-headers --column=Mode ${gm[@]} --button="$button":1 --button="OK":0)
  knopf=$?
  md=$(echo $md | tr -d " " | tr -d "|")
  case $md in
    $"Centred")	md="Centred" ;;
    $"Fit")	md="Fit" ;;
    $"Scaled")	md="Scaled" ;;
    $"Stretched") md="Stretched" ;;
    $"Tiled")	md="Tiled" ;;
  esac
  echo $md
  return $knopf
}

period () {
  local button n
  title=$"Set Image Period"
  ask=$"&#9;Set image period&#10;&#9;to number seconds:&#10;"
  button=$"Cancel"
  n=$(yad --center --title="$title" --window-icon="/usr/share/icons/gnome/48x48/status/dialog-warning.png" --image="/usr/share/icons/gnome/48x48/status/dialog-warning.png" --borders=20 --text="$ask" --entry --button="$button":1 --button="OK":0)
  [[ ! $n =~ ^[0-9]+$ ]] && n=""
  echo $n
}

if [ "$1" = "info" ]; then
    Info
    exit 0
elif [ "$1" = "-n" ] || [ "$1" = "--next" ]; then
    err=2
elif [ "$1" = "-r" ] || [ "$1" = "--repair" ]; then
    err=252
else 
    if [[ "$1" = "-f" ]] || [[ "$1" = "--fix" ]]; then shift; err=3; else err=0; fi
    fonte="$1"
    l_new=$2
    mode="$3"
fi

if [ -z "$fonte$l_new$mode" ] && [ $err -ne 2 ] && [ $err -ne 252 ]; then

    [ -d "$HOME/.wallpaper" ] && cont=$"To change image click 'Next'!""     "$'\n' || cont=""
    text=$'\n'$"<b>Please choose a wallpaper source! "$'\n'"$cont"$"To save choice click 'Always'!""     "$'\n'$"Reset the desktop with Esc key!   </b>"$'\n'
    cancel=$"Cancel"
    button2=$"Help"
    lang_dir=$"C"
    next=$"Next"
    always=$"Always"

    [ -d "$(readlink "$HOME/.wallpaper")" ] && button="--button=$next:2" || button=""

    fonte="$(yad --title="Refresh Pinboard" --center --width=900 --height=700 --text="$text" --text-align=center --window-icon=user-desktop --always-print-result --file --filename=/usr/share/backgrounds/ --file-filter $"Graphic Files "" | *.jpg *.jpeg *.png *.webp *.JPG *.JPEG *.PNG *.WEBP" --file-filter "*.jpg" --file-filter "*.png" --file-filter "*.webp" --add-preview --button="$cancel":1 --button=$button2:"yelp /usr/share/help/$lang_dir/Starbuntu/starbuntu-apps-details.page#refresh-pinboard" --button="Info":"$0 info" $button --button="$always":3 --button="OK":0)"
    err=$?
fi

if [ $err -ne 1 ]; then
    [ $err -eq 2 ] && set-wallpaper -n

    if [ $err -eq 252 ]; then
	set-wallpaper -r
    fi

    if [ $err -eq 0 ] || [ $err -eq 3 ]; then
	set-wallpaper "$fonte"
	error=$?
	[ $error -gt 0 ] && exit $error
	[ -d "$fonte" ] && [ -z "$l_new" ] && l_new=$(period)
	IFS=$'\n'
	[ -z "$mode" ] && mode=$(mode)
	[ $err -eq 3 ] && set-wallpaper -f "$fonte" "$l_new" $mode || set-wallpaper "$fonte" "$l_new" $mode
    fi
fi
