⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fljview.c

📁 MTK 1389e版 MINI组合音响代码
💻 C
📖 第 1 页 / 共 3 页
字号:
}

/**
 * Leave the object (called when we try to move the focus away).
 */
WORD wFlJvLeave(BOOL bSuicide) large
{
  WORD  wItem;
  
  if (_wCurrItem != 0xFFFF)
    wItem = _wCurrItem;
  else
    wItem = (WORD)bSharedInfo(SI_JPG_ITEM_IDX_HI) * 256 + bSharedInfo(SI_JPG_ITEM_IDX_LO);
  
  // - 1. stop the decoding if the decoder is going
#if 0
  if (bSuicide)
  {
//    vSendUopCmd(UOP_STOP, SV_JPG_STOP_ALL_STATE, 0x0, 0x0);
//    vFlMnSetUopRetJob(UOP_STOP, UOP_RET_CHG_CMDTGT);
    vFlSendUopCmd(UOP_STOP, SV_JPG_STOP_ALL_STATE, UOP_RET_CHG_CMDTGT);
  }
#endif
  if (bSuicide)
  {
    vSendUopCmd(UOP_STOP, SV_JPG_STOP_ALL_STATE, 0x0, 0x0);
  }

  // - 2. hide the hilit for digest menu
  vHideHL(FLDGTMN_HILIT);

  // - TOFIX: the index may be ambigous to reflect the current item
  return (wItem);
}

/**
 * Enter the object (called when we try to move the focus in).
 */
void vFlJvEnter(WORD wItem) large
{
#ifdef WB_ALLOC_MIN
  vOsdShowWb(OSD_WB_RESET);
  vCreateWBEx(FL_DGTMN_WB);
  vSetTransEn(FL_DGTMN_WB, 0);

  // - draw the buttons on digest menu
  vFlJvDrawDgtBtns(bEepromReadByte(OSD_LANG_POSITION));
#endif  
   
  _rOsdStateCtx.bTimeType = OSD_SHOW_DISABLE;

  //vEnableWB(WB_OVERLAY_MSG2);

  // - set hilit color
  vSetHLCol(FLDGTMN_HILIT, FLDGTMN_HILIT_COL);

  if (!fgIsInSetupMenu())
  {
    vEnableWB(WB_NORMAL_HEAD1);
    vEnableWB(WB_NORMAL_HEAD2);
  }
  
  if (bSharedInfo(SI_JPG_MODE) == JPEGMOD_DIGEST)
  {
    vDisableWB(WB_NORMAL_VOL);
    //vDeleteWB(WB_NORMAL_VOL);
    vEnableWB(FL_DGTMN_WB);
    vFlJvDgtMnHil();
  }

  // - set shared info to config RISC
  vSetSharedInfo(SI_PREVIEW_MODE, FALSE);
  vSetSharedInfo(SI_JPG_ROTATE_AUTO_SLIDE, (0x80|FL_JPEG_SLIDESHOW_INTERVAL));
  //vSetSharedInfo(SI_JPG_DIGEST_BG, 0x1);
  
  // - set the foreground module as JPEG DECODER
  vFlCtrlSetFg(FLMD_JPEG_DECODER);
  while(bSharedInfo(SI_DDISC_PB_MODULE) != SV_DDISC_MODULE_JPG);
  
  if (bSharedInfo(SI_DISC_TYPE) == SV_PCD)
  {
    if (bSharedInfo(SI_JPG_MODE) != JPEGMOD_DIGEST)
    {
      vSetSharedInfo(SI_PREVIEW_MODE, FALSE);
      vSendUopCmd(UOP_PLAY, 0x0, 0x0, 0x0);
    }
    if (fgIsInSetupMenu())
    {
      // - pause jpg decoding
      vSendUopCmd(UOP_PAUSE, 0x01, 0x01, 0x00); 
      //vFsMenuFreezeDec(TRUE);
    }
  }
  
  _bFlVdoPbcStt = SV_PLAY;

  if (_rFlCmdLock.bPath != FL_CMDPATH_SEL_1)
  {
    vFlClRls();
  }
  return;
}

