#!/bin/bash

# Simple script to work around the limitations of svn diff.
# This will perform the svn moves and deletes etc in the WC.

#
# Functions
#
move_to_theme_dir ()
{
  local THEME_DIR="$1"
  local FILES_DEFAULT="$2"
  local FILES_DEFAULT_WIDE="$3"
  local FILES_MENUS="$4"
  
  for file in $FILES_DEFAULT
  do
    if [ -e $file ]; then
      svn move ${file} ${THEME_DIR}/default
    else
      echo "WARNING: Unable to locate $file"
    fi
  done

  for file in $FILES_DEFAULT_WIDE
  do
    if [ -e $file ]; then
      svn move ${file} ${THEME_DIR}/default-wide
    else
      echo "WARNING: Unable to locate $file"
    fi
  done

  for file in $FILES_MENUS
  do
    if [ -e $file ]; then
      svn move ${file} ${THEME_DIR}/menus
    else
      echo "WARNING: Unable to locate $file"
    fi
  done
}

if [ $# -ne "0" ]; then
  echo "ERROR: Not expecting any arguements!"
  exit 1
fi

#
# Check we have the expected directory structure
#
START_DIR=`pwd`
HOME_DIR=`dirname ${0}`

# Check for home dir
if [ -d ${HOME_DIR} ]; then
  cd ${HOME_DIR}
  HOME_DIR=`pwd`
  cd ${START_DIR}
else
  echo "ERROR: unexpected error!"
  exit 1
fi

# Check for trunk dir
if [ -d "${HOME_DIR}/../trunk" ]; then
  cd "${HOME_DIR}/../trunk"
  MYTHTV_SRC=`pwd`
  cd ${START_DIR}
else
  echo "ERROR: Can't find trunk dir!"
  exit 1
fi

# Check for mythtv dir
if [ ! -d ${MYTHTV_SRC}/mythtv ]; then
  echo "ERROR: Can't find '${MYTHTV_SRC}/mythtv' directory!"
  exit 1
fi

# Check for mythplugins
if [ ! -d ${MYTHTV_SRC}/mythplugins ]; then
  echo "ERROR: Can't find '${MYTHTV_SRC}/mythplugins' directory!"
  exit 1
fi


#
# Test for svn WC
#
svn info ${MYTHTV_SRC} > /dev/null 2>&1
if [ $? -ne "0" ]; then
  echo "Expecting a svn working copy"
  exit 1
fi



#
# Patch .pro files
#
echo "\n### Patching Qt .pro files"
if [ -n "`svn diff ${MYTHTV_SRC}`" ]; then
  echo "ERROR: ${MYTHTV_SRC} is modified, must be run with pristine source!"
  exit 1
fi

cd ${MYTHTV_SRC}
patch -p0 < "${HOME_DIR}/patch_pro_files.diff"
cd ${START_DIR}

#
# Create theme dir in plugins
#
echo "\n### Adding new theme dirs to plugins"
for dir in mytharchive mythbrowser mythcontrols mythflix mythgallery mythgame mythmovies mythmusic mythnews mythphone mythvideo mythweather mythzoneminder 
do
  cp -r ${HOME_DIR}/theme ${MYTHTV_SRC}/mythplugins/${dir}
  svn add ${MYTHTV_SRC}/mythplugins/${dir}/theme
done


#
# Mytharchive
#
echo "\n### Updating Mytharchive"
MYTHARCHIVE_DEFAULT=`find ${MYTHTV_SRC}/mythplugins/mytharchive/images -name '*.png'`
MYTHARCHIVE_DEFAULT="$MYTHARCHIVE_DEFAULT ${MYTHTV_SRC}/mythplugins/mytharchive/mytharchive/mytharchive-ui.xml"
MYTHARCHIVE_DEFAULT="$MYTHARCHIVE_DEFAULT ${MYTHTV_SRC}/mythplugins/mytharchive/mytharchive/mythburn-ui.xml"
MYTHARCHIVE_DEFAULT="$MYTHARCHIVE_DEFAULT ${MYTHTV_SRC}/mythplugins/mytharchive/mytharchive/mythnative-ui.xml"

MYTHARCHIVE_DEFAULT_WIDE="${MYTHTV_SRC}/mythtv/themes/default-wide/mytharchive-ui.xml"
MYTHARCHIVE_DEFAULT_WIDE="$MYTHARCHIVE_DEFAULT_WIDE ${MYTHTV_SRC}/mythtv/themes/default-wide/mythburn-ui.xml"
MYTHARCHIVE_DEFAULT_WIDE="$MYTHARCHIVE_DEFAULT_WIDE ${MYTHTV_SRC}/mythtv/themes/default-wide/mythnative-ui.xml"

MYTHARCHIVE_MENUS="${MYTHTV_SRC}/mythplugins/mytharchive/mytharchive/archivemenu.xml"
MYTHARCHIVE_MENUS="$MYTHARCHIVE_MENUS ${MYTHTV_SRC}/mythplugins/mytharchive/mytharchive/archiveformat.xml"
MYTHARCHIVE_MENUS="$MYTHARCHIVE_MENUS ${MYTHTV_SRC}/mythplugins/mytharchive/mytharchive/archiveutils.xml"

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mytharchive/theme" "$MYTHARCHIVE_DEFAULT" "$MYTHARCHIVE_DEFAULT_WIDE" "$MYTHARCHIVE_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mytharchive/images"


#
# Mythbrowser
#
echo "\n### Updating Mythbroswer"
MYTHBROWSER_DEFAULT=`find ${MYTHTV_SRC}/mythplugins/mythbrowser/mythbrowser/images -name '*.png'`

MYTHBROWSER_DEFAULT_WIDE=""

MYTHBROWSER_MENUS=""

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythbrowser/theme" "$MYTHBROWSER_DEFAULT" "$MYTHBROWSER_DEFAULT_WIDE" "$MYTHBROWSER_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythbrowser/mythbrowser/images"


#
# Mythcontrols
#
echo "\n### Updating Mythcontrols"
MYTHCONTROLS_DEFAULT=`find ${MYTHTV_SRC}/mythplugins/mythcontrols/images -name '*.png'`
MYTHCONTROLS_DEFAULT="$MYTHCONTROLS_DEFAULT ${MYTHTV_SRC}/mythplugins/mythcontrols/mythcontrols/controls-ui.xml"

MYTHCONTROLS_DEFAULT_WIDE="${MYTHTV_SRC}/mythtv/themes/default-wide/controls-ui.xml"

MYTHCONTROLS_MENUS=""

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythcontrols/theme" "$MYTHCONTROLS_DEFAULT" "$MYTHCONTROLS_DEFAULT_WIDE" "$MYTHCONTROLS_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythcontrols/images"


#
# Mythflix
#
echo "\n### Updating Mythflix"
MYTHFLIX_DEFAULT=`find ${MYTHTV_SRC}/mythplugins/mythflix/mythflix/images -name '*.png'`
MYTHFLIX_DEFAULT="$MYTHFLIX_DEFAULT ${MYTHTV_SRC}/mythplugins/mythflix/mythflix/netflix-ui.xml"

MYTHFLIX_DEFAULT_WIDE="${MYTHTV_SRC}/mythtv/themes/default-wide/netflix-ui.xml"
MYTHFLIX_DEFAULT_WIDE="$MYTHFLIX_DEFAULT_WIDE ${MYTHTV_SRC}/mythtv/themes/default-wide/netflix-bg.png"

MYTHFLIX_MENUS="${MYTHTV_SRC}/mythplugins/mythflix/mythflix/netflix_menu.xml"

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythflix/theme" "$MYTHFLIX_DEFAULT" "$MYTHFLIX_DEFAULT_WIDE" "$MYTHFLIX_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythflix/mythflix/images"


#
# Mythgallery
#
echo "\n### Updating Mythgallery"
MYTHGALLERY_DEFAULT=`find ${MYTHTV_SRC}/mythplugins/mythgallery/mythgallery/images -name '*.png'`
MYTHGALLERY_DEFAULT="$MYTHGALLERY_DEFAULT ${MYTHTV_SRC}/mythplugins/mythgallery/mythgallery/gallery-ui.xml"

MYTHGALLERY_DEFAULT_WIDE="${MYTHTV_SRC}/mythtv/themes/default-wide/gallery-ui.xml"

MYTHGALLERY_MENUS=""

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythgallery/theme" "$MYTHGALLERY_DEFAULT" "$MYTHGALLERY_DEFAULT_WIDE" "$MYTHGALLERY_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythgallery/mythgallery/images"


#
# Mythgame
#
echo "\n### Updating Mythgame"
MYTHGAME_DEFAULT="${MYTHTV_SRC}/mythplugins/mythgame/mythgame/game-ui.xml"

MYTHGAME_DEFAULT_WIDE="${MYTHTV_SRC}/mythtv/themes/default-wide/game-ui.xml"

MYTHGAME_MENUS="${MYTHTV_SRC}/mythplugins/mythgame/mythgame/game_settings.xml"

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythgame/theme" "$MYTHGAME_DEFAULT" "$MYTHGAME_DEFAULT_WIDE" "$MYTHGAME_MENUS"


#
# Mythmovies
#
echo "\n### Updating Mythmovies"
MYTHMOVIES_DEFAULT="${MYTHTV_SRC}/mythplugins/mythmovies/mythmovies/movies-ui.xml"

MYTHMOVIES_DEFAULT_WIDE="${MYTHTV_SRC}/mythplugins/mythmovies/mythmovies/theme-wide/movies-ui.xml"

MYTHMOVIES_MENUS=""

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythmovies/theme" "$MYTHMOVIES_DEFAULT" "$MYTHMOVIES_DEFAULT_WIDE" "$MYTHMOVIES_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythmovies/mythmovies/movies-ui.xml ${MYTHTV_SRC}/mythplugins/mythmovies/mythmovies/theme-wide"


#
# Mythmusic
#
echo "\n### Updating Mythmusic"
MYTHMUSIC_DEFAULT=`find ${MYTHTV_SRC}/mythplugins/mythmusic/mythmusic/images -name '*.png'`
MYTHMUSIC_DEFAULT="$MYTHMUSIC_DEFAULT ${MYTHTV_SRC}/mythplugins/mythmusic/mythmusic/music-ui.xml"

MYTHMUSIC_DEFAULT_WIDE="${MYTHTV_SRC}/mythtv/themes/default-wide/music-ui.xml"
MYTHMUSIC_DEFAULT_WIDE="$MYTHMUSIC_DEFAULT_WIDE ${MYTHTV_SRC}/mythtv/themes/default-wide/mm_blackhole_border.png"
MYTHMUSIC_DEFAULT_WIDE="$MYTHMUSIC_DEFAULT_WIDE ${MYTHTV_SRC}/mythtv/themes/default-wide/mm_volume_background.png"
MYTHMUSIC_DEFAULT_WIDE="$MYTHMUSIC_DEFAULT_WIDE ${MYTHTV_SRC}/mythtv/themes/default-wide/mm_waiting.png"

MYTHMUSIC_MENUS="${MYTHTV_SRC}/mythplugins/mythmusic/mythmusic/musicmenu.xml"
MYTHMUSIC_MENUS="$MYTHMUSIC_MENUS ${MYTHTV_SRC}/mythplugins/mythmusic/mythmusic/music_settings.xml"

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythmusic/theme" "$MYTHMUSIC_DEFAULT" "$MYTHMUSIC_DEFAULT_WIDE" "$MYTHMUSIC_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythmusic/mythmusic/images"


#
# Mythnews
#
echo "\n### Updating Mythnews"
MYTHNEWS_DEFAULT=`find ${MYTHTV_SRC}/mythplugins/mythnews/mythnews/images -name '*.png'`
MYTHNEWS_DEFAULT="$MYTHNEWS_DEFAULT ${MYTHTV_SRC}/mythplugins/mythnews/mythnews/news-ui.xml"

MYTHNEWS_DEFAULT_WIDE="${MYTHTV_SRC}/mythtv/themes/default-wide/news-ui.xml"

MYTHNEWS_MENUS=""

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythnews/theme" "$MYTHNEWS_DEFAULT" "$MYTHNEWS_DEFAULT_WIDE" "$MYTHNEWS_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythnews/mythnews/images"


#
# Mythphone
#
echo "\n### Updating Mythphone"
MYTHPHONE_DEFAULT=`find ${MYTHTV_SRC}/mythplugins/mythphone/mythphone/images -name '*.png'`
MYTHPHONE_DEFAULT="$MYTHPHONE_DEFAULT ${MYTHTV_SRC}/mythplugins/mythphone/mythphone/phone-ui.xml"
MYTHPHONE_DEFAULT="$MYTHPHONE_DEFAULT ${MYTHTV_SRC}/mythplugins/mythphone/mythphone/webcam-ui.xml"

MYTHPHONE_DEFAULT_WIDE=""

MYTHPHONE_MENUS=""

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythphone/theme" "$MYTHPHONE_DEFAULT" "$MYTHPHONE_DEFAULT_WIDE" "$MYTHPHONE_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythphone/mythphone/images"


#
# Mythvideo
#
echo "\n### Updating Mythvideo"
MYTHVIDEO_DEFAULT=`find ${MYTHTV_SRC}/mythplugins/mythvideo/mythvideo/images -name '*.png'`
MYTHVIDEO_DEFAULT="$MYTHVIDEO_DEFAULT ${MYTHTV_SRC}/mythplugins/mythvideo/mythvideo/video-ui.xml"
MYTHVIDEO_DEFAULT="$MYTHVIDEO_DEFAULT ${MYTHTV_SRC}/mythplugins/mythvideo/mythvideo/dvd-ui.xml"

MYTHVIDEO_DEFAULT_WIDE=`find ${MYTHTV_SRC}/mythplugins/mythvideo/mythvideo/theme-wide/images -name '*.png'`
MYTHVIDEO_DEFAULT_WIDE="$MYTHVIDEO_DEFAULT_WIDE ${MYTHTV_SRC}/mythplugins/mythvideo/mythvideo/theme-wide/video-ui.xml"
MYTHVIDEO_DEFAULT_WIDE="$MYTHVIDEO_DEFAULT_WIDE ${MYTHTV_SRC}/mythplugins/mythvideo/mythvideo/theme-wide/dvd-ui.xml"

MYTHVIDEO_MENUS="${MYTHTV_SRC}/mythplugins/mythvideo/mythvideo/videomenu.xml"
MYTHVIDEO_MENUS="$MYTHVIDEO_MENUS ${MYTHTV_SRC}/mythplugins/mythvideo/mythvideo/video_settings.xml"

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythvideo/theme" "$MYTHVIDEO_DEFAULT" "$MYTHVIDEO_DEFAULT_WIDE" "$MYTHVIDEO_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythvideo/mythvideo/images ${MYTHTV_SRC}/mythplugins/mythvideo/mythvideo/theme-wide"


#
# Mythweather
#
echo "\n### Updating Mythweather"
MYTHWEATHER_DEFAULT=`find ${MYTHTV_SRC}/mythplugins/mythweather/mythweather/images -name '*.png'`
MYTHWEATHER_DEFAULT="$MYTHWEATHER_DEFAULT ${MYTHTV_SRC}/mythplugins/mythweather/mythweather/weather-ui.xml"

MYTHWEATHER_DEFAULT_WIDE=`find ${MYTHTV_SRC}/mythplugins/mythweather/mythweather/theme-wide/images -name '*.png'`
MYTHWEATHER_DEFAULT_WIDE="$MYTHWEATHER_DEFAULT_WIDE ${MYTHTV_SRC}/mythplugins/mythweather/mythweather/theme-wide/weather-ui.xml"

MYTHWEATHER_MENUS="${MYTHTV_SRC}/mythplugins/mythweather/mythweather/weather_settings.xml"

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythweather/theme" "$MYTHWEATHER_DEFAULT" "$MYTHWEATHER_DEFAULT_WIDE" "$MYTHWEATHER_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythweather/mythweather/images ${MYTHTV_SRC}/mythplugins/mythweather/mythweather/theme-wide"


#
# Mythzoneminder
#
echo "\n### Updating Mythzoneminder"
MYTHZONEMINDER_DEFAULT=`find ${MYTHTV_SRC}/mythplugins/mythzoneminder/mythzoneminder/images -name '*.png'`
MYTHZONEMINDER_DEFAULT="$MYTHZONEMINDER_DEFAULT ${MYTHTV_SRC}/mythplugins/mythzoneminder/mythzoneminder/zoneminder-ui.xml"

MYTHZONEMINDER_DEFAULT_WIDE="${MYTHTV_SRC}/mythplugins/mythzoneminder/mythzoneminder/theme-wide/zoneminder-ui.xml"

MYTHZONEMINDER_MENUS="${MYTHTV_SRC}/mythplugins/mythzoneminder/mythzoneminder/zonemindermenu.xml"

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythzoneminder/theme" "$MYTHZONEMINDER_DEFAULT" "$MYTHZONEMINDER_DEFAULT_WIDE" "$MYTHZONEMINDER_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythzoneminder/mythzoneminder/images ${MYTHTV_SRC}/mythplugins/mythzoneminder/mythzoneminder/theme-wide"


#
# Remove empty dirs
#
echo "\n### Removing empty dirs"
for dir in $SVN_RM_LIST
do
  if [ -e $dir ]; then
    svn rm $dir
  else
    echo "WARNING: Can't find '${dir}' to delete."
  fi
done

