?? aphearsay.c
字號:
/****************************************************************************/
/* */
/* Copyright (C) 2005 SHENZHEN MEIJIN CO.LTD */
/* */
/* FILE NAME: ApHearSay.c */
/* MODULE NAME: AP應(yīng)用程序 */
/* DESCRIPTION: HearSayAP的函數(shù) */
/* 數(shù)碼復(fù)讀學(xué)習(xí)界面 */
/* */
/* FUNCTIONS: */
/* */
/****************************************************************************/
/* NAME DATE REMARKS */
/* ========== ============ ==============================================*/
/* DennyHan 2006-03-09 V1.00B */
/****************************************************************************/
// 包含必要的頭文件
#include "Ap.h"
#include "ApHearSay.h"
#include "ApHearSayHook.h"
#ifndef HEARSAY_HELP_ID
#define HEARSAY_HELP_ID (UINT)((const UINT8*)"\
1. 按[1]鍵播放。\r\n\
2. 按[2]鍵停止播放。\r\n\
3. 對于*.MST文本,播放過程中,聲音和文字同步,按[左右]方向鍵瀏覽上、下句,同時播放相應(yīng)位置的語音。\r\n\
4. 對于*.MST文件,系統(tǒng)根據(jù)本身設(shè)置的斷點自動復(fù)讀指定的范圍。按[3]鍵開始復(fù)讀,復(fù)讀完設(shè)定的次數(shù)后,自動復(fù)讀下一句,一直復(fù)讀完畢。\r\n\
5. 對于*.MTL、*.TXT文本,播放過程中,按[上下]方向鍵、[翻頁]鍵進行文本瀏覽。\r\n\
6. 對于*.MTL、*.TXT文本,需手動復(fù)讀。即手動設(shè)置“A、B”點,對“A—B”點間的內(nèi)容進行復(fù)讀。按[1]鍵開始播放,并將播放起點自動作為“A”點,此時按字母[A]鍵將設(shè)置新的“A”點,再按字母[B]鍵設(shè)置“B”點,并開始從“A” 點到“B”點復(fù)讀。\r\n\
7. 手動復(fù)讀時,按字母[A]鍵設(shè)置新的“A”點,并開始從新的“A”點到原來的“B”點復(fù)讀;按字母[B]鍵設(shè)置新的“B”點,并開始從原來的“A”點到新的“B”點復(fù)讀;\r\n\
8. 按[3]鍵重新復(fù)讀,此時,按[1]鍵從“B”點開始播放,并將“B”沒置為新的A點,按[2]鍵,停止復(fù)讀,并將光標停在“B”點;此時按[1]鍵將“B”點變成新的“A”點。\r\n\
9. 按[S]鍵進入復(fù)讀次數(shù)設(shè)置畫面,系統(tǒng)默認為三次,按鍵重新更改次數(shù),按[確認]或[1]鍵保存設(shè)置。\r\n\
10. 在沒有設(shè)置“A、B”點的情況下,按[3]鍵,復(fù)讀無效。設(shè)置有“A”點,而沒有“B”點,按[3]鍵,復(fù)讀無效。\r\n\
11. 系統(tǒng)默認“A”點在左,“B”點在右。\r\n\
12. 按[4]鍵進入跳查的反白狀態(tài),正在播放的聲音停止。按鍵可以移動反白塊。按住[SHIFT]鍵再按方向鍵,可連續(xù)反白。\r\n\
13. 按[退出]返回到上一層畫面。\r\n\
")
#endif
/****************************************************************************/
// Global 變量
RrParam g_RrParam;
extern INT num;
// 內(nèi)部函數(shù)說明
INT HearSayEventProc ( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam );
INT HearSayEvent_Initialize( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam );
INT HearSayEvent_Destroy ( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam );
//INT HearSayEvent_Exit ( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam );
INT HearSayEvent_Draw ( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam );
INT HearSayDraw_ProBar ( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam );
INT HearSayEvent_TimerPolling(APGUI_STRUCT *pGui, UINT uEvent, UINT uParam);
/********************************************************************************/
INT ClearPgui_X_Y[5][2]=
{
{HEARSAY_BTN1_X, HEARSAY_BTN_Y+1},
{HEARSAY_BTN2_X, HEARSAY_BTN_Y+1},
{HEARSAY_BTN3_X, HEARSAY_BTN_Y+1},
{HEARSAY_BTN4_X, HEARSAY_BTN_Y+1},
{HEARSAY_BTN4_X+55,HEARSAY_BTN_Y+1}
};
INT Picture[5]=
{
IDB_NUM1,
IDB_NUM2,
IDB_NUM3,
IDB_NUM4,
IDB_NUM5
};
VOID ClearPgui(INT Current ,BOOL Flag ,INT CommandNum)
{
int i=1;
if(Flag)
{
GraphDrawIcon(ClearPgui_X_Y[Current-1][0],ClearPgui_X_Y[Current-1][1],0,0,(UINT8*)MAKE_ID(Picture[Current-1]));
return ;
}
while(i<=CommandNum)
{
if(i==Current)
{
i++;
continue;
}
else
{
GraphDrawIcon(ClearPgui_X_Y[i-1][0],ClearPgui_X_Y[i-1][1],0,0,(UINT8*)MAKE_ID(Picture[i-1]));
i++;
}
}
}
/****************************************************************************************/
// Ap應(yīng)用的GUI結(jié)構(gòu)
#define HS_BWR_GUI(p) (pGui+1)
const APGUI_STRUCT g_aHearSayGui[] =
{
GUI_RESERVE_MARK, // UINT uReserveMark;
0, // INT16 nX;
0, // INT16 nY;
LCD_SCREEN_WIDTH, // UINT16 uWidth;
LCD_SCREEN_HEIGHT+EXTLCD_SCREEN_HEIGHT, // UINT16 uHeight;
(FPGUIHANDLEEVENT)HearSayEventProc, // FPGUIHANDLEEVENT fpHandleFunc;
NULL, // UINT uCurrentIme;
0, // INT nCtrlParam1;
0, // INT nCtrlParam2;
0, // INT nCtrlParam3;
//-------------------------------------
GUI_RESERVE_MARK, // UINT uReserveMark;
HEARSAY_BWR_X, // INT16 nX;
HEARSAY_BWR_Y, // INT16 nY;
HEARSAY_BWR_W, // UINT16 uWidth;
HEARSAY_BWR_H, // UINT16 uHeight;
(FPGUIHANDLEEVENT)HearSayBrowserProc, // FPGUIHANDLEEVENT fpHandleFunc;
(INT)(( BROWSER_OPTION_MARK
| SYSTLIB<<16// BROWSER_OPTION_ALIGNLEFT
| BROWSER_OPTION_RELOAD)),//(BROWSER_OPTION_MARK|BROWSER_OPTION_RELOAD), // UINT uCurrentIme;
HEARSAY_BWR_LINEH, // INT nCtrlParam1; // Line space is 1
0, // INT nCtrlParam2;
0, // INT nCtrlParam3;
//-------------------------------------
// AP的內(nèi)部控件之GUI模板
//=============================================
// Play
GUI_RESERVE_MARK, // UINT uReserveMark;
HEARSAY_BTN1_X, // INT16 nX;
HEARSAY_BTN1_Y, // INT16 nY;
HEARSAY_BTN1_W, // UINT16 uWidth;
HEARSAY_BTN1_H, // UINT16 uHeight;
(FPGUIHANDLEEVENT)HearSayBar1Proc, // FPGUIHANDLEEVENT fpHandleFunc;
HEARSAY_BTN1_T,
(HEARSAY_BTN1_CMD+(HEARSAY_BTN1_KEY<<16)),
// ('Q' + ('Q' << 16)),
0, // INT nCtrlParam3;
0, // INT nCtrlParam4;
GUI_RESERVE_MARK, // UINT uReserveMark;
HEARSAY_BTN1_X, // INT16 nX;
HEARSAY_BTN1_Y, // INT16 nY;
HEARSAY_BTN1_W, // UINT16 uWidth;
HEARSAY_BTN1_H, // UINT16 uHeight;
(FPGUIHANDLEEVENT)HearSayBar1Proc, // FPGUIHANDLEEVENT fpHandleFunc;
HEARSAY_BTN1_T,
(HEARSAY_BTN1_CMD+(HEARSAY_BTN11_KEY<<16)),
// ('q' + ('q' << 16)),
0, // INT nCtrlParam3;
0, // INT nCtrlParam4;
//=============================================
// Stop
GUI_RESERVE_MARK, // UINT uReserveMark;
HEARSAY_BTN2_X, // INT16 nX;
HEARSAY_BTN2_Y, // INT16 nY;
HEARSAY_BTN2_W, // UINT16 uWidth;
HEARSAY_BTN2_H, // UINT16 uHeight;
(FPGUIHANDLEEVENT)HearSayBar12Proc, // FPGUIHANDLEEVENT fpHandleFunc;
HEARSAY_BTN2_T,
(HEARSAY_BTN7_CMD+(HEARSAY_BTN2_KEY<<16)),
// ('W' + ('W' << 16)),
0, // INT nCtrlParam3;
0, // INT nCtrlParam4;
GUI_RESERVE_MARK, // UINT uReserveMark;
HEARSAY_BTN2_X, // INT16 nX;
HEARSAY_BTN2_Y, // INT16 nY;
HEARSAY_BTN2_W, // UINT16 uWidth;
HEARSAY_BTN2_H, // UINT16 uHeight;
(FPGUIHANDLEEVENT)HearSayBar12Proc, // FPGUIHANDLEEVENT fpHandleFunc;
HEARSAY_BTN2_T,
(HEARSAY_BTN7_CMD+(HEARSAY_BTN22_KEY<<16)),
// ('w' + ('w' << 16)),
0, // INT nCtrlParam3;
0, // INT nCtrlParam4;
#if 0
//----------------------
GUI_RESERVE_MARK, // UINT uReserveMark;
HEARSAY_BTN3_X, // INT16 nX;
HEARSAY_BTN3_Y, // INT16 nY;
HEARSAY_BTN3_W, // UINT16 uWidth;
HEARSAY_BTN3_H, // UINT16 uHeight;
(FPGUIHANDLEEVENT)HearSayBar3Proc, // FPGUIHANDLEEVENT fpHandleFunc;
HEARSAY_BTN3_T,
(HEARSAY_BTN3_CMD+(HEARSAY_BTN3_KEY<<16)),
0, // INT nCtrlParam3;
0, // INT nCtrlParam4;
#else
//----------------------
GUI_RESERVE_MARK, // UINT uReserveMark;
HEARSAY_BTN3_X, // INT16 nX;
HEARSAY_BTN3_Y, // INT16 nY;
HEARSAY_BTN3_W, // UINT16 uWidth;
HEARSAY_BTN3_H, // UINT16 uHeight;
(FPGUIHANDLEEVENT)HearSayBar2Proc, // FPGUIHANDLEEVENT fpHandleFunc;
HEARSAY_BTN3_T,
(HEARSAY_BTN2_CMD+(HEARSAY_BTN3_KEY<<16)),
// ('E' + ('E' << 16)),
0, // INT nCtrlParam3;
0, // INT nCtrlParam4;
GUI_RESERVE_MARK, // UINT uReserveMark;
HEARSAY_BTN3_X, // INT16 nX;
HEARSAY_BTN3_Y, // INT16 nY;
HEARSAY_BTN3_W, // UINT16 uWidth;
HEARSAY_BTN3_H, // UINT16 uHeight;
(FPGUIHANDLEEVENT)HearSayBar2Proc, // FPGUIHANDLEEVENT fpHandleFunc;
HEARSAY_BTN3_T,
(HEARSAY_BTN2_CMD+(HEARSAY_BTN33_KEY<<16)),
// ('e' + ('e' << 16)),
0, // INT nCtrlParam3;
0, // INT nCtrlParam4;
#endif
//=============================================
GUI_RESERVE_MARK, // UINT uReserveMark;
HEARSAY_BTN4_X, // INT16 nX;
HEARSAY_BTN4_Y, // INT16 nY;
HEARSAY_BTN4_W, // UINT16 uWidth;
HEARSAY_BTN4_H, // UINT16 uHeight;
(FPGUIHANDLEEVENT)HearSayBar4Proc, // FPGUIHANDLEEVENT fpHandleFunc;
HEARSAY_BTN4_T,
(HEARSAY_BTN4_CMD+(HEARSAY_BTN4_KEY<<16)),
// ('R' + ('R' << 16)),
0, // INT nCtrlParam3;
0, // INT nCtrlParam4;
GUI_RESERVE_MARK, // UINT uReserveMark;
HEARSAY_BTN4_X, // INT16 nX;
HEARSAY_BTN4_Y, // INT16 nY;
HEARSAY_BTN4_W, // UINT16 uWidth;
HEARSAY_BTN4_H, // UINT16 uHeight;
(FPGUIHANDLEEVENT)HearSayBar4Proc, // FPGUIHANDLEEVENT fpHandleFunc;
HEARSAY_BTN4_T,
(HEARSAY_BTN4_CMD+(HEARSAY_BTN44_KEY<<16)),
// ('r' + ('r' << 16)),
0, // INT nCtrlParam3;
0, // INT nCtrlParam4;
//----------------------
NULL, // 結(jié)束符
};
/****************************************************************************/
/* FUNCTION: INT ApComHearSay(INT *pRet,const char *pTitle, UINT8 *pFile)*/
/* DESCRIPTION:運行桌面GUI界面 */
/* INPUTS: nParam */
/* Pointer to */
/* OUTPUTS: NONE */
/* RETURN: NONE */
/****************************************************************************/
/* NAME DATE REMARKS */
/* ========== ============ ==============================================*/
/* DennyHan 2006-01-26 First Issue */
/****************************************************************************/
INT ApComHearSay(INT *pRet,const char *pTitle, UINT8 *pFile)
{
INT nRet;
#if 0
ApComHSTest(&nRet,pTitle,pFile);
#endif
memset(&g_RrParam,0,sizeof(g_RrParam));
g_RrParam.pTitle=(const UINT8*)pTitle;
g_RrParam.pFile=(UINT8*)pFile;
g_RrParam.nApRet=-1;
// if 同步教材
g_RrParam.bSyncMtlEntry = FALSE;
if( (stricmp((char*)pTitle,(const char*)"同步教材"))==0)
{
g_RrParam.bSyncMtlEntry = TRUE;
}
//==================================
HearsayHook_DisableLcdClose();
HearsayHook_DisableBkgndPlay();
//=======================================
nRet=EXIT_CODE_NORMAL;
if (ApHearsayIniParam())
{
// 運行GUI
nRet = RunAp( (APGUI_STRUCT*)g_aHearSayGui);
// Release temp buffer
if (g_RrParam.pTBuf)
{
MemFree(g_RrParam.pTBuf);
}
}
//=======================================
*pRet = g_RrParam.nApRet;
HearsayHook_EnableBkgndPlay();
HearsayHook_EnableLcdClose();
return nRet;
}
// HearSay應(yīng)用各事件處理函數(shù)跳轉(zhuǎn)表
const APEV_HANDLE_TABLE g_aHearSayEvTable[] =
{
{EVENT_DRAW, (FPGUIHANDLEEVENT)HearSayEvent_Draw },
{EVENT_INITIALIZE, (FPGUIHANDLEEVENT)HearSayEvent_Initialize},
{EVENT_DESTROY, (FPGUIHANDLEEVENT)HearSayEvent_Destroy },
{EVENT_VOICE, (FPGUIHANDLEEVENT)HearSayEvent_Voice },
{EVENT_CMDEXP, (FPGUIHANDLEEVENT)HearSayEvent_BrowserEx},
{NULL, NULL}
};
const APEV_HANDLE_TABLE_EX g_aHearSayEvTableEx[] =
{
{EVENT_TIMER, APHS_TIMERID, (FPGUIHANDLEEVENT)HearSayEvent_TimerPolling},
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -