OSDN Git Service

implement display attribute setter and getter interface.
authorornse01 <ornse01@users.sourceforge.jp>
Sun, 17 Jun 2012 10:06:27 +0000 (10:06 +0000)
committerornse01 <ornse01@users.sourceforge.jp>
Sun, 17 Jun 2012 10:06:27 +0000 (10:06 +0000)
git-svn-id: http://svn.sourceforge.jp/svnroot/bchan/bchanl/trunk@500 20a0b8eb-f62a-4a12-8fe1-b598822500fb

src/bchanl_subject.c
src/bchanl_subject.h
src/main.c
src/subjectlayout.c
src/subjectlayout.h

index 8807ffe..9383bae 100644 (file)
@@ -318,6 +318,36 @@ EXPORT W bchanl_subject_createviewervobj(bchanl_subject_t *subject, sbjtlist_tup
        return BCHANL_SUBJECT_CREATEVIEWERVOBJ_CREATED;
 }
 
+EXPORT VOID bchanl_subject_setresnumberdisplay(bchanl_subject_t *subject, Bool display)
+{
+       sbjtlayout_setresnumberdisplay(subject->layout, display);
+}
+
+EXPORT VOID bchanl_subject_setsincedisplay(bchanl_subject_t *subject, Bool display)
+{
+       sbjtlayout_setsincedisplay(subject->layout, display);
+}
+
+EXPORT VOID bchanl_subject_setvigordisplay(bchanl_subject_t *subject, Bool display)
+{
+       sbjtlayout_setvigordisplay(subject->layout, display);
+}
+
+EXPORT Bool bchanl_subject_getresnumberdisplay(bchanl_subject_t *subject)
+{
+       return sbjtlayout_getresnumberdisplay(subject->layout);
+}
+
+EXPORT Bool bchanl_subject_getsincedisplay(bchanl_subject_t *subject)
+{
+       return sbjtlayout_getsincedisplay(subject->layout);
+}
+
+EXPORT Bool bchanl_subject_getvigordisplay(bchanl_subject_t *subject)
+{
+       return sbjtlayout_getvigordisplay(subject->layout);
+}
+
 LOCAL W bchanl_subject_initialize(bchanl_subject_t *subject, GID gid, UB *host, W host_len, UB *board, W board_len, TC *title, W title_len, FSSPEC *fspec, COLOR vobjbgcol)
 {
        sbjtcache_t *cache;
index 53ef3c2..df29beb 100644 (file)
@@ -52,6 +52,12 @@ IMPORT W bchanl_subject_reorder(bchanl_subject_t *subject, TC *filterword, W fil
 #define BCHANL_SUBJECT_CREATEVIEWERVOBJ_CANCELED 0
 #define BCHANL_SUBJECT_CREATEVIEWERVOBJ_CREATED  1
 IMPORT W bchanl_subject_createviewervobj(bchanl_subject_t *subject, sbjtlist_tuple_t *tuple, UB *fsnrec, W fsnrec_len, VOBJSEG *seg, LINK *lnk);
+IMPORT VOID bchanl_subject_setresnumberdisplay(bchanl_subject_t *subject, Bool display);
+IMPORT VOID bchanl_subject_setsincedisplay(bchanl_subject_t *subject, Bool display);
+IMPORT VOID bchanl_subject_setvigordisplay(bchanl_subject_t *subject, Bool display);
+IMPORT Bool bchanl_subject_getresnumverdisplay(bchanl_subject_t *subject);
+IMPORT Bool bchanl_subject_getsincedisplay(bchanl_subject_t *subject);
+IMPORT Bool bchanl_subject_getvigordisplay(bchanl_subject_t *subject);
 
 IMPORT bchanl_subjecthash_t* bchanl_subjecthash_new(GID gid, W base);
 IMPORT VOID bchanl_subjecthash_delete(bchanl_subjecthash_t *subjecthash);
index 42e6864..055f136 100644 (file)
@@ -159,6 +159,11 @@ struct bchanl_t_ {
        bchanl_subjecthash_t *subjecthash;
        bchanl_bbsmenu_t bbsmenu;
        bchanl_subject_t *currentsubject;
+       struct {
+               Bool resnum;
+               Bool since;
+               Bool vigor;
+       } subjectdisplay;
 
        bchanlhmi_t *hmi;
        subjectwindow_t *subjectwindow;
@@ -169,6 +174,33 @@ struct bchanl_t_ {
 };
 typedef struct bchanl_t_ bchanl_t;
 
+LOCAL VOID bchanl_swapresnumberdisplay(bchanl_t *bchanl)
+{
+       if (bchanl->subjectdisplay.resnum != False) {
+               bchanl->subjectdisplay.resnum = False;
+       } else {
+               bchanl->subjectdisplay.resnum = True;
+       }
+}
+
+LOCAL VOID bchanl_swapsincedisplay(bchanl_t *bchanl)
+{
+       if (bchanl->subjectdisplay.since != False) {
+               bchanl->subjectdisplay.since = False;
+       } else {
+               bchanl->subjectdisplay.since = True;
+       }
+}
+
+LOCAL VOID bchanl_swapvigordisplay(bchanl_t *bchanl)
+{
+       if (bchanl->subjectdisplay.vigor != False) {
+               bchanl->subjectdisplay.vigor = False;
+       } else {
+               bchanl->subjectdisplay.vigor = True;
+       }
+}
+
 LOCAL VOID bchanl_killme(bchanl_t *bchanl);
 
 LOCAL VOID bchanl_subjectwindow_draw(bchanl_t *bchanl)
@@ -381,6 +413,9 @@ LOCAL VOID bchanl_subjectwindow_butdn(bchanl_t *bchanl, W dck, PNT evpos)
 LOCAL VOID bchanl_setcurrentsubject(bchanl_t *bchanl, bchanl_subject_t *sbjt)
 {
        bchanl->currentsubject = sbjt;
+       bchanl_subject_setresnumberdisplay(sbjt, bchanl->subjectdisplay.resnum);
+       bchanl_subject_setsincedisplay(sbjt, bchanl->subjectdisplay.since);
+       bchanl_subject_setvigordisplay(sbjt, bchanl->subjectdisplay.vigor);
        subjectwindow_requestredisp(bchanl->subjectwindow);
 }
 
@@ -1138,6 +1173,9 @@ LOCAL W bchanl_initialize(bchanl_t *bchanl, VID vid, W exectype, LINK *storage)
        bchanl->subjecthash = subjecthash;
 
        bchanl->currentsubject = NULL;
+       bchanl->subjectdisplay.resnum = True;
+       bchanl->subjectdisplay.since = False;
+       bchanl->subjectdisplay.vigor = False;
 
        bchanl->vid = vid;
        bchanl->exectype = exectype;
@@ -1515,7 +1553,7 @@ LOCAL VOID bchanl_setupmenu(bchanl_t *bchanl, BCHANL_TEXTBOX_MENU_TYPE type)
                break;
        }
 
-       bchanl_mainmenu_setup(&bchanl->mainmenu, isopen, isopen_extbbs, selected, fromtray, totray, False, False, False);
+       bchanl_mainmenu_setup(&bchanl->mainmenu, isopen, isopen_extbbs, selected, fromtray, totray, bchanl->subjectdisplay.resnum, bchanl->subjectdisplay.since, bchanl->subjectdisplay.vigor);
 }
 
 LOCAL VOID bchanl_selectmenu(bchanl_t *bchanl, W sel, BCHANL_TEXTBOX_MENU_TYPE type)
@@ -1683,10 +1721,22 @@ LOCAL VOID bchanl_selectmenu(bchanl_t *bchanl, W sel, BCHANL_TEXTBOX_MENU_TYPE t
                }
                break;
        case BCHANL_MAINMENU_SELECT_DISPLAY_RESNUMBER:
+               bchanl_swapresnumberdisplay(bchanl);
+               if (bchanl->currentsubject != NULL) {
+                       bchanl_subject_setresnumberdisplay(bchanl->currentsubject, bchanl->subjectdisplay.resnum);
+               }
                break;
        case BCHANL_MAINMENU_SELECT_DISPLAY_SINCE:
+               bchanl_swapsincedisplay(bchanl);
+               if (bchanl->currentsubject != NULL) {
+                       bchanl_subject_setsincedisplay(bchanl->currentsubject, bchanl->subjectdisplay.since);
+               }
                break;
        case BCHANL_MAINMENU_SELECT_DISPLAY_VIGOR:
+               bchanl_swapvigordisplay(bchanl);
+               if (bchanl->currentsubject != NULL) {
+                       bchanl_subject_setvigordisplay(bchanl->currentsubject, bchanl->subjectdisplay.vigor);
+               }
                break;
        }
        return;
index 1acccf8..2346e73 100644 (file)
@@ -147,6 +147,10 @@ struct sbjtlayout_thread_t_ {
        RECT vframe;
 };
 
+#define SBJTLAYOUT_FLAG_RESNUM_DISPLAY 0x00000001
+#define SBJTLAYOUT_FLAG_SINCE_DISPLAY 0x00000002
+#define SBJTLAYOUT_FLAG_VIGOR_DISPLAY 0x00000004
+
 struct sbjtlayout_t_ {
        GID target;
        W draw_l,draw_t,draw_r,draw_b;
@@ -154,6 +158,7 @@ struct sbjtlayout_t_ {
        W len;
        FSSPEC fspec;
        COLOR vobjbgcol;
+       UW flag;
 };
 
 LOCAL sbjtlayout_thread_t* sbjtlayout_thread_new(sbjtlist_tuple_t *thread)
@@ -367,6 +372,60 @@ EXPORT COLOR sbjtlayout_getvobjbgcol(sbjtlayout_t *layout)
        return layout->vobjbgcol;
 }
 
+EXPORT VOID sbjtlayout_setresnumberdisplay(sbjtlayout_t *layout, Bool display)
+{
+       if (display == False) {
+               layout->flag = layout->flag & ~SBJTLAYOUT_FLAG_RESNUM_DISPLAY;
+       } else {
+               layout->flag |= SBJTLAYOUT_FLAG_RESNUM_DISPLAY;
+       }
+}
+
+EXPORT VOID sbjtlayout_setsincedisplay(sbjtlayout_t *layout, Bool display)
+{
+       if (display == False) {
+               layout->flag = layout->flag & ~SBJTLAYOUT_FLAG_SINCE_DISPLAY;
+       } else {
+               layout->flag |= SBJTLAYOUT_FLAG_SINCE_DISPLAY;
+       }
+}
+
+EXPORT VOID sbjtlayout_setvigordisplay(sbjtlayout_t *layout, Bool display)
+{
+       if (display == False) {
+               layout->flag = layout->flag & ~SBJTLAYOUT_FLAG_VIGOR_DISPLAY;
+       } else {
+               layout->flag |= SBJTLAYOUT_FLAG_VIGOR_DISPLAY;
+       }
+}
+
+EXPORT Bool sbjtlayout_getresnumberdisplay(sbjtlayout_t *layout)
+{
+       if ((layout->flag & SBJTLAYOUT_FLAG_RESNUM_DISPLAY) != 0) {
+               return True;
+       } else {
+               return False;
+       }
+}
+
+EXPORT Bool sbjtlayout_getsincedisplay(sbjtlayout_t *layout)
+{
+       if ((layout->flag & SBJTLAYOUT_FLAG_SINCE_DISPLAY) != 0) {
+               return True;
+       } else {
+               return False;
+       }
+}
+
+EXPORT Bool sbjtlayout_getvigordisplay(sbjtlayout_t *layout)
+{
+       if ((layout->flag & SBJTLAYOUT_FLAG_VIGOR_DISPLAY) != 0) {
+               return True;
+       } else {
+               return False;
+       }
+}
+
 EXPORT sbjtlayout_t* sbjtlayout_new(GID gid)
 {
        sbjtlayout_t *layout;
@@ -388,6 +447,7 @@ EXPORT sbjtlayout_t* sbjtlayout_new(GID gid)
        layout->fspec.size.h = 16;
        layout->fspec.size.v = 16;
        layout->vobjbgcol = 0x10000000;
+       layout->flag = 0;
 
        return layout;
 }
index a71e257..8dfc7e1 100644 (file)
@@ -43,6 +43,12 @@ IMPORT VOID sbjtlayout_clear(sbjtlayout_t *layout);
 IMPORT VOID sbjtlayout_setfsspec(sbjtlayout_t *layout, FSSPEC *fspec);
 IMPORT VOID sbjtlayout_setvobjbgcol(sbjtlayout_t *layout, COLOR color);
 IMPORT COLOR sbjtlayout_getvobjbgcol(sbjtlayout_t *layout);
+IMPORT VOID sbjtlayout_setresnumberdisplay(sbjtlayout_t *layout, Bool display);
+IMPORT VOID sbjtlayout_setsincedisplay(sbjtlayout_t *layout, Bool display);
+IMPORT VOID sbjtlayout_setvigordisplay(sbjtlayout_t *layout, Bool display);
+IMPORT Bool sbjtlayout_getresnumberdisplay(sbjtlayout_t *layout);
+IMPORT Bool sbjtlayout_getsincedisplay(sbjtlayout_t *layout);
+IMPORT Bool sbjtlayout_getvigordisplay(sbjtlayout_t *layout);
 
 typedef struct sbjtdraw_t_ sbjtdraw_t;