#!/bin/bash

#Fcitx Setup Helper
#Copyright 2013 AWASHIRO Ikuya <ikuya@fruitsbasket.info>
#
#This program is free software: you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation, either version 3 of the License, or
#(at your option) any later version.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License
#along with this program.  If not, see <http://www.gnu.org/licenses/>.

PKG_ZENITY=zenity
PKG_KDIALOG=kde-baseapps-bin
PKG_GSETTINGS=libglib2.0-bin
PKG_FCITX=fcitx
PKG_FCITX_MOZC=fcitx-mozc
PKG_FCITX_QT5=fcitx-libs-qt5
PKG_KCM_FCITX=kde-config-fcitx
PKG_IM_CONFIG=im-config
PKG_FCITX_FRONTEND_QT5=fcitx-frontend-qt5
NOWUSE=`env |grep XMODIFIERS|cut -d = -f 3`

# これであってる？
if ! dpkg -l | grep -qs "^ii  *${PKG_ZENITY} " && ! dpkg -l | grep -qs "^ii  *${PKG_KDIALOG} " ; then
    echo "zenityないしkdialogがインストールされていません。\n '${PKG_ZENITY}'ないし'${PKG_KDIALOG}'パッケージをインストールしてください" >&2
    exit 1
fi
 
if [ "${XDG_CURRENT_DESKTOP}" = "KDE" ]; then
	ERROR_DIALOG='kdialog --title="Fcitx　セットアップヘルパー" --error '
	INFO_DIALOG='kdialog --title="Fcitx　セットアップヘルパー" --msgbox '
	QUESTION_DIALOG='kdialog --title="Fcitx　セットアップヘルパー" --yesno '
	TEXTINFO='kdialog --title="Fcitx　セットアップヘルパー" --textbox '
else
	ERROR_DIALOG='zenity --title="Fcitx　セットアップヘルパー" --error --text='
	INFO_DIALOG='zenity --title="Fcitx　セットアップヘルパー" --info --text='
	QUESTION_DIALOG='zenity --title="Fcitx　セットアップヘルパー" --question --text='
	TEXTINFO='zenity --title="Fcitx-diagnoseの結果" --text-info --filename='
fi
# ${ERROR_DIALOG}"ほげ" ←使い方

if [ "${NOWUSE}" = "fcitx" ]; then
	${ERROR_DIALOG}"すでにFcitxを使用しています。終了します"
	exit 1
fi

if [ "${GDM_LANG}" = "ja" -o "${GDM_LANG}" = "ja_JP" ]; then
	:
else
       ${ERROR_DIALOG}"This program intends to run on Japanese environment. Sorry for inconvenience."
       exit 1
fi

# ":amd64"とか付くやつは後ろのスペースを取る
if ! dpkg -l | grep -qs "^ii  *${PKG_GSETTINGS} "; then
	LACKING="${PKG_GSETTINGS},"
fi
if ! dpkg -l | grep -qs "^ii  *${PKG_IM_CONFIG} "; then
	LACKING="${LACKING}${PKG_IM_CONFIG},"
fi
if ! dpkg -l | grep -qs "^ii  *${PKG_FCITX} "; then
	LACKING="${LACKING}${PKG_FCITX},"
fi
if ! dpkg -l | grep -qs "^ii  *${PKG_FCITX_MOZC}"; then
	LACKING="${LACKING}${PKG_FCITX_MOZC},"
fi
if ! dpkg -l | grep -qs "^ii  *${PKG_FCITX_QT5}"; then
	LACKING="${LACKING}${PKG_FCITX_QT5},"
fi
if ! dpkg -l | grep -qs "^ii  *${PKG_FCITX_FRONTEND_QT5}"; then
	LACKING="${LACKING}${PKG_FCITX_FRONTEND_QT5},"
fi
if [ "${XDG_CURRENT_DESKTOP}" = "KDE" ] && ! dpkg -l | grep -qs "^ii  *${PKG_KCM_FCITX} "; then
	LACKING="${LACKING}${PKG_KCM_FCITX},"
fi
if [ -n "${LACKING}" ]; then
	LACKING=`echo "${LACKING}" | sed -e "s/,*$//g"` 
	${ERROR_DIALOG}"${LACKING} パッケージがインストールされていません。インストールしてから再実行してください。"
	exit 1
fi

${QUESTION_DIALOG}"Fcitxをデフォルトにする設定を行いますか？"
if [ $? != "0" ]; then
	exit
fi

if [ "${XDG_CURRENT_DESKTOP}" = "Unity" ]; then
#	gsettings set org.gnome.settings-daemon.plugins.keyboard active false
	gsettings set com.canonical.indicator.keyboard visible false
#elif [ "${XDG_CURRENT_DESKTOP}" = "GNOME" ] ; then
#	gsettings set org.gnome.settings-daemon.plugins.keyboard active false
fi

INPUTSOURCE=`gsettings get org.gnome.desktop.wm.keybindings switch-input-source|grep -o \<.*\>`
if [ "${INPUTSOURCE}" = "<Primary>" ]; then
        gsettings set org.gnome.desktop.wm.keybindings switch-input-source "['<Super>space']"
        gsettings set org.gnome.desktop.wm.keybindings switch-input-source-backward "['<Super><Shift>space']"
fi

im-config -n fcitx
${INFO_DIALOG}"Fcitx診断ツールを起動します。OKをクリックして少々お待ちください"
DIAGNOSE=`mktemp`
fcitx-diagnose > ${DIAGNOSE} 
${TEXTINFO}${DIAGNOSE}
rm ${DIAGNOSE}
${INFO_DIALOG}"設定が完了しました。一旦ログアウトして再ログインしてください"
