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_); } } }
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()); }
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; }
//----------------------------------------------------------------------------- // 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)); } }
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_; }