/**
 * We send a click item command from object "jpeg viewer" and handle the
 *  return here.
 */
static void vFlJvRetClickItem(void) large
{
  vFlCmdDone();
  vFlClRls();

  return;
}

/**
 * Handle the JPEG state change notification.
 */
static void vFlJvChgJpgState(BYTE bStt) large
{
  WORD wIdx;
  BYTE bMode;

  // - get the index of the current item of JPEG module and 
  //    the operation mode
  bLoByte(wIdx) = bSharedInfo(SI_JPG_ITEM_IDX_LO);
  bHiByte(wIdx) = bSharedInfo(SI_JPG_ITEM_IDX_HI);
  bMode = bSharedInfo(SI_JPG_MODE);
  
  switch (bStt)
  {
    case JPEGSTT_DEC_STRT:
      if ((bMode == JPEGMOD_NORMAL) || (bMode == JPEGMOD_SLIDESHOW))
      {
#ifdef FLJV_SHOW_DEC_STATUS
        vOsdPosShow(OSD_POS_PBC_2, OSD_MSG_JPG_DECODING, OSD_NO_DISAPPEAR);
#endif
        vFlUpdateVfd(TRUE);//10/15amFALSE);
      }
      else if (bMode == JPEGMOD_DIGEST)
      {
        if (_bFlJvDgtItemIdx == 0)
        {
          vFlJvDgtMnMnHil();
        }
      }
      break;
    case JPEGSTT_DEC_FSH:
    case JPEGSTT_DEC_ABT:
      if (bMode == JPEGMOD_NORMAL)
      {
#ifdef FLJV_SHOW_DEC_STATUS
        vOsdPosShow(OSD_POS_PBC_2, OSD_MSG_JPG_DECODING, 1);
#endif
      }
      else if (bMode == JPEGMOD_DIGEST)
      {
       // - TODO: do nothing here
      }
      break;
    case JPEGSTT_DEC_ERR:
      break;
    default:
      // - wrong case
      break;
  }

  return;
}

/**
 * IR_CMD_DONE handler of "JVIEW MAIN VIDEO".
 */
BOOL fgFlJvMvIrCmdDoneHdr(void) large
{
  BYTE  bTemp;
  
  if (FL_ACK(_dwIrDoneParm) == FL_CMD_ASSERT)
  {
    // - get file list command assertion here
    switch(bSharedInfo(FL_CMD_BLK_SA))
    {
      case FLCMD_CLICK_ITEM:
        vFlJvRetClickItem();
        break;
      default:
        // - TODO: other case
        break;
    }
  }
  else
  {
    // - notification
    switch (FL_ACK(_dwIrDoneParm))
    {
      case SI_MP3_STT:
        _fgFlMdChg = TRUE;
        break;
      case SI_JPG_STT:
        vFlJvChgJpgState(FL_PARM1(_dwIrDoneParm));
        break;
      case SI_JPG_MODE:
        if (FL_PARM1(_dwIrDoneParm) == JPEGMOD_DIGEST)
        {
          vFlJvShowDgtMn();
        }
        break;
      case SI_JPG_SLIDE_SHOW_DONE:
        if (bSharedInfo(SI_DISC_TYPE) == SV_PCD)
        {
          // - for PCD, turn on digest mode
          vFlJvDgtOn();
        }
        else
        {
          // - for DATA disc, stop the module totally and change command target
          //  back to file menu
          vSendUopCmd(UOP_STOP, SV_JPG_STOP_ALL_STATE, 0x0, 0x0);
          vFlSetCmdTarget(FL_CMD_TARGET_MENU);
        }
        break;
      case SI_DDISC_PB_MODULE:
        break;
  #ifdef FLJV_SHOW_ROTATE_PAN_MSG
      case SI_JPG_ROTATE_PAN_ACK:
        bTemp = bSharedInfo(SI_JPG_ROTATE_PAN_ACK);
        if ((bTemp &0xF0) == 0x10) // JPG_ACK_ROTATING
        {
#ifdef BBK_MENU//to show diffrent osd for CCLKW/CLKW/INVERT/MIRROR
	      if (((bSharedInfo(SI_JPG_ROTATE_PAN_ACK) & 0xF) == SV_LEFT) || ((bSharedInfo(SI_JPG_ROTATE_PAN_ACK) & 0xF) == SV_RIGHT))
	      {
	        vOsdPosShow(OSD_POS_ERROR, OSD_MSG_BBK_ROTATING_90, 4);
	      }
	      else
	      {
	        vOsdPosShow(OSD_POS_ERROR, OSD_MSG_BBK_ROTATING_180, 4);
	      }
#else      
          vFlShowError(OSD_POS_ERROR, OSD_MSG_ROTATING, 4);
#endif
        }
        else
        {
      #ifndef BBK_MENU
          switch (bTemp & 0x0F)
          {
            case SV_UP:
              vFlShowError(OSD_POS_ERROR, OSD_MSG_PAN_UP, 4); 
              break;
            case SV_DOWN:
              vFlShowError(OSD_POS_ERROR, OSD_MSG_PAN_DOWN, 4);
              break;
            case SV_LEFT:
              vFlShowError(OSD_POS_ERROR, OSD_MSG_PAN_LEFT, 4);
              break;
            case SV_RIGHT:
              vFlShowError(OSD_POS_ERROR, OSD_MSG_PAN_RIGHT, 4);
              break;
          }
      #endif
        }
        break;
  #endif
      case FL_CMD_ASSERT:
        // - "FS LIST" command ack, this should not happen here
      default:
        // - other notification and command ack.
        return FALSE;
    }
  }

  return TRUE;
}

