#!/bin/bash

. $PREFIX/glibc/opt/termux-style/termux-style
. $PREFIX/glibc/opt/scripts/dialogs
. $PREFIX/glibc/opt/scripts/configs
apply-termux-style
while true; do
    load_configs
    if [ "$WINEESYNC" = "1" ] && [ "$WINEESYNC_TERMUX" = "0" ]; then
        su -c setenforce 0 &>/dev/null
        sudo mkdir /dev/shm &>/dev/null
        sudo chmod 1777 /dev/shm &>/dev/null
    fi
    dialog_menu "\Z6BOXVIDRA" "" \
    "1" "\Z6Start Boxvidra \Z5(BETA)" \
    "2" "\Z6Settings Boxvidra" \
    "3" "\Z6Manage packages" \
    "4" "\Z6Select current wine \Z5(installed Versions)" \
    "5" "\Z6Change box86 and box64" \
    "6" "\Z6Change to wow64 build \Z5(recommended for some games)" \
    "7" "\Z6Manage The Programs \Z5(gives advantages)" \
    "8" "\Z6Boxvidra Configuration GUI \Z5(not Completed) " \
    "9" "\Z6Boxvidra Patch Notes \Z5(BETA)" 

case $? in
1)
    dialog_menu "\Z6BOXVIDRA" "" \
    "1" "\Z6Start Boxvidra \Z5(non-root)" \
    "2" "\Z6Start Boxvidra \Z5(root)" \
    "3" "\Z6Start Boxvidra \Z5(safe mode, not completed)"
    case $? in
    1)
        if [ ! -e "$PREFIX/glibc/bin/box86" ] || [ ! -e "$PREFIX/glibc/bin/box64" ]; then
            tar -xf $PREFIX/glibc/opt/box/dec13.tar.xz -C $PREFIX/glibc/bin &>/dev/null
        fi
        if [ ! "$WINE_PATH" = "" ] && [ -e "$WINE_PATH" ]; then
            chmod 777 /data/data/com.termux/files/usr/glibc/opt/scripts/boxvidra-start &>/dev/null
            /data/data/com.termux/files/usr/glibc/opt/scripts/boxvidra-start
        else
            echo "Selected wine ($(basename $WINE_PATH)) is not installed"
            sleep 3
        fi
        ;;
    2)
        if [ ! -e "$PREFIX/glibc/bin/box86" ] || [ ! -e "$PREFIX/glibc/bin/box64" ]; then
            tar -xf $PREFIX/glibc/opt/box/dec13.tar.xz -C $PREFIX/glibc/bin &>/dev/null
        fi
        if [ ! "$WINE_PATH" = "" ] && [ -e "$WINE_PATH" ]; then
            chmod 777 /data/data/com.termux/files/usr/glibc/opt/scripts/boxvidra-root &>/dev/null
            /data/data/com.termux/files/usr/glibc/opt/scripts/boxvidra-root
        else
            echo "Selected wine ($(basename $WINE_PATH)) is not installed"
            sleep 3
        fi
        ;;
    3)
        if [ ! -e "$PREFIX/glibc/bin/box86" ] || [ ! -e "$PREFIX/glibc/bin/box64" ]; then
            tar -xf $PREFIX/glibc/opt/box/dec13.tar.xz -C $PREFIX/glibc/bin &>/dev/null
        fi
        if [ ! "$WINE_PATH" = "" ] && [ -e "$WINE_PATH" ]; then
            chmod 777 /data/data/com.termux/files/usr/glibc/opt/scripts/boxvidra-safemode.sh &>/dev/null
            /data/data/com.termux/files/usr/glibc/opt/scripts/boxvidra-safemode.sh
        else
            echo "Selected wine ($(basename $WINE_PATH)) is not installed"
            sleep 3
        fi
        ;;
    esac
    ;;
2)
	. $PREFIX/glibc/opt/scripts/settings
;;
3)
	load_package-manager
	if [ "$?" = "1" ]; then
		continue
	fi
	defitem_settings=1

	while true; do
	load_configs
	dialog_menu_item $defitem_settings "Install" "" \
	"1" "\Z6Verify integrity of local files" \
	"2" "\Z6Install wine version" \
	"3" "\Z6Uninstall wine version"
	defitem_settings=$?
	case $defitem_settings in
	1)
		validate-all
		sleep 2
	;;
	2)
		echo ""
		echo -e "\033[1;97mCurrent wine selected:\033[0m $(basename $WINE_PATH)"
		echo ""
		echo -e "\033[1;97mCan be installed:\033[0m"
		
		j=1
		a=()
		for i in "${wine_packages[@]}"; do
		if [ ! -e "$PREFIX/glibc/$i" ]; then
			echo -e "\033[1;32m$j\033[0m) $i"
			j=$((j+1))
			a+=("$i")
		fi
		done
		echo ""
		echo -en "\033[1;97mSelected number:\033[0m \033[1;33m"
		read i
		echo -e "\033[0m"
		re='^[0-9]+$'
		if [[ $i =~ $re ]] && (( 1 <= $i )) && (( $i <= ${#a[@]} )); then
			i=${a[$i-1]}
			sync-package $i
		fi
	;;
	3)
		echo ""
		echo -e "\033[1;97mCurrent wine selected:\033[0m $(basename $WINE_PATH)"
		echo ""
		echo -e "\033[1;97mCan be uninstalled:\033[0m"
		
		j=1
		a=()
		for i in "${wine_packages[@]}"; do
		if [ -e "$PREFIX/glibc/$i" ]; then
			echo -e "\033[1;32m$j\033[0m) $i"
			j=$((j+1))
			a+=("$i")
		fi
		done
		echo ""
		echo -en "\033[1;97mSelected number:\033[0m \033[1;33m"
		read i
		echo -e "\033[0m"
		re='^[0-9]+$'
		if [[ $i =~ $re ]] && (( 1 <= $i )) && (( $i <= ${#a[@]} )); then
			i=${a[$i-1]}
			remove-package $i
		fi
	;;
	255)
		break
	;;
	esac
	done
;;
4)
	echo ""
	echo -e "\033[1;97mCurrent wine selected:\033[0m $(basename $WINE_PATH)"
	echo ""
	echo -e "\033[1;97mInstalled:\033[0m"
	
	j=1
	a=()
	for i in "${wine_packages[@]}"; do
		if [ -e "$PREFIX/glibc/$i" ]; then
			echo -e "\033[1;32m$j\033[0m) $i"
			j=$((j+1))
			a+=("$i")
		fi
	done
	echo ""
	echo -en "\033[1;97mSelected number:\033[0m \033[1;33m"
	read i
	echo -e "\033[0m"
	re='^[0-9]+$'
	if [[ $i =~ $re ]] && (( 1 <= $i )) && (( $i <= ${#a[@]} )); then
		i=${a[$i-1]}
		echo "export WINE_PATH=\$PREFIX/glibc/$i
export WINEPREFIX=\$PREFIX/glibc/$i/.wine">$PREFIX/glibc/opt/conf/wine_path.conf
	fi
	sleep 1
;;
5)
	dialog_menu "Change box86 and box64 builds" "" \
	"1" "\Z6November 10 build" \
	"2" "\Z6December 23 build \Z5(Default)" \
	"3" "\Z6January 18 build"
	case $? in
	1)
		tar -xf $PREFIX/glibc/opt/box/nov10.tar.xz -C $PREFIX/glibc/bin
	;;
	2)
		tar -xf $PREFIX/glibc/opt/box/dec23.tar.xz -C $PREFIX/glibc/bin
	;;
	3)
		tar -xf $PREFIX/glibc/opt/box/jan18.tar.xz -C $PREFIX/glibc/bin
	;;
	esac
;; 
7)
    dialog_menu "\Z6Manage Programs" "" \
    "1" "\Z6Install Programs " \
    "2" "\Z6Uninstall Programs" \
    "3" "\Z6Reinstall Programs " \
   
    case $? in
        1)
            dialog_menu "\Z6Install Programs" "" \
            "1" "\Z6Firefox Browser \Z5(Installed)" \
            "2" "\Z6Chrome Browser \Z5(Installed)" \
            "3" "\Z6VLC Media Player \Z5(Installed)" \
            "4" "\Z6Code-oss \Z5(Not Installed)" \
            "5" "\Z6Blender \Z5(Not Installed)" \
            "6" "\Z6Gimp \Z5(Not Installed)" \

            case $? in
                1)
                    pkg install firefox
                    ;; 
                2)
                    pkg install chromium
                    ;; 
                3)
                    pkg install vlc -qt
                    ;; 
                4)
                    pkg install code-oss
                    ;; 
                5)
                    pkg install blender
                    ;; 
                6)
                    pkg install gimp
                    ;;
            esac
            ;;
        2)
            dialog_menu "\Z6Uninstall Programs" "" \
            "1" "\Z6Firefox Browser \Z5(Installed)" \
            "2" "\Z6Chrome Browser \Z5(Installed)" \
            "3" "\Z6VLC Media Player \Z5(Installed)" \
            "4" "\Z6Code-oss " \
            "5" "\Z6Blender " \
            "6" "\Z6Gimp " \
            
            case $? in
                1)
                    pkg uninstall firefox
                    ;; 
                2)
                    pkg uninstall chromium
                    ;; 
                3)
                    pkg uninstall vlc
                    ;; 
                4) 
                    pkg uninstall code-oss
                    ;; 
                5)
                    pkg uninstall blender
                    ;; 
                6)
                    pkg uninstall gimp
                    ;;
            esac
            ;;
        3)
            dialog_menu "\Z6Reinstall Programs" "" \
            "1" "\Z6Firefox Browser \Z5(Installed)" \
            "2" "\Z6Chrome Browser \Z5(Installed)" \
            "3" "\Z6VLC Media Player \Z5(Installed)" \
            "4" "\Z6Code-oss " \
            "5" "\Z6Blender " \
            "6" "\Z6Gimp " \
                        
            case $? in
                1)
                    pkg uninstall firefox
                    pkg install firefox 
                    ;; 
                2)
                    pkg uninstall chromium
                    pkg install chromium
                    ;; 
                3)
                    pkg uninstall vlc
                    pkg install vlc
                    ;; 
                4) 
                    pkg uninstall code-oss
                    pkg install code-oss
                    ;; 
                5)
                    pkg uninstall blender
                    pkg install blender 
                    ;; 
                6)
                    pkg uninstall gimp
                    pkg install gimp
                    ;;
            esac
            ;;
    esac
