#!/bin/sh
#*********************************************************************************************************
#*   __     __               __     ______                __   __                      _______ _______   *
#*  |  |--.|  |.---.-..----.|  |--.|   __ \.---.-..-----.|  |_|  |--..-----..----.    |       |     __|  *
#*  |  _  ||  ||  _  ||  __||    < |    __/|  _  ||     ||   _|     ||  -__||   _|    |   -   |__     |  *
#*  |_____||__||___._||____||__|__||___|   |___._||__|__||____|__|__||_____||__|      |_______|_______|  *
#* http://www.blackpantheros.eu | http://www.blackpanther.hu - kbarcza[]blackpanther.hu * Charles Barcza *
#*************************************************************************************(c)2002-2011********

#---------------------------------------------------------------
# Project         : blackPanther OS
# Module          : bin
# File            : default-filemanager
# Version         : $Id: filemanager,v 0.1
# Author          : Charles Barcza 
# Created On      : Fri Aug 29 16:26:54 2008
# Purpose         : launch a filemanager application
#---------------------------------------------------------------
. /etc/blackPanther-default-apps.conf

appname=filemanager

if [ -f ~/.personal-${appname} ];then
    . ~/.personal-${appname}
    echo "Presonal conf found!"
fi

set_a_filemanager() {
echo "$FILEMANAGER=$1" > ~/.personal-${appname}
echo "Personal ${appname} definied, please restart `basename $0` without parameter."
exit
}

strip_filemanager_var() {
    if [[ -n "$FILEMANAGER" ]]; then
	if [[ `basename "$FILEMANAGER"` == "default-${appname}" ]]; then
	    unset FILEMANAGER
	else
	    set $FILEMANAGER
	    if ! which $1 > /dev/null 2>&1; then
		unset FILEMANAGER
	    fi
	fi
    fi
}

if [ "$1" = "-s" ];then
    echo "Define user ${appname}.."
    set_a_filemanager $2
elif [ "$1" = "-u" ];then
    rm -f $HOME/.personal-${appname}
    echo "Clear definied personal ${appname} conf.."
    exit
elif [ "$1" = "-xdg" ];then
    if [ -e ~/.config/user-dirs.dirs ];then
    test -f ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs && . ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs
        for i in $(cat ~/.config/user-dirs.dirs | grep ^XDG_ | sed -e 's|XDG_||' -e 's|_DIR=.*||'); do
	  if [ "x$i" != "x" ]&&[ -n "$(cat ~/.config/user-dirs.dirs| grep XDG_$i)" ]; then
	    eval echo "$i : \${XDG_${i}_DIR:-$HOME}" 
	  fi
	done
    else
    echo ""
	echo -e "$RED XDG definitions currently not available under your $HOME/.config/user-dirs.dirs on blackPanther OS system.. $DEF"
    echo ""
    fi
    exit
elif [ "$1" = "-h" ];then
    echo ""
    echo -e "${GRN}This is a$BLK blackPanther OS$GRN specific tool"
    echo ""
    echo -e "$MAG  Usage:"
    echo -e "$YEL       `basename $0` -s $DEF Set a personal ${appname} (You conf file: $HOME/.personal-${appname})"
    echo -e "$YEL       `basename $0` -u $DEF Unset definied ${appname} (Remove you conf file: $HOME/.personal-${appname})"
    echo -e "$YEL       `basename $0` -h $DEF This screen"
    echo ""
    echo -e "$MAG  For XDG-DIRS: $DEF/MUSIC, DOWNLOAD, HOME, etc/"
    echo -e "$YEL       `basename $0` -xdg $DEF List available definied XDG directories"
    echo ""
    echo -e "$CYN       [$RED Example:$CYN `basename $0` -s dolphin$RED OR to open own video dir:$CYN `basename $0` VIDEOS ]$DEF"
    echo ""
    exit
fi



strip_filemanager_var
if [[ -z "$FILEMANAGER" ]]; then
 
    # using GNOME
    if [[ -n "$GNOME_DESKTOP_SESSION_ID" ]]; then
	[[ -z "$FILEMANAGER" ]] && FILEMANAGER=`which nautilus 2> /dev/null` 
	[[ -z "$FILEMANAGER" ]] && FILEMANAGER=`which pcmanfm 2> /dev/null`
	#FILEMANAGER=`gconftool -g /desktop/gnome/url-handlers/mailto/command | sed -e 's/ \"%s\"//'`
	#if [[ `gconftool -g /desktop/gnome/url-handlers/mailto/needs_terminal` == "true" ]]; then
	#    FILEMANAGER="default-terminal -e $FILEMANAGER"
	#fi
    fi

    #using KDE
    if [[ -n "$KDE_FULL_SESSION" ]]; then
	#NEWFILEMANAGER=`grep -m 1 'EmailClient\[\$e\]=' $HOME/.kde4/share/config/emaildefaults 2>/dev/null`
	#[[ -z "$NEWFILEMANAGER" ]] && NEWFILEMANAGER=`grep -m 1 'EmailClient\[\$e\]=' /etc/kde/emaildefaults 2>/dev/null`
	[[ -z "$FILEMANAGER" ]] && FILEMANAGER=`which dolphin 2> /dev/null`
	[[ -z "$FILEMANAGER" ]] && FILEMANAGER=`which konqueror 2> /dev/null` 
	[[ -z "$FILEMANAGER" ]] && FILEMANAGER=`which krusader 2> /dev/null`
	[[ -z "$FILEMANAGER" ]] && FILEMANAGER=`which gwenview 2> /dev/null`
	#if [[ -n "$NEWFILEMANAGER" ]]; then
	#    FILEMANAGER=`echo $NEWFILEMANAGER | sed -e 's/EmailClient\[\$e\]=//' -e 's/!//'`
	#fi
        #[[ -z "$FILEMANAGER" ]] && which kfmclient > /dev/null 2>&1 && FILEMANAGER="kfmclient openProfile webbrowsing"
    fi

    strip_filemanager_var
    
    [[ -z "$FILEMANAGER" ]] && FILEMANAGER=`which pcmanfm 2> /dev/null`
    [[ -z "$FILEMANAGER" ]] && FILEMANAGER=`which nautilus 2> /dev/null` 
    [[ -z "$FILEMANAGER" ]] && FILEMANAGER=`which efm 2> /dev/null`
    [[ -z "$FILEMANAGER" ]] && FILEMANAGER=`which rox 2> /dev/null`
    [[ -z "$FILEMANAGER" ]] && which mc > /dev/null 2>&1 && FILEMANAGER="default-terminal -e mc"
fi

errmsg() {
    xmsg=`which kdialog 2>/dev/null || which zenity 2>/dev/null`
    [ -n "$DISPLAY" ] && $xmsg --error "Sorry. Filemanager applications not detected, please install on PC (etc: installing dolphin)"
    [ ! -n "$DISPLAY" ] && echo -n "Sorry. Filemanager not detected! Please install on PC (etc: installing dolphin)"
}

if [[ -n "$FILEMANAGER" ]]; then 
    test -f ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs && . ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs
    if [ "x$1" != "x" ]&&[ -n "$(cat ~/.config/user-dirs.dirs| grep XDG_$1)" ]; then
	eval echo \${XDG_${1}_DIR:-$HOME} | xargs $FILEMANAGER
     else
        exec $FILEMANAGER "$@" || errmsg
    fi
    
    else
	errmsg
fi

# default-${appname} ends here
