summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorDieter Plaetinck <dieter@plaetinck.be>2010-12-12 18:11:39 +0100
committerDieter Plaetinck <dieter@plaetinck.be>2010-12-12 18:47:13 +0100
commit180fc3f5ac6952725e3be153f3f6b2dcc6f2ea3a (patch)
tree73abad758b1e3e1a180bfe9d6f90126dcce44f89 /src/core
parent71f1288b0641740b6f6c6cc6b2cf8e5308caf51c (diff)
clean up disk selection dialogs
instead of first showing a nice overview with disk sizes, and then making the user select a disk from a dry list, we now do both at once
Diffstat (limited to 'src/core')
-rw-r--r--src/core/libs/lib-ui-interactive.sh24
-rw-r--r--src/core/libs/lib-ui.sh14
2 files changed, 17 insertions, 21 deletions
diff --git a/src/core/libs/lib-ui-interactive.sh b/src/core/libs/lib-ui-interactive.sh
index eae4029..6f79b33 100644
--- a/src/core/libs/lib-ui-interactive.sh
+++ b/src/core/libs/lib-ui-interactive.sh
@@ -247,20 +247,17 @@ interactive_prepare_disks ()
interactive_autoprepare()
{
- DISCS=$(finddisks)
- if [ $(echo $DISCS | wc -w) -gt 1 ]
+ listblockfriendly
+ if [ $(echo $BLOCKFRIENDLY | wc -w) -gt 1 ]
then
- notify "Available Disks:\n\n$(_getavaildisks)\n"
- ask_option no 'Harddrive selection' "Select the hard drive to use" required $(finddisks 1 _) || return 1
+ ask_option no 'Harddrive selection' "Select the hard drive to use" required $BLOCKFRIENDLY || return 1
DISC=$ANSWER_OPTION
- elif [ -z "$DISCS" ]; then
- ask_string "Could not find disk. Please enter path of devicefile manually" "" || return 1
- DISC=$ANSWER_STRING
+ elif [ -z "$BLOCKFRIENDLY" ]; then
+ ask_string "Could not find disk. Please enter path of devicefile manually" "" || return 1
+ DISC=${ANSWER_STRING// /} # TODO : some checks if $DISC is really a blockdevice is probably a good idea
else
- DISC=$DISCS
+ DISC=$(echo $BLOCKFRIENDLY | cut -d ' ' -f 1)
fi
- # TODO : some checks if $DISC is really a blockdevice is probably a good idea
- DISC=${DISC// /} # strip all whitespace. we need this for some reason.TODO: find out why
get_blockdevice_size $DISC MiB
FSOPTS=()
@@ -334,10 +331,9 @@ interactive_partition() {
fi
# Select disk to partition
- DISCS=$(finddisks 1 _)
- DISCS="$DISCS OTHER - DONE +"
- notify "Available Disks:\n\n$(_getavaildisks)\n"
- DISC=""
+ listblockfriendly
+ DISCS="$BLOCKFRIENDLY OTHER OTHER DONE DONE"
+ DISC=
while true; do
# Prompt the user with a list of known disks
ask_option no 'Disc selection' "$question_text (select DONE when finished)" required $DISCS || return 1
diff --git a/src/core/libs/lib-ui.sh b/src/core/libs/lib-ui.sh
index 8b886fe..f31031a 100644
--- a/src/core/libs/lib-ui.sh
+++ b/src/core/libs/lib-ui.sh
@@ -37,17 +37,17 @@ printk()
}
-# TODO: pass disks as argument to decouple backend logic
-# Get a list of available disks for use in the "Available disks" dialogs.
-# Something like:
-# /dev/sda: 640133 MiB (640 GiB)
-# /dev/sdb: 640135 MiB (640 GiB)
-_getavaildisks()
+# Get a list of available partionable blockdevices for use in ask_option
+# populates $BLOCKFRIENDLY with entries like:
+# /dev/sda /dev/sda_640133_MiB_(640_GiB)
+listblockfriendly()
{
+ BLOCKFRIENDLY=
for i in $(finddisks)
do
get_blockdevice_size $i MiB
- echo "$i: $BLOCKDEVICE_SIZE MiB ($(($BLOCKDEVICE_SIZE/2**10)) GiB)\n"
+ [ -n "$BLOCKFRIENDLY" ] && BLOCKFRIENDLY="$BLOCKFRIENDLY "
+ BLOCKFRIENDLY="$BLOCKFRIENDLY$i ${i}_${BLOCKDEVICE_SIZE}_MiB_($(($BLOCKDEVICE_SIZE/2**10))_GiB)"
done
}