#!/usr/bin/env bash
# Rename Application Name in .desktop file
# needed by script-change-name

script-change-name()
{    
  dbug "I: $(basename ${0}): Launched ${FUNCNAME[0]}"
  
  SOURCE "script-check-variables-loaded-or-not"
  script-check-variables-loaded-or-not
  dbug "I: Script: ${FUNCNAME[0]}: Name Selected!"
  # Find if PROGNAME does not have suffix (wine-XX) add it
  if ! [[ "${PROGNAME}" == *"(${APP_WITH_VER})" ]]; then
       PROGNAME_WITH_SUFFIX="${PROGNAME} (${APP_WITH_VER})"
  else
       PROGNAME_WITH_SUFFIX="${PROGNAME}"
  fi

  # Find if PROGNAME does not have suffix (wine-XX) add it
  if ! [[ "${PROGNAME}" == *"(${APP_WITH_VER})" ]]; then
       PROGNAME_WITH_SUFFIX="${PROGNAME} (${APP_WITH_VER})"
  else
       PROGNAME_WITH_SUFFIX="${PROGNAME}"
  fi

  # Ask for Name
  GET_PROGNAME=$(${ZENITY_CMD} --title "Rename Shortcut..."                 \
                        --text  "Enter a name for the shortcut:"     \
                        --entry-text "${PROGNAME_WITH_SUFFIX}"       \
                        --width=500 --entry                          )

  if [ -z "${GET_PROGNAME}" ]; then #if no name is given use filename
       #${ZENITY_CMD} --info --title="Shortcut... " --text="no Change"
       # Return to Game window
       dbug "I: Script: ${FUNCNAME[0]}: Name: Cancelled!"
       Script_Window
  fi
  
  # Check if user entered symbols
  SOURCE "winezgui-check-entry-text"
  winezgui-check-entry-text "${GET_PROGNAME}"
  
  ENTRY_CHECK=$?
  if [ ${ENTRY_CHECK} -eq 1 ]; then
       dbug "I: Script: ${FUNCNAME[0]}: Symbols used in filename, cancelling!"
       return 1
  fi
  
  # Set name in desktop file
  ${DESKTOP_FILE_EDIT} --set-name="${GET_PROGNAME}"      "${DESKTOPFILE}"
  dbug "I: Script: Rename Shortcut: Name: ${PROGNAME}  -> ${GET_PROGNAME}"

  # Change keyword in desktop file
  sed "s|\(Keywords.* game;\).*|\1 ${GET_PROGNAME};|g" -i ${DESKTOPFILE} \
   || echo "Failed1: ${FUNCNAME[0]}: Keywords.* game | ${GET_PROGNAME}"

  # Change Game Name
  sed "s|Name:.*|Name:${GET_PROGNAME}|g"               -i "${INFOFILE}" \
   || echo "Failed2: ${FUNCNAME[0]}: Name:.*| ${GET_PROGNAME}"

  # rename script file
  SED_SEARCH="^export PROGNAME=.*"
  SED_REPLACE="export PROGNAME=\"${GET_PROGNAME}\""
  sed "s|${SED_SEARCH}|${SED_REPLACE}|g; t;" -i "${SCRIPTFILE}" \
  || echo "Failed3: ${FUNCNAME[0]}: ^export PROGNAME=.* | ${SED_SEARCH}|${SED_REPLACE}"

  DESKTOPFILE_NAME=$(basename ${DESKTOPFILE})
  SHORTCUT_NAME="${SHORTCUT_PREFIX}_${DESKTOPFILE_NAME}"
  
  # If NO_SHORTCUTS= NOTHING/EMPTY then create shortcuts
  echo "xoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxo" 
  if [ -z "${NO_SHORTCUTS}" ]; then
       ln -sf "${DESKTOPFILE}" "${APPLICATIONSDIR}/${SHORTCUT_NAME}"
       dbug "I: Script: Shortcut is created at ${APPLICATIONSDIR}/${SHORTCUT_NAME}"
  else 
       dbug "I: Script: WARNING: Shortcut NOT CREATED at ${APPLICATIONSDIR}/${SHORTCUT_NAME}"
  fi
  # Remove broken .desktop links
  find ${APPLICATIONSDIR} -maxdepth 1 -iname "${SHORTCUT_PREFIX}*" -xtype l -delete 2>/dev/null && \
       dbug "I: Script: ${FUNCNAME[0]}: Removed broken WineZGUI .desktop links"


  ${UPDATE_DESKTOP_DATABASE} ${APPLICATIONSDIR}
  dbug "I: Script: ${FUNCNAME[0]}: Change ${PROGNAME} to ${GET_PROGNAME}"
  
  # set x permissions
  chmod +rx "${DESKTOPFILE}" "${SCRIPTFILE}" "${S_SCRIPTFILE}" "${S_DESKTOPFILE}"

  # Required for instant change in the GameWindow
  export PROGNAME="${GET_PROGNAME}"
  unset GET_PROGNAME
  unset SED_SEARCH
  unset SED_REPLACE
}
