Kaynağa Gözat

Improved user selection dialog

Bob Mottram 9 yıl önce
ebeveyn
işleme
b9baec2b1f
1 değiştirilmiş dosya ile 23 ekleme ve 18 silme
  1. 23
    18
      src/freedombone-controlpanel

+ 23
- 18
src/freedombone-controlpanel Dosyayı Görüntüle

@@ -403,24 +403,29 @@ function show_about {
403 403
 
404 404
 function select_user {
405 405
     SELECTED_USERNAME=
406
-    data=$(tempfile 2>/dev/null)
407
-    trap "rm -f $data" 0 1 2 5 15
408
-    dialog --title "Select a user" \
409
-           --backtitle $"Freedombone Control Panel" \
410
-           --dselect "/home/" 14 40 2> $data
411
-    sel=$?
412
-    case $sel in
413
-        0) SELECTED_USERNAME=$(cat $data | awk -F '/' '{print $3}');;
414
-        1) return;;
415
-        255) return;;
416
-    esac
417
-    if [ ${#SELECTED_USERNAME} -lt 2 ]; then
418
-        SELECTED_USERNAME=
419
-    fi
420
-    if [ ! -d /home/$SELECTED_USERNAME ]; then
421
-        dialog --title $"User directory check" \
422
-               --msgbox $"This does not look like a user directory" 6 40
423
-        SELECTED_USERNAME=
406
+
407
+    users_array=($(ls /home))
408
+
409
+    delete=(mirrors git)
410
+    for del in ${delete[@]}
411
+    do
412
+        users_array=(${users_array[@]/$del})
413
+    done
414
+
415
+    i=0
416
+    W=()
417
+    name=()
418
+    for u in ${users_array[@]}
419
+    do
420
+        i=$((i+1))
421
+        W+=($i "$u")
422
+        name+=("$u")
423
+    done
424
+
425
+    user_index=$(dialog --backtitle $"Freedombone Control Panel" --title $"Select User" --menu $"Select one of the following:" 24 40 17 "${W[@]}" 3>&2 2>&1 1>&3)
426
+
427
+    if [ $? -eq 0 ]; then
428
+        SELECTED_USERNAME="${name[$((user_index-1))]}"
424 429
     fi
425 430
 }
426 431