~mil/sxmo-utils

ref: dbc3b1ab509aab5f1db72c5cece2ee2a6eb521e8 sxmo-utils/scripts/core/sxmo_contactmenu.sh -rwxr-xr-x 2.2 KiB
dbc3b1abStacy Harper Allow the sendnewtextmenu to be used with a number as arg 1 year, 4 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
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