Пример #1
0
bool LobbyForm::DoModal(int *presult, Sfx sfxShow,  Sfx sfxHide) {
    char name[kcbPlayerName*2];
    handler_.GetPlayerName(name, sizeof(name));
    LabelControl *plbl = (LabelControl *)GetControlPtr(kidcPlayerName);
    plbl->Show(false);
    plbl = (LabelControl *)GetControlPtr(kidcPlayerNameLabel);
    const char *s = base::Format::ToString("%s / %s", name,
        server_name_.c_str());
    plbl->SetText(s);

    ListControl *plstc = (ListControl *)GetControlPtr(kidcRoomList);
    Rect rcList;
    plstc->GetRect(&rcList);
    Font *pfnt = plstc->GetFont();
    int cxPrivate = pfnt->GetTextExtent("PRIVATE");
    int cxStart = rcList.Width() / 20; // 10;
    plstc->SetTabStops(0, cxStart, rcList.Width() - cxStart - cxPrivate);
    plstc->SetTabFlags(0, kfLstTabEllipsis, 0);
    GetControlPtr(kidcJoinRoom)->Show(false);

    Show(true);
    gptra->SetCallback(this);
    dword result = gptra->JoinLobby(this);
    if (result != knLobbyJoinResultSuccess) {
        gptra->SetCallback(NULL);
        ShowJoinMessage(result);
        *presult = 0;
        return false;
    }
    bool success = ShellForm::DoModal(presult, sfxShow, sfxHide);
    gptra->LeaveLobby();
    gptra->SetCallback(NULL);

    return success;
}
Пример #2
0
void ChooseServerForm::PositionColumns() {
    ListControl *plstc = (ListControl *)GetControlPtr(kidcServerList);
    Rect rcList;
    plstc->GetRect(&rcList);
    Font *pfnt = plstc->GetFont();

    LabelControl *plblPlayers = (LabelControl *)GetControlPtr(kidcNumPlayers);
    int cxNumPlayers = pfnt->GetTextExtent(plblPlayers->GetText());
    int xNumPlayers = rcList.right - cxNumPlayers;
    LabelControl *plblStatus = (LabelControl *)GetControlPtr(kidcServerStatus);
    int cxStatus = pfnt->GetTextExtent(plblStatus->GetText());
    int xStatus = xNumPlayers - 40 - cxStatus;
    int xLocation = rcList.left + (xStatus - rcList.left) / 2;
    int xName = rcList.left;
    
    plstc->SetTabStops(xName - rcList.left, xLocation - rcList.left,
            xStatus + cxStatus / 2 - rcList.left,
            xNumPlayers + cxNumPlayers / 2 - rcList.left);
    plstc->SetTabFlags(0, 0, kfLstTabCenterOn, kfLstTabCenterOn);

    word ids[] = { kidcServerName, kidcServerLocation, kidcServerStatus,
            kidcNumPlayers };
    int ax[] = { xName, xLocation, xStatus, xNumPlayers };

    for (int i = 0; i < ARRAYSIZE(ids); i++) {
        LabelControl *plbl = (LabelControl *)GetControlPtr(ids[i]);
        Rect rcCtl;
        plbl->GetRect(&rcCtl);
        plbl->SetPosition(ax[i], rcCtl.top);
    }
}
Пример #3
0
bool DownloadMissionPackForm::ShowInfo(bool fRequest) {
    ListControl *plstc = (ListControl *)GetControlPtr(kidcMissionPackList);
    IndexEntry *entry = (IndexEntry *)plstc->GetSelectedItemData();
    if (entry == NULL) {
        GetControlPtr(kidcDiscuss)->Show(false);
        return false;
    }
    const json::JsonMap *map = gppim->GetInfoMap(&entry->packid);
    if (map == NULL) {
        if (fRequest) {
            if (entry->packid.id == PACKID_CUSTOMURL) {
               ShowStatus(CTX_INFO, "Press Download to download from a custom URL");
            } else {
                gppim->Start(&entry->packid, CTX_INFO, this);
                ShowStatus(CTX_INFO, "Loading Mission Pack info...");
            }
        }
        GetControlPtr(kidcDiscuss)->Show(false);
        return false;
    }

    const char *author = GetString(map, "a", "unknown");
    const char *desc = GetString(map, "d", "no description");
    const char *s = base::Format::ToString("By %s: %s", author, desc);
    delete map;

    LabelControl *plbl = (LabelControl *)GetControlPtr(kidcMissionPackInfo);
    plbl->SetText((char *)s);
    GetControlPtr(kidcDiscuss)->Show(true);
    return true;
}
Пример #4
0
void CreateGameForm::OnControlNotify(word idc, int nNotify) {
    if (idc == kidcCategories) {
        RadioButtonBarControl *prbbc =
        (RadioButtonBarControl *)GetControlPtr(kidcCategories);
        int iButtonSelected = prbbc->GetSelectionIndex();
        if (iButtonSelected < 0) {
            iButtonSelected = 0;
        }
        MissionType mtNew = MissionTypeFromIndex(iButtonSelected);
        if (mtNew == m_mt) {
            return;
        }
        SwitchToMissionType(mtNew);
        
        // If in Add-On category, and there is nothing there, show this
        // label, otherwise hide it
        
        bool fShowLabel = false;
        ListControl *plstc =
        m_aplstc[IndexFromMissionType(kmtMultiplayerAddOn)];
        if (m_mt == kmtMultiplayerAddOn) {
            if (plstc->GetCount() == 0) {
                fShowLabel = true;
            }
        }
        
        LabelControl *plbl =
        (LabelControl *)GetControlPtr(kidcAddOnMessage);
        if (fShowLabel) {
            plbl->Show(true);
            if (m_mt == kmtMultiplayerAddOn) {
                plstc->Show(false);
            }
        } else {
            plbl->Show(false);
            if (m_mt == kmtMultiplayerAddOn) {
                plstc->Show(true);
            }
        }
    }
    
    if (idc == kidcChallengeList || idc == kidcAddOnList) {
        UpdateLabels();
    }
    
    // Handle button hiding
    
    bool fShow = true;
    ListControl *plstc = m_aplstc[IndexFromMissionType(m_mt)];
    if (plstc->GetSelectedItemIndex() == -1) {
        fShow = false;
    }
    GetControlPtr(kidcOk)->Show(fShow);
}
Пример #5
0
void ChooseServerForm::ShowHide() {
    ListControl *plstc = (ListControl *)GetControlPtr(kidcServerList);
    ButtonControl *pbtn = (ButtonControl *)GetControlPtr(kidcOk);
    int index = plstc->GetSelectedItemIndex();
    if (index < 0 || index >= infos_.size()) {
        pbtn->Show(false);
        return;
    }
    ServerInfo& info = infos_[index];
    if (strcmp(info.status.c_str(), "ok") != 0) {
        pbtn->Show(false);
        return;
    }
    pbtn->Show(true);
}
Пример #6
0
extern "C" long FAR PASCAL _export VScrollWndProc (HWND hwnd,
  WORD message,
  WPARAM wParam,
  LPARAM lParam)
  {
  BOOL bCallDef = TRUE;
  WNDPROC DefWndProc = (WNDPROC)GetControlPtr(hwnd);

  // This should never happen, SKJ  WndProc is already stuffed in
  ADBG_ASSERT_E(DefWndProc, return 0L, "Invalid WndProc");

  switch (message)
    {
    case WM_PAINT: {
      PAINTSTRUCT ps;
      bCallDef = IsWindowVisible(hwnd);
      if (bCallDef == FALSE) // i.e. if scroll bar is not visible
        {
        BeginPaint(hwnd, &ps);
        EndPaint(hwnd, &ps);
        return 0L;
        }
      }
    default:
      break;  
    }

  return CallWindowProc ((WNDPROC)DefWndProc, hwnd, message, wParam, lParam) ;
  }
