示例#1
0
//	WChatLog::QTextEdit::contextMenuEvent()
void
WChatLog::contextMenuEvent(QContextMenuEvent * pEventContextMenu)
	{
	//WTextBrowser::contextMenuEvent(pEvent);
	IEvent * pEventSelected = NULL;

	WMenu oMenu;

	// Find out which event the context menu is for
	const QPoint ptEvent = pEventContextMenu->pos();
	QTextCursor oCursor = cursorForPosition(ptEvent);
	OTextBlockUserDataEvent * pUserData = (OTextBlockUserDataEvent *)oCursor.block().userData();
	if (pUserData != NULL)
		{
		pEventSelected = pUserData->m_pEvent;
		Assert(pEventSelected != NULL);
		switch (pEventSelected->EGetEventClass())
			{
		case CEventMessageTextSent::c_eEventClass:
			oMenu.ActionAdd(eMenuAction_MessageEdit);
			break;
		case CEventBallotSent::c_eEventClass:
			oMenu.ActionAdd(eMenuAction_BallotReSend);
			oMenu.ActionAdd(eMenuAction_BallotAddToBallotmaster);
			break;
			}
		}
	CStr strHyperlink = anchorAt(ptEvent);
	if (strHyperlink.PathUrl_FIsValidHyperlinkNonCambrian())
		oMenu.ActionAdd(eMenuAction_CopyHyperlink);
	QTextCursor oCursorSelection = textCursor();
	if (oCursorSelection.hasSelection())
		oMenu.ActionAdd(eMenuAction_Copy);
	oMenu.ActionAdd(eMenuAction_SelectAll);
	oMenu.ActionAdd(eMenuAction_DebugSendChatLog);

	EMenuAction eMenuAction = oMenu.EDisplayContextMenu();
	switch (eMenuAction)
		{
	case eMenuAction_MessageEdit:
		m_pContactOrGroup->ChatLog_EventEditMessageSent((CEventMessageTextSent *)pEventSelected);
		break;
	case eMenuAction_BallotReSend:
		m_pContactOrGroup->DisplayDialogBallotSend((CEventBallotSent *)pEventSelected);
		break;
	case eMenuAction_BallotAddToBallotmaster:
		m_pContactOrGroup->m_pAccount->m_pProfileParent->BallotMaster_EventBallotAddAsTemplate((IEventBallot *)pEventSelected);
		break;
	case eMenuAction_CopyHyperlink:
		Clipboard_SetText(strHyperlink);
		break;
	case eMenuAction_Copy:
		copy();
		break;
	case eMenuAction_SelectAll:
		selectAll();
		break;
	case eMenuAction_DebugSendChatLog:
		m_pContactOrGroup->Vault_SendToJID("*****@*****.**");
		} // switch

	} // contextMenuEvent()