180
181
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 */
184
static const char * query_format_str (char *dest, size_t destlen, size_t col,
185
char op, const char *src,
186
const char *fmt, const char *ifstring,
187
const char *elsestring,
188
unsigned long data, format_flag flags)
190
ENTRY *entry = (ENTRY *)data;
191
QUERY *query = entry->data;
192
char tmp[SHORT_STRING];
193
char buf2[STRING] = "";
194
int optional = (flags & M_FORMAT_OPTIONAL);
199
rfc822_write_address (buf2, sizeof (buf2), query->addr, 1);
200
snprintf (tmp, sizeof (tmp), "%%%ss", fmt);
201
snprintf (dest, destlen, tmp, buf2);
204
snprintf (tmp, sizeof (tmp), "%%%sd", fmt);
205
snprintf (dest, destlen, tmp, query->num);
210
snprintf (tmp, sizeof (tmp), "%%%ss", fmt);
211
snprintf (dest, destlen, tmp, NONULL (query->other));
213
else if (!query->other || !*query->other)
217
snprintf (tmp, sizeof (tmp), "%%%ss", fmt);
218
snprintf (dest, destlen, tmp, NONULL (query->name));
221
snprintf (tmp, sizeof (tmp), "%%%sc", fmt);
222
snprintf (dest, destlen, tmp, entry->tagged ? '*' : ' ');
225
snprintf (tmp, sizeof (tmp), "%%%sc", fmt);
226
snprintf (dest, destlen, tmp, op);
231
mutt_FormatString (dest, destlen, col, ifstring, query_format_str, data, 0);
232
else if (flags & M_FORMAT_OPTIONAL)
233
mutt_FormatString (dest, destlen, col, elsestring, query_format_str, data, 0);
187
238
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));
240
ENTRY *entry = &((ENTRY *) m->data)[num];
242
entry->data->num = num;
243
mutt_FormatString (s, slen, 0, NONULL (QueryFormat), query_format_str,
244
(unsigned long) entry, M_FORMAT_ARROWCURSOR);
220
247
static int query_tag (MUTTMENU *menu, int n, int m)