📄 o_fta_program.c
字号:
/* **************************************************************************************
* Copyright (c) 2004 ZORAN Corporation, All Rights Reserved
* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF ZORAN CORPORATION
*
* File: $Workfile: o_fta_program.c $
*
* Description:
* ============
* Project definition of the MSO_FTA_PROGRAM
*
****************************************************************************************/
#include "Config.h" // Global Configuration - do not remove!
#ifdef FTA_SUPPORT
#ifdef DEBUG_UI_TRACE
#undef IFTRACE
#define IFTRACE if (gTraceUI)
#include "Debug\DbgMain.h"
#endif //DEBUG_UI_TRACE
#include "Include\SysDefs.h"
#include "GUI\Menu_system\ms_menu.h"
#include "GUI\Object_class\Page\mso_page.h"
#include "Menu\menu_operation_def.h"
#include "GUI\Menu_system\ms_container.h"
#include "GUI\Menu_system\ms_component.h"
#include "CoreAPI\CoreAPI.h"
#include "Playcore\FTA\fta.h"
#include "Kernel\EventDef.h"
#include "GUI\Object_class\Vlist\mso_vlist.h"
#include "GUI\Menu_system\ms_display.h"
#include "GUI\Menu_system\ms_screen.h"
#include "GUI\Menu_system\ms_send_op.h"
#include "GUI\Resource\Bitmap\bitmap.h"
#include "GUI\Object_class\Button\mso_button.h"
#include "Library\String_generate.h"
#include "GUI\Object_class\Choice\mso_choice.h"
#include "GUI\Object_class\Text\mso_text_defs.h"
#include "GUI\Object_class\Text\mso_text.h"
#include "Menu_config\menu_config_common.h"
#include "Components\FTA_Channel_Tab\o_FTA_Channel_Tab.h"
#include "Components\FTA_Transport_Tab\o_FTA_Transport_Tab.h"
// Include the module header file
#include "Components\FTA_Program\o_FTA_Program.h"
// Include configuration header file: named constants, macros and typedefs.
//#include "Components\FTA_Selection\o_FTA_Selection_config.h"
// Include custom header file: customer specific definitions, over-writing common ones.
#include "Components\Custom\FTA_Program\o_FTA_Program_custom.h"
#ifndef DEBUG_UI_TRACE
#undef dbg_printf(sMsg)
#define dbg_printf(sMsg)
#undef dbgm_printf(sMsg, mode)
#define dbgm_printf(sMsg, mode)
#endif //DEBUG_UI_TRACE
/***************************************************************************************
* Constants and Macros
****************************************************************************************/
#define MAX_PID_VALUE 8192
#define MIN_PID_VALUE 0
#ifdef D_GUI_SINGLE_LINE_COMPONENT
#define AREA_FTA_PROGRAM_X 0
#define AREA_FTA_PROGRAM_Y 0
#define AREA_FTA_PROGRAM_W OSD_LAYOUT_AREA_POPUP_W
#define AREA_FTA_PROGRAM_H OSD_LAYOUT_AREA_POPUP_H
#else // D_GUI_SINGLE_LINE_COMPONENT
#define AREA_FTA_PROGRAM_X 100//140
#define AREA_FTA_PROGRAM_Y 0//100
#define AREA_FTA_PROGRAM_W 300
#define AREA_FTA_PROGRAM_H 240//192//128
#endif // D_GUI_SINGLE_LINE_COMPONENT
#define OPTION_HEIGHT 28
#define OPTION_XPADDING 20
#define AREA_FTA_PROGRAM_TITLE_W (AREA_FTA_PROGRAM_W - 4)
#define AREA_FTA_PROGRAM_TITLE_H OPTION_HEIGHT
#define AREA_FTA_PROGRAM_TITLE_X ((AREA_FTA_PROGRAM_W - AREA_FTA_PROGRAM_TITLE_W) / 2)
#define AREA_FTA_PROGRAM_TITLE_Y 2
#define AREA_FTA_PROGRAMKIT_W (AREA_FTA_PROGRAM_W - 4)
#define AREA_FTA_PROGRAMKIT_H (AREA_FTA_PROGRAM_H - AREA_FTA_PROGRAMKIT_Y)
#define AREA_FTA_PROGRAMKIT_X ((AREA_FTA_PROGRAM_W - AREA_FTA_PROGRAMKIT_W) / 2)
#ifdef D_GUI_SINGLE_LINE_COMPONENT
#define AREA_FTA_PROGRAMKIT_Y 0
#else // D_GUI_SINGLE_LINE_COMPONENT
#define AREA_FTA_PROGRAMKIT_Y (AREA_FTA_PROGRAM_TITLE_Y + AREA_FTA_PROGRAM_TITLE_H)
#endif // D_GUI_SINGLE_LINE_COMPONENT
#ifdef D_GUI_SINGLE_LINE_COMPONENT
#define MAX_VISIBLE_FTA_PROGRAM_OPTIONS 1
#else // D_GUI_SINGLE_LINE_COMPONENT
#define MAX_VISIBLE_FTA_PROGRAM_OPTIONS 6//5//4
#endif // D_GUI_SINGLE_LINE_COMPONENT
#define FTA_PROGRAMKIT_SCROLL_XPADDING 4
#define FTA_PROGRAMKIT_SCROLL_ARROW_HEIGHT 0
#define MAX_FTA_PROG_TITLE_CHARS 60
STATIC WCHAR wFtaProgTitle[MAX_FTA_PROG_TITLE_CHARS];
static BOOL bIsChannelProg = TRUE;
/***************************************************************************************
* Utility functions
****************************************************************************************/
STATIC BOOL _AddItemsToFtaProgramKit(MSO_VLIST __NEAR* pList);
STATIC void OFtaTab_GetFormUniStr_FtaChnl(FORMATED_UNICODE_STRING __NEAR *pFormattedString, UINT32 wParam);
/***************************************************************************************
* Operation functions
****************************************************************************************/
STATIC MS_OP _FtaProgramOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam);
STATIC MS_OP _FtaProgramKitOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam);
STATIC MS_OP _FtaProgramkitVlistOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam);
//STATIC MS_OP _ChnlIndexOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam);
#ifdef FTA_SATELLITE
STATIC MS_OP _LNBOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam);
STATIC MS_OP _TransFreqOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam);
STATIC MS_OP _SymbolOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam);
#endif // FTA_SATELLITE
STATIC MS_OP _VidPidOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam);
STATIC MS_OP _AudPidOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam);
STATIC MS_OP _PcrPidOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam);
STATIC MS_OP _EditOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam, UINT16 *uipEditParamPtr);
STATIC void _ChannelTypeChoiceAction(MSO_OBJECT __NEAR* pThis, enMutatorType eType, UINT16 wValue);
STATIC MS_OP _ChannelTypeChoiceOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam);
#ifdef FTA_SATELLITE
STATIC MS_OP _PolarityChoiceOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam);
STATIC void _PolarityChoiceAction(MSO_OBJECT __NEAR* pThis, enMutatorType eType, UINT16 wValue);
#endif //FTA_SATELLITE
STATIC MS_OP _ProgExitOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam);
/***************************************************************************************
* Display functions
****************************************************************************************/
STATIC BOOL _FtaProgramFillOSDSeg(MSO_OBJECT __NEAR* pThis, MS_AREA __NEAR* pAbsArea);
STATIC BOOL _FtaPidFillOSDSeg(MSO_OBJECT __NEAR* pThis, MS_AREA __NEAR* pAbsArea);
/***************************************************************************************
* Object definitions
****************************************************************************************/
CONST MS_COLOR_SET oFtaProgramComponentColorSet = {
CIDX_6,
NULL,
NULL,
NULL
};
/***************************************************************************************
* Descriptor : oFtaProgramComponentTitleDescriptor
*
* Purpose :
****************************************************************************************/
#ifndef D_GUI_SINGLE_LINE_COMPONENT
//static CONST OSD_TEXT oFtaProgramComponentTitleText = {OSDR_GetFormUniStr_OsdMessage, S_FTA};
#ifndef D_CUSTOM_oFtaProgramComponentTitleText
static CONST OSD_TEXT oFtaProgramComponentTitleText = {
OFtaTab_GetFormUniStr_FtaChnl,
NULL
};
#endif
static CONST MS_DESCRIPTOR_TEXT oFtaProgramComponentTitleDescriptor =
{ // MS_DESCRIPTOR_TEXT
{ // MS_DESCRIPTOR
sizeof(MSO_TEXT),
MS_NAV_NULL,
MS_ATTR_OSD_LAYER_0,
{
AREA_FTA_PROGRAM_TITLE_X,
AREA_FTA_PROGRAM_TITLE_Y,
AREA_FTA_PROGRAM_TITLE_W,
AREA_FTA_PROGRAM_TITLE_H
},
OTEXT_Operation,
OTEXT_FillOSDSeg,
mpParamNull
},
(MS_X_Y_ALIGN *)&oCenterAlignToContainer,
(MS_COLOR_SET *)&oFtaProgramComponentColorSet, //oDefaultTextColorSet,
NULL,
(OSD_TEXT*)&oFtaProgramComponentTitleText,
FONT_0,
NULL,
NULL
};
#endif // D_GUI_SINGLE_LINE_COMPONENT
/***************************************************************************************
* Descriptor : oFtaProgramKitVListDescriptor
*
* Purpose : Descriptor of the list (MSO_VLIST) containing the Fta program options.
****************************************************************************************/
STATIC CONST MS_PARAM_VLIST oFtaProgramKitListParam = {
0, // Total number of items in the list.
0, // Index of the first item.
MAX_VISIBLE_FTA_PROGRAM_OPTIONS, // Visible
0, // offset
0
};
STATIC CONST MS_DESCRIPTOR_VLIST oFtaProgramKitVListDescriptor =
{ // Container descriptor start
{// Descriptor start
sizeof(MSO_VLIST),
MS_NAV_CONTAINER_WRAP_UD | MS_NAV_CONTAINER_GOTO_PREV_FOCUS | MS_NAV_CONTAINER_GOTO_TOP,
MS_ATTR_CONTAINER | MS_ATTR_FOCUSABLE | MS_ATTR_OSD_LAYER_0 | MS_ATTR_VLIST_OFFSET_FIRSTITEM | MS_ATTR_VLIST_SCROLL_SINGLE_ITEM,
{
AREA_FTA_PROGRAMKIT_X,
AREA_FTA_PROGRAMKIT_Y,
AREA_FTA_PROGRAMKIT_W,
AREA_FTA_PROGRAMKIT_H
},
_FtaProgramkitVlistOperation,
mpfFillOsdSegNull,
(UINT8*)&oFtaProgramKitListParam
},// Descriptor end
maContentsNull,
mwNbrContentsNull,
};
/***************************************************************************************
* Descriptor : oFtaProgramKitDescriptor
*
* Purpose : Descriptor of the toolkit. The toolkit is a MSO_VSCROLL_LIST object,
* that contains an MSO_VLIST (descriptor oFtaProgramKitVListDescriptor) object
* within it.
****************************************************************************************/
STATIC CONST MS_DESCRIPTOR_VSCROLL_LIST oFtaProgramKitDescriptor =
{
{ // Container descriptor start
{ // Descriptor start
sizeof(MSO_VSCROLL_LIST),
MS_NAV_NULL,
MS_ATTR_CONTAINER | MS_ATTR_FOCUSABLE | MS_ATTR_OSD_LAYER_1 | MS_ATTR_VSLIST_DISPLAY_BG_BMP |
MS_ATTR_VSLIST_SCROLL_ARROW | MS_ATTR_VSLIST_SCROLL_ARROW_ON_SIDE,
{
AREA_FTA_PROGRAMKIT_X,
AREA_FTA_PROGRAMKIT_Y,
AREA_FTA_PROGRAMKIT_W,
AREA_FTA_PROGRAMKIT_H
},
_FtaProgramKitOperation,
VScrollListFillOSDSeg,
mpParamNull,
}, // Descriptor end
maContentsNull,
mwNbrContentsNull,
}, // Container descriptor end
(MS_DESCRIPTOR_VLIST*)&oFtaProgramKitVListDescriptor, // mpDescriptorVList
FTA_PROGRAMKIT_SCROLL_XPADDING,
FTA_PROGRAMKIT_SCROLL_ARROW_HEIGHT,
CIDX_8, // Text color
NULL, // Background bitmap
BMP_BG_PUSHED_1, // Scrollbar background bitmap
BMP_BG_3 // Scrollbar bitmap
};
/***************************************************************************************
* Descriptor : oChnlIndexDescriptor
*
* Purpose : The VidPid edit element.
****************************************************************************************/
static CONST MS_DESCRIPTOR_FTA_PID oChnlIndexDescriptor =
{
{// MS_DESCRIPTOR
sizeof(MSO_OBJECT),
MS_NAV_TO_ALGINED_Y,
MS_ATTR_OSD_LAYER_0,
{
20, 50, 240, OPTION_HEIGHT
},
mpfOperationNull, //_ChnlIndexOperation,
_FtaPidFillOSDSeg,
mpParamNull
},
S_CH_INDEX,
NULL,
CIDX_8
};
/***************************************************************************************
* Descriptor : oVidPidEditDescriptor
*
* Purpose : The VidPid edit element.
****************************************************************************************/
static CONST MS_DESCRIPTOR_FTA_PID oVidPidEditDescriptor =
{
{// MS_DESCRIPTOR
sizeof(MSO_OBJECT),
MS_NAV_TO_ALGINED_Y,
MS_ATTR_FOCUSABLE | MS_ATTR_OSD_LAYER_0,
{
20, 50, 240, OPTION_HEIGHT
},
_VidPidOperation,
_FtaPidFillOSDSeg,
mpParamNull
},
S_VID_PID,
NULL,
CIDX_8
};
/***************************************************************************************
* Descriptor : oAudPidEditDescriptor
*
* Purpose : The AudPid edit element.
****************************************************************************************/
static CONST MS_DESCRIPTOR_FTA_PID oAudPidEditDescriptor =
{
{// MS_DESCRIPTOR
sizeof(MSO_OBJECT),
MS_NAV_TO_ALGINED_Y,
MS_ATTR_FOCUSABLE | MS_ATTR_OSD_LAYER_0,
{
20, 50, 240, OPTION_HEIGHT
},
_AudPidOperation,
_FtaPidFillOSDSeg,
mpParamNull
},
S_AUD_PID,
NULL,
CIDX_8
};
/***************************************************************************************
* Descriptor : oPcrPidEditDescriptor
*
* Purpose : The PCR Pid edit element.
****************************************************************************************/
static CONST MS_DESCRIPTOR_FTA_PID oPcrPidEditDescriptor =
{
{// MS_DESCRIPTOR
sizeof(MSO_OBJECT),
MS_NAV_TO_ALGINED_Y,
MS_ATTR_FOCUSABLE | MS_ATTR_OSD_LAYER_0,
{
20, 50, 240, OPTION_HEIGHT
},
_PcrPidOperation,
_FtaPidFillOSDSeg,
mpParamNull
},
S_PCR_PID,
NULL,
CIDX_8
};
/***************************************************************************************
* Descriptor : oChannelTypeParamDescriptor
*
* Purpose : The channel type edit element.
****************************************************************************************/
#define MAX_CHANNELS_TYPE 2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -