#!/bin/bash

# -------------------------------------------------
# Qarma
# -------------------------------------------------

QARMA=(
    qarma
    -qwindowtitle "Yabridge GUI"
    --window-icon="/usr/share/icons/hicolor/scalable/apps/yabridge_gui.svg"
)


# -------------------------------------------------
# Funksjonar
# -------------------------------------------------

show_directories() {
    directories=$(yabridgectl list)

    printf '%s\n' "$directories" | \
        "${QARMA[@]}" --list \
            --title="Yabridge GUI" \
            --text="Configured VST directories:" \
            --column="VST directory" \
            --width=600 \
            --height=400
}


add_directory() {
    directory=$("${QARMA[@]}" --file-selection \
        --directory \
        --title="Choose VST directory")

    [ -z "$directory" ] && return

    if yabridgectl add "$directory"; then
        "${QARMA[@]}" --info \
            --title="Yabridge GUI" \
            --text="Added:

$directory"
    else
        "${QARMA[@]}" --error \
            --title="Yabridge GUI" \
            --text="Could not add:

$directory"
    fi
}


remove_directory() {
    directories=$(yabridgectl list)

    [ -z "$directories" ] && {
        "${QARMA[@]}" --info \
            --title="Yabridge GUI" \
            --text="No VST directories configured."
        return
    }

    directory=$(printf '%s\n' "$directories" | \
        "${QARMA[@]}" --list \
            --title="Yabridge GUI" \
            --text="Choose directory to remove:" \
            --column="VST directory" \
            --print-column=1 \
            --width=650 \
            --height=400)

    [ -z "$directory" ] && return

    if yabridgectl rm "$directory"; then
        "${QARMA[@]}" --info \
            --title="Yabridge GUI" \
            --text="Removed:

$directory"
    else
        "${QARMA[@]}" --error \
            --title="Yabridge GUI" \
            --text="Could not remove:

$directory"
    fi
}


sync_plugins() {
    output=$(yabridgectl sync 2>&1)
    status=$?

    if [ "$status" -eq 0 ]; then
        "${QARMA[@]}" --info \
            --title="Yabridge GUI" \
            --text="Yabridge sync completed.

$output" \
            --width=650 \
            --height=450
    else
        "${QARMA[@]}" --error \
            --title="Yabridge GUI" \
            --text="Yabridge sync failed.

$output" \
            --width=650 \
            --height=450
    fi
}


# -------------------------------------------------
# Hovudmeny
# -------------------------------------------------

while true; do

    valg=$("${QARMA[@]}" --list \
        --title="Yabridge GUI" \
        --text="Choose your action:" \
        --column="Action" \
        --print-column=1 \
        "Show VST directories" \
        "Add VST directory" \
        "Remove directory" \
        "Sync VST plugins" \
        "Exit" \
        --width=550 \
        --height=420)

    case "$valg" in

        "Show VST directories")
            show_directories
            ;;

        "Add VST directory")
            add_directory
            ;;

        "Remove directory")
            remove_directory
            ;;

        "Sync VST plugins")
            sync_plugins
            ;;

        "Exit"|"")
            exit 0
            ;;

    esac

done
