#!/usr/bin/env bash
# winezgui-list-available-prefixes
# Finds exe installed in drive_c by an installer
# and set the variable SELECTED_PREFIX
# FIXME  winezgui-list-available-prefixes
winezgui-list-available-prefixes()
{
  OLD_HEADER=${HEADER}
  dbug "I: $(basename ${0}): Launched ${FUNCNAME[0]}"
    
  SOURCE "script-check-variables-loaded-or-not"
  script-check-variables-loaded-or-not

  HEADER="$(basename ${0}): ${FUNCNAME[0]}"
  unset SELECTED_PREFIX PREFIXES_FOUND COMMAND count SHOW_OPTION
  unset NAMES FILES RESULT SEARCH_LIST RealFile RealName i

  count=0
  NAMES=()
  FILES=()
  
  SAVEIFS=${IFS}
  IFS=$(echo -en "\n\b")
  SEARCH_LIST=$(find ${PREFIXES_DIR}/* -maxdepth 0 -type d -print 2>/dev/null \
              | tr '\n' '|')
  PREFIXES_FOUND=$(echo ${SEARCH_LIST})

  if [ -z "${PREFIXES_FOUND}" ] ; then
       ${ZENITY_CMD} --error --title "${APP_WITH_VER} - no prefixes found!" \
              --text "Sorry, no prefixes found in Prefixes directory"
       unset SEARCH_LIST PREFIXES_FOUND
       IFS=${SAVEIFS}
       WineZGUI_Window
  fi
  # if PREFIXES_FOUND has value, then only change exe
  for i in $(echo ${SEARCH_LIST}|tr '|' '\n'|sort -u);  do
      RealName=$(basename "$i")
      RealFile=$(realpath -m "$i")

      # If 1st value is empty, enable it
      if [ -z "${SHOW_OPTION}" ]; then
           SHOW_OPTION+="TRUE \"${RealName}\""
           SHOW_OPTION+=" "
           NAMES+=("${RealName}")
           FILES+=("${RealFile}")
      else
           SHOW_OPTION+="0 \"${RealName}\""
           SHOW_OPTION+=" "
           NAMES+=("${RealName}")
           FILES+=("${RealFile}")
      fi
      count=$(expr ${count} + 1)
  done
  IFS=${SAVEIFS}

# Generate Height value
SOURCE "winezgui-get-window-height"
winezgui-get-window-height ${#FILES[@]}

 # 3. Show the found exe files using zenity
  unset COMMAND
  COMMAND+="${ZENITY_CMD} --title=\"${APP_WITH_VER}\" "
  COMMAND+="--text \"${PREFIX_TYPE} Prefixes\" "
  COMMAND+="--radiolist --list --width=460 --height=${HEIGHT} "
  COMMAND+="--hide-header --column \" \" --column \"Action\" ${SHOW_OPTION}"
  RESULT=$(eval ${COMMAND})
  
  ANSWER=$?
  if [ ${ANSWER} -eq 1 ]; then
       dbug "I: ${HEADER}: Cancelled!"
       unset SEARCH_LIST PREFIXES_FOUND SHOW_OPTION 
       unset NAMES FILES COMMAND RESULT count i
       WineZGUI_Window
  fi
  
  if [ -z "${RESULT}" ]; then
       dbug "I: ${HEADER}: Cancelled!"
       unset SEARCH_LIST PREFIXES_FOUND SHOW_OPTION
       unset NAMES FILES COMMAND RESULT count i
       WineZGUI_Window
  fi

  count=0
  # 4. Find which file the user selected and set the selected exe into variable
  for i in "${NAMES[@]}"; do
      if [ "$i" = "${RESULT}" ]; then
           dbug "I: ${HEADER}: Selected ${i}"
           dbug "I: ${HEADER}: Selected ${FILES[${count}]}"
           export SELECTED_PREFIX="${FILES[${count}]}"
           export SELECTED_PREFIX_NAME="${i}"
           break
      fi
      count=$(expr ${count} + 1)
  done

  HEADER=${OLD_HEADER}
}
