diff options
| -rw-r--r-- | indra/newview/llpanelpicks.cpp | 85 | ||||
| -rw-r--r-- | indra/newview/llpanelpicks.h | 7 | ||||
| -rw-r--r-- | indra/newview/llpanelprofile.cpp | 28 | 
3 files changed, 79 insertions, 41 deletions
| diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp index 498782fb44..0a13180c73 100644 --- a/indra/newview/llpanelpicks.cpp +++ b/indra/newview/llpanelpicks.cpp @@ -57,7 +57,6 @@  #include "llpanelprofile.h"  #include "llpanelpick.h"  #include "llpanelclassified.h" -#include "llpanelprofileview.h"  #include "llsidetray.h"  static const std::string XML_BTN_NEW = "new_btn"; @@ -88,6 +87,14 @@ public:  	bool handle(const LLSD& params, const LLSD& query_map, LLMediaCtrl* web)  	{ +		// handle app/classified/create urls first +		if (params.size() == 1 && params[0].asString() == "create") +		{ +			createClassified(); +			return true; +		} + +		// then handle the general app/classified/{UUID}/{CMD} urls  		if (params.size() < 2)  		{  			return false; @@ -114,6 +121,31 @@ public:  		return false;  	} +	void createClassified() +	{ +		// open the new classified panel on the Me > Picks sidetray +		LLSD params; +		params["id"] = gAgent.getID(); +		params["open_tab_name"] = "panel_picks"; +		params["show_tab_panel"] = "create_classified"; +		LLSideTray::getInstance()->showPanel("panel_me", params); +	} + +	void openClassified(LLAvatarClassifiedInfo* c_info) +	{ +		// open the classified info panel on the Me > Picks sidetray +		LLSD params; +		params["id"] = c_info->creator_id; +		params["open_tab_name"] = "panel_picks"; +		params["show_tab_panel"] = "classified_details"; +		params["classified_id"] = c_info->classified_id; +		params["classified_avatar_id"] = c_info->creator_id; +		params["classified_snapshot_id"] = c_info->snapshot_id; +		params["classified_name"] = c_info->name; +		params["classified_desc"] = c_info->description; +		LLSideTray::getInstance()->showPanel("panel_profile_view", params); +	} +  	/*virtual*/ void processProperties(void* data, EAvatarProcessorType type)  	{  		if (APT_CLASSIFIED_INFO != type) @@ -128,22 +160,8 @@ public:  			return;  		} -		// open the people profile page for the classified's owner -		LLSD params; -		params["id"] = c_info->creator_id; -		params["classified"] = c_info->classified_id; -		params["open_tab_name"] = "panel_profile"; -		LLPanelProfileView *profile = dynamic_cast<LLPanelProfileView*>(LLSideTray::getInstance()->showPanel("panel_profile_view", params)); - -		// then open the classified panel on this user's profile panel -		if (profile) -		{ -			LLPanelPicks* panel_picks = profile->getChild<LLPanelPicks>("panel_picks"); -			if (panel_picks) -			{ -				panel_picks->openClassifiedInfo(c_info); -			} -		} +		// open the detail side tray for this classified +		openClassified(c_info);  		// remove our observer now that we're done  		mClassifiedIds.erase(c_info->classified_id); @@ -693,33 +711,24 @@ void LLPanelPicks::openClassifiedInfo()  	LLClassifiedItem* c_item = getSelectedClassifiedItem(); -	createClassifiedInfoPanel(); - -	LLSD params; - 	params["classified_id"] = c_item->getClassifiedId(); - 	params["avatar_id"] = c_item->getAvatarId(); - 	params["snapshot_id"] = c_item->getSnapshotId(); - 	params["name"] = c_item->getClassifiedName(); - 	params["desc"] = c_item->getDescription(); - -	getProfilePanel()->openPanel(mPanelClassifiedInfo, params); +	openClassifiedInfo(c_item->getClassifiedId(), c_item->getAvatarId(), +					   c_item->getSnapshotId(), c_item->getClassifiedName(), +					   c_item->getDescription());  } -void LLPanelPicks::openClassifiedInfo(LLAvatarClassifiedInfo *c_info) +void LLPanelPicks::openClassifiedInfo(const LLUUID &classified_id,  +									  const LLUUID &avatar_id, +									  const LLUUID &snapshot_id, +									  const std::string &name, const std::string &desc)  { -	if (! c_info) -	{ -		return; -	} -  	createClassifiedInfoPanel();  	LLSD params; -	params["classified_id"] = c_info->classified_id; -	params["avatar_id"] = c_info->creator_id; -	params["snapshot_id"] = c_info->snapshot_id; -	params["name"] = c_info->name; -	params["desc"] = c_info->description; +	params["classified_id"] = classified_id; +	params["avatar_id"] = avatar_id; +	params["snapshot_id"] = snapshot_id; +	params["name"] = name; +	params["desc"] = desc;  	getProfilePanel()->openPanel(mPanelClassifiedInfo, params);  } diff --git a/indra/newview/llpanelpicks.h b/indra/newview/llpanelpicks.h index 893a0c53a3..0ebf9e26dd 100644 --- a/indra/newview/llpanelpicks.h +++ b/indra/newview/llpanelpicks.h @@ -86,9 +86,6 @@ public:  	// parent panels failed to work (picks related code was in my profile panel)  	void setProfilePanel(LLPanelProfile* profile_panel); -	// display the info panel for the given classified -	void openClassifiedInfo(LLAvatarClassifiedInfo *c_info); -  protected:  	/*virtual*/void updateButtons(); @@ -120,6 +117,10 @@ private:  	void openPickInfo();  	void openClassifiedInfo(); +	void openClassifiedInfo(const LLUUID &classified_id, const LLUUID &avatar_id, +							const LLUUID &snapshot_id, const std::string &name, +							const std::string &desc); +	friend class LLPanelProfile;  	void showAccordion(const std::string& name, bool show); diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp index 3274820174..c73ade53c8 100644 --- a/indra/newview/llpanelprofile.cpp +++ b/indra/newview/llpanelprofile.cpp @@ -144,6 +144,7 @@ BOOL LLPanelProfile::postBuild()  void LLPanelProfile::onOpen(const LLSD& key)  { +	// open the desired panel  	if (key.has("open_tab_name"))  	{  		getTabContainer()[PANEL_PICKS]->onClosePanel(); @@ -155,6 +156,33 @@ void LLPanelProfile::onOpen(const LLSD& key)  	{  		getTabCtrl()->getCurrentPanel()->onOpen(getAvatarId());  	} + +	// support commands to open further pieces of UI +	if (key.has("show_tab_panel")) +	{ +		std::string panel = key["show_tab_panel"].asString(); +		if (panel == "create_classified") +		{ +			LLPanelPicks* picks = dynamic_cast<LLPanelPicks *>(getTabContainer()[PANEL_PICKS]); +			if (picks) +			{ +				picks->createNewClassified(); +			} +		} +		else if (panel == "classified_details") +		{ +			LLUUID classified_id = key["classified_id"].asUUID(); +			LLUUID avatar_id     = key["classified_avatar_id"].asUUID(); +			LLUUID snapshot_id   = key["classified_snapshot_id"].asUUID(); +			std::string name     = key["classified_name"].asString(); +			std::string desc     = key["classified_desc"].asString(); +			LLPanelPicks* picks = dynamic_cast<LLPanelPicks *>(getTabContainer()[PANEL_PICKS]); +			if (picks) +			{ +				picks->openClassifiedInfo(classified_id, avatar_id, snapshot_id, name, desc); +			} +		} +	}  }  //*TODO redo panel toggling | 
