OSDN Git Service

implement menu handling logic.
authorornse01 <ornse01@users.sourceforge.jp>
Mon, 30 Apr 2012 13:15:38 +0000 (13:15 +0000)
committerornse01 <ornse01@users.sourceforge.jp>
Mon, 30 Apr 2012 13:15:38 +0000 (13:15 +0000)
git-svn-id: http://svn.sourceforge.jp/svnroot/bchan/bchanl/trunk@454 20a0b8eb-f62a-4a12-8fe1-b598822500fb

src/bchanl_menus.c
src/bchanl_menus.h
src/main.c

index f484b52..4a9fe8e 100644 (file)
@@ -43,7 +43,7 @@
 #define BCHANL_MAINMENU_ITEMNUM_WINDOW 4
 #define BCHANL_MAINMENU_ITEMNUM_GADGET (BCHANL_MAINMENU_ITEMNUM_WINDOW + 1)
 
-EXPORT W bchanl_mainmenu_setup(bchanl_mainmenu_t *mainmenu, Bool subectjoptionenable)
+EXPORT W bchanl_mainmenu_setup(bchanl_mainmenu_t *mainmenu, Bool subectjoptionenable, Bool extbbsmanageropen, Bool extbbsselected)
 {
        /* [ɽ¼¨] -> [¥¹¥ì°ìÍ÷ÀßÄê] */
        if (subectjoptionenable == False) {
@@ -52,6 +52,32 @@ EXPORT W bchanl_mainmenu_setup(bchanl_mainmenu_t *mainmenu, Bool subectjoptionen
                mchg_atr(mainmenu->mnid, (1 << 8)|2, M_SEL);
        }
 
+       /* [³°ÉôÈÄ] -> [³°ÉôÈÄ´ÉÍý] */
+       if (extbbsmanageropen == False) {
+               mchg_atr(mainmenu->mnid, (3 << 8)|1, M_NOSEL);
+       } else {
+               mchg_atr(mainmenu->mnid, (3 << 8)|1, M_SEL);
+       }
+
+       /* [³°ÉôÈÄ] -> [ÈÄÄɲÃ] */
+       if (extbbsmanageropen != False) {
+               mchg_atr(mainmenu->mnid, (3 << 8)|3, M_ACT);
+       } else {
+               mchg_atr(mainmenu->mnid, (3 << 8)|3, M_INACT);
+       }
+       /* [³°ÉôÈÄ] -> [°ì¤Ä¾å¤²¤ë] */
+       /* [³°ÉôÈÄ] -> [°ì¤Ä²¼¤²¤ë] */
+       /* [³°ÉôÈÄ] -> [ºï½ü] */
+       if (extbbsselected == False) {
+               mchg_atr(mainmenu->mnid, (3 << 8)|4, M_INACT);
+               mchg_atr(mainmenu->mnid, (3 << 8)|5, M_INACT);
+               mchg_atr(mainmenu->mnid, (3 << 8)|6, M_INACT);
+       } else {
+               mchg_atr(mainmenu->mnid, (3 << 8)|4, M_ACT);
+               mchg_atr(mainmenu->mnid, (3 << 8)|5, M_ACT);
+               mchg_atr(mainmenu->mnid, (3 << 8)|6, M_ACT);
+       }
+
        wget_dmn(&(mainmenu->mnitem[BCHANL_MAINMENU_ITEMNUM_WINDOW].ptr));
        mset_itm(mainmenu->mnid, BCHANL_MAINMENU_ITEMNUM_WINDOW, mainmenu->mnitem+BCHANL_MAINMENU_ITEMNUM_WINDOW);
        oget_men(0, NULL, &(mainmenu->mnitem[BCHANL_MAINMENU_ITEMNUM_GADGET].ptr), NULL, NULL);
@@ -69,7 +95,7 @@ LOCAL W bchanl_mainmenu_select(bchanl_mainmenu_t *mainmenu, W i)
                ret = BCHANL_MAINMENU_SELECT_CLOSE;
                break;
        case 1: /* [ɽ¼¨] */
-               switch(i & 0xff) {
+               switch (i & 0xff) {
                case 1: /* [ºÆɽ¼¨] */
                        ret = BCHANL_MAINMENU_SELECT_REDISPLAY;
                        break;
@@ -82,12 +108,31 @@ LOCAL W bchanl_mainmenu_select(bchanl_mainmenu_t *mainmenu, W i)
                }
                break;
        case 2: /* [Áàºî] */
-               switch(i & 0xff) {
+               switch (i & 0xff) {
                case 1: /* [ÈÄ°ìÍ÷ºÆ¼èÆÀ] */
                        ret = BCHANL_MAINMENU_SELECT_BBSMENUFETCH;
                        break;
-               case 2: /* [³°ÉôÈĤÎÄɲÃ] */
-                       ret = BCHANL_MAINMENU_SELECT_REGISTEREXTBBS;
+               default:
+                       ret = BCHANL_MAINMENU_SELECT_NOSELECT;
+                       break;
+               }
+               break;
+       case 3: /* [³°ÉôÈÄ] */
+               switch (i & 0xff) {
+               case 1: /* [³°ÉôÈÄ´ÉÍý] */
+                       ret = BCHANL_MAINMENU_SELECT_EXTBBS_MANAGER;
+                       break;
+               case 3: /* [ÈÄÄɲÃ] */
+                       ret = BCHANL_MAINMENU_SELECT_EXTBBS_REGISTER;
+                       break;
+               case 4: /* [°ì¤Ä¾å¤²¤ë] */
+                       ret = BCHANL_MAINMENU_SELECT_EXTBBS_UP;
+                       break;
+               case 5: /* [°ì¤Ä²¼¤²¤ë] */
+                       ret = BCHANL_MAINMENU_SELECT_EXTBBS_DOWN;
+                       break;
+               case 6: /* [ºï½ü] */
+                       ret = BCHANL_MAINMENU_SELECT_EXTBBS_DELETE;
                        break;
                default:
                        ret = BCHANL_MAINMENU_SELECT_NOSELECT;
index 16806f7..d5e2693 100644 (file)
@@ -38,13 +38,17 @@ typedef struct bchanl_mainmenu_t_ bchanl_mainmenu_t;
 
 IMPORT W bchanl_mainmenu_initialize(bchanl_mainmenu_t *mainmenu, W dnum);
 IMPORT VOID bchanl_mainmenu_finalize(bchanl_mainmenu_t *mainmenu);
-IMPORT W bchanl_mainmenu_setup(bchanl_mainmenu_t *mainmenu, Bool subectjoptionenable);
+IMPORT W bchanl_mainmenu_setup(bchanl_mainmenu_t *mainmenu, Bool subectjoptionenable, Bool extbbsmanageropen, Bool extbbsselected);
 #define BCHANL_MAINMENU_SELECT_NOSELECT 0
 #define BCHANL_MAINMENU_SELECT_CLOSE 1
 #define BCHANL_MAINMENU_SELECT_REDISPLAY 2
 #define BCHANL_MAINMENU_SELECT_BBSMENUFETCH 3
 #define BCHANL_MAINMENU_SELECT_SUBJECTOPTION 4
-#define BCHANL_MAINMENU_SELECT_REGISTEREXTBBS 5
+#define BCHANL_MAINMENU_SELECT_EXTBBS_MANAGER 5
+#define BCHANL_MAINMENU_SELECT_EXTBBS_REGISTER 6
+#define BCHANL_MAINMENU_SELECT_EXTBBS_UP 7
+#define BCHANL_MAINMENU_SELECT_EXTBBS_DOWN 8
+#define BCHANL_MAINMENU_SELECT_EXTBBS_DELETE 9
 IMPORT W bchanl_mainmenu_popup(bchanl_mainmenu_t *mainmenu, PNT pos);
 IMPORT W bchanl_mainmenu_keyselect(bchanl_mainmenu_t *mainmenu, TC keycode);
 
index a19e4aa..725c224 100644 (file)
@@ -1392,11 +1392,12 @@ LOCAL VOID bchanl_keydwn(bchanl_t *bchanl, UH keytop, TC ch, UW stat)
 
 LOCAL VOID bchanl_setupmenu(bchanl_t *bchanl)
 {
-       Bool isopen;
+       Bool isopen, isopen_extbbs;
 
        isopen = subjectoptionwindow_isopen(bchanl->subjectoptionwindow);
+       isopen_extbbs = externalbbswindow_isopen(bchanl->externalbbswindow);
 
-       bchanl_mainmenu_setup(&bchanl->mainmenu, isopen);
+       bchanl_mainmenu_setup(&bchanl->mainmenu, isopen, isopen_extbbs, False);
 }
 
 LOCAL VOID bchanl_selectmenu(bchanl_t *bchanl, W sel)
@@ -1423,11 +1424,7 @@ LOCAL VOID bchanl_selectmenu(bchanl_t *bchanl, W sel)
                        subjectoptionwindow_close(bchanl->subjectoptionwindow);
                }
                break;
-       case BCHANL_MAINMENU_SELECT_REGISTEREXTBBS: /* [³°ÉôÈĤÎÄɲÃ] */
-               isopen = registerexternalwindow_isopen(bchanl->registerexternalwindow);
-               if (isopen == False) {
-                       registerexternalwindow_open(bchanl->registerexternalwindow);
-               }
+       case BCHANL_MAINMENU_SELECT_EXTBBS_MANAGER: /* [³°ÉôÈĤÎÄɲÃ] */
                isopen = externalbbswindow_isopen(bchanl->externalbbswindow);
                if (isopen == False) {
 
@@ -1440,6 +1437,19 @@ LOCAL VOID bchanl_selectmenu(bchanl_t *bchanl, W sel)
                        extbbslist_editcontext_setviewrect(bchanl->bbsmenu.editctx, 0, 0, work.c.right - work.c.left, work.c.bottom - work.c.top);
                        externalbbswindow_setworkrect(bchanl->externalbbswindow, 0, 0, work.c.right - work.c.left, work.c.bottom - work.c.top);
                }
+               break;
+       case BCHANL_MAINMENU_SELECT_EXTBBS_REGISTER:
+               isopen = registerexternalwindow_isopen(bchanl->registerexternalwindow);
+               if (isopen == False) {
+                       registerexternalwindow_open(bchanl->registerexternalwindow);
+               }
+               break;
+       case BCHANL_MAINMENU_SELECT_EXTBBS_UP:
+               break;
+       case BCHANL_MAINMENU_SELECT_EXTBBS_DOWN:
+               break;
+       case BCHANL_MAINMENU_SELECT_EXTBBS_DELETE:
+               break;
        }
        return;
 }