当前位置: 首页>>代码示例>>C++>>正文


C++ AbiCollabSessionManager::joinSessionInitiate方法代码示例

本文整理汇总了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;
    }
}
开发者ID:lokeshguddu,项目名称:AbiWord,代码行数:56,代码来源:TelepathyUnixAccountHandler.cpp

示例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;
}
开发者ID:hfiguiere,项目名称:abiword,代码行数:49,代码来源:AbiCollab_Plugin.cpp


注:本文中的AbiCollabSessionManager::joinSessionInitiate方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。