static BOOL fgFlJvOnIrSelDone(void) large
{
  WORD  wIdx;
  WORD  wFldrNs;
  
  wIdx = (WORD) _rNumInStateCtx.bDig[0] * 100 + _rNumInStateCtx.bDig[1] * 10 + _rNumInStateCtx.bDig[2];
  
  if (_wFlMnListLen >= 1000)
  {
    wIdx = wIdx * 10 + _rNumInStateCtx.bDig[3];
  }

  if ((wIdx != 0) && (wIdx <= _wFlMnListLen))
  {
#if 0
    if (fgIsPcdPlay())
    {
      vFlCmdClickItem(_bFlMnListId, wIdx);
    }
    else
#endif    
    {
      wIdx--;
      if (bSharedInfo(SI_JPG_MODE) == JPEGMOD_DIGEST)
      {
        if (wIdx > (bSharedInfo(SI_THUMBNAIL_16_IDX_HI)))
          return TRUE;

        wIdx = wFlJvGetDgtItemIdx(wIdx);
      }
            
      _wCurrItem = wIdx;
      _bFlMnCurItemIdx = wIdx % FLMN_ITEM_N;
      
      if (fgFlClLock(FL_CMDPATH_SEL_0))
      {
        fgFlCmdGetItems(_bFlMnListId, wIdx - _bFlMnCurItemIdx);//, FLCMD_RET_OP_SEL);
      }
    }
  }
//10/18am bg
  else
  {
    vOsdShowError(SV_ERR_INVALID_OPERATION, OSD_TIMEOUT_SHORT);
  }
//18/18am end
  return TRUE;
}

/**
 * IR_CMD_DONE handler of object "JVIEWER DIGEST MENU".
 *
 * RETURN: the return value indicates if we grabbed this IR.
 */
