diff options
| -rwxr-xr-x[-rw-r--r--] | blueman_open | 126 | 
1 files changed, 84 insertions, 42 deletions
| diff --git a/blueman_open b/blueman_open index 50f05c3..a1982c4 100644..100755 --- a/blueman_open +++ b/blueman_open @@ -1,11 +1,19 @@  #!/bin/sh +# varables +  DEBUG=${DEBUG:-""} +if [ ! -z $DEBUG ];then +  dbg_msg="Check /var/log/messages for errors." +else +  dbg_msg="Enable *DEBUG* for error log." +fi -phone_addr=$1 +device_addr=$1  own_name=$(basename $0) -dir=$(mktemp -d)/$phone_addr +dir=$(mkdir)/mnt/$device_addr  browser=${browser:-"xdg-open"} +count=0  # Check for kdialog @@ -13,31 +21,27 @@ if which kdialog 1>/dev/null 2>/dev/null; then      messagetype="kdialog"  else      messagetype="gtkdialog" +    export p_file="progress.tmp" +    export m_file="message.tmp" +    touch $p_file +    touch $m_file +    echo "0" > $p_file   fi -# Abstract some stuff for gtkdialog -gtkbox_passive() { -  export messagebox=' -    <vbox> -    <frame Blueman Open Device.> -      <text> -	<label>"'$(printf $1)'"</label> -      </text> -    </frame> -    </vbox> -    ' -} +#gtkdialog abstraction +  gtkbox_interactive() {    export messagebox='      <vbox>      <frame Blueman Open Device.>        <text> -	<label>"'$(printf $1)'"</label> +	<label>Mounting Bluetooth Devive ..</label>        </text> -      <hbox> -	<button ok></button> -      </hbox> -    </frame> +      <progressbar> +	<input>progress p_file</input>   +	<action type="exit">Done.</action> +      </progressbar> +     </frame>      </vbox>      '  } @@ -48,56 +52,89 @@ gtkmessage() {  	done  	IFS=$I  } + +#gtkdialog progress counter + +if [ "$messagetype" = "gtkdialog" ]; then +  progress(){ +    while : +    do +      sleep 0.3 +      percentage=$(cat $p_file)  +      text=$(cat $m_file) +      echo $percentage +      echo $text +      if [ $percentage = 100 ]; then +	rm *.tmp +	exit 0 +      fi +   done +  } + +  message(){ +      echo $MSG_TXT > $m_file +  } +fi + + +export -f progress +  # End gtkdialog abstraction  # mount function -mount_phone () + +mount_device ()  {    i=0    LIMIT=5    while [ $i -lt $LIMIT ]    do +    let count=$count+17  +    echo "$count" > $p_file      printf "$i " -    [ ! -z $DEBUG ] && logger -i -t $own_name "Perform $i try to mount phone $phone_addr to $dir using obexfs" -    [ ! -z $DEBUG ] && logger -i -t $own_name "Execute: obexfs -b $phone_addr -B 10 $dir" -    out=$(obexfs -b $phone_addr $dir 2>&1) +    [ ! -z $DEBUG ] && logger -i -t $own_name "Perform $i try to mount device $device_addr to $dir using obexfs" +    [ ! -z $DEBUG ] && logger -i -t $own_name "Execute: obexfs -b $device_addr -B 10 $dir" +    out=$(obexfs -b $device_addr $dir 2>&1)      [ ! -z $DEBUG ] && logger -i -t $own_name "$out"      mounts=$(grep $dir /proc/mounts | wc -l)      [ ! -z $DEBUG ] && logger -i -t $own_name "Found $mounts mounted $dir inside /proc/mounts"      if [ $mounts -ne 0 ] ;then -      progress=99 -      MSG_TXT="Successfully mounted $phone_addr to $dir" +      MSG_TXT="Successfully mounted $device_addr to $dir"        if [ $messagetype == "kdialog" ]; then  	kdialog --passivepopup "$MSG_TXT" 2        elif [ $messagetype == "gtkdialog" ]; then -	gtkbox_interactive $"$MSG_TXT" -	gtkmessage +	message $"$MSG_TXT" +	echo "99" > $p_file +	sleep 2 +	echo "100" > $p_file        fi        [ ! -z $DEBUG ] && logger -i -t $own_name "Open $dir with $browser"        out=$($browser $dir 2>&1)        [ ! -z $DEBUG ] && logger -i -t $own_name "$out"        exit 0      else -      logger -i -t $own_name "Failed to mount $phone_addr to $dir from try $i " +      logger -i -t $own_name "Failed to mount $device_addr to $dir from try $i "      fi      sleep 1      ((i += 1))    done    if [ $mounts -eq 0 ] ;then -    MSG_TXT="Failed to mount $phone_addr to $dir.\nCheck /var/log/messages for errors." +    MSG_TXT="Failed to mount $device_addr to $dir. $dbg_msg"      if [ $messagetype == "kdialog" ]; then        kdialog --passivepopup "$MSG_TXT" 4      elif [ $messagetype == "gtkdialog" ]; then -      gtkbox_interactive $"$MSG_TXT" -      gtkmessage +      message $"$MSG_TXT" +      echo "99" > $p_file +      sleep 4 +      echo "100" > $p_file      fi -    killall gtkdialog    fi  }  # unmount function -umount_phone () + +umount_device ()  {    mounts=$(grep $dir /proc/mounts | wc -l)    if [ $mounts -ne 0 ] ;then @@ -109,12 +146,14 @@ umount_phone ()          [ ! -z $DEBUG ] && logger -i -t $own_name "Successfully unmounted $dir."        else          logger -i -t $own_name "$dir is already mounted.  Failed to umount $dir.$out.  Please perform its umount manually." -        MSG_TXT="Failed to umount $dir - check /var/log/messages for errors" +        MSG_TXT="Failed to umount $dir - $dbg_msg"  	if [ $messagetype == "kdialog" ]; then  	  kdialog --passivepopup "$MSG_TXT" 4  	elif [ $messagetype == "gtkdialog" ]; then -	  gtkbox_interactive $"$MSG_TXT" -	  gtkmessage +	  message $"$MSG_TXT" +	  echo "99" > $p_file +	  sleep 4 +	  count=5  	fi          exit        fi @@ -124,23 +163,26 @@ umount_phone ()  }  # mkdir function +  create_dir ()  { -  progress=1 -  [ ! -z $DEBUG ] && logger -i -t $own_name "Create directory $dir to mount the phone by bluetooth..." +  [ ! -z $DEBUG ] && logger -i -t $own_name "Create directory $dir to mount the device by bluetooth..."    out=$(mkdir -p $dir 2>&1)    [ ! -z $DEBUG ] && logger -i -t $own_name "$out"  } -MSG_TXT="Mount phone is in progress... Please wait..." +#main + +MSG_TXT="Mount device is in progress... Please wait..."  if [ $messagetype == "kdialog" ]; then    kdialog --passivepopup "$MSG_TXT" 4  elif [ $messagetype == "gtkdialog" ]; then -  gtkbox_passive $"$MSG_TXT" +  message $"$MSG_TXT" +  gtkbox_interactive    gtkmessage&  fi  create_dir -umount_phone -mount_phone +umount_device +mount_device | 