Пример #7
0
bool LobbyForm::OnFilterEvent(Event *pevt) {
    if (pevt->eType == askStringEvent) {
        if (gptra == NULL) {
            return true;
        }

        char s[512];
        HostGetAskString(s, sizeof(s));

        ListControl *plstc = (ListControl *)GetControlPtr(kidcRoomList);
        dword roomid = (dword)(pword)plstc->GetSelectedItemData();
        RoomMap::iterator it = map_.find(roomid);
        if (it != map_.end()) {
            it->second.password = s;
            InitiateJoinRoom(it->second);
        }
        return true;
    }

    if (pevt->eType == connectionCloseEvent) {
        HtMessageBox(kfMbWhiteBorder, "Comm Problem", "The server has closed your connection.");
        EndForm(kidcCancel);
        return true;
    }

    if (pevt->eType == showMessageEvent) {
        HtMessageBox(kfMbWhiteBorder, "Server Message", message_.c_str());
        message_ = "";
        return true;
    }
    return false;
}
Пример #8
0
void LobbyForm::OnLurkerCount(dword count) {
    lurkers_ = count;
    if (zipdone_) {
        LabelControl *plbl = (LabelControl *)GetControlPtr(kidcLurkerCount);
        plbl->SetText(base::Format::ToString("Lurkers: %d", count));
    }
}
Пример #9
0
void ChooseServerForm::Refresh(bool show_errors) {
    bool success = RequestInfos();

    ListControl *plstc = (ListControl *)GetControlPtr(kidcServerList);
    plstc->Clear();

    if (infos_.size() == 0) {
        if (success) {
            errorstr_ = "The multiplayer service is down for maintenance. Try again later.";
        }
        if (show_errors) {
            HtMessageBox(kfMbWhiteBorder, "Service Message",
                errorstr_.c_str());
        } else {
            errors_ = true;
        }
    } else {
        for (int i = 0; i < infos_.size(); i++) {
            const ServerInfo& info = infos_[i];
            const char *s = base::Format::ToString("%s\t%s\t%s\t%d",
                info.name.c_str(), info.location.c_str(), info.status.c_str(),
                info.player_count);
            plstc->Add(s);
        }
        plstc->Select(0, true);
    }
    ShowHide();
}
Пример #10
0
void ChooseServerForm::OnControlSelected(word idc) {
    switch (idc) {
    case kidcOk:
        {
            ListControl *plstc = (ListControl *)GetControlPtr(kidcServerList);
            int index = plstc->GetSelectedItemIndex();
            if (index >= 0 && index < infos_.size()) {
                dword result = Connect(infos_[index]);
                if (result == knTransportOpenResultSuccess) {
                    EndForm(kidcOk);
                    break;
                }
                ShowTransportError(result);
            }
        }
        break;

    case kidcRefresh:
        Refresh();
        break;

    case kidcCancel:
        EndForm(kidcCancel);
        break;
    }
}
Пример #11
0
/** 设置页面显示内容
*
* \param pszTitle 标题
* \param pURL     链接
* \param pDes     描述
* \return 无
*/
void TWebForm::SetText(const TUChar* pszTitle, const char* pURL, const char* pDes)
{
	TUChar    *pText;
#if 0
	TLabel* pTitle;

	pTitle = static_cast<TLabel*>(GetControlPtr(APP_RS_ID_formWeb_Label1047));
	if (pTitle && pszTitle)
	{
		pText = new TUChar[strlen(pszTitle)+1];
		TUString::StrUtf8ToStrUnicode(pText, (Char*)pszTitle);
		pTitle->SetCaption(pText, FALSE);

		delete [] pText;
		pText = NULL;
	}
#endif
	////测试浏览器
	//TCOM_WebBrowser_DataType_Obj*   dt = TCOM_WebBrowser_DataType_Obj::create();
	//if(dt != NULL) 
	//{
	//    //const TUChar *pszAddress = GetControlCaption(APP_ST_ID_FormSyetemStyleTest_Field1039);
	//    pText = new TUChar[strlen(pURL)+1];
	//    TUString::StrUtf8ToStrUnicode(pText, (Char*)pURL);
	//    dt->LoadUrl(pText);
	//    delete [] pText;
	//    pText = NULL;
	//    dt->Release();
	//}


	//设定网页显示的起始位置(左上角坐标)
	TRectangle WebRet(0,0,0,0);
	WebRet.SetRect(0, TITLEBAR_H, SCR_W, SCR_H - STATUSBAR_H - TITLEBAR_H);

	m_pWebPanel = TBrowser::TWebPanel::create(this, WebRet, NULL);

	m_pWebPanelTComObj = m_pWebPanel->getParentClient();
	UInt32 ulAccountID = (UInt32)(static_cast<TApp_KaiXinApp*>(GetApplication()))->GetConnectID();
	m_pWebPanelTComObj->setNetAccountID(ulAccountID);
	m_pWebPanelTComObj->setAutoConnect(FALSE);
	m_pWebPanelTComObj->AddRef();

	//加载一个URL 链接 并于上面指定的区域中显示
	pText = new TUChar[strlen(pURL)+1];
	if (pText)
	{
		m_pWebPanel->setAutoZoomSupport(TRUE);
		
		MemSet(pText, 0, (strlen(pURL)+1) * sizeof(TUChar));
		TUString::StrUtf8ToStrUnicode(pText, (Char*)pURL);
		m_pWebPanel->loadUrl(pText);

		delete [] pText;
		pText = NULL;
	}

}
Пример #12
0
void CreateGameForm::UpdateLabels() {
    // Update Game Speed label
    
    char szT[80];
    GetSpeedMultiplierString(szT, m_tGameSpeed);
    LabelControl *plbl = (LabelControl *)GetControlPtr(kidcGameSpeedLabel);
    plbl->SetText(szT);
    
    // Update Mission Pack Info label
    
    plbl = (LabelControl *)GetControlPtr(kidcMissionPackInfo);
    ListControl *plstc = m_aplstc[IndexFromMissionType(m_mt)];
    if (plstc->GetSelectedItemIndex() == -1) {
        plbl->SetText("");
        return;
    }
    int i = (int)plstc->GetSelectedItemData();
    MissionIdentifier miid;
    if (!m_pml->GetMissionIdentifier(i, &miid)) {
        plbl->SetText("");
        return;
    }
    json::JsonMap *map = gppim->GetInfoMap(&miid.packid);
    if (map == NULL) {
        MissionDescription md;
        if (!m_pml->GetMissionDescription(i, &md)) {
            plbl->SetText("");
            return;
        }
        const char *s;
        if (miid.packid.id == PACKID_MAIN) {
            s = base::Format::ToString("%s by Spiffcode, Inc.",
                                       md.szPackName);
        } else {
            s = md.szPackName;
        }
        plbl->SetText((char *)s);
        return;
    }
    const char *szAuthor = GetString(map, "a");
    const char *szTitle = GetString(map, "t");
    const char *s = base::Format::ToString("%s by %s", szTitle, szAuthor);
    plbl->SetText((char *)s);
    delete map;
}
Пример #13
0
void DownloadMissionPackForm::ShowStatus(void *ctx, const char *psz) {
    if (ctx == CTX_INDEX) {
        ListControl *plstc = (ListControl *)GetControlPtr(kidcMissionPackList);
        plstc->Clear();
        plstc->SetTabStops(0);
        plstc->SetTabFlags(0);
        plstc->Add(psz, NULL);
    }

    if (ctx == CTX_INFO) {
        LabelControl *plbl =
                (LabelControl *)GetControlPtr(kidcMissionPackInfo);
        plbl->SetText((char *)psz);
    }

    // Force the frame draw, since this gets called while the main loop
    // is "asleep".
    gpmfrmm->DrawFrame(false);
}
Пример #14
0
void DownloadMissionPackForm::HideShow() {
    ListControl *plstc = (ListControl *)GetControlPtr(kidcMissionPackList);
    LabelControl *plbl = (LabelControl *)GetControlPtr(kidcMissionPackInfo);
    ButtonControl *pbtn = (ButtonControl *)GetControlPtr(kidcOk);
    int selected = plstc->GetSelectedItemIndex();
    if (selected < 0) {
        gppim->Reset();
        plbl->SetText("");
        pbtn->Show(false);
        GetControlPtr(kidcDiscuss)->Show(false);
        return;
    }

    // Get the pack info for this pack
       
    IndexEntry *entry = (IndexEntry *)plstc->GetSelectedItemData();
    if (entry == NULL) {
        return;
    }
        
    char *psz = NULL;
    switch (gppackm->IsInstalled(&entry->packid)) {
    case 0:
        psz = "DOWNLOAD";
        break;

    case 1:
        psz = "REMOVE";
        break;

    case 2:
        psz = "UPGRADE";
        break;
    }
    if (psz != NULL) {
        pbtn->SetText(psz);
    }

    pbtn->Show(true);
    ShowInfo(true);
}
Пример #15
0
void LobbyForm::OnCreateRoom() {
    char roomname[kcbRoomname];
    char password[kcbPassword];
    if (!CreateRoomForm::DoForm(roomname, sizeof(roomname), password,
            sizeof(password))) {
        return;
    }

    if (gptra == NULL) {
        return;
    }

    dword roomid;
    dword result = gptra->CreateRoom(roomname, password, &roomid);
    switch (result) {
    case knLobbyCreateRoomResultSuccess:
        {
            // Update the list and select the created room, in case
            // the join fails.
            Refresh(-1);
            ListControl *plstc = (ListControl *)GetControlPtr(kidcRoomList);
            refresh_ = false;
            plstc->Select(FindIndex(roomid), true, true);
            refresh_ = true;

            // OnAddRoom has been called already. Shove the password
            // into the info and join the room.
            RoomMap::iterator it = map_.find(roomid);
            if (it != map_.end()) {
                it->second.password = password;
                InitiateJoinRoom(it->second);
            }
        }
        break;

    case knLobbyCreateRoomResultFail:
        HtMessageBox(kfMbWhiteBorder, "Create Room",
                "Error creating this room.");
        break;

    case knLobbyCreateRoomResultFull:
        HtMessageBox(kfMbWhiteBorder, "Create Room", "Too many rooms. Join an existing room");
        break;

    case knLobbyCreateRoomResultExists:
        HtMessageBox(kfMbWhiteBorder, "Create Room",
                "A room with this name already exists.");
        break;

    }
}
Пример #16
0
void LobbyForm::OnTimeout(int id) {
    refresh_ = false;
    ListControl *plstc = (ListControl *)GetControlPtr(kidcRoomList);
    dword roomid = (dword)(pword)plstc->GetSelectedItemData();
    if (!selected_main_) {
        roomid = kroomidMain;
    }
    plstc->Clear();
    RoomMap::iterator it = map_.begin();
    for (; it != map_.end(); it++) {
        RoomInfo& info = it->second;
        const char *s;
        if (info.priv) {
            s = base::Format::ToString("\t%s (%d %s, %d %s)\tPRIVATE",
                    info.name.c_str(), info.cPlayers,
                    info.cPlayers == 1 ? "player" : "players",
                    info.cGames,
                    info.cGames == 1 ? "game" : "games");
        } else {
            s = base::Format::ToString("\t%s (%d %s, %d %s)",
                    info.name.c_str(), info.cPlayers,
                    info.cPlayers == 1 ? "player" : "players",
                    info.cGames,
                    info.cGames == 1 ? "game" : "games");
        }
        plstc->Add(s, (void *)(uintptr_t)info.roomid);
    }
    int selected = FindIndex(roomid);
    if (selected < 0 && map_.size() != 0) {
        plstc->Select(0, true, true);
    } else {
        plstc->Select(selected, true);
        selected_main_ = true;
    }
    Control *pctl = GetControlPtr(kidcJoinRoom);
    refresh_ = true;
    pctl->Show(plstc->GetSelectedItemIndex() >= 0);
}
Пример #17
0
void CreateGameForm::SwitchToMissionType(MissionType mt) {
    m_mt = mt;
    RadioButtonBarControl *prbbc =
    (RadioButtonBarControl *)GetControlPtr(kidcCategories);
    prbbc->SetSelectionIndex(IndexFromMissionType(mt));
    for (int i = 0; i < ARRAYSIZE(m_aplstc); i++) {
        bool fShow = false;
        if (i == IndexFromMissionType(mt)) {
            fShow = true;
        }
        m_aplstc[i]->Show(fShow);
    }
    UpdateLabels();
}
Пример #18
0
/**
 * 从profile中读取大头像, 如果本地没有则进行下载
 *
 * \param pApp
 * \param ResponseInfoPhoto
 *
 * \return 
 */
