1 
2 static char rcsid[] = "@(#)$Id: softkeys.c,v 1.3 1996/03/14 17:29:57 wfp5p Exp $";
3 
4 /*******************************************************************************
5  *  The Elm Mail System  -  $Revision: 1.3 $   $State: Exp $
6  *
7  *                      Copyright (c) 1988-1995 USENET Community Trust
8  *			Copyright (c) 1986,1987 Dave Taylor
9  *******************************************************************************
10  * Bug reports, patches, comments, suggestions should be sent to:
11  *
12  *      Bill Pemberton, Elm Coordinator
13  *      flash@virginia.edu
14  *
15  *******************************************************************************
16  * $Log: softkeys.c,v $
17  * Revision 1.3  1996/03/14  17:29:57  wfp5p
18  * Alpha 9
19  *
20  * Revision 1.2  1995/09/29  17:42:33  wfp5p
21  * Alpha 8 (Chip's big changes)
22  *
23  * Revision 1.1.1.1  1995/04/19  20:38:39  wfp5p
24  * Initial import of elm 2.4 PL0 as base for elm 2.5.
25  *
26  *******************************************************************************
27  */
28 
29 #include "elm_defs.h"
30 #include "elm_globals.h"
31 #include "s_elm.h"
32 
33 #define f_key1	1
34 #define f_key2	2
35 #define f_key3	3
36 #define f_key4	4
37 #define f_key5	5
38 #define f_key6	6
39 #define f_key7	7
40 #define f_key8	8
41 
42 
define_key(key,display,send)43 static void define_key(key, display, send)
44 int key;
45 char *display, *send;
46 {
47 	fprintf(stderr, "%c&f%dk%dd%dL%s%s", ESCAPE, key,
48 		strlen(display), strlen(send), display, send);
49 }
50 
clear_key(key)51 static void clear_key(key)
52 {
53        define_key(key, "                ", "");
54 }
55 
56 
define_softkeys(sel)57 PUBLIC int define_softkeys(sel)
58 int sel;
59 {
60 	static int prev_selection = -1;
61 	int ret_selection;
62 
63 	if (!hp_softkeys)
64 	  return prev_selection;
65 
66 	switch (sel) {
67 
68 	case SOFTKEYS_MAIN:
69 	  define_key(f_key1, catgets(elm_msg_cat, ElmSet, ElmKeyF1,
70 		" Display   Msg"),   "\r");
71 	  define_key(f_key2, catgets(elm_msg_cat, ElmSet, ElmKeyF2,
72 		"  Mail     Msg"),   "m");
73 	  define_key(f_key3, catgets(elm_msg_cat, ElmSet, ElmKeyF3,
74 		"  Reply  to Msg"),  "r");
75 	  if (user_level == 0) {
76 	    define_key(f_key4, catgets(elm_msg_cat, ElmSet, ElmKey0F4,
77 		"  Save     Msg"),   "s");
78 	    define_key(f_key5, catgets(elm_msg_cat, ElmSet, ElmKey0F5
79 		," Delete    Msg"),   "d");
80 	    define_key(f_key6, catgets(elm_msg_cat, ElmSet, ElmKey0F6,
81 		"Undelete   Msg"),   "u");
82    	  } else {
83 	    define_key(f_key4, catgets(elm_msg_cat, ElmSet, ElmKey1F4,
84 		" Change  Folder"), "c");
85 	    define_key(f_key5, catgets(elm_msg_cat, ElmSet, ElmKey1F5,
86 		"  Save     Msg"),   "s");
87 	    define_key(f_key6, catgets(elm_msg_cat, ElmSet, ElmKey1F6,
88 		" Delete/Undelete"), "^");
89 	  }
90 	  define_key(f_key7, catgets(elm_msg_cat, ElmSet, ElmKeyF7,
91 		" Print     Msg"),   "p");
92 	  define_key(f_key8, catgets(elm_msg_cat, ElmSet, ElmKeyF8,
93 		"  Quit     ELM"),   "q");
94 
95 	  break;
96 
97 	case SOFTKEYS_ALIAS:
98 	  define_key(f_key1, catgets(elm_msg_cat, ElmSet, ElmKeyAF1,
99 		" Alias  Current"),  "a");
100 	  define_key(f_key2, catgets(elm_msg_cat, ElmSet, ElmKeyAF2,
101 		" Check  Person"),   "p");
102 	  define_key(f_key3, catgets(elm_msg_cat, ElmSet, ElmKeyAF3,
103 		" Check  System"),   "s");
104 	  define_key(f_key4, catgets(elm_msg_cat, ElmSet, ElmKeyAF4,
105 		" Make    Alias"),   "m");
106 	  clear_key(f_key5);
107 	  clear_key(f_key6);
108 	  clear_key(f_key7);
109 	  define_key(f_key8, catgets(elm_msg_cat, ElmSet, ElmKeyAF8,
110 		" Return  to ELM"),  "r");
111 
112 	case SOFTKEYS_YESNO:
113 	  define_key(f_key1, catgets(elm_msg_cat, ElmSet, ElmKeyYF1,
114 		"  Yes"),  "y");
115 	  clear_key(f_key2);
116 	  clear_key(f_key3);
117 	  clear_key(f_key4);
118 	  clear_key(f_key5);
119 	  clear_key(f_key6);
120 	  clear_key(f_key7);
121 	  define_key(f_key8, catgets(elm_msg_cat, ElmSet, ElmKeyYF8,
122 		"   No"),  "n");
123 
124 	case SOFTKEYS_READ:
125 	  define_key(f_key1, catgets(elm_msg_cat, ElmSet, ElmKeyRF1,
126 		"  Next    Page  "), " ");
127 	  clear_key(f_key2);
128 	  define_key(f_key3, catgets(elm_msg_cat, ElmSet, ElmKeyRF3,
129 		"  Next    Msg   "), "j");
130 	  define_key(f_key4, catgets(elm_msg_cat, ElmSet, ElmKeyRF4,
131 		"  Prev    Msg   "), "k");
132 	  define_key(f_key5, catgets(elm_msg_cat, ElmSet, ElmKeyRF5,
133 		"  Reply  to Msg "), "r");
134 	  define_key(f_key6, catgets(elm_msg_cat, ElmSet, ElmKeyRF6,
135 		" Delete   Msg   "), "d");
136 	  define_key(f_key7, catgets(elm_msg_cat, ElmSet, ElmKeyRF7,
137 		"  Send    Msg   "), "m");
138 	  define_key(f_key8, catgets(elm_msg_cat, ElmSet, ElmKeyRF8,
139 		" Return  to ELM "), "q");
140 
141 	case SOFTKEYS_CHANGE:
142 	  define_key(f_key1, catgets(elm_msg_cat, ElmSet, ElmKeyCF1,
143 		"  Mail  Directry"), "=/");
144 	  define_key(f_key2, catgets(elm_msg_cat, ElmSet, ElmKeyCF2,
145 		"  Home  Directry"), "~/");
146 	  clear_key(f_key3);
147 	  define_key(f_key4, catgets(elm_msg_cat, ElmSet, ElmKeyCF4,
148 		"Incoming Mailbox"), "!\r");
149 	  define_key(f_key5, catgets(elm_msg_cat, ElmSet, ElmKeyCF5,
150 		"\"Received\" Folder"), ">\r");
151 	  define_key(f_key6, catgets(elm_msg_cat, ElmSet, ElmKeyCF6,
152 		"\"Sent\"   Folder "), "<\r");
153 	  clear_key(f_key7);
154 	  define_key(f_key8, catgets(elm_msg_cat, ElmSet, ElmKeyCF8,
155 		" Cancel"), "\n");
156 
157 	}
158 
159 	softkeys_on();
160 	ret_selection = prev_selection;
161 	prev_selection = sel;
162 	return ret_selection;
163 }
164 
softkeys_on()165 PUBLIC void softkeys_on()
166 {
167 	/* enable (esc&s1A) turn on softkeys (esc&jB) and turn on MENU
168 	   and USER/SYSTEM options. */
169 
170 	if (hp_softkeys) {
171 	  fprintf(stderr, "%c&s1A%c&jB%c&jR", ESCAPE, ESCAPE, ESCAPE);
172 	  fflush(stderr);
173 	}
174 }
175 
softkeys_off()176 PUBLIC void softkeys_off()
177 {
178 	/* turn off softkeys (esc&j@) */
179 
180 	if (hp_softkeys) {
181 	  fprintf(stderr, "%c&s0A%c&j@", ESCAPE, ESCAPE);
182 	  fflush(stderr);
183 	}
184 }
185 
186