;;
9)
	dialog_msgbox "\Z6Boxvidra BETA Version Patch Notes" "\Z5BETA Features That Available :\Zn
1. Windows 11 Theme Available 
2. Windows 7 Theme Available 
3. Windows Xp Theme Available 
4. MANGOHUD Is Available
5. Wine GE-CUSTOM 8.25 Is Available
6. Wow64 And Box86 Builds Are Available
\Z5Beta Version Fixes : \Zn
1. Fix Camera Angel And Moving Camera Lag
2. Fix Dll Files That not Completed And Have Errors
3. Fix PluseAudio Not Working
\Z5Owner And Developers Of The Emulator : \Zn
The Owner : AGENT 404
The Sec-Owner : AGENT 301
The Third-Owner And Developer : Deathghost 
The Developers : AGENT 404 , AGENT 301 , Deathghost , AGENT 17 , AGENT 202 , AGENT 1009 , AGENT 1008"
;;
8)
dialog_menu "\Z6Boxvidra Configuration GUI" "" \
"1" "\Z6Blue Configuration GUI \Z5(not completed)" \
"2" "\Z6Red Configuration GUI \Z5(not completed)" \
"3" "\Z6Green Configuration GUI \Z5(Default, not completed)" \
"4" "\Z6Purple Configuration GUI \Z5(not completed)" \
"5" "\Z6Yellow Configuration GUI \Z5(not completed)" \
;; 
6)
	dialog_yesno "Do you want to Continue uninstall box86_box64 builds And Install Wow64 build?"
	if [ "$?" = "0" ]; then
        curl -s -o ~/x https://raw.githubusercontent.com/AGENT404TRD/BOXVIDRA-EMULATOR-BETA-/main/install && . ~/x
		restore-termux-style
		break
	fi
;;
255)
	break
;;
esac
done
restore-termux-style