本文整理汇总了C++中AbiCollabSessionManager::joinSessionInitiate方法的典型用法代码示例。如果您正苦于以下问题:C++ AbiCollabSessionManager::joinSessionInitiate方法的具体用法?C++ AbiCollabSessionManager::joinSessionInitiate怎么用?C++ AbiCollabSessionManager::joinSessionInitiate使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AbiCollabSessionManager
的用法示例。
在下文中一共展示了AbiCollabSessionManager::joinSessionInitiate方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: handleMessage
void TelepathyAccountHandler::handleMessage(DTubeBuddyPtr pBuddy, const std::string& packet_str)
{
UT_DEBUGMSG(("TelepathyAccountHandler::handleMessage()\n"));
UT_return_if_fail(pBuddy);
AbiCollabSessionManager* pManager = AbiCollabSessionManager::getManager();
UT_return_if_fail(pManager);
TelepathyChatroomPtr pChatroom = pBuddy->getChatRoom();
UT_return_if_fail(pChatroom);
// construct the packet
Packet* pPacket = _createPacket(packet_str, pBuddy);
UT_return_if_fail(pPacket);
switch (pPacket->getClassType())
{
case PCT_GetSessionsEvent:
{
if (pChatroom->isLocallyControlled())
{
// return only the session that belongs to the chatroom that the buddy is in
GetSessionsResponseEvent gsre;
gsre.m_Sessions[pChatroom->getSessionId()] = pChatroom->getDocName();
send(&gsre, pBuddy);
}
else
UT_DEBUGMSG(("Ignoring GetSessionsEvent, we are not controlling session '%s'\n", pChatroom->getSessionId().utf8_str()));
break;
}
case PCT_GetSessionsResponseEvent:
{
// check if we received 1 (and only 1) session, and join it
// immediately if that is the case
GetSessionsResponseEvent* gsre = static_cast<GetSessionsResponseEvent*>( pPacket );
UT_return_if_fail(gsre->m_Sessions.size() == 1);
std::map<UT_UTF8String,UT_UTF8String>::iterator it=gsre->m_Sessions.begin();
DocHandle* pDocHandle = new DocHandle((*it).first, (*it).second);
// store the session id
pChatroom->setSessionId(pDocHandle->getSessionId());
// join the session
UT_DEBUGMSG(("Got a running session (%s - %s), let's join it immediately\n", pDocHandle->getSessionId().utf8_str(), pDocHandle->getName().utf8_str()));
pManager->joinSessionInitiate(pBuddy, pDocHandle);
DELETEP(pDocHandle);
break;
}
default:
// let the default handler handle it
AccountHandler::handleMessage(pPacket, pBuddy);
break;
}
}
示例2: s_abicollab_join
bool s_abicollab_join(AV_View* /*v*/, EV_EditMethodCallData* /*d*/)
{
AbiCollabSessionManager* pManager = AbiCollabSessionManager::getManager();
UT_return_val_if_fail(pManager, false);
// Get the current view that the user is in.
XAP_Frame *pFrame = XAP_App::getApp()->getLastFocussedFrame();
// Get an Accounts dialog instance
XAP_DialogFactory* pFactory = static_cast<XAP_DialogFactory *>(XAP_App::getApp()->getDialogFactory());
UT_return_val_if_fail(pFactory, false);
AP_Dialog_CollaborationJoin* pDialog = static_cast<AP_Dialog_CollaborationJoin*>(
pFactory->requestDialog(AbiCollabSessionManager::getManager()->getDialogJoinId())
);
// Run the dialog
pDialog->runModal(pFrame);
// Handle the dialog outcome
AP_Dialog_CollaborationJoin::tAnswer answer = pDialog->getAnswer();
BuddyPtr pBuddy = pDialog->getBuddy();
DocHandle* pDocHandle = pDialog->getDocHandle();
pFactory->releaseDialog(pDialog);
switch (answer)
{
case AP_Dialog_CollaborationJoin::a_OPEN:
{
UT_return_val_if_fail(pBuddy && pDocHandle, false);
// Check if we have already joined this session. If so, then just
// ignore the request. Otherwise actually join the session.
AbiCollab* pSession = pManager->getSessionFromSessionId(pDocHandle->getSessionId());
if (pSession)
{
UT_DEBUGMSG(("Already connected to session, just raising the associated frame\n"));
// Just raise a frame that contains this session, instead of
// opening the document again
XAP_Frame* pFrameForSession = pManager->findFrameForSession(pSession);
UT_return_val_if_fail(pFrameForSession, false);
pFrameForSession->raise();
}
else
pManager->joinSessionInitiate(pBuddy, pDocHandle);
}
break;
case AP_Dialog_CollaborationJoin::a_CANCEL:
break;
}
return true;
}