void QmitkNavigationDataPlayerView::CreateConnections() { connect( m_Controls->m_RdbSequential, SIGNAL(released()), this, SLOT(OnSelectPlayer()) ); connect( m_Controls->m_RdbTimeBased, SIGNAL(released()), this, SLOT(OnSelectPlayer()) ); connect( m_Controls->m_BtnOpenFile, SIGNAL(released()), this, SLOT(OnOpenFile()) ); connect( m_Controls->m_ChkDisplay, SIGNAL(released()), this, SLOT(OnSetDisplay()) ); connect( m_Controls->m_chkRepeat, SIGNAL(stateChanged(int)), this, SLOT(OnSetRepeat(int)) ); connect( m_Controls->m_ChkMicroservice, SIGNAL(released()), this, SLOT(OnSetMicroservice()) ); connect( m_Controls->m_SequentialWidget, SIGNAL(SignalUpdate()), this, SLOT(OnUpdate()) ); connect( m_Controls->m_TimedWidget, SIGNAL(SignalUpdate()), this, SLOT(OnUpdate()) ); this->SetInteractionComponentsEnabledState(false); }
// ------------------------------------------------------------------------- // 函数 : KUiSelPlayer::OnClickButton // 功能 : 响应点击按钮 // 参数 : KWndWindow* pWnd ---> 被点击的控件指针 // ------------------------------------------------------------------------- void KUiSelPlayer::OnClickButton(KWndButton* pWnd, bool bDoubleClick) { // ---> 判断点中的是那个控件 for (int i = 0; i < m_nNumPlayer; i ++) { if (pWnd == (KWndWindow*)&m_player[i]) // 点中了某个玩家信息框 { OnSelectPlayer(i, !bDoubleClick); // 如果是双击,就仿真选择用户 if (bDoubleClick) { OnEnterGame(); } return; } } if (pWnd == (KWndWindow*)&m_btnNew) OnNew(); else if (pWnd == (KWndWindow*)&m_btnCancel) OnCancel(); else if (pWnd == (KWndWindow*)&m_btnOk) OnEnterGame(); else if (pWnd == (KWndWindow*)&m_btnDel) OnDel(); }
int KUiSelPlayer::OnKeyDown(unsigned int uKey) { int nRet = 1; KWndWindow* pActive = NULL; KWndButton* pToActive = NULL; switch (uKey) { case VK_RETURN: pActive = GetActiveBtn(); if (pActive == NULL && m_btnOk.IsDisable() == FALSE) pActive = &m_btnOk; OnClickButton((KWndButton*)pActive, false); break; case VK_ESCAPE: OnCancel(); nRet = 1; break; case VK_UP: pActive = GetActiveBtn(); if (pActive == &m_btnCancel) pToActive = &m_btnDel; else if (pActive == &m_btnDel) pToActive = &m_btnNew; else if (pActive == &m_btnOk) pToActive = &m_btnCancel; else pToActive = &m_btnOk; nRet = 1; break; case VK_DOWN: pActive = GetActiveBtn(); if (pActive == &m_btnOk) pToActive = &m_btnNew; else if (pActive == &m_btnNew) pToActive = &m_btnDel; else if (pActive == &m_btnCancel) pToActive = &m_btnOk; else pToActive = &m_btnCancel; nRet = 1; break; case VK_LEFT: if (m_nSelPlayer > 0) OnSelectPlayer(m_nSelPlayer - 1); else if (m_nSelPlayer < 0 && m_nNumPlayer > 0) OnSelectPlayer(0); m_btnDel.Enable(m_nSelPlayer >= 0); nRet = 1; break; case VK_RIGHT: case VK_SPACE: if (m_nSelPlayer < m_nNumPlayer - 1) OnSelectPlayer(m_nSelPlayer + 1); else if (m_nNumPlayer < 0 && m_nNumPlayer > 0) OnSelectPlayer(0); m_btnDel.Enable(m_nSelPlayer >= 0); nRet = 1; break; default: nRet = 0; } if (pToActive) pToActive->SetCursorAbove(); return nRet; }
// ------------------------------------------------------------------------- // 功能 : 更新 // ------------------------------------------------------------------------- void KUiSelPlayer::UpdateData() { int nSel; m_nNumPlayer = g_LoginLogic.GetRoleCount(nSel); if (m_nNumPlayer > 0 && nSel < 0) m_nSelPlayer = 0; else m_nSelPlayer = nSel; int x, y; //---调整子窗口位置---- switch(m_nNumPlayer) { case 1: m_player[0].GetPosition(&x, &y); x = m_ChildPos[0]; m_player[0].SetPosition(x, y); m_Name[0].GetPosition(&x, &y); x = m_ChildPos[1]; m_Name[0].SetPosition(x, y); m_Level[0].GetPosition(&x, &y); x = m_ChildPos[2]; m_Level[0].SetPosition(x, y); m_PlayerInfoBg[0].GetPosition(&x, &y); x = m_ChildPos[3]; m_PlayerInfoBg[0].SetPosition(x, y); break; case 2: m_player[0].GetPosition(&x, &y); x = m_ChildPos[0] + m_ChildWndXOffset[0]; m_player[0].SetPosition(x, y); x = m_ChildPos[0] + m_ChildWndXOffset[1]; m_player[1].SetPosition(x, y); m_Name[0].GetPosition(&x, &y); x = m_ChildPos[1] + m_ChildWndXOffset[0]; m_Name[0].SetPosition(x, y); x = m_ChildPos[1] + m_ChildWndXOffset[1]; m_Name[1].SetPosition(x, y); m_Level[0].GetPosition(&x, &y); x = m_ChildPos[2] + m_ChildWndXOffset[0]; m_Level[0].SetPosition(x, y); x = m_ChildPos[2] + m_ChildWndXOffset[1]; m_Level[1].SetPosition(x, y); m_PlayerInfoBg[0].GetPosition(&x, &y); x = m_ChildPos[3] + m_ChildWndXOffset[0]; m_PlayerInfoBg[0].SetPosition(x, y); x = m_ChildPos[3] + m_ChildWndXOffset[1]; m_PlayerInfoBg[1].SetPosition(x, y); break; case 3: m_player[0].GetPosition(&x, &y); x = m_ChildPos[0]; m_player[1].SetPosition(x, y + m_ChildWndYOffset); x += m_ChildWndXOffset[2]; m_player[0].SetPosition(x, y); x = m_ChildPos[0] + m_ChildWndXOffset[3]; m_player[2].SetPosition(x, y); m_Name[0].GetPosition(&x, &y); x = m_ChildPos[1]; m_Name[1].SetPosition(x, y + m_ChildWndYOffset); x += m_ChildWndXOffset[2]; m_Name[0].SetPosition(x, y); x = m_ChildPos[1] + m_ChildWndXOffset[3]; m_Name[2].SetPosition(x, y); m_Level[0].GetPosition(&x, &y); x = m_ChildPos[2]; m_Level[1].SetPosition(x, y + m_ChildWndYOffset); x += m_ChildWndXOffset[2]; m_Level[0].SetPosition(x, y); x = m_ChildPos[2] + m_ChildWndXOffset[3]; m_Level[2].SetPosition(x, y); m_PlayerInfoBg[0].GetPosition(&x, &y); x = m_ChildPos[3]; m_PlayerInfoBg[1].SetPosition(x, y + m_ChildWndYOffset); x += m_ChildWndXOffset[2]; m_PlayerInfoBg[0].SetPosition(x, y); x = m_ChildPos[3] + m_ChildWndXOffset[3]; m_PlayerInfoBg[2].SetPosition(x, y); break; } int i; char szFileName[128]; if (m_nNumPlayer > 0) { KIniFile Ini; Ini.Load(SERIES_INI); for (i = 0; i < m_nNumPlayer; i++) { KRoleChiefInfo Info; g_LoginLogic.GetRoleInfo(i, &Info); m_Name[i].SetText(Info.Name); m_Level[i].SetIntText(Info.nLevel); AddChild(&m_PlayerInfoBg[i]); AddChild(&m_player[i]); AddChild(&m_Name[i]); AddChild(&m_Level[i]); m_Gender[i] = Info.Gender; m_Attribute[i] = Info.Attribute; m_szSelPlayerSound[i][0] = 0; Ini.GetString(PROP_GetTitleString((OBJ_ATTRIBYTE_TYPE)Info.Attribute), Info.Gender ? "SelSound_f" : "SelSound_m", "", m_szSelPlayerSound[i], sizeof(m_szSelPlayerSound[i])); GetRoleImageName(szFileName, m_szPlayerImgPrefix, Info.Gender, Info.Attribute, 2); m_player[i].SetImage(ISI_T_SPR, szFileName); m_player[i].SetFrame(0); } if (m_nSelPlayer < 0) m_nSelPlayer = 0; OnSelectPlayer(m_nSelPlayer); } for (i = m_nNumPlayer; i < MAX_PLAYER_PER_ACCOUNT; i++) { m_player[i].LeaveAlone(); m_Name[i].LeaveAlone(); m_Level[i].LeaveAlone(); m_PlayerInfoBg[i].LeaveAlone(); } m_btnOk.BringToTop(); m_btnCancel.BringToTop(); m_btnDel.BringToTop(); m_btnNew.BringToTop(); m_btnNew.Enable(m_nNumPlayer < MAX_PLAYER_PER_ACCOUNT); m_btnDel.Enable(m_nNumPlayer > 0 && m_nSelPlayer >= 0); m_btnOk.Enable(m_nNumPlayer > 0 && m_nSelPlayer >= 0); unsigned long uTotalTime, uTimeOfPoint; g_LoginLogic.GetAccountLifeTime(uTotalTime, uTimeOfPoint); unsigned long uTimeLine = (uTotalTime - uTimeOfPoint); char szInfo[256]; int nLen; KIniFile* pSetting = g_UiBase.GetCommConfigFile(); szInfo[0] = '\0'; nLen = 0; //----包月或包周---- if (uTimeLine) { if (pSetting) { pSetting->GetString("InfoString", LIFE_TIME_LINE_ID, "", szInfo, sizeof(szInfo)); nLen = strlen(szInfo); } time_t t; time(&t); t += uTimeLine; struct tm * lt = localtime(&t); assert(lt); //校正处理 if (lt->tm_hour > 12) { t += 43200;//半天 lt = localtime(&t); assert(lt); } nLen += sprintf(szInfo + nLen, " %d-%d-%d ", lt->tm_year + 1900, lt->tm_mon + 1, lt->tm_mday); } if (uTimeOfPoint || uTimeLine == 0) { if (uTimeLine) nLen = strlen(strcat(szInfo, " ")); int nHours, nMinutes; nHours = uTimeOfPoint / 3600; uTimeOfPoint -= nHours * 3600; nMinutes = uTimeOfPoint / 60; char szHour[16] = "hour(s)"; char szMinute[16] = "minute(s)"; if (pSetting) { pSetting->GetString("InfoString", uTimeLine ? LIFE_TIME_AND_STRING_ID : LIFE_TIME_STRING_ID, "", szInfo + nLen, sizeof(szInfo) - nLen); nLen = strlen(szInfo); pSetting->GetString("InfoString", LIFE_TIME_HOUR_ID, "hour(s)", szHour, sizeof(szHour)); pSetting->GetString("InfoString", LIFE_TIME_MINUTE_ID, "minute(s)", szMinute, sizeof(szMinute)); } if (nHours) { nLen += sprintf(szInfo + nLen, "%d%s", nHours, szHour); } if (nMinutes || nHours == 0) { nLen += sprintf(szInfo + nLen, "%d%s", nMinutes, szMinute); } szInfo[nLen] = ' '; nLen ++; szInfo[nLen] = '\0'; } m_LifeTimeText.SetText(szInfo, nLen); if (pSetting) g_UiBase.CloseCommConfigFile(); }