############################################################################
#    Copyright (C) 2004 by Sad Mephisto                                    #
#    sad@antisocial.com                                                    #
#                                                                          #
#    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 2 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, write to the                         #
#    Free Software Foundation, Inc.,                                       #
#    59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             #
############################################################################
#!/bin/bash
# $Id: Instaluj,v 1.38 2004/06/24 13:15:54 adrian Exp $
# KaduInstaller - Copyright (C) 2004 Sad Mephisto <sad@antisocial.com>

export LC_ALL=pl_PL
export LANG=pl_PL

# ./configure, make, make install....  tylko eby adnie wygldao
zainstaluj()
{
	rm -fr log_install
	./configure `cat log_prefix 2> /dev/null` `cat log_configureoptions 2>/dev/null` > log_install 2> log_install && make >> log_install 2>>log_install && make install 2>> log_install >> log_install && gotowe &
	sleep 3
	dialog --backtitle "Instalator Kadu" --begin 3 2 --infobox "Instalowanie Kadu... czekaj cierpliwie" 3 45  --and-widget --begin 10 2 --exit-label "Zaczekaj..." --tailbox log_install 13 75 
		
}

# make uninstall
odinstaluj()
{
	$?=0
	dialog --stdout --defaultno --backtitle "Instalator Kadu" --title "Deinstalacja" --yesno "Czy na pewno chcesz odinstalowa Kadu?" 6 50
		if [ $? == "0" ]; then
			dialog --stdout --backtitle "Instalator Kadu" --infobox "Deinstalacja... zaczekaj" 3 30
			make uninstall > log_uninstall 2>> log_uninstall &
			dialog --backtitle "Instalator Kadu" --ok-label "OK" --msgbox "Kadu zostao odinstalowane" 5 30 
		fi;
}

# Wybr moduw do kompilacji.
# Usuwa plik .config, i zapisuje go po swojemu.
# TODO: Statyczna kompilacja
wybierzmoduly()
{
	CONFIGMENUCHOICE=`dialog --stdout --backtitle "Instalator Kadu" --menu "Menu konfiguracji" 10 75 4 \
	Statyczne	"Moduy bda kompilowane statycznie" \
	Dynamiczne	"Moduy bda kompilowane dynamicznie" \
	Wr		"Powrt do menu gwnego"`
	
	if [ $CONFIGMENUCHOICE == "Statyczne" ]; then
		statyczne
	elif [ $CONFIGMENUCHOICE == "Dynamiczne" ]; then
		dynamiczne
	elif [ $CONFIGMENUCHOICE == "Wr" ]; then
		mainmenu
	fi;

}

statyczne()
{
	rm -fr log_selectedmodule
	dialog --separate-output --checklist "Wybierz moduy do zainstalowania" 0 75 0 \
		wmaker_docking "Obsuga dokowania ikony dla WindowMakera" 0 \
    		speech "Obsuga syntezatora mowy" on \
    		dsp_sound "Wsparcie DSP dla dwiku" 0 \
    		arts_sound "Wsparcie aRts! dla dwiku" on \
    		esd_sound "Wsparcie ESD dla dwiku" 0 \
    		nas_sound "Wsparcie Network Audio System dla dwiku" 0 \
    		echo "Przykadowy modu Echo" 0 \
    		autoresponder "Modu Autoodpowiedzi" on \
		tcl_scripting "Modu TCL - autopobr z http://" 0 \
		xmms "Pobiera opisy z XMMS - autopobr z http://" 0 \
		amarok "Pobiera opisy z Amarok - autopobr z http://" 0 \
		mail "Obsuga skrzynek e-mail - autopobr z http://" 0 \
		filedesc "Pobiera opisy z pliku - autopobr z http://" 0 \
		spellchecker "Zaznacza bdy - autopobr z http://" 0 \
		pcspeaker "Obsuga gosnika systemowego" 0 2>log_selectedmodule

		rm -f .config
	MODULY="wmaker_docking speech dsp_sound arts_sound esd_sound nas_sound echo autoresponder tcl_scripting xmms amarok filedesc mail spellchecker pcspeaker"
	for MODUL in $MODULY; do
		if [[ `cat log_selectedmodule |grep $MODUL` != "" ]]; then
			echo "module_$MODUL=y" >> .config
		else
			echo "module_$MODUL=n" >> .config
		fi;
	done;
echo "module_docking=y" >> .config
echo "module_x11_docking=y" >> .config
echo "module_encryption=y" >> .config
echo "module_voice=y" >> .config
echo "module_sound=y" >> .config
echo "module_ext_sound=y" >> .config
echo "module_sms=y" >> .config
echo "module_default_sms=y" >> .config
echo "module_autoaway=y" >> .config

}
dynamiczne()
{
	rm -fr log_selectedmodule
	dialog --separate-output --checklist "Wybierz moduy do zainstalowania" 0 75 0 \
		wmaker_docking "Obsuga dokowania ikony dla WindowMakera" 0 \
    		speech "Obsuga syntezatora mowy" on \
    		dsp_sound "Wsparcie DSP dla dwiku" 0 \
    		arts_sound "Wsparcie aRts! dla dwiku" on \
    		esd_sound "Wsparcie ESD dla dwiku" 0 \
    		nas_sound "Wsparcie Network Audio System dla dwiku" 0 \
    		echo "Przykadowy modu Echo" 0 \
    		autoresponder "Modu Autoodpowiedzi" on \
		tcl_scripting "Modu TCL - autopobr z http://" 0 \
		xmms "Pobiera opisy z XMMS - autopobr z http://" 0 \
		amarok "Pobiera opisy z Amarok - autopobr z http://" 0 \
		mail "Obsuga skrzynek e-mail - autopobr z http://" 0 \
		filedesc "Pobiera opisy z pliku - autopobr z http://" 0 \
		spellchecker "Zaznacza bdy - autopobr z http://" 0 \
		pcspeaker "Obsuga gosnika systemowego" 0 2>log_selectedmodule

		rm -f .config
	MODULY="wmaker_docking speech dsp_sound arts_sound esd_sound nas_sound echo autoresponder tcl_scripting xmms amarok filedesc mail spellchecker pcspeaker"
	for MODUL in $MODULY; do
		if [[ `cat log_selectedmodule |grep $MODUL` != "" ]]; then
			echo "module_$MODUL=m" >> .config
		else
			echo "module_$MODUL=n" >> .config
		fi;
	done;
echo "module_docking=y" >> .config
echo "module_x11_docking=y" >> .config
echo "module_encryption=y" >> .config
echo "module_voice=y" >> .config
echo "module_sound=y" >> .config
echo "module_ext_sound=y" >> .config
echo "module_sms=y" >> .config
echo "module_default_sms=y" >> .config
echo "module_autoaway=y" >> .config

}

# Menu z opcjami uruchomienia ./configure
dodatkoweopcje()
{
	rm -fr log_configureoptions
	dialog --separate-output --checklist "Wybierz moduy do zainstalowania" 0 75 0 \
	--enable-debug 	"Wcza tryb debug" 0 \
	--disable-modules	"Wycza obsug moduw" 0 \
	--with-existing-libgadu "Linkuje z istniejcym libgadu" 0 \
	 2>log_configureoptions

}

# Szuka moliwych przyczyn nieudanej kompilacji (jeszcze zanim wszystko zaczniemy)
szukajproblemow()
{
	# Sprawd, czy na pewno masz roota:
	if [ $UID != "0" ]; then
		dialog --stdout --defaultno --backtitle "Instalator Kadu" --title "Brak uprawnie administratora" --yesno "Nie pracujesz jako root\nCzy chcesz kontynuowa instalacj?" 6 50
		if [ $? == "1" ]; then
			goodbye
		fi;
	fi;
	
	# Sprawd, czy czy masz ustawion zmienn QTDIR
	if [ $QTDIR == $TAKIEJZMIENNEJNIEMA ]; then
		dialog --stdout --defaultno --backtitle "Instalator Kadu" --title "Brak ustawionej zmiennej \$QTDIR" --yesno "Zmienna \$QTDIR nie jest ustawiona. Moesz mie problemy z kompilacj\nCzy chcesz kontynuowa instalacj?" 6 75
		if [ $? == "1" ]; then
			goodbye
		fi;
	fi;
}

hello()
{
	dialog --backtitle "Instalator Kadu" --ok-label "Kontynuuj" --msgbox "Witaj w programie instalacyjnym Kadu! \
	\nInstalator pomoe Ci zainstalowa lub uaktualni Kadu" 6 75
		
}

pathmenu()
{
	PREF_BAK=$PREFIXPATH
	PREFIXPATH=`dialog --stdout --backtitle "Instalator Kadu" --inputbox  "Podaj ciek instalacji Kadu" 7 50 "$PREFIXPATH"`
	if [[ $PREFIXPATH != "" ]]; then
		echo -e -n "--prefix=$PREFIXPATH" > log_prefix
	else
	PREFIXPATH=$PREF_BAK
	fi;
}

