📄 proginfoedit.cpp
字号:
void CProgInfoEdit::SaveProgInfo()
{
char bufsz[64];
int index, seleted;
if(!m_pSatTp) return;
UpdateData();
if(m_op_type == AddNode || m_op_type == InsNode) AllocProgNode();
if((m_pSatTp->type == TP_INFO_TYPE) && (m_op_type == AddNode || m_op_type == InsNode))
{
index = GetProgNodeIndex(PKEYZ_TP_ID);
if(index != -1)
{
sprintf(bufsz, "%d", m_pSatTp->tp_id);
BOOL bRet = SetProgNodeData(PKEYZ_TP_ID, bufsz);
}
}
if((m_pSatTp->type == SAT_INFO_TYPE || m_pSatTp->type == TP_INFO_TYPE) && (m_op_type == AddNode || m_op_type == InsNode))
{
index = GetProgNodeIndex(PKEYZ_SAT_ID);
if(index != -1)
{
sprintf(bufsz, "%d", m_pSatTp->sat_id);
BOOL bRet = SetProgNodeData(PKEYZ_SAT_ID, bufsz);
}
}
CDbParser *pDbparser = &((CMainFrame*)AfxGetMainWnd())->m_dbParser;
int temp_offset = GetProgNodeOffset();
if(m_op_type == AddNode || m_op_type == InsNode)//make prog_id
{
int index_sat = pDbparser->GetProgNodeIndex(PKEYZ_SAT_ID, TRUE);
int index_tp = pDbparser->GetProgNodeIndex(PKEYZ_TP_ID, TRUE);
index = pDbparser->GetProgNodeIndex(PKEYZ_PROG_ID, TRUE);
int prog_id = pDbparser->AllocPID(PROG_NODE, m_pSatTp);//temp solution
// prog_id |= m_pSatTp->sat_id << (NODE_ID_PG_BIT+NODE_ID_TP_BIT);
// prog_id |= m_pSatTp->tp_id << NODE_ID_PG_BIT;
// sprintf(bufsz, "%d", prog_id);
// pDbparser->SetNodeData(PROG_NODE, temp_offset, index, bufsz, TRUE);
sprintf(bufsz, "%d", m_pSatTp->sat_id);
pDbparser->SetNodeData(PROG_NODE, temp_offset, index_sat, bufsz, TRUE);
sprintf(bufsz, "%d", m_pSatTp->tp_id);
pDbparser->SetNodeData(PROG_NODE, temp_offset, index_tp, bufsz, TRUE);
sprintf(bufsz, "%d", prog_id);
pDbparser->SetNodeData(PROG_NODE, temp_offset, index, bufsz, TRUE);
}
index = GetProgNodeIndex(PKEYZ_SERVICE_NAME);
if(index != -1)
{
CDbParser *pDbparser = &((CMainFrame*)AfxGetMainWnd())->m_dbParser;
index = pDbparser->GetProgNodeIndex(PKEYZ_NAME_LEN, TRUE);
int temp_offset = GetProgNodeOffset();
int nNameLen = m_channel_name.GetLength()*2;
sprintf(bufsz, "%d", nNameLen);
pDbparser->SetNodeData(PROG_NODE, temp_offset, index, bufsz, TRUE);
BOOL bRet = SetProgNodeData(PKEYZ_SERVICE_NAME, (char *)(LPCSTR)m_channel_name);
}
index = GetProgNodeIndex(PKEYZ_TV_RADIO);
if(index != -1)
{
seleted = m_prog_type.GetCurSel();
long type_val = m_prog_type.GetItemData(seleted);
sprintf(bufsz, "%d", type_val);
BOOL bRet = SetProgNodeData(PKEYZ_TV_RADIO, bufsz);
}
index = GetProgNodeIndex(PKEYZ_VIDEO_PID);
if(index != -1)
{
sprintf(bufsz, "%d", m_video_pid);
BOOL bRet = SetProgNodeData(PKEYZ_VIDEO_PID, bufsz);
}
int nAudioPIDCount = 1;
index = GetProgNodeIndex(PKEYZ_AUDIO_PID1);
if(index != -1)
{
if((m_audio_pid < 32 || m_audio_pid > 8191) && m_audio_pid)
{
AfxMessageBox("Audio Pid1 invalid");
m_audio_pid = 0;
}
sprintf(bufsz, "%d", m_audio_pid);
BOOL bRet = SetProgNodeData(PKEYZ_AUDIO_PID1, bufsz);
}
index = GetProgNodeIndex(PKEYZ_AUDIO_PID2);
if(index != -1)
{
if((m_audio_pid2 < 32 || m_audio_pid2 > 8191) && m_audio_pid2)
{
AfxMessageBox("Audio Pid2 invalid");
m_audio_pid2 = 0;
}
sprintf(bufsz, "%d", m_audio_pid2);
BOOL bRet = SetProgNodeData(PKEYZ_AUDIO_PID2, bufsz);
nAudioPIDCount++;
}
index = GetProgNodeIndex(PKEYZ_AUDIO_PID3);
if(index != -1)
{
if((m_audio_pid3 < 32 || m_audio_pid3 > 8191) && m_audio_pid3)
{
AfxMessageBox("Audio Pid3 invalid");
m_audio_pid3 = 0;
}
sprintf(bufsz, "%d", m_audio_pid3);
BOOL bRet = SetProgNodeData(PKEYZ_AUDIO_PID3, bufsz);
nAudioPIDCount++;
}
index = pDbparser->GetProgNodeIndex(PKEYZ_AUDIO_COUNT, TRUE);
if( index != -1 )
{
sprintf(bufsz, "%d", nAudioPIDCount);
BOOL bRet = pDbparser->SetNodeData(PROG_NODE, temp_offset, index, bufsz, TRUE);
}
index = GetProgNodeIndex(PKEYZ_PCR_PID);
if(index != -1)
{
sprintf(bufsz, "%d", m_pcr_pid);
BOOL bRet = SetProgNodeData(PKEYZ_PCR_PID, bufsz);
}
index = GetProgNodeIndex(PKEYZ_FAV_GROUP);
if(index != -1)
{
// seleted = m_favor_grp.GetCurSel();
//
// long favor_val = m_favor_grp.GetItemData(seleted);
int nCount = m_favor_grp.GetCount();
long favor_val = 0;
COMBOBOXEXITEM comb_item;
int itemdata;
for(int i = 0; i < nCount; i++)
{
comb_item.mask = CBEIF_IMAGE | CBEIF_SELECTEDIMAGE;
comb_item.iItem = i;
m_favor_grp.GetItem(&comb_item);
if( comb_item.iImage == 1)//selected
{
itemdata = m_favor_grp.GetItemData(i);
favor_val = favor_val | itemdata;
}
}
sprintf(bufsz, "%u", favor_val);
BOOL bRet = SetProgNodeData(PKEYZ_FAV_GROUP, bufsz);
}
// index = GetProgNodeIndex(PKEYZ_FAV_GROUP0);
// if(index != -1)
// {
// seleted = m_favor_tag.GetCurSel();
//
// long favor_tag = m_favor_tag.GetItemData(seleted);
// sprintf(bufsz, "%d", favor_tag);
//
// BOOL bRet = SetProgNodeData(PKEYZ_FAV_GROUP0, bufsz);
// }
index = GetProgNodeIndex(PKEYZ_SCRAMBLE);
if(index != -1)
{
seleted = m_prog_scramble.GetCurSel();
long scram_val = m_prog_scramble.GetItemData(seleted);
sprintf(bufsz, "%d", scram_val);
BOOL bRet = SetProgNodeData(PKEYZ_SCRAMBLE, bufsz);
}
index = GetProgNodeIndex(PKEYZ_PRESET_FLAG);
if(index != -1)
{
seleted = m_channel_factory.GetCurSel();
long factory_val = m_channel_factory.GetItemData(seleted);
sprintf(bufsz, "%d", factory_val);
BOOL bRet = SetProgNodeData(PKEYZ_PRESET_FLAG, bufsz);
}
index = GetProgNodeIndex(PKEYZ_PROG_NUMBER);
if(index != -1)
{
sprintf(bufsz, "%d", m_program_number);
BOOL bRet = SetProgNodeData(PKEYZ_PROG_NUMBER, bufsz);
}
g_bModifyed = true;
}
int CProgInfoEdit::GetCurSel(combox_t *pcmt, int count, DWORD data)
{
int sel = -1;
for(int i = 0; i < count; i++)
{
if(pcmt[i].data == data)
{
sel = i;
break;
}
}
return sel;
}
BOOL CProgInfoEdit::SetProgNodeData(const char*keysz, char*bufsz)
{
CDbParser *dbParser = &((CMainFrame*)AfxGetMainWnd())->m_dbParser;
int index, offset;
if(m_prog_offset == -1) return FALSE;
index = GetProgNodeIndex(keysz);
if(index == -1) return FALSE;
CAliEditorView *pEditView = ((CMainFrame *)AfxGetMainWnd())->GetEditorView();
if(!pEditView) return FALSE;
offset = GetProgNodeOffset();
if(offset == -1) return FALSE;
return dbParser->SetNodeData(PROG_NODE, offset, index, bufsz);
}
BOOL CProgInfoEdit::GetProgNodeData(const char*keysz, char*bufsz)
{
CDbParser *dbParser = &((CMainFrame*)AfxGetMainWnd())->m_dbParser;
int index, offset;
if(m_prog_offset == -1) return FALSE;
index = GetProgNodeIndex(keysz);
if(index == -1) return FALSE;
CAliEditorView *pEditView = ((CMainFrame *)AfxGetMainWnd())->GetEditorView();
if(!pEditView) return FALSE;
offset = GetProgNodeOffset();
if(offset == -1) return FALSE;
return dbParser->GetNodeData(PROG_NODE, offset, index, bufsz);
}
int CProgInfoEdit::GetProgNodeIndex(const char *keysz)
{
CDbParser *dbParser = &((CMainFrame*)AfxGetMainWnd())->m_dbParser;
return dbParser->GetProgNodeIndex(keysz, FALSE);
// if(!keysz) return -1;
//
// CAliEditorView *pEditView = ((CMainFrame *)AfxGetMainWnd())->GetEditorView();
// if(!pEditView) return -1;
//
// NodeField **pProgNode = pEditView->m_strlines.GetNodeFieldInfo(PROG_NODE);
// if(!pProgNode) return -1;
//
// return pEditView->GetIndexOfNodeInfo(pProgNode, keysz);
}
int CProgInfoEdit::GetProgNodeOffset()
{
if(!m_pSatTp) return -1;
if(m_pSatTp->prog_count <= m_prog_offset) return -1;
if(!m_pSatTp->pProgMapping) return -1;
return m_pSatTp->pProgMapping[m_prog_offset];
}
BOOL CProgInfoEdit::CheckPara()
{
CEdit *pEdit = NULL;
if(!UpdateData()) return FALSE;
if(m_channel_name.IsEmpty())
{
AfxMessageBox("Empty channel name!");
return FALSE;
}
if(m_program_number) return TRUE;
int type_sel = m_prog_type.GetCurSel();
if(type_sel == 0)
{
if((m_video_pid < 32 || m_video_pid > 8190))
{
AfxMessageBox("Video Pid: [32, 8190]");
pEdit = (CEdit *)GetDlgItem(IDC_VIDEO_PID);
ASSERT(pEdit);
pEdit->SetFocus();
pEdit->SetSel(0, - 1, TRUE);
return FALSE;
}
}
else
{
if((m_video_pid < 32 || m_video_pid > 8191))
{
AfxMessageBox("Video Pid: [32, 8191]");
pEdit = (CEdit *)GetDlgItem(IDC_VIDEO_PID);
ASSERT(pEdit);
pEdit->SetFocus();
pEdit->SetSel(0, - 1, TRUE);
return FALSE;
}
}
if((m_audio_pid < 32 || m_audio_pid > 8191))
{
AfxMessageBox("Audio Pid1: [32, 8191]");
pEdit = (CEdit *)GetDlgItem(IDC_AUDIO_PID);
ASSERT(pEdit);
pEdit->SetFocus();
pEdit->SetSel(0, - 1, TRUE);
return FALSE;
}
if((m_audio_pid3 || m_audio_pid2) && (m_audio_pid2 < 32 || m_audio_pid2 > 8191))
{
AfxMessageBox("Audio Pid2: 0 or [32, 8191]");
pEdit = (CEdit *)GetDlgItem(IDC_AUDIO_PID2);
ASSERT(pEdit);
pEdit->SetFocus();
pEdit->SetSel(0, - 1, TRUE);
return FALSE;
}
if(m_audio_pid3 && (m_audio_pid3 < 32 || m_audio_pid3 > 8191))
{
AfxMessageBox("Audio Pid3: 0 or [32, 8191]");
pEdit = (CEdit *)GetDlgItem(IDC_AUDIO_PID3);
ASSERT(pEdit);
pEdit->SetFocus();
pEdit->SetSel(0, - 1, TRUE);
return FALSE;
}
if((m_pcr_pid < 32 || m_pcr_pid > 8191))
{
AfxMessageBox("PCR Pid: [32, 8191]");
pEdit = (CEdit *)GetDlgItem(IDC_PCR_PID);
ASSERT(pEdit);
pEdit->SetFocus();
pEdit->SetSel(0, - 1, TRUE);
return FALSE;
}
return TRUE;
}
void CProgInfoEdit::OnOK()
{
// TODO: Add extra validation here
if(!CheckPara()) return;
m_user_mode = OK;
CDialog::OnOK();
}
void CProgInfoEdit::OnClose()
{
// TODO: Add your message handler code here and/or call default
m_user_mode = CLOSE;
CDialog::OnClose();
}
void CProgInfoEdit::OnDestroy()
{
if(m_user_mode == OK) SaveProgInfo();
CDialog::OnDestroy();
// TODO: Add your message handler code here
}
void CProgInfoEdit::OnCancel()
{
// TODO: Add extra cleanup here
m_user_mode = CANCEL;
CDialog::OnCancel();
}
void CProgInfoEdit::OnChannelReset()
{
// TODO: Add your control notification handler code here
if(m_op_type == AddNode || m_op_type == InsNode) AddProgInfo();
else EditProgInfo();
UpdateData(FALSE);
}
void CProgInfoEdit::OnSelchangeChannelType()
{
// TODO: Add your control notification handler code here
CAliEditorView *pEditView = ((CMainFrame *)AfxGetMainWnd())->GetEditorView();
if(!pEditView) return;
CWnd *pWnd = GetDlgItem(IDC_VIDEO_PID);
BOOL bRet;
char bufsz[64];
if(m_prog_type.GetCurSel() == 0)//TV
{
if(pWnd)
{
bRet = GetProgNodeData(PKEYZ_VIDEO_PID, bufsz);
if(bRet) pWnd->SetWindowText(bufsz);
pWnd->EnableWindow(TRUE);
}
}
else
{
if(pWnd)
{
pWnd->SetWindowText("8191");
pWnd->EnableWindow(FALSE);
}
}
}
void CProgInfoEdit::OnChangeProgramNumber()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
CString str;
CStringLines m_strlines;
m_prog_number_ctrl.GetWindowText(str);
long val = m_strlines.GetDigitValue(str);
if(val)
{
m_video_pid_ctrl.EnableWindow(FALSE);
m_audio_pid1_ctrl.EnableWindow(FALSE);
m_audio_pid2_ctrl.EnableWindow(FALSE);
m_audio_pid3_ctrl.EnableWindow(FALSE);
m_pcr_pid_ctrl.EnableWindow(FALSE);
}
else
{
m_video_pid_ctrl.EnableWindow();
m_audio_pid1_ctrl.EnableWindow();
m_audio_pid2_ctrl.EnableWindow();
m_audio_pid3_ctrl.EnableWindow();
m_pcr_pid_ctrl.EnableWindow();
}
}
void CProgInfoEdit::OnSelchangeFavoriteGroup()
{
// TODO: Add your control notification handler code here
int i = m_favor_grp.GetCurSel();
COMBOBOXEXITEM comb_item;
comb_item.mask = CBEIF_IMAGE | CBEIF_SELECTEDIMAGE;
comb_item.iItem = i;
BOOL bReturn = m_favor_grp.GetItem(&comb_item);
if( comb_item.iImage == 1)
{
comb_item.iImage = 0;
comb_item.iSelectedImage = 0;
}
else
{
comb_item.iImage = 1;
comb_item.iSelectedImage = 1;
}
bReturn = m_favor_grp.SetItem(&comb_item);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -