virtual void PerformAction(const EFriendActionType::Type ActionType) override { switch(ActionType) { case EFriendActionType::AcceptFriendRequest : { AcceptFriend(); break; } case EFriendActionType::RemoveFriend : case EFriendActionType::IgnoreFriendRequest : case EFriendActionType::BlockFriend : case EFriendActionType::RejectFriendRequest: case EFriendActionType::CancelFriendRequest: { RemoveFriend(EFriendActionType::ToText(ActionType).ToString()); break; } case EFriendActionType::SendFriendRequest : { SendFriendRequest(); break; } case EFriendActionType::InviteToGame : { InviteToGame(); break; } case EFriendActionType::JoinGame : { JoinGame(); break; } case EFriendActionType::RejectGame: { RejectGame(); break; } case EFriendActionType::Chat: { StartChat(); break; } } SetPendingAction(EFriendActionType::MAX_None); }
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_; }