From a3930c7ff754e09a686d4ec0eaeca0a7f752c008 Mon Sep 17 00:00:00 2001
From: "Eric M. Tulla (BigPapi)" <tulla@lindenlab.com>
Date: Fri, 20 Nov 2009 19:27:33 -0500
Subject: Inventory Offer changes and clickable inventory slurls

---
 indra/llui/llurlentry.cpp    | 33 +++++++++++++++++++++++++++++++++
 indra/llui/llurlentry.h      | 13 +++++++++++++
 indra/llui/llurlregistry.cpp |  1 +
 3 files changed, 47 insertions(+)

(limited to 'indra/llui')

diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp
index 219fae84be..b51709e208 100644
--- a/indra/llui/llurlentry.cpp
+++ b/indra/llui/llurlentry.cpp
@@ -34,6 +34,7 @@
 #include "linden_common.h"
 #include "llurlentry.h"
 #include "lluri.h"
+
 #include "llcachename.h"
 #include "lltrans.h"
 #include "lluicolortable.h"
@@ -383,6 +384,38 @@ std::string LLUrlEntryGroup::getLabel(const std::string &url, const LLUrlLabelCa
 	}
 }
 
+//
+// LLUrlEntryInventory Describes a Second Life inventory Url, e.g.,
+// secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/select
+//
+LLUrlEntryInventory::LLUrlEntryInventory()
+{
+	mPattern = boost::regex("secondlife:///app/inventory/[\\da-f-]+/\\w+",
+							boost::regex::perl|boost::regex::icase);
+	mMenuName = "menu_url_inventory.xml";
+}
+
+std::string LLUrlEntryInventory::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
+{
+	return unescapeUrl(url);
+	// TODO: Figure out if we can somehow access the inventory from here to get the actual item name
+	/*  
+	std::string inventory_id_string = getIDStringFromUrl(url);
+	if (inventory_id_string.empty())
+	{
+		// something went wrong, give raw url
+		return unescapeUrl(url);
+	}
+	LLUUID inventory_id(inventory_id_string);
+	LLInventoryItem* item = gInventory.getItem(inventory_id);
+	if(!item)
+	{
+		return unescapeUrl(url);
+	}
+	return item->getName(); */
+}
+
+
 ///
 /// LLUrlEntryParcel Describes a Second Life parcel Url, e.g.,
 /// secondlife:///app/parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/about
diff --git a/indra/llui/llurlentry.h b/indra/llui/llurlentry.h
index 7970b48eb5..b3fb333fdd 100644
--- a/indra/llui/llurlentry.h
+++ b/indra/llui/llurlentry.h
@@ -173,6 +173,19 @@ private:
 							 const std::string& last, BOOL is_group);
 };
 
+///
+/// LLUrlEntryInventory Describes a Second Life inventory Url, e.g.,
+/// secondlife:///app/inventory/0e346d8b-4433-4d66-a6b0-fd37083abc4c/select
+///
+class LLUrlEntryInventory : public LLUrlEntryBase
+{
+public:
+	LLUrlEntryInventory();
+	/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
+private:
+};
+
+
 ///
 /// LLUrlEntryParcel Describes a Second Life parcel Url, e.g.,
 /// secondlife:///app/parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/about
diff --git a/indra/llui/llurlregistry.cpp b/indra/llui/llurlregistry.cpp
index a6922b019b..b2f084e5ac 100644
--- a/indra/llui/llurlregistry.cpp
+++ b/indra/llui/llurlregistry.cpp
@@ -55,6 +55,7 @@ LLUrlRegistry::LLUrlRegistry()
 	registerUrl(new LLUrlEntryPlace());
 	registerUrl(new LLUrlEntrySL());
 	registerUrl(new LLUrlEntrySLLabel());
+	registerUrl(new LLUrlEntryInventory());
 }
 
 LLUrlRegistry::~LLUrlRegistry()
-- 
cgit v1.2.3