configmenu()
{
	CONFIGMENUCHOICE=`dialog --stdout --backtitle "Instalator Kadu" --menu "Menu konfiguracji" 10 75 4 \
	Moduy		"Wybierz moduy do instalacji" \
	Kompilacja	"Dodatkowe opcje kompilacji" \
	cieka		"Ustaw docelow ciek instalacji" \
	Wr		"Powrt do menu gwnego"`
	
	if [ $CONFIGMENUCHOICE == "Moduy" ]; then
		wybierzmoduly
	elif [ $CONFIGMENUCHOICE == "Kompilacja" ]; then
		dodatkoweopcje
	elif [ $CONFIGMENUCHOICE == "cieka" ]; then
		pathmenu	
	elif [ $CONFIGMENUCHOICE == "Wr" ]; then
		mainmenu
	fi;
	
}



mainmenu(){
	MENUCHOICE=`dialog --stdout --no-cancel --backtitle "Instalator Kadu" --menu "Menu gwne" 12 65 6 \
	Pomoc		"Przeczytaj pomoc dotyczc instalacji" \
	Aktualizacja	"cignij najnowsz wersj CVS" \
	Konfiguracja	"Ustaw parametry instalacyjne Kadu" \
	Instalacja	"Rozpocznij standardow instalacj" \
	Deinstalacja	"Odinstaluj Kadu" \
	Koniec		"Zakocz instalacj"`
	
	if [ $MENUCHOICE == "Instalacja" ]; then
		zainstaluj
	elif [ $MENUCHOICE == "Aktualizacja" ]; then
		dialog --backtitle "Instalator Kadu" --infobox "Gdy zostaniesz poproszony o haso, nacinij <ENTER>" 0 0
		cd ..
		cvs -d:pserver:anonymous@kadu.net:/usr/src/kadu login
		cvs -z3 -d:pserver:anonymous@kadu.net:/usr/src/kadu co kadu	
		cd kadu
		dialog --beep --backtitle "Instalator Kadu" --msgbox "rda Kadu zostay zaktualizowane!" 0 0
	elif [ $MENUCHOICE == "Konfiguracja" ]; then
		configmenu
	elif [ $MENUCHOICE == "Koniec" ]; then
		goodbye
	elif [ $MENUCHOICE == "Deinstalacja" ]; then
		odinstaluj
	elif [ $MENUCHOICE == "Pomoc" ]; then 
		pomoc
	fi;
	

}

pomoc()
{
	cat > ./.temp << "	END"
	Szczegowe informacje dotyczce wymaga programowych
	i sprztowych znajduj si na stronie http://kadu.net
	
	W wikszoci przypadkw nie jest konieczne
	dodatkowe konfigurowanie parametrw instalacyjnych
	Kadu. Warto jednak zajrze do sekcji "Moduy" i
	wybra tu rodzaj moduw (statyczne lub dynamiczne)
	oraz te, ktre uwaasz za potrzebne.
	
	UWAGA: przy wyborze moduw opisanych informacj
	*autopobr* Moduy te bd automatycznie pobierene
	z internetu w wersji odpowiedniej do wersji Kadu.
	Konieczne jest wic posiadanie uruchomionego cza
	internetowego. Jeeli modu nie zostanie pobrany,
	zostanie pominity podczas kompilacji.
	
	Po wybraniu opcji "Instaluj" rozpoczyna si proces
	kompilacji i instalacji Kadu. Jeli proces instalacji
	si zatrzyma z komunikatem o bdzie, przeczytaj plik
	"log_install" I sprawd w dokumentacji czy podobny
	problem nie zosta opisany. Jeli nie znajdziesz
	wskazwek, to przeszukaj forum Kadu
	(http://kadu.net/forum) w poszukiwaniu odpowiedzi.
	END
	dialog --backtitle "Instalator Kadu" --exit-label "Zrozumiaem" --textbox ./.temp 25 75
	rm -f ./.temp
}

goodbye()
{
	dialog --backtitle "Instalator Kadu" --title "Koniec" --infobox "Pozdrowienia od\n   Kadu Team!" 0 0
	exit
}

gotowe()
{
	dialog --backtitle "Instalator Kadu" --title "Instalacja zakoczona" --infobox "Instalacja zakoczona. Jeli Kadu si nie zainstalowao, to przejrzyj plik \"log_install\"" 4 50
	exit
}

# URUCHOM PROGRAM
PREFIXPATH=/usr
echo -e -n "--prefix=$PREFIXPATH" > log_prefix
hello
szukajproblemow
while [ 1 ]; do
	mainmenu
done;


