// Process commands from children for combo.
void CATComboBox::OnCommand( CATCommand& command,
                            CATControl* ctrl)
{  
    CATString param = command.GetStringParam();

    if (ctrl == fComboMenu)
    {
        if (fComboEdit)
        {
            fComboEdit->SetString( param );
        }

        AddComboString(param);
        ctrl = fComboEdit;
    }
    else if (ctrl == fComboEdit)
    {
        AddComboString(param);      
    }
    else 
    {
        // Not either of our normal controls - just pass it through.
        CATLayer::OnCommand(command, ctrl);
        return;
    }

    if ((fParent) && (fComboEdit))
    {
        ((CATGuiObj*)fParent)->OnCommand( fComboEdit->GetCommand(), fComboEdit);
    }
}
Exemple #2
0
static void SetHDWEDBFields(HWND hwnd, int startField, int index)
{
    AddComboString(hwnd, startField + 1, "Write");
//    AddComboString(hwnd, startField + 1, "Read");
    AddComboString(hwnd, startField + 1, "Access");
    SetComboSel(hwnd, startField + 1, hdwebp[index].mode == 3 ? 1 : 0);
    AddComboString(hwnd, startField + 2, "Byte");
    AddComboString(hwnd, startField + 2, "Word");
    AddComboString(hwnd, startField + 2, "Dword");
    SetComboSel(hwnd, startField + 2, hdwebp[index].size == 3 ? 2 :
        hdwebp[index].size);
    SetCBField(hwnd, startField + 3, hdwebp[index].active);
    SetEditField(hwnd, startField, hdwebp[index].name);
    SendDlgItemMessage(hwnd, startField, EM_LIMITTEXT, 250, 0);
}
INT_PTR CALLBACK DlgAddEditContact::dialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) {
    DlgAddEditContact *p=(DlgAddEditContact *) GetWindowLong(hDlg, GWL_USERDATA);

	switch (message) {

	case WM_INITDIALOG:
		{
            p=(DlgAddEditContact *) lParam;
            SetWindowLong(hDlg, GWL_USERDATA, (LONG) p );
			// Create a Done button and size it.  
			SHINITDLGINFO shidi;
			shidi.dwMask = SHIDIM_FLAGS;
			shidi.dwFlags = SHIDIF_SIPDOWN | SHIDIF_SIZEDLGFULLSCREEN | SHIDIF_EMPTYMENU;
			shidi.hDlg = hDlg;
			SHInitDialog(&shidi);

			// MenuBar
			SHMENUBARINFO mbi;
			memset ( &mbi, 0, sizeof ( mbi ) );
			mbi.cbSize = sizeof ( mbi );
			mbi.hwndParent = hDlg;
			mbi.nToolBarId = IDR_MENU_OK_CANCEL;
			mbi.hInstRes = g_hInst;
			mbi.dwFlags |= SHCMBF_HMENU;
			SHCreateMenuBar ( &mbi );


            if (p->contact) { 
                SetDlgItemText(hDlg, IDC_E_JID, p->contact->rosterJid);
                SetDlgItemText(hDlg, IDC_E_NICK, p->contact->nickname);
                SetDlgItemText(hDlg, IDC_C_GROUP, p->contact->group);
            }

            StringVectorRef groups=p->rc->roster->getRosterGroups();

            for (size_t i=0; i<groups->size(); i++)
                AddComboString(hDlg, IDC_C_GROUP, (*groups)[i]);


            CheckDlgButton(hDlg, IDC_X_SUBSCR, BST_CHECKED);
		}
		return (INT_PTR)TRUE;

	case WM_COMMAND:
        if (LOWORD(wParam==ID_VCARD_NICK)) {
            std::string jid; GetDlgItemText(hDlg, IDC_E_JID, jid);
            if (!verifyJid(hDlg, jid)) return TRUE;

            GetVcardNick *getNick=new GetVcardNick(jid, hDlg, IDC_E_NICK);
            p->rc->jabberStanzaDispatcherRT->addListener(JabberDataBlockListenerRef(getNick));
            getNick->doRequest(p->rc);
            return TRUE;
        }

		if (LOWORD(wParam) == IDOK)
		{
            std::string jid; GetDlgItemText(hDlg, IDC_E_JID, jid);
            std::trim(jid);
            if (!verifyJid(hDlg, jid)) return TRUE;
            std::string group; GetDlgItemText(hDlg, IDC_C_GROUP, group);
            std::string nick; GetDlgItemText(hDlg, IDC_E_NICK, nick);

            p->rc->roster->rosterSet(
                (nick.length()==0)? NULL : nick.c_str(), 
                jid.c_str(), 
                (group.length()==0)? NULL: group.c_str(), 
                NULL);

            if (p->edit) 
                if (IsDlgButtonChecked(hDlg, IDC_X_SUBSCR)==BST_CHECKED)
                    p->rc->sendPresence(jid.c_str(), presence::PRESENCE_AUTH_ASK, std::string(), 0);

			EndDialog(hDlg, LOWORD(wParam));
            delete p;
			return TRUE;
		}
		if (LOWORD(wParam) == IDCANCEL)
		{
			EndDialog(hDlg, LOWORD(wParam));
            delete p;
			return TRUE;
		}
		break;

	case WM_CLOSE:
		EndDialog(hDlg, message);
        delete p;
		return TRUE;
	}
	return (INT_PTR)FALSE;
}