示例#1
0
HANDLE add_contextmenu(MCONTACT) {
	CLISTMENUITEM mi = CallItem();
	hMenuCallItem = Menu_AddContactMenuItem(&mi);

	mi = HupItem();
	hMenuCallHangup = Menu_AddContactMenuItem(&mi);

	mi = SkypeOutCallItem();
	hMenuSkypeOutCallItem = Menu_AddContactMenuItem(&mi);

	mi = HoldCallItem();
	hMenuHoldCallItem = Menu_AddContactMenuItem(&mi);

	// We cannot use flag PF1_FILESEND for sending files, as Skype opens its own
	// sendfile-Dialog.
	mi = FileTransferItem();
	hMenuFileTransferItem = Menu_AddContactMenuItem(&mi);

	mi = ChatInitItem();
	hMenuChatInitItem = Menu_AddContactMenuItem(&mi);

	mi = BlockContactItem();
	hMenuBlockContactItem = Menu_AddContactMenuItem(&mi);

	memset(&mi, 0, sizeof(mi));
	mi.cbSize = sizeof(mi);
	mi.position = -2000005000;
	mi.flags = CMIF_TCHAR;
	mi.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_IMPORT));
	mi.pszContactOwner = SKYPE_PROTONAME;
	mi.ptszName = LPGENT("Import Skype history");
	mi.pszService = SKYPE_IMPORTHISTORY;
	return Menu_AddContactMenuItem(&mi);
}
示例#2
0
HANDLE add_contextmenu(HANDLE hContact) {
	CLISTMENUITEM mi;
	
	UNREFERENCED_PARAMETER(hContact);

	if (!HasVoiceService()) {
		mi=CallItem();
		hMenuCallItem=(HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM, 0,(LPARAM)&mi);
		mi=HupItem();
		hMenuCallHangup=(HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM)&mi);
	}
	
	mi=SkypeOutCallItem();
	hMenuSkypeOutCallItem=(HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM, 0,(LPARAM)&mi);

	if (!HasVoiceService()) {
		mi=HoldCallItem();
		hMenuHoldCallItem=(HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM, 0,(LPARAM)&mi);
	}

    // We cannot use flag PF1_FILESEND for sending files, as Skype opens its own
	// sendfile-Dialog.
	mi=FileTransferItem();
	hMenuFileTransferItem=(HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM, 0,(LPARAM)&mi);
    
   	mi=ChatInitItem();
	hMenuChatInitItem=(HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM, 0,(LPARAM)&mi);


	ZeroMemory(&mi,sizeof(mi));
	mi.cbSize=sizeof(mi);
	mi.position=-2000005000;
	mi.flags=CMIF_TCHAR;
	mi.hIcon=LoadIcon(hInst,MAKEINTRESOURCE(IDI_IMPORT));
	mi.pszContactOwner=SKYPE_PROTONAME;
	mi.ptszName=LPGENT("Import Skype history");
	mi.pszService=SKYPE_IMPORTHISTORY;
	return (HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM, 0,(LPARAM)&mi);
}
示例#3
0
int __cdecl  PrebuildContactMenu(WPARAM wParam, LPARAM lParam) {
	DBVARIANT dbv;
	CLISTMENUITEM mi;
	char *szProto;
	BOOL callAvailable = FALSE;
	BOOL hangupAvailable = FALSE;

	UNREFERENCED_PARAMETER(lParam);

	if (!(szProto = (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, wParam, 0))) return 0;

	if (!HasVoiceService()) {
		// Clear hold-Item in case it exists
		mi=HoldCallItem();
		mi.flags|=CMIM_ALL;
		CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)(HANDLE)hMenuHoldCallItem,(LPARAM)&mi);
	}

	if (!strcmp(szProto, SKYPE_PROTONAME)) {
		if (!HasVoiceService()) {
			if (!DBGetContactSetting((HANDLE)wParam, SKYPE_PROTONAME, "CallId", &dbv)) {
				if (DBGetContactSettingByte((HANDLE)wParam, SKYPE_PROTONAME, "OnHold", 0))
					mi=ResumeCallItem(); else mi=HoldCallItem();
				mi.flags=CMIM_ALL;
				CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)(HANDLE)hMenuHoldCallItem,(LPARAM)&mi);

				callAvailable = FALSE;
				hangupAvailable = TRUE;

				DBFreeVariant(&dbv);
			} else { callAvailable = TRUE; hangupAvailable = FALSE; }
        
			if (DBGetContactSettingByte((HANDLE)wParam, SKYPE_PROTONAME, "ChatRoom", 0)!=0) {
				callAvailable = FALSE;
				hangupAvailable = FALSE;
			}

			mi = CallItem();
			mi.flags |= CMIM_ALL | (!callAvailable?CMIF_HIDDEN:0);
			CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)(HANDLE)hMenuCallItem,(LPARAM)&mi);

			mi = HupItem();
			mi.flags |= CMIM_ALL | (!hangupAvailable?CMIF_HIDDEN:0);
			CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)(HANDLE)hMenuCallHangup,(LPARAM)&mi);
		}

		// Clear SkypeOut menu in case it exists
		mi=SkypeOutCallItem();
		mi.flags|=CMIM_ALL;
		CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)(HANDLE)hMenuSkypeOutCallItem,(LPARAM)&mi);

		// File sending and groupchat-creation works starting with protocol version 5
		if (protocol>=5) {
			mi=FileTransferItem();
            if (DBGetContactSettingByte((HANDLE)wParam, SKYPE_PROTONAME, "ChatRoom", 0)==0)
			    mi.flags ^= CMIF_HIDDEN;
			mi.flags |= CMIM_FLAGS;
			CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)(HANDLE)hMenuFileTransferItem,(LPARAM)&mi);           
		}

		if (protocol>=5 || bIsImoproxy) {
            mi=ChatInitItem();
			if (DBGetContactSettingByte(NULL, SKYPE_PROTONAME, "UseGroupchat", 0) &&
				DBGetContactSettingByte((HANDLE)wParam, SKYPE_PROTONAME, "ChatRoom", 0)==0)
					mi.flags ^= CMIF_HIDDEN;
			mi.flags |= CMIM_FLAGS;
			CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)(HANDLE)hMenuChatInitItem,(LPARAM)&mi);
		}

	} else if (bSkypeOut) {
		if (!DBGetContactSetting((HANDLE)wParam, SKYPE_PROTONAME, "CallId", &dbv)) {
			mi=SkypeOutHupItem();
			DBFreeVariant(&dbv);
		} else {
			mi=SkypeOutCallItem();
			if(!DBGetContactSetting((HANDLE)wParam,"UserInfo","MyPhone0",&dbv)) {
				DBFreeVariant(&dbv);
				mi.flags=0;
			}
		}
		mi.flags|=CMIM_ALL;
		CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)(HANDLE)hMenuSkypeOutCallItem,(LPARAM)&mi);
	}

	return 0;
}
示例#4
0
int __cdecl  PrebuildContactMenu(WPARAM wParam, LPARAM) {
	MCONTACT hContact = (MCONTACT) wParam;
	char *szProto = GetContactProto(hContact);
	if (!szProto)
		return 0;

	// Clear hold-Item in case it exists
	CLISTMENUITEM mi = HoldCallItem();
	mi.flags |= CMIM_ALL;
	Menu_ModifyItem(hMenuHoldCallItem, &mi);

	DBVARIANT dbv;
	BOOL callAvailable = FALSE;
	BOOL hangupAvailable = FALSE;
	if (!strcmp(szProto, SKYPE_PROTONAME)) {
		if (!db_get(hContact, SKYPE_PROTONAME, "CallId", &dbv)) {
			if (db_get_b(hContact, SKYPE_PROTONAME, "OnHold", 0))
				mi = ResumeCallItem(); else mi = HoldCallItem();
			mi.flags = CMIM_ALL;
			Menu_ModifyItem(hMenuHoldCallItem, &mi);

			callAvailable = FALSE;
			hangupAvailable = TRUE;

			db_free(&dbv);
		}
		else { callAvailable = TRUE; hangupAvailable = FALSE; }

		if (db_get_b(hContact, SKYPE_PROTONAME, "ChatRoom", 0) != 0) {
			callAvailable = FALSE;
			hangupAvailable = FALSE;
		}

		mi = CallItem();
		mi.flags |= CMIM_ALL | (!callAvailable ? CMIF_HIDDEN : 0);
		Menu_ModifyItem(hMenuCallItem, &mi);

		mi = HupItem();
		mi.flags |= CMIM_ALL | (!hangupAvailable ? CMIF_HIDDEN : 0);
		Menu_ModifyItem(hMenuCallHangup, &mi);

		// Clear SkypeOut menu in case it exists
		mi = SkypeOutCallItem();
		mi.flags |= CMIM_ALL;
		Menu_ModifyItem(hMenuSkypeOutCallItem, &mi);

		// File sending and groupchat-creation works starting with protocol version 5
		if (protocol >= 5) {
			mi = FileTransferItem();
			if (db_get_b(hContact, SKYPE_PROTONAME, "ChatRoom", 0) == 0)
				mi.flags ^= CMIF_HIDDEN;
			mi.flags |= CMIM_FLAGS;
			Menu_ModifyItem(hMenuFileTransferItem, &mi);
		}

		if (protocol >= 5 || bIsImoproxy) {
			mi = ChatInitItem();
			if (db_get_b(NULL, SKYPE_PROTONAME, "UseGroupchat", 0) &&
				db_get_b(hContact, SKYPE_PROTONAME, "ChatRoom", 0) == 0)
				mi.flags ^= CMIF_HIDDEN;
			mi.flags |= CMIM_FLAGS;
			Menu_ModifyItem(hMenuChatInitItem, &mi);
			mi = BlockContactItem();
			mi.flags ^= CMIF_HIDDEN;
			mi.flags |= CMIM_FLAGS | CMIM_NAME;
			if (db_get_b(hContact, SKYPE_PROTONAME, "IsBlocked", 0) == 1)
				mi.ptszName = LPGENT("Unblock contact");
			Menu_ModifyItem(hMenuBlockContactItem, &mi);
		}

	}
	else if (bSkypeOut) {
		if (!db_get(hContact, SKYPE_PROTONAME, "CallId", &dbv)) {
			mi = SkypeOutHupItem();
			db_free(&dbv);
		}
		else {
			mi = SkypeOutCallItem();
			if (!db_get(hContact, "UserInfo", "MyPhone0", &dbv)) {
				db_free(&dbv);
				mi.flags = 0;
			}
		}
		mi.flags |= CMIM_ALL;
		Menu_ModifyItem(hMenuSkypeOutCallItem, &mi);
	}

	return 0;
}