#!/bin/sh

##################################################
#
# qtstart is a startscript for qte4 applications
#
# made by Emanuel CLI 2008
#
# support: www.cablelinux.info
# support & download: www.i-have-a-dreambox.com
#
##################################################

#########################################
#  part 1: mouse and keyboard scanning  #
#########################################

echo "[`basename $0`] start"
# saving device infos in file
cat /proc/bus/input/devices | sed -e '/^B:.*/d;/^I:.*/d;/^P:.*/d;/^ *$/d' > inputs.ev

# assiging common DMM keyboard devices (will be last, if no usb devices recognized)
KBD_DEV=`cat inputs.ev | sed -n '/N: Name=\"dreambox ir keyboard\"/{n;p;}' | sed 's/H: Handlers=kbd //;s/[ \t]*$//'`
MOUSE_DEV=`cat inputs.ev | sed -n '/N: Name=\"dreambox ir mouse\"/{n;p;}' | sed 's/H: Handlers=//;s/[ \t]*$//'`

# separating usb from common devices, saving recognized usb devices to file
cat inputs.ev | sed -e '/N: Name=\"dreambox.*/{n;d;}'| sed -e '/^N.*/d' | sed 's/H: Handlers=//;s/[ \t]*$//' > usb.dev

# separating usb devices
DEV_1=`cat usb.dev | sed q`
DEV_2=`cat usb.dev | sed -n '2p'`

# checking and assigning usb devices
# DEV_1 kbd?
if [ "`echo $DEV_1 | grep "kbd"`" != "" ]
then
	KBD_DEV=`echo $DEV_1 | sed 's/kbd //'`
#echo "[`basename $0`] found on DEV_1 kbd: usb-keyboard-dev: $KBD_DEV"
fi

# DEV_1 mouse?
if [ "$DEV_1" != "" ] && [ "`echo $DEV_1 | grep "kbd"`" = "" ]
then
	MOUSE_DEV=$DEV_1
#echo "[`basename $0`] found on DEV_1 mouse: usb-mouse-dev: $MOUSE_DEV"
fi

# DEV_2 kbd?
if [ "`echo $DEV_2 | grep "kbd"`" != "" ] && [ "`echo $DEV_1 | grep "kbd"`" = "" ]
then
	KBD_DEV=`echo $DEV_2 | sed 's/kbd //'`
#echo "[`basename $0`] found on DEV_2 kbd: usb-keyboard-dev: $KBD_DEV"
fi

# DEV_2 mouse?
if [ "$DEV_2" != "" ] && [ "`echo $DEV_2 | grep "kbd"`" = "" ]
then
	MOUSE_DEV=$DEV_2
#echo "[`basename $0`] found on DEV_2 mouse: usb-mouse-dev: $MOUSE_DEV"
fi

# mouse-keyboard combi?
if [ "`echo $DEV_1 | grep "kbd"`" != "" ] && [ "`echo $DEV_2 | grep "kbd"`" != "" ]
then
	KBD_DEV=`echo $DEV_1 | sed 's/kbd //'`
	MOUSE_DEV=`echo $DEV_2 | sed 's/kbd //'`
#echo "[`basename $0`] found on DEV_2 mouse: usb-mouse-dev: $MOUSE_DEV"
#echo "[`basename $0`] found on DEV_1 kbd: usb-keyboard-dev: $KBD_DEV"
fi

#echo "[`basename $0`] found: mouse: /dev/input/${MOUSE_DEV}, keyboard: /dev/input/${KBD_DEV}"

#####################################
#  part 2: starting qt-application  #
#####################################

# path of your qt4 instalation
QWS_ROOTDIR="/qte4-static"

# Qt-embedded application
QWS_APP="${QWS_ROOTDIR}/bin/browser"

# Qt-embedded application settings
XDG_CONFIG_HOME="${QWS_ROOTDIR}/etc/xdg"

# Qt-embedded data directory
QWS_DATA_HOME=$QWS_ROOTDIR

# options are -fn <font>, -bg <color>, -btn <color>, -fg <color>, -name <objectname>, -title <title>, -decoration <style>
# see http://doc.trolltech.com/4.4/qt-embedded-running.html
QWS_OPTIONS=""
# default: QWS_OPTIONS=""
# test:  QWS_OPTIONS="-fg white -bg black"

# framebuffer mode: dm7025: 720x576, dm8X: 1152x720, 1920×1080
OTE_DISPLAY_WIDTH=1152
OTE_DISPLAY_HEIGTH=720

# Qt-embedded application enviroment settings

# path of your qt4 instalation
export QWS_ROOTDIR

# path qt4 app conf
export XDG_CONFIG_HOME

# path of your qt4 app data
export QWS_DATA_HOME

# options browser language: "de", "en", ...
export LANG="de"

# size of application
export QWS_SIZE=1045x680

# options keyboard layout: "de", "en"
export QWS_DREAMKEYBOARD_LANG="de"

# keyboard devices to qt
export QWS_KEYBOARD="Usb:/dev/input/${KBD_DEV}"

# mouse devices to qt
export QWS_MOUSE_PROTO="DreamMouse:/dev/input/${MOUSE_DEV}"

# checking if mouse is DMM and setting acceleration speed
if [ "$MOUSE_DEV" = "event4" ]
then
# you can set DMM mouse pointer acceleration from 0.06 to 2.04, default on error: 0.5
	export QWS_DREAMMOUSE_ACCEL=0.35
else
# you can set usb mouse pointer acceleration from 0.06 to 2.04, default on error: 0.5
	export QWS_DREAMMOUSE_ACCEL=1.00
fi

# check for symbolic link "/dev/fb0" to fb dev "/dev/fb/0"
if [ -L /dev/fb0 ]
then
	echo #"[`basename $0`]: symbolic link /dev/fb0 to framebuffer /dev/fb/0 device exists"
else
#echo "[`basename $0`]: creating symbolic link /dev/fb0 to framebuffer /dev/fb/0"
	ln -sf /dev/fb/0 /dev/fb0
fi

# setting framebuffer for Qt-embedded application
#echo "[`basename $0`] setting framebuffer to ${OTE_DISPLAY_HEIGTH}x${OTE_DISPLAY_WIDTH}"
/usr/sbin/fbset.real -xres $OTE_DISPLAY_WIDTH -yres $OTE_DISPLAY_HEIGTH

# starting starting Qt-embedded application as qwsserver
#echo "[`basename $0`] starting Qt-embedded application..."
$QWS_APP -qws $QWS_OPTIONS
#echo "[`basename $0`] Qt-embedded application closed!"

# cleaning tmp files
rm inputs.ev usb.dev

#echo "[`basename $0`] exit"

exit