Boolean TPhotosGetAlbumsForm::_UpdateProfilePhoto(TApplication* pApp, tResponseUsersGetInfo* ResponseInfoPhoto)
{

	if(ResponseInfoPhoto == NULL)
		return FALSE;
	
	if(ResponseInfoPhoto->nArraySize > 0)
	{
		TBitmap* pDownLoadBitmap = NULL;
		pDownLoadBitmap = LoadImgByUrl(ResponseInfoPhoto->Array[0].headurl);						
		if(pDownLoadBitmap == NULL)
		{
			RenRenAPICommon_DownloadPhoto(ResponseInfoPhoto->Array[0].headurl, this->GetWindowHwndId(), FEED_PROFILE_IMAGE_INDEX);	
		}
		else
		{
			TMaskButton* pLogo = NULL;
			pLogo = static_cast<TMaskButton*>(GetControlPtr(m_ProfileImageID));
			if(pLogo)
			{
				TRectangle rc;
				TBitmap * pProfileImageTmp = NULL;	//Profile的头像

				pLogo->GetBounds(&rc);
				
				pProfileImageTmp = TBitmap::Create(RR_HEAD_W, RR_HEAD_W, pDownLoadBitmap->GetDepth());
				pProfileImageTmp->QuickZoom(pDownLoadBitmap, TRUE, TRUE,RGBA(0,0,0,255));
				pLogo->SetCaption(TUSTR_Re_NULL,0,0);
				pLogo->SetImage(pProfileImageTmp, (rc.Width()-pProfileImageTmp->GetWidth())/2, (rc.Height()-pProfileImageTmp->GetHeight())/2);
				pLogo->Draw();

				//如果先Desroy,则会崩溃,很奇怪,原因不明,暂时这么处理
				if( pProfileImage != NULL)
				{
					pProfileImage->Destroy();
					pProfileImage = NULL; 							
				}
				pProfileImage = pProfileImageTmp;
				
			}

			//释放图片
			pDownLoadBitmap->Destroy();
			pDownLoadBitmap = NULL; 	
		}
	}

	return TRUE;
}
Пример #19
0
void LobbyForm::OnJoinRoom() {
    ListControl *plstc = (ListControl *)GetControlPtr(kidcRoomList);
    dword roomid = (dword)(pword)plstc->GetSelectedItemData();
    RoomMap::iterator it = map_.find(roomid);
    if (it == map_.end()) {
        return;
    }
    if (it->second.priv) {
        HostInitiateAsk("Enter Password:", kcbPassword - 1,
                it->second.password.c_str(), knKeyboardAskDefault,
                true);
        return;
    }
    InitiateJoinRoom(it->second);
}
Пример #20
0
bool DownloadMissionPackForm::Init(FormMgr *pfrmm, IniReader *pini, word idf) {
	if (!ShellForm::Init(pfrmm, pini, idf)) {
		return false;
    }

    // Start downloading the mission pack index

    if (!idxl_.Start(CTX_INDEX, this)) {
        return false;
    }

    // No operation is available until a mission is selected

    GetControlPtr(kidcOk)->Show(false);
    GetControlPtr(kidcDiscuss)->Show(false);

    // Show status

    ShowStatus(CTX_INDEX, "Contacting Server...");

    // Position Column labels
    
    PositionColumns();

    // Set info label to use ellipsis

    LabelControl *plbl = (LabelControl *)GetControlPtr(kidcMissionPackInfo);
    plbl->SetFlags(plbl->GetFlags() | kfLblEllipsis);

    // No sorting yet

    idSortIndicator_ = 0;
    sort_ = HttpIndexLoader::SORT_UNSORTED;

    return true;
}
Пример #21
0
void LoadGameForm::SelectLast(bool fLast)
{
	ListControl *plstc = (ListControl *)GetControlPtr(kidcGameList);
	int nGameSelect;
	if (fLast) {
		nGameSelect = m_nGameLast;
		if (nGameSelect == -1)
			nGameSelect = 0;
	} else {
		nGameSelect = m_nGameLast + 1;
		if (nGameSelect == plstc->GetCount())
			nGameSelect = 0;
	}
	plstc->Select(nGameSelect);
}
Пример #22
0
bool ChooseServerForm::DoModal(int *pnResult) {
    // Hide Connect button until there is something to connect to
    LabelControl *plbl = (LabelControl *)GetControlPtr(kidcOk);
    plbl->Show(false);

    // Position the columns
    PositionColumns();
    Refresh(false);

    // If there is a single entry this client can connect to, use it without
    // presenting UI
    if (infos_.size() == 1) {
        Control *pctl = GetControlPtr(kidcOk);
        if (pctl->GetFlags() & kfCtlVisible) {
            const ServerInfo& info = infos_[0];
            if (Connect(info) == knTransportOpenResultSuccess) {
                *pnResult = kidcOk;
                return true;
            }
        }
    }

    return ShellForm::DoModal(pnResult); 
}
Пример #23
0
void LoadGameForm::OnControlSelected(word idc)
{
	switch (idc) {
	case kidcOk:
		{
			ListControl *plstc = (ListControl *)GetControlPtr(kidcGameList);
			int nGame = ((int)plstc->GetSelectedItemData()) - 1;
			EndForm(nGame);
		}
		return;

	case kidcCancel:
		ShellForm::OnControlSelected(idc);
		break;
	}
}
Пример #24
0
/*响应窗口创建事件*/
void  TAboutForm::OnWinCreate(void)
{
	m_BackBtn = SetAppBackButton(this);	
	SetAppTilte(this, APP_KA_ID_STRING_About);	

	TCtrl*pAboutVersion = static_cast<TCtrl*>(GetControlPtr(APP_KA_ID_AboutForm_About2));
	
	TUChar  pszString[128] = {0};
	TUChar  pszVersion[128] = {0};
	
	TUString::StrCopy(pszString, TResource::LoadConstString(APP_KA_ID_STRING_VersionFormat));
	TUString::StrUtf8ToStrUnicode(pszVersion, (const Char *)KAIXIN_VERSION_STR);
	TUString::StrCat(pszString, pszVersion);
	pAboutVersion->SetCaption(pszString, FALSE);
		
}
Пример #25
0
void DownloadMissionPackForm::ShowIndex(const PackId *ppackidSelect) {
    // Add entries to the list

    ListControl *plstc = (ListControl *)GetControlPtr(kidcMissionPackList);
    plstc->SetTabStops(x0_, x1_, x2_, x3_);
    plstc->SetTabFlags(kfLstTabCenter, kfLstTabEllipsis, kfLstTabCenterOn,
            kfLstTabCenterOn);
    plstc->Clear();
    int iSelect = 0;
    int cAdded = 0;
    int c = idxl_.GetCount();
    for (int i = 0; i < c; i++) {
        const IndexEntry *pentry = idxl_.GetEntry(i);

        // Show either single player packs, or multiplayer packs.
        // If a pack has both single and multiplayer missions, show
        // these in both cases.

        if (pentry->packid.id != PACKID_CUSTOMURL) {
            if (fMultiplayer_) {
                if (pentry->cPlayersMax == 1) {
                    continue;
                }
            } else {
                if (pentry->cPlayersMin != 1) {
                    continue;
                }
            }
        }

        // Remember which entry to select

        if (iSelect == 0 && ppackidSelect != NULL) {
            if (memcmp(ppackidSelect, &pentry->packid,
                    sizeof(*ppackidSelect)) == 0) {
                iSelect = cAdded;
            }
        }

        plstc->Add(GetItemString(pentry), (void *)pentry);
        cAdded++;
    }

    if (cAdded > 0) {
        plstc->Select(iSelect, true, true);
    }
}
Пример #26
0
// 窗口初始化
Boolean TMessageCenterForm::_OnWinInitEvent(TApplication * pApp, EventType * pEvent)
{
	int iRet =0, nIndex = 0;
	int nMsg[KX_MESSAGE_END] = {0};
	tResponseMessageCenter* Response = NULL;
	iRet = KaiXinAPI_JsonParse(KX_MessageCenter, (void **)&Response);

	m_BackBtn = SetAppBackButton(this);
	SetAppTilte(this,APP_KA_ID_STRING_MsgCenter);//消息中心
	if(iRet == 1)
	{
		TCoolBarList* pCoolBarList = static_cast<TCoolBarList*>(GetControlPtr(APP_KA_ID_MessageCenter_Form_MsgList));

		for(int i = 0; i < Response->nCount; i++ )
		{
			nMsg[ Response->pNotices[i].Type - 1 ] = Response->pNotices[i].Num;
		}

		KaiXinUserInfo.NoticeCount[0] = 0;
		for(int i = 0; i < KX_MESSAGE_END; i++ )
		{
			TUChar MsgInfo[32];
			TBarListItem* pListItem = NULL;

			pListItem = pCoolBarList->Rows()->FirstRow()->GetItem(i);
			KaiXinUserInfo.NoticeCount[i+1] = nMsg[i];
			KaiXinUserInfo.NoticeCount[0] += nMsg[i];
			//set the font color
			if( nMsg[i] > 0 )
			{
				pListItem->SetCaptionFontColor(COLOR_RED);
			}
			else
			{
				pListItem->SetCaptionFontColor(GRAY);
			}
			TUString::StrPrintF(MsgInfo, TResource::LoadConstString(APP_KA_ID_STRING_MessageCenter_Info),nMsg[i]);
			pListItem->SetCaption(MsgInfo);
		}		
	}
	if( Response )
	{
		delete Response;	
	}
	return TRUE;
}
Пример #27
0
extern "C" long FAR PASCAL _export hScrollWndProc (HWND hwnd, WORD message, WPARAM wParam, LPARAM lParam)
  {
  WNDPROC DefWndProc = (WNDPROC)GetControlPtr(hwnd);
  ADBG_ASSERT_E(DefWndProc, return 0L, "Invalid WndProc");

  switch (message)
    {
    case WM_PAINT: {
      PAINTSTRUCT ps;
      BeginPaint(hwnd, &ps);
      EndPaint(hwnd, &ps);
      return 0L;
      }
    default:
      break;  
    }
  return CallWindowProc ((WNDPROC)DefWndProc, hwnd, message, wParam, lParam) ;
  }
