#!/bin/bash

filter="$@"

if [ "$filter" = "--nofilter" ]; then filter=false; else filter=true; fi

h_file="$HOME/.config/gtk-3.0/recent.history"
except="$(cat $HOME/.config/gtk-3.0/recent.exceptions | sed 's/ /|/g')"
if [[ ! -f "$h_file" ]]; then
    touch $h_file
fi

IFS=$'\n'
recent=($(cat "$h_file"))
l=${#recent[@]}

for (( k=0; k<l; k++ )); do
    pfad="${recent[$k]:1}"
    if [ -f "/$pfad" ] && ([[ ! "$pfad" =~ "recent" ]] || [[ "$pfad" =~ bin ]]); then
        [ -L "/$pfad" ] && pfad="$(readlink "/$pfad")" && recent[$k]="$pfad" && pfad="${pfad:1}"
	bn=$(basename "$pfad")
#	n=$(cat /tmp/hsperfdata_$USER/recent | grep -o /$bn | tr '‖' \\n | grep -o $bn | wc -l)
	n=$(cat /tmp/hsperfdata_$USER/recent 2> /dev/null | grep -o /$bn | wc -l)
	if [ $n -gt 0 ]; then ((n=n+1)); else n=""; fi
	if [[ "$(file --mime-type "${recent[$k]}")" =~ $except ]] || [ -x "${recent[$k]}" ]; then echo -n "exec-desktop $(xdg-mime query default text/plain) ${recent[$k]}‖" >> /tmp/hsperfdata_$USER/recent; else echo -n "${recent[$k]}‖" >> /tmp/hsperfdata_$USER/recent; fi
	if [ -n "$n" ]; then bn="$bn $n"; fi
	echo "$bn" >> /tmp/hsperfdata_$USER/recent
    else
	unset "recent[$k]"
    fi
done

echo "${recent[*]}" > $h_file
cp -f $h_file $h_file.bak

title=$"Filter:  (also RegEx)"
arg=$"Recently Used"
button=$"Help"
lang_dir=$"C"

if $filter; then
    filter=$(hist $HOME/.config/gtk-3.0/filter-recent.history 30 "$title" "$HOME/.icons/synapse.png" "$0")
    result="$?"
else
    filter=""
    result=0
fi

if [ $result -eq 0 ]; then
    echo "$(cat /tmp/hsperfdata_$USER/recent | egrep -i "$filter")" > /tmp/hsperfdata_$USER/recent
    list-cmd-edit --list=/tmp/hsperfdata_$USER/recent --arg="@$arg" Menu --head=$"Recently used files": --icon=$HOME/.icons/synapse.png --winicon=$HOME/.icons/synapse.png --parent="$0" --deco=true --edit=false --opt="--button=$button:yelp /usr/share/help/$lang_dir/Starbuntu/starbuntu-apps-details.page#recent" &
fi

sleep 1
rm /tmp/hsperfdata_$USER/recent
