180
164
return REG_NOMATCH;
183
/* This is the callback routine from mutt_menuLoop() which is used to generate
184
* a menu entry for the requested item number.
186
#define QUERY_MIN_COLUMN_LENGHT 20 /* Must be < 70/2 */
167
static const char * query_format_str (char *dest, size_t destlen, size_t col,
168
char op, const char *src,
169
const char *fmt, const char *ifstring,
170
const char *elsestring,
171
unsigned long data, format_flag flags)
173
ENTRY *entry = (ENTRY *)data;
174
QUERY *query = entry->data;
175
char tmp[SHORT_STRING];
176
char buf2[STRING] = "";
177
int optional = (flags & M_FORMAT_OPTIONAL);
182
rfc822_write_address (buf2, sizeof (buf2), query->addr, 1);
183
snprintf (tmp, sizeof (tmp), "%%%ss", fmt);
184
snprintf (dest, destlen, tmp, buf2);
187
snprintf (tmp, sizeof (tmp), "%%%sd", fmt);
188
snprintf (dest, destlen, tmp, query->num + 1);
193
snprintf (tmp, sizeof (tmp), "%%%ss", fmt);
194
snprintf (dest, destlen, tmp, NONULL (query->other));
196
else if (!query->other || !*query->other)
200
snprintf (tmp, sizeof (tmp), "%%%ss", fmt);
201
snprintf (dest, destlen, tmp, NONULL (query->name));
204
snprintf (tmp, sizeof (tmp), "%%%sc", fmt);
205
snprintf (dest, destlen, tmp, entry->tagged ? '*' : ' ');
208
snprintf (tmp, sizeof (tmp), "%%%sc", fmt);
209
snprintf (dest, destlen, tmp, op);
214
mutt_FormatString (dest, destlen, col, ifstring, query_format_str, data, 0);
215
else if (flags & M_FORMAT_OPTIONAL)
216
mutt_FormatString (dest, destlen, col, elsestring, query_format_str, data, 0);
187
221
static void query_entry (char *s, size_t slen, MUTTMENU *m, int num)
189
ENTRY *table = (ENTRY *) m->data;
190
char buf2[SHORT_STRING], buf[SHORT_STRING] = "";
192
/* need a query format ... hard coded constants are not good */
193
while (FirstColumn + SecondColumn > 70)
195
FirstColumn = FirstColumn * 3 / 4;
196
SecondColumn = SecondColumn * 3 / 4;
197
if (FirstColumn < QUERY_MIN_COLUMN_LENGHT)
198
FirstColumn = QUERY_MIN_COLUMN_LENGHT;
199
if (SecondColumn < QUERY_MIN_COLUMN_LENGHT)
200
SecondColumn = QUERY_MIN_COLUMN_LENGHT;
203
rfc822_write_address (buf, sizeof (buf), table[num].data->addr, 1);
205
mutt_format_string (buf2, sizeof (buf2),
206
FirstColumn + 2, FirstColumn + 2,
207
FMT_LEFT, ' ', table[num].data->name,
208
mutt_strlen (table[num].data->name), 0);
210
snprintf (s, slen, " %c %3d %s %-*.*s %s",
211
table[num].tagged ? '*':' ',
217
NONULL (table[num].data->other));
223
ENTRY *entry = &((ENTRY *) m->data)[num];
225
entry->data->num = num;
226
mutt_FormatString (s, slen, 0, NONULL (QueryFormat), query_format_str,
227
(unsigned long) entry, M_FORMAT_ARROWCURSOR);
220
230
static int query_tag (MUTTMENU *menu, int n, int m)