Implemented "sort attribute options"

SVN revision: 2251
This commit is contained in:
2009-08-10 15:11:52 +00:00
parent c9e4edcd9b
commit a7bcf0015e
2 changed files with 25 additions and 5 deletions
+6
View File
@@ -2567,6 +2567,12 @@ Options Location = Main Building{a}, New Building{b}, Old Building{c}
entry. If this flag is 1, then the last entry of each thread is shown,
otherwise the first thread is displayed. Default for this setting is <b>1</b>.
</li>
<li>
<b><code>Sort Attribute Options = 0|1</code></b><br>
If this opeion is 1, all attribute options are sorted alphanumerically. This
can be handy when locating options from long lists in drop-down boxes in
quick filters for example. Default for this setting is <b>0</b>.
</li>
</ul>
<p>
<a name="themes" id="themes"></a>
+19 -5
View File
@@ -434,6 +434,7 @@ time_t convert_datetime(char *date_string);
int get_thumb_name(const char *file_name, char *thumb_name, int size, int index);
int create_thumbnail(LOGBOOK * lbs, char *file_name);
int ascii_compare(const void *s1, const void *s2);
int ascii_compare2(const void *s1, const void *s2);
/*---- Funcions from the MIDAS library -----------------------------*/
@@ -7105,7 +7106,7 @@ int scan_attributes(char *logbook)
and attr_flags arrays */
{
char list[10000], str[NAME_LENGTH], type[NAME_LENGTH], tmp_list[MAX_N_ATTR][NAME_LENGTH];
int i, j, n, m;
int i, j, n, m, n_options;
if (getcfg(logbook, "Attributes", list, sizeof(list))) {
/* reset attribute flags */
@@ -7133,27 +7134,33 @@ int scan_attributes(char *logbook)
/* get options lists for attributes */
memset(attr_options, 0, sizeof(attr_options));
for (i = 0; i < n; i++) {
n_options = 0;
sprintf(str, "Options %s", attr_list[i]);
if (getcfg(logbook, str, list, sizeof(list)))
strbreak(list, attr_options[i], MAX_N_LIST, ",", FALSE);
n_options = strbreak(list, attr_options[i], MAX_N_LIST, ",", FALSE);
sprintf(str, "MOptions %s", attr_list[i]);
if (getcfg(logbook, str, list, sizeof(list))) {
strbreak(list, attr_options[i], MAX_N_LIST, ",", FALSE);
n_options = strbreak(list, attr_options[i], MAX_N_LIST, ",", FALSE);
attr_flags[i] |= AF_MULTI;
}
sprintf(str, "ROptions %s", attr_list[i]);
if (getcfg(logbook, str, list, sizeof(list))) {
strbreak(list, attr_options[i], MAX_N_LIST, ",", FALSE);
n_options = strbreak(list, attr_options[i], MAX_N_LIST, ",", FALSE);
attr_flags[i] |= AF_RADIO;
}
sprintf(str, "IOptions %s", attr_list[i]);
if (getcfg(logbook, str, list, sizeof(list))) {
strbreak(list, attr_options[i], MAX_N_LIST, ",", FALSE);
n_options = strbreak(list, attr_options[i], MAX_N_LIST, ",", FALSE);
attr_flags[i] |= AF_ICON;
}
if (n_options && getcfg(logbook, "Sort Attribute Options", str, sizeof(str)) && atoi(str) == 1) {
qsort(attr_options[i], n_options, NAME_LENGTH, ascii_compare2);
}
}
/* check if attribute required */
@@ -13030,6 +13037,13 @@ int ascii_compare(const void *s1, const void *s2)
/*------------------------------------------------------------------*/
int ascii_compare2(const void *s1, const void *s2)
{
return stricmp((char *) s1, (char *) s2);
}
/*------------------------------------------------------------------*/
void show_config_page(LOGBOOK * lbs)
{
char str[256], user[80], password[80], full_name[80], user_email[80], logbook[256];