Add a contact menu to manage them
Signed-off-by: Stacy Harper <contact@stacyharper.net> Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
This commit is contained in:
parent
f8995ad25c
commit
811ea5bd5d
3 changed files with 101 additions and 0 deletions
|
@ -391,6 +391,7 @@ programchoicesinit() {
|
|||
$(command -v foxtrotgps >/dev/null && echo "$icon_gps Maps ^ 0 ^ foxtrotgps")
|
||||
$icon_phn Dialer ^ 0 ^ sxmo_modemdial.sh
|
||||
$icon_msg Texts ^ 0 ^ sxmo_modemtext.sh
|
||||
$icon_usr Contacts ^ 0 ^ sxmo_contactmenu.sh
|
||||
$(command -v megapixels >/dev/null && echo "$icon_cam Camera ^ 0 ^ GDK_SCALE=2 megapixels")
|
||||
$icon_net Networks ^ 0 ^ sxmo_networks.sh
|
||||
$icon_mus Audio ^ 0 ^ sxmo_appmenu.sh audioout
|
||||
|
|
|
@ -15,6 +15,8 @@ export NOTIFDIR="$XDG_DATA_HOME"/sxmo/notifications
|
|||
export CACHEDIR="$XDG_CACHE_HOME"/sxmo
|
||||
# shellcheck disable=SC2034
|
||||
export LOGDIR="$XDG_DATA_HOME"/sxmo/modem
|
||||
# shellcheck disable=SC2034
|
||||
export CONTACTFILE="$XDG_CONFIG_HOME/sxmo/contacts.tsv"
|
||||
|
||||
command -v "$KEYBOARD" > /dev/null || export KEYBOARD=svkbd-mobile-intl
|
||||
|
||||
|
|
98
scripts/core/sxmo_contactmenu.sh
Executable file
98
scripts/core/sxmo_contactmenu.sh
Executable file
|
@ -0,0 +1,98 @@
|
|||
#!/usr/bin/env sh
|
||||
|
||||
# shellcheck source=scripts/core/sxmo_common.sh
|
||||
. "$(dirname "$0")/sxmo_common.sh"
|
||||
|
||||
newcontact() {
|
||||
name="$(echo | sxmo_dmenu_with_kb.sh -c -l 2 -p "Name")"
|
||||
number="$(echo | sxmo_dmenu_with_kb.sh -c -l 2 -p "Number")"
|
||||
|
||||
PICKED="$number $name" # now act like if we picked this new contact
|
||||
echo "$PICKED" >> "$CONTACTFILE"
|
||||
}
|
||||
|
||||
editcontactname() {
|
||||
oldnumber="$(echo "$1" | cut -d" " -f1)"
|
||||
oldname="$(echo "$1" | cut -d" " -f2)"
|
||||
|
||||
ENTRIES="$(printf %b "Old name: $oldname")"
|
||||
PICKED="$(
|
||||
echo "$ENTRIES" |
|
||||
sxmo_dmenu_with_kb.sh -c -l 3 -p "Edit Contact"
|
||||
)"
|
||||
|
||||
if echo "$PICKED" | grep -q "^Old name: "; then
|
||||
editcontact "$1"
|
||||
else
|
||||
newcontact="$oldnumber $PICKED"
|
||||
sed -i "s/^$1$/$newcontact/" "$CONTACTFILE" && editcontact "$newcontact"
|
||||
fi
|
||||
}
|
||||
|
||||
editcontactnumber() {
|
||||
oldnumber="$(echo "$1" | cut -d" " -f1)"
|
||||
oldname="$(echo "$1" | cut -d" " -f2)"
|
||||
|
||||
ENTRIES="$(printf %b "Old number: $oldnumber")"
|
||||
PICKED="$(
|
||||
echo "$ENTRIES" |
|
||||
sxmo_dmenu_with_kb.sh -c -l 3 -p "Edit Contact"
|
||||
)"
|
||||
|
||||
if echo "$PICKED" | grep -q "^Old number: "; then
|
||||
editcontact "$1"
|
||||
else
|
||||
newcontact="$PICKED $oldname"
|
||||
sed -i "s/^$1$/$newcontact/" "$CONTACTFILE" && editcontact "$newcontact"
|
||||
fi
|
||||
}
|
||||
|
||||
deletecontact() {
|
||||
name="$(echo "$1" | cut -d" " -f2)"
|
||||
|
||||
ENTRIES="$(printf "Yes\nNo")"
|
||||
PICKED="$(
|
||||
echo "$ENTRIES" |
|
||||
dmenu -c -l 3 -p "Delete $name ?"
|
||||
)"
|
||||
|
||||
echo "$PICKED" | grep -q "^Yes" && sed -i "/^$1$/d" "$CONTACTFILE"
|
||||
}
|
||||
|
||||
editcontact() {
|
||||
number="$(echo "$1" | cut -d" " -f1)"
|
||||
name="$(echo "$1" | cut -d" " -f2)"
|
||||
ENTRIES="$(printf %b "Cancel\nDelete\nName: $name\nNumber: $number")"
|
||||
|
||||
PICKED="$(
|
||||
echo "$ENTRIES" |
|
||||
dmenu -c -l 4 -p "Edit Contact"
|
||||
)"
|
||||
|
||||
if echo "$PICKED" | grep -q "^Delete"; then
|
||||
deletecontact "$1"
|
||||
elif echo "$PICKED" | grep -q "^Name: "; then
|
||||
editcontactname "$1"
|
||||
elif echo "$PICKED" | grep -q "^Number: "; then
|
||||
editcontactnumber "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
while true; do
|
||||
CONTACTS="$(sed 's/\t/: /g' "$CONTACTFILE")"
|
||||
ENTRIES="$(echo "$CONTACTS" | xargs -0 printf "Close Menu\nNew Contact\n%s")"
|
||||
|
||||
PICKED="$(
|
||||
echo "$ENTRIES" |
|
||||
sxmo_dmenu_with_kb.sh -i -c -l 10 -p "Contacts"
|
||||
)"
|
||||
|
||||
echo "$PICKED" | grep -q "Close Menu" && exit
|
||||
echo "$PICKED" | grep -q "New Contact" && newcontact
|
||||
|
||||
editcontact "$(echo "$PICKED" | sed 's/: /\t/g')"
|
||||
done
|
||||
}
|
||||
|
||||
main
|
Loading…
Add table
Add a link
Reference in a new issue