From 53eeee7b70a80e718b8331bde66848fdfbe77355 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 21 Oct 2010 14:41:42 -0400
Subject: support for edit classified slapp

---
 indra/newview/llpanelpicks.cpp   | 37 +++++++++++++++++++++++++++++++++++++
 indra/newview/llpanelpicks.h     |  2 ++
 indra/newview/llpanelprofile.cpp | 11 +++++++++++
 3 files changed, 50 insertions(+)
 mode change 100644 => 100755 indra/newview/llpanelpicks.h

diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp
index e70c7be728..941bf6e98d 100755
--- a/indra/newview/llpanelpicks.cpp
+++ b/indra/newview/llpanelpicks.cpp
@@ -190,6 +190,13 @@ public:
 		else if (mRequestVerb == "edit")
 		{
 			llwarns << "edit in progress" << llendl;
+			// 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"] = "edit_classified";
+			params["classified_id"] = c_info->classified_id;
+			LLSideTray::getInstance()->showPanel("panel_me", params);
 		}
 	}
 
@@ -822,6 +829,13 @@ void LLPanelPicks::openClassifiedInfo(const LLSD &params)
 	getProfilePanel()->openPanel(mPanelClassifiedInfo, params);
 }
 
+void LLPanelPicks::openClassifiedEdit(const LLSD& params)
+{
+	LLUUID classified_id = params["classified_id"].asUUID();;
+	llinfos << "opening classified " << classified_id << " for edit" << llendl;
+	editClassified(classified_id);
+}
+
 void LLPanelPicks::showAccordion(const std::string& name, bool show)
 {
 	LLAccordionCtrlTab* tab = getChild<LLAccordionCtrlTab>(name);
@@ -1024,6 +1038,29 @@ void LLPanelPicks::onPanelClassifiedEdit()
 	{
 		return;
 	}
+	editClassified(c_item->getClassifiedId());
+}
+
+void LLPanelPicks::editClassified(const LLUUID&  classified_id)
+{
+	// HACK - find item by classified id.  Should be a better way.
+	std::vector<LLPanel*> items;
+	mClassifiedsList->getItems(items);
+	LLClassifiedItem* c_item = NULL;
+	for(std::vector<LLPanel*>::iterator it = items.begin(); it != items.end(); ++it)
+	{
+		LLClassifiedItem *test_item = dynamic_cast<LLClassifiedItem*>(*it);
+		if (test_item && test_item->getClassifiedId() == classified_id)
+		{
+			c_item = test_item;
+			break;
+		}
+	}
+	if (!c_item)
+	{
+		llwarns << "item not found for classified_id " << classified_id << llendl;
+		return;
+	}
 
 	LLSD params;
 	params["classified_id"] = c_item->getClassifiedId();
diff --git a/indra/newview/llpanelpicks.h b/indra/newview/llpanelpicks.h
old mode 100644
new mode 100755
index 526ba48dcb..333c112756
--- a/indra/newview/llpanelpicks.h
+++ b/indra/newview/llpanelpicks.h
@@ -108,6 +108,7 @@ private:
 	void onPanelClassifiedClose(LLPanelClassifiedInfo* panel);
 	void onPanelPickEdit();
 	void onPanelClassifiedEdit();
+	void editClassified(const LLUUID&  classified_id);
 	void onClickMenuEdit();
 
 	bool onEnableMenuItem(const LLSD& user_data);
@@ -118,6 +119,7 @@ private:
 	void openPickInfo();
 	void openClassifiedInfo();
 	void openClassifiedInfo(const LLSD& params);
+	void openClassifiedEdit(const LLSD& params);
 	friend class LLPanelProfile;
 
 	void showAccordion(const std::string& name, bool show);
diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp
index 1268c181ad..0b5975195d 100755
--- a/indra/newview/llpanelprofile.cpp
+++ b/indra/newview/llpanelprofile.cpp
@@ -205,6 +205,17 @@ void LLPanelProfile::onOpen(const LLSD& key)
 				picks->openClassifiedInfo(params);
 			}
 		}
+		else if (panel == "edit_classified")
+		{
+			LLPanelPicks* picks = dynamic_cast<LLPanelPicks *>(getTabContainer()[PANEL_PICKS]);
+			if (picks)
+			{
+				LLSD params = key;
+				params.erase("show_tab_panel");
+				params.erase("open_tab_name");
+				picks->openClassifiedEdit(params);
+			}
+		}
 	}
 }
 
-- 
cgit v1.2.3