作者itoc.bbs@processor.tfcis.org (核心動力) 看板: plan
標題Re: [問題] 如何自訂看板列表的分類排序?
時間動力核心 (2004/03/13 Sat 03:00:55) Updated: 2004/03/13
※ 引述《booloo (booloo)》之銘言:
> 如何自訂看板列表的分類排序?
> 355 ˇzechs 個人 ☆ Just Face The Music! zechs
> 1083 ˇTF9019 班級 ★ 台南一中90級19班 phantom/Jeff
> 想要自訂排序,讓看板列表裡,"班級" 的分類在 "個人" 前面,要怎麼做呢?
: account.c:sequence_match() 新增在 brdtitle_cmp() 前面
static int /* >0:傳回順序 0:找不到對應字串 */
sequence_match(class)
char *class;
{
int i;
char *seq[] = /* 指定優先順序分類 */
{
// 自定優先順序,排前面的比較優先
"站務", "學校", "社團", "個人", "娛樂", "電腦",
NULL /* 最後一項放 NULL */
};
for (i = 0; seq[i]; i++)
{
if (!strcmp(class, seq[i]))
return i + 1;
}
return 0;
}
: account.c:brdtitle_cmp() 改成這樣
static int
brdtitle_cmp(i, j) /* itoc.010413: 依看板中文敘述排序 */
short *i, *j;
{
int iSeq, jSeq;
iSeq = sequence_match(bhead[*i].class);
jSeq = sequence_match(bhead[*j].class);
if (!iSeq && !jSeq)
{
/* 都不是「指定優先順序分類」就分類/板名交叉比對 */
iSeq = strcmp(bhead[*i].class, bhead[*j].class);
return iSeq ? iSeq : str_cmp(bhead[*i].brdname, bhead[*j].brdname);
}
else if (!iSeq)
{
/* 非「指定優先順序分類」排序一定在後 */
return 1;
}
else if (!jSeq)
{
/* 是「指定優先順序分類」排序一定在前 */
return -1;
}
else
{
/* 都是「指定優先順序分類」,先比對順序,再比對板名 */
return iSeq != jSeq ? iSeq - jSeq :
str_cmp(bhead[*i].brdname, bhead[*j].brdname);
}
}
--
╭┼ Origin: Maple-itoc˙動力核心 processor.tfcis.org
╰╮ Modify: 2004/03/13 Sat 03:00:55精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