#!/bin/bash MAKE_PROGRESS_INSTANCE="main" MAKE_PROGRESS_QDBUS="qdbus name.melnichenko.nikita.make-progress.$MAKE_PROGRESS_INSTANCE" function createProgress() { PROGRESS_NAME=`$MAKE_PROGRESS_QDBUS / AddItem 'Basic' 2>/dev/null` } function setProgressProperty() { if [ "$PROGRESS_NAME" == "" ] || [ "$1" == "" ] || [ "$2" == "" ]; then return; fi $MAKE_PROGRESS_QDBUS /"$PROGRESS_NAME" Set"$1" "$2" >/dev/null } function removeProgress() { if [ "$PROGRESS_NAME" == "" ]; then return; fi $MAKE_PROGRESS_QDBUS / RemoveItem "$PROGRESS_NAME" >/dev/null } function processObject() { echo "Processing $1..." sleep 1 } objects=( "aaa" "bbb" "ccc" "ddd" "eee" "fff" "ggg" ) n=${#objects[@]} createProgress echo "Progress name: $PROGRESS_NAME" echo "Number of objects to process: $n" setProgressProperty "Maximum" $n for ((i = 0; i < n; i++)) do setProgressProperty "Value" $i processObject "${objects[$i]}" done setProgressProperty "Value" $i echo "Done. Delaying progress removal..." sleep 5 && removeProgress