BOOL fgFlJvDgtMnIrCmdDoneHdr(void) large
{
  BYTE  bItemNs;
  
  if (FL_ACK(_dwIrDoneParm) == FL_CMD_ASSERT)
  {
    // - get file list command assertion here
    switch(bSharedInfo(FL_CMD_BLK_SA))
    {
      case FLCMD_CLICK_ITEM:
        vFlJvRetClickItem();
        break;
      default:
        // - TODO: other case
        break;
    }
  }
  else
  {
  switch (FL_ACK(_dwIrDoneParm))
  {
    case SI_JPG_STT:
      // - state of the JPEG module changed
      if (FL_PARM1(_dwIrDoneParm) == JPEGSTT_DEC_STRT)
      {
        bItemNs = bSharedInfo(SI_THUMBNAIL_16_IDX_HI) + 1;
        if (bItemNs == 1)
        {
          _bFlJvDgtItemIdx = 0;
          _bFlJvDgtMnOn = FLJVDGTMN_OBJ_MN;
          vFlJvDgtMnMnHil();  // - first time to hilit the item
        }
        // - read in the list index of the thumbnail item
        //wFlJvGetDgtItemIdx(bItemNs - 1);      
  #if 0
        // - when JPEG decoding starts under digest mode, increase the item
        //    number counter
        _bFlJvDgtItemNs ++;
        //if (_bFlJvDgtItemNs == 1)
        if ((_bFlJvDgtItemNs % DGT_MN_NS) == 1)
          vFlJvDgtMnMnHil(); // - first tme to hilit the item
        // - read in the list index of the thumbnail item
        vFlJvDgtRdIdx(_bFlJvDgtItemNs - 1);
  #endif
      }
      break;
    case SI_JPG_MODE:
      // - the module back from digest mode
      if (FL_PARM1(_dwIrDoneParm) != JPEGMOD_DIGEST)
      {
        // - bury the menu
        vFlJvBuryDgtMn();
        vEnableWB(WB_NORMAL_VOL);
      }
      break;
    case SI_JPG_SLIDE_SHOW_DONE:
      // - slide show done
      //vOsdShowError(SV_ERR_GENERAL, FL_MSG_TIMEOUT);
      break;
    case FL_CMD_ASSERT:
      // - "FS LIST" command ack, this should not happen here
    default:
      // - other notification and command ack.
      return FALSE;
    }
  }

  return TRUE;
}

#if 0 // - JACOB: for backup
BOOL fgFlJvDgtMnIrCmdDoneHdr(void) large
{
  switch (FL_ACK(_dwIrDoneParm))
  {
  case SI_JPG_STT:
    // - state of the JPEG module changed
    if (FL_PARM1(_dwIrDoneParm) == JPEGSTT_DEC_STRT)
    {
      // - when JPEG decoding starts under digest mode, increase the item
      //    number counter
      _bFlJvDgtItemNs ++;
      if (_bFlJvDgtItemNs == 1)
        vFlJvDgtMnMnHil(); // - first tme to hilit the item
      // - read in the list index of the thumbnail item
      vFlJvDgtRdIdx(_bFlJvDgtItemNs - 1);
    }
    break;
  case SI_JPG_MODE:
    // - the module back from digest mode
    if (FL_PARM1(_dwIrDoneParm) != JPEGMOD_DIGEST)
    {
      // - bury the menu
      vFlJvBuryDgtMn();
    }
    break;
  case SI_JPG_SLIDE_SHOW_DONE:
    // - slide show done
    //vOsdShowError(SV_ERR_GENERAL, FL_MSG_TIMEOUT);
    break;
  case FL_CMD_ASSERT:
    // - "FS LIST" command ack, this should not happen here
  default:
    // - other notification and command ack.
    return FALSE;
  }

  return TRUE;
}
#endif //0


////////////////////////////////////////////////////////////////////////////////
// Jpeg View IR Key Handler

/**
 * IR_ENTER handlder of "JVIEWER DIGEST MENU".
 */
void vFlJvDgtMnIrEnterHdr(void) large
{
  switch (_bFlJvDgtMnOn)
  {
  case FLJVDGTMN_OBJ_MN:
    // - select item from item menu
    vSendUopCmd(UOP_DIGITAL_BTN, _bFlJvDgtItemIdx, 0x0, 0x0);
    break;
  case FLJVDGTMN_BTN_SS:
    vSendUopCmd(UOP_PLAY, bSharedInfo(SI_THUMBNAIL_1_IDX_HI), bSharedInfo(SI_THUMBNAIL_1_IDX_LO), 0x00);
    break;
  case FLJVDGTMN_BTN_HP:
    // - show help menu
    vFlSetCmdTarget(FL_CMD_TARGET_HELP);
    //vOsdShowError(SV_ERR_GENERAL, FL_MSG_TIMEOUT);
    break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -