示例#1
0
LRESULT CAppWindow::OnClose()
{
	m_fQuitting = TRUE;

	CVersion::Instance()->CancelRequests();

	Compat_WTSUnRegisterSessionNotification(GetHandle());

	switch (m_lpSession->GetState())
	{
	case WSS_ONLINE:
	case WSS_RECONNECTING:
	case WSS_CONNECTING:
		SignOut(FALSE);
		break;

	case WSS_DISCONNECTING:
		// Already signing out, let it go and destroy from there.
		break;

	case WSS_OFFLINE:
		// Already offline, destroy the window
		DestroyWindow(GetHandle());
		break;
	}
	
	return 0;
}
///////////////////////////////////////////////////////////////////////
///  Function: XosWebRtcClientConnection::
///
///    Author: $author$
///      Date: 4/1/2012
///////////////////////////////////////////////////////////////////////
void XosWebRtcClientConnection::OnRead(talk_base::AsyncSocket* socket) {
  LOG(INFO) << __FUNCTION__;
  size_t content_length = 0;
  if (ReadIntoBuffer(socket, &control_data_, &content_length)) {
    size_t peer_id = 0, eoh = 0;
    bool ok = ParseServerResponse(control_data_, content_length, &peer_id,
                                  &eoh);
    if (ok) {
      if (my_id_ == -1) {
        // First response.  Let's store our server assigned ID.
        ASSERT(state_ == SIGNING_IN);
        my_id_ = peer_id;
        ASSERT(my_id_ != -1);

        // The body of the response will be a list of already connected peers.
        if (content_length) {
          size_t pos = eoh + 4;
          while (pos < control_data_.size()) {
            size_t eol = control_data_.find('\n', pos);
            if (eol == std::string::npos)
              break;
            int id = 0;
            std::string name;
            bool connected;
            if (ParseEntry(control_data_.substr(pos, eol - pos), &name, &id,
                           &connected) && id != my_id_) {
              peers_[id] = name;
              callback_->OnPeerConnected(id, name);
            }
            pos = eol + 1;
          }
        }
        ASSERT(is_connected());
        callback_->OnSignedIn();
      } else if (state_ == SIGNING_OUT) {
        Close();
        callback_->OnDisconnected();
      } else if (state_ == SIGNING_OUT_WAITING) {
        SignOut();
      }
    }

    control_data_.clear();

    if (state_ == SIGNING_IN) {
      ASSERT(hanging_get_->GetState() == talk_base::Socket::CS_CLOSED);
      state_ = CONNECTED;
      hanging_get_->Connect(server_address_);
    }
  }
}
示例#3
0
LRESULT CAppWindow::OnCommand(WORD wID)
{
	switch (wID)
	{
	case ID_TRAYICON_EXIT:
		SendMessage(WM_SYSCOMMAND, SC_CLOSE);
		break;

	case ID_TRAYICON_CHECKFORUPDATESNOW:
		m_fManualUpdateCheck = TRUE;

		CheckForUpdates();
		break;

	case ID_TRAYICON_INBOX:
		OpenInbox();
		break;

	case ID_TRAYICON_LOGIN:
		PromptForCredentials();
		break;

	case ID_TRAYICON_SIGNOUT:
		SignOut(TRUE);
		break;

	case ID_TRAYICON_HELP:
		DisplayHelp();
		break;

	case ID_TRAYICON_ABOUT:
		(new CAboutDialog())->Create(DT_ABOUT, this);
		break;

	case ID_TRAYICON_OPTIONS:
		(new COptionsSheet())->Create(DT_OPTIONS, this);
		break;

	case ID_TRAYICON_CHECKWAVESNOW:
		CheckWavesNow();
		break;
	}

	return 0;
}
RemoteSettingsPage::RemoteSettingsPage(SettingsDialog* dialog)
  : SettingsPage(dialog),
    ui_(new Ui_RemoteSettingsPage),
    waiting_for_auth_(false),
    network_(new NetworkAccessManager(this))
{
  ui_->setupUi(this);
  ui_->busy->hide();
  ui_->icon->setPixmap(IconLoader::Load("task-reject").pixmap(16));
  setWindowIcon(IconLoader::Load("network-server"));

  // Icons
  ui_->sign_out->setIcon(IconLoader::Load("list-remove"));
  ui_->sign_out->hide();

  connect(ui_->login, SIGNAL(clicked()), SLOT(Login()));
  connect(ui_->sign_out, SIGNAL(clicked()), SLOT(SignOut()));

  ui_->username->setMinimumWidth(QFontMetrics(QFont()).width("WWWWWWWWWWWW"));
  resize(sizeHint());
}
示例#5
0
文件: acd_agent.cpp 项目: DrayChou/CC
acd::AcdResultT acd_agent::SignIn(const string& agentId, const string& agentDn,
                                  const acd::StatusChangeT& statusChangetype,
                                  bool autoAnswer, bool fcSignin, const string& skill, int64_t& handle,
                                  const std::map<std::string, std::string>& ctx) {
    SingleRWLocker s(&m_RWLock, true);

    // 签出
    if (fcSignin) {
        SignOut(true);
    }

    // 赋值
    m_agentId = agentId;
    m_agentDn = agentDn;
    m_statusChangetype = statusChangetype;
    m_autoAnswer = autoAnswer;
    m_skill = skill;
    //m_handle = 0;

    Reset();
    //m_sessionId = 0;
    //m_callId.clear();
    m_requestId = 0;
    m_validTime = 0;
    m_heartbeatTime = time(NULL);
    //m_recordFilename.clear();

    m_loginTime = time(NULL);
    //m_agentStatus = acd::AgentStatusT::AsUnLoginState;
    //m_currStatusTime = 0;
    //m_callTime = 0;
    //m_answerTime = 0;
    //m_origCaller.clear();
    //m_origCallee.clear();
    m_callTimes = 0;
    m_answerTimes = 0;
    m_freeTotalTime = 0;
    m_busyTotalTime = 0;
    m_restTotalTime = 0;
    m_callTotalTime = 0;
    m_answerTotalTime = 0;
    //m_agentIP.clear();
    m_callinfo.reset();

    std::map<std::string, std::string>::const_iterator it = ctx.find("ProxyName");

    if (it == ctx.end()) {
        acd_tool::m_logger.WriteLog(LOG_LEVEL_WARNING, __FILE__, __LINE__, __FUNCTION__,
                                    "agentId:%s create callback proxy fail", m_agentId.c_str());
        return acd::AcdResultT::ArFailed;
    }

    m_callback_ptr = acd_callback_proxy_ptr(new acd::acdcallbackProxy(it->second, 0));

    it = ctx.find("PeerIP");

    if (it == ctx.end()) {
        acd_tool::m_logger.WriteLog(LOG_LEVEL_WARNING, __FILE__, __LINE__, __FUNCTION__,
                                    "agentId:%s get agent ip fail", m_agentId.c_str());
        m_agentIP = "error";
    } else {
        m_agentIP = it->second;
        acd_tool::m_logger.WriteLog(LOG_LEVEL_DEBUG, __FILE__, __LINE__, __FUNCTION__,
                                    "agentId:%s get agent ip:%s", m_agentId.c_str(), m_agentIP.c_str());
    }

    if (!acd_tool::p_m_acd_ims->Assign(m_agentId, m_agentDn, ims::DnTypeT::AgentDn)) {
        return acd::AcdResultT::ArImsError;
    }

    m_handle = acd_tool::CreatHandle();
    handle = m_handle;

    if (m_statusChangetype == acd::StatusChangeT::ScBusy) {
        SetStatus(acd::AgentStatusT::AsBusyState, acd::CallEventReasonT::CerIdleSelfLogin);
    } else {
        SetStatus(acd::AgentStatusT::AsReadyState, acd::CallEventReasonT::CerIdleSelfLogin);
    }

    return acd::AcdResultT::ArSuccess;
}
示例#6
0
//-----------------------------------------------------------------------------
// Function:    PrintMenu
// Purpose:     Prints a menu, retrieves the user selection, calls the handler, loops.
//              Returns when "Quit" is selected from the menu
// Parameters:  None
//
void RunMenu()
{
    HRESULT hr;
    WCHAR wzBuff[INPUT_BUFSIZE];
    int nInput;

    // Continuously show the menu to user and respond to their request
    //
    while (TRUE)
    {
        PrintMenu();

        fflush(stdin);
        hr = StringCbGets(wzBuff, sizeof(wzBuff));

        if (FAILED(hr))
        {
            wprintf (L"Invalid input, expected a number between 1 and 25 or Q to quit.\n");
            continue;
        }

        if  ((wcsncmp(wzBuff, L"Q", INPUT_BUFSIZE) == 0) || (wcsncmp(wzBuff, L"q", INPUT_BUFSIZE) == 0))
        {
            // break out of while loop.
            //
            break;
        }

        // since wtoi can't distinguish between 0 and an error, note that valid values start at 1, not 0    
        nInput = _wtoi(wzBuff);
        if (nInput < 1  || nInput > 25)
        {
            printf ("Invalid input, expected a number between 1 and 25 or Q to quit.\n");
            continue;
        }

        switch (nInput)
        {
            case 1:
                SignIn();
                break;

            case 2:
                SignOut();
                break;

            case 3:
                SignInOptions();
                break;

            case 4:
                SetEndpointName();
                break;

            case 5:
                GetEndpointName();
                break;

            case 6:
                DisplayEndpointInformation();
                break;

            case 7:
                EnumeratePeopleNearMe();
                break;

            case 8:
                AddEndpointAsContact();
                break;

            case 9:
                ExportContact();
                break;

            case 10:
                ParseContact();
                break;
            
            case 11:
                ImportContact();
                break;
            
            case 12:
                DeleteContact();
                break;

            case 13:
                EnumContacts();
                break;
            
            case 14:
                SetWatching();
                break;

            case 15:
                SetWatchPermissions();
                break;

            case 16:
                GetPresenceInformation();
                break;
                    
            case 17:
                SetPresenceInformation();
                break;

            case 18:
                SubscribeEndpointData();
                break;

            case 19:
                UnsubscribeEndpointData();
                break;

            case 20:
                PublishEndpointObject();
                break;

            case 21:
                DeleteEndpointObject();
                break;
                                    
            case 22:
                RegisterApplication();
                break;

            case 23:
                UnregisterApplication();
                break;

            case 24:
                DisplayApplicationRegistrations();
                break;

            case 25:
                SendInvite();
                break;

            default:
                wprintf(L"Invalid selection.\n");
                break;

        }

        //Pause so that our output doesn't scroll
        //off the screen before the user gets a change to
        //read it.
         wprintf(L"\n\nPress <ENTER> to continue.\n");
        fflush(stdin);
        (void)StringCbGets(wzBuff, sizeof(wzBuff));
    }
}
示例#7
0
    QMenuBar *SessionManager::ConstructMenuBar()
    {
        // QMenuBar and QMenu init
        menu_bar_ = new QMenuBar(main_parent_);
        
        // FILE MENU
        QMenu *file_menu = new QMenu("File", main_parent_);
        QAction *hide_action = file_menu->addAction("Hide", this, SLOT( Hide() ));
        //hide_action->setEnabled(false); // Can't support hide on external mode

        // STATUS menu
        QMenu *status_menu = new QMenu("Status", main_parent_);
       
        set_status_message = status_menu->addAction("Set Status Message", session_helper_, SLOT( SetStatusMessage() ));
        status_menu->addSeparator();
        available_status = status_menu->addAction("Available", this, SLOT( StatusAvailable() ));
        chatty_status = status_menu->addAction("Chatty", this, SLOT( StatusChatty() ));
        away_status = status_menu->addAction("Away", this, SLOT( StatusAway() ));
        extended_away_status = status_menu->addAction("Extended Away", this, SLOT( StatusExtendedAway() ));
        busy_status = status_menu->addAction("Busy", this, SLOT( StatusBusy() ));
        hidden_status = status_menu->addAction("Hidden", this, SLOT( StatusHidden() ));

        set_status_message->setIcon(QIcon(":images/iconRename.png"));
        available_status->setCheckable(true);
        available_status->setIcon(UiDefines::PresenceStatus::GetIconForStatusCode("available"));
        chatty_status->setCheckable(true);
        chatty_status->setIcon(UiDefines::PresenceStatus::GetIconForStatusCode("chat"));
        away_status->setCheckable(true);
        away_status->setIcon(UiDefines::PresenceStatus::GetIconForStatusCode("away"));
        extended_away_status->setCheckable(true);
        extended_away_status->setIcon(UiDefines::PresenceStatus::GetIconForStatusCode("xa"));
        busy_status->setCheckable(true);
        busy_status->setIcon(UiDefines::PresenceStatus::GetIconForStatusCode("dnd"));
        hidden_status->setCheckable(true);
        hidden_status->setIcon(UiDefines::PresenceStatus::GetIconForStatusCode("hidden"));

        QActionGroup *status_group = new QActionGroup(main_parent_);            
        status_group->addAction(available_status);
        status_group->addAction(chatty_status);
        status_group->addAction(away_status);
        status_group->addAction(extended_away_status);
        status_group->addAction(busy_status);
        status_group->addAction(hidden_status);
        available_status->setChecked(true);

        status_menu->addSeparator();
        signout = status_menu->addAction("Sign out", this, SLOT( SignOut() ));
        signout->setIcon(QIcon(":images/iconSignout.png"));
        
        // JOIN MENU
        QMenu *actions_menu = new QMenu("Actions", main_parent_);
        add_new_friend = actions_menu->addAction("Add New Friend");
        add_new_friend->setIcon(QIcon(":images/iconAdd.png"));
        join_chat_room = actions_menu->addAction("Join Chat Room", this, SLOT( JoinChatRoom() ));
        join_chat_room->setIcon(QIcon(":/images/iconConference.png"));
        manage_spatial_voice = actions_menu->addAction("Manage 3D Voice", this, SLOT( Show3DSoundManager() ));
        manage_spatial_voice->setIcon(QIcon(":images/iconProperties.png"));
        
        // Add sub menus to menu bar
        menu_bar_->addMenu(file_menu);
        menu_bar_->addMenu(status_menu);
        menu_bar_->addMenu(actions_menu);
        menu_bar_->addAction("Show Friend List", this, SLOT( ToggleShowFriendList() ));
        
        // Connect signals
        connect(add_new_friend, SIGNAL( triggered() ),
                session_helper_, SLOT( SendFriendRequest() ));
        connect(this, SIGNAL( StatusChange(const QString&) ), 
                session_helper_, SLOT( SetMyStatus(const QString&) ));
        connect(session_helper_, SIGNAL( ChangeMenuBarStatus(const QString &) ), 
                this, SLOT( StatusChangedOutSideMenuBar(const QString &) ));

        return menu_bar_;
    }