Commits

Steve Bennetts  committed 89acfdb Merge

merge

  • Participants
  • Parent commits 3ead040, 12d1433

Comments (0)

Files changed (9)

File indra/newview/llavataractions.cpp

 }
 
 // static
+void LLAvatarActions::endIM(const LLUUID& id)
+{
+	if (id.isNull())
+		return;
+	
+	LLUUID session_id = gIMMgr->computeSessionID(IM_NOTHING_SPECIAL, id);
+	if (session_id != LLUUID::null)
+	{
+		gIMMgr->leaveSession(session_id);
+	}
+}
+
+// static
 void LLAvatarActions::startCall(const LLUUID& id)
 {
 	if (id.isNull())

File indra/newview/llavataractions.h

 	static void startIM(const LLUUID& id);
 
 	/**
+	 * End instant messaging session.
+	 */
+	static void endIM(const LLUUID& id);
+
+	/**
 	 * Start an avatar-to-avatar voice call with another user
 	 */
 	static void startCall(const LLUUID& id);

File indra/newview/llchiclet.cpp

 	{
 		LLAvatarActions::requestFriendshipDialog(other_participant_id);
 	}
+	else if("close" == level)
+	{
+		LLAvatarActions::endIM(other_participant_id);
+	}
 }
 
 //////////////////////////////////////////////////////////////////////////
 
 	if("group chat" == level)
 	{
-		LLGroupActions::startChat(group_id);
+		LLGroupActions::startIM(group_id);
 	}
 	else if("info" == level)
 	{
 		LLGroupActions::show(group_id);
 	}
+	else if("close" == level)
+	{
+		LLGroupActions::endIM(group_id);
+	}
 }
 
 

File indra/newview/llfloatergroups.cpp

 
 	if (group_list && (group_id = group_list->getCurrentID()).notNull())
 	{
-		LLGroupActions::startChat(group_id);
+		LLGroupActions::startIM(group_id);
 	}
 }
 

File indra/newview/llgroupactions.cpp

 
 
 // static
-void LLGroupActions::startChat(const LLUUID& group_id)
+void LLGroupActions::startIM(const LLUUID& group_id)
 {
 	if (group_id.isNull())
 		return;
 }
 
 // static
+void LLGroupActions::endIM(const LLUUID& group_id)
+{
+	if (group_id.isNull())
+		return;
+	
+	LLUUID session_id = gIMMgr->computeSessionID(IM_SESSION_GROUP_START, group_id);
+	if (session_id != LLUUID::null)
+	{
+		gIMMgr->leaveSession(session_id);
+	}
+}
+
+// static
 bool LLGroupActions::isInGroup(const LLUUID& group_id)
 {
 	// *TODO: Move all the LLAgent group stuff into another class, such as

File indra/newview/llgroupactions.h

 	/**
 	 * Start group instant messaging session.
 	 */
-	static void startChat(const LLUUID& group_id);
+	static void startIM(const LLUUID& group_id);
+
+	/**
+	 * End group instant messaging session.
+	 */
+	static void endIM(const LLUUID& group_id);
 
 	/// Returns if the current user is a member of the group
 	static bool isInGroup(const LLUUID& group_id);

File indra/newview/llpanelpeople.cpp

 {
 	LLUUID group_id = getCurrentItemID();
 	if (group_id.notNull())
-		LLGroupActions::startChat(group_id);
+		LLGroupActions::startIM(group_id);
 }
 
 void LLPanelPeople::onImButtonClicked()

File indra/newview/skins/default/xui/en/menu_imchiclet_group.xml

          function="IMChicletMenu.Action"
          parameter="info" />
     </menu_item_call>
+    <menu_item_call
+     label="Close Session"
+     layout="topleft"
+     name="Close Session">
+        <menu_item_call.on_click
+         function="IMChicletMenu.Action"
+         parameter="close" />
+    </menu_item_call>
 </menu>

File indra/newview/skins/default/xui/en/menu_imchiclet_p2p.xml

          function="IMChicletMenu.Action"
          parameter="add" />
     </menu_item_call>
+    <menu_item_call
+     label="Close Session"
+     layout="topleft"
+     name="Close Session">
+        <menu_item_call.on_click
+         function="IMChicletMenu.Action"
+         parameter="close" />
+    </menu_item_call>
 </menu>