Пример #28
0
void TCommentDetailForm::SetTitleString(AppCommentDetailType appCommentDetailType)
{
	TLabel* tLabel = static_cast< TLabel* >(GetControlPtr(this->m_nTitleLblID));
	if(tLabel)
	{
		switch(appCommentDetailType)
		{
		case ReceivedUserCommentList:
			{
				tLabel->SetCaption(TResource::LoadConstString(APP_KA_ID_STRING_ReceivedUserCommentList),FALSE);
				break;
			}
		case SentUserCommentList:
			{
				tLabel->SetCaption(TResource::LoadConstString(APP_KA_ID_STRING_SentUserCommentList),FALSE);
				break;
			}
		case ReceivedCommentList:
			{
				tLabel->SetCaption(TResource::LoadConstString(APP_KA_ID_STRING_ReceivedCommentList),FALSE);
				break;
			}
		case SentCommentList:
			{
				tLabel->SetCaption(TResource::LoadConstString(APP_KA_ID_STRING_SentCommentList),FALSE);
				break;
			}
		case FriendCommentList:
			{
				tLabel->SetCaption(TResource::LoadConstString(APP_KA_ID_STRING_FriendsCommentList),FALSE);
				break;
			}
		case ReceivedAnObjectCommentList:
			{
				tLabel->SetCaption(TResource::LoadConstString(APP_KA_ID_STRING_ReceivedAnObjectCommentList),FALSE);
				break;
			}	
		default:
			break;
		}

	}	
}
Пример #29
0
Boolean  TAboutForm::EventHandler(TApplication  *  appP, EventType  *  eventP)
{
	Boolean     handled = FALSE;

	switch(eventP->eType)
	{
	case EVENT_WinPaint:
		{
			DrawWindow();
			handled = TRUE;
			break;
		}
	case EVENT_CtrlSelect:
		{
			if(m_BackBtn == eventP->sParam1)
			{
				handled = TRUE; 
				this->CloseWindow();

				return handled;
			}

			switch(eventP->sParam1)
			{
			case RES_SYSTEM_WINDOW_TITLE_BUTTON_ID:
				{
					handled = TRUE; 
					if(handled == TRUE)
					{
						handled = FALSE;
					}
					else
						handled = TRUE;
				}
				break;
			default:
				{	
					return OnCtlSelect(GetControlPtr(eventP->sParam1),eventP);
				}
				break;
			}
		}
		break;
	case EVENT_WinEraseClient:
		{
			TDC 	   dc(this);
			WinEraseClientEventType *pEraseEvent = reinterpret_cast< WinEraseClientEventType* >( eventP );
			TRectangle rc(pEraseEvent->rc);
			TRectangle rcBack(5, 142, 310, 314);
			this->GetBounds(&rcBack);

			// 刷主窗口背景色
			dc.SetBackColor(RGB_COLOR_WHITE);

			// 擦除
			dc.EraseRectangle(&rc, 0);

			dc.DrawBitmapsH(TResource::LoadConstBitmap(APP_KA_ID_BITMAP_title_bg), 0, 0, SCR_W, GUI_API_STYLE_ALIGNMENT_LEFT);

			//dc.DrawBitmapsH(TResource::LoadConstBitmap(APP_KA_ID_BITMAP_bottom_bg), 0, rcBack.Bottom()-68, 
			//320, GUI_API_STYLE_ALIGNMENT_LEFT|GUI_API_STYLE_ALIGNMENT_TOP); 


			pEraseEvent->result = 1;				
			handled = TRUE;
		}
		break;

	case EVENT_MenuSelect:
		{
			handled = OnMenuSelect(eventP->sParam1);			
		}
		break;
	case EVENT_CtrlContextMenu:
		{
			handled = OnCtlContextMenu(eventP);			
			break;
		}
	case EVENT_MenuOpen:
		{
			OnBeforeMenuOpen();
		}
		break;
	case EVENT_WinInit:
		{
			OnWinCreate();
		}
		break;
	case EVENT_WinClose:
		{
			handled = TRUE; 
			OnClosed();
			if(handled)
				handled = FALSE;
			else 
				handled = TRUE;
		}
		break;	
	case EVENT_KeyCommand: 
		{ 
			// 抓取右软键事件 
			if (eventP->sParam1 == SYS_KEY_SOFTKEY_RIGHT_UP  
				|| eventP->sParam1 == SYS_KEY_SOFTKEY_RIGHT_LONG) 
			{ 
				// 模拟退出按钮选中消息 
				HitControl(m_BackBtn); 
				handled = TRUE; 
			} 
		} 
		break;	

	}
	if (handled == FALSE)
		return TWindow::EventHandler(appP,eventP);

	return handled;
}
Пример #30
0
void DownloadMissionPackForm::OnControlSelected(word idc) {
    if (idc == kidcCancel) {
        EndForm(idc);
        return;
    }

    ListControl *plstc = (ListControl *)GetControlPtr(kidcMissionPackList);
    IndexEntry *entry = (IndexEntry *)plstc->GetSelectedItemData();
    if (entry == NULL) {
        return;
    }

    switch (idc) {
    case kidcOk:
        switch (gppackm->IsInstalled(&entry->packid)) {
        case 0:
            // If this is a custom URL entry handle specially
            if (entry->packid.id == PACKID_CUSTOMURL) {
                HandleCustomURL();
                break;
            }
            // fall through

        case 2:
            // Pack not install or needs upgrade. In either case, download
            if (DownloadMissionPack(&entry->packid, NULL, true)) {
                fWantsPlay_ = true;
                packidPlay_ = entry->packid;
                EndForm(kidcOk);
            }
            plstc->SetSelectedItemText(GetItemString(entry));
            HideShow();
            break;

        case 1:
            // Pack is installed, so this action means remove
            if (HtMessageBox(kidfMessageBoxQuery,
                    kfMbWhiteBorder | kfMbKeepTimersEnabled,
                    "Remove Mission Pack", "Are you sure?")) {
                gppackm->Remove(&entry->packid);
                if (idxl_.OnRemoved(&entry->packid)) {
                    ShowIndex();
                } else {
                    plstc->SetSelectedItemText(GetItemString(entry));
                }
                HideShow();
            }
            break;
        }
        break;

    case kidcDiscuss:
        {
            json::JsonMap *map = gppim->GetInfoMap(&entry->packid);
            if (map != NULL) {
                const json::JsonObject *obj = map->GetObject("di");
                if (obj != NULL && obj->type() == json::JSONTYPE_STRING) {
                    HostOpenUrl(((const json::JsonString *)obj)->GetString());
                }
                delete map;
            }
        }
        break;
    }
}