回精華區
作者binbin.bbs@cpu.tfcis.org (餅乾) 看板: plan
標題[功能] 我的最愛排序
時間動力核心 (2005/04/19 Tue 14:48:24) Updated: 2006/04/10
> favor.c : 增加下面兩個函式

static int
mf_cmp(a, b)
  MF *a;
  MF *b;
{
  int ma, mb;
  int na, nb;

  ma = a->mftype;
  mb = b->mftype;

  /* 依序是 卷宗、看板、精華區捷徑、分隔線 */
  na = ma & MF_FOLDER ? 1 : ma & MF_BOARD ? 2 : ma & MF_GEM ? 3 : 4;
  nb = mb & MF_FOLDER ? 1 : mb & MF_BOARD ? 2 : mb & MF_GEM ? 3 : 4;

  if (ma = na - nb)
    return ma;

  if (nb == 1)              /* 卷宗 */
    return str_cmp(a->xname, b->xname);

  if (nb == 2 || nb == 3)   /* 看板、精華區捷徑 */
  {
    na = brd_bno(a->xname);
    nb = brd_bno(b->xname);

    if (na >= 0)
    {
      if (nb >= 0)
      {
        if (cuser.ufo & UFO_BRDNAME)
          return strcmp(a->xname, b->xname);

        nb = strcmp(bshm->bcache[na].class, bshm->bcache[nb].class);
        return nb ? nb :
          strcmp(bshm->bcache[na].title, bshm->bcache[nb].title);
      }
      return -1;
    }

    if (nb >= 0)
      return 1;
    return str_cmp(a->xname, b->xname);
  }

  return 0;   /* 分隔線 */
}

static int
mf_sort(xo)
  XO *xo;
{
  static time_t last = 0;
  time_t now;

  if (time(&now) - last < 10)
  {
    vmsg("每十秒鐘只能切換一次");
    return XO_FOOT;
  }
  last = now;

  rec_sync(xo->dir, sizeof(MF), mf_cmp, NULL);
  return mf_load(xo);
}

> favor.c : mf_cb[] 加入按鍵 'S'

static KeyFunc mf_cb[] =
{
  ...

  'T', mf_title,
  'E', mf_edit,
+ 'S', mf_sort,
  's', mf_switch,
  ...

> theme.h

#define NECKER_MF 後面加入 "... [S]排序 ..."

--
  Origin:  Maple-itoc˙動力核心  cpu.tfcis.org 
  Author: binbin 211-74-86-40.adsl.dynamic.seed.net.tw 發表
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