diff --git a/indra/llcommon/llassettype.h b/indra/llcommon/llassettype.h
index 5a95a58d93..3a4b5dad18 100755
--- a/indra/llcommon/llassettype.h
+++ b/indra/llcommon/llassettype.h
@@ -107,6 +107,9 @@ public:
AT_LINK_FOLDER = 25,
// Inventory folder link
+ AT_MARKETPLACE_FOLDER = 26,
+ // Marketplace folder. Same as an AT_CATEGORY but different display methods.
+
AT_WIDGET = 40,
// UI Widget: this is *not* an inventory asset type, only a viewer side asset (e.g. button, other ui items...)
diff --git a/indra/llinventory/llfoldertype.cpp b/indra/llinventory/llfoldertype.cpp
index 23bf6da1f9..86aca77de8 100644
--- a/indra/llinventory/llfoldertype.cpp
+++ b/indra/llinventory/llfoldertype.cpp
@@ -96,6 +96,10 @@ LLFolderDictionary::LLFolderDictionary()
addEntry(LLFolderType::FT_OUTBOX, new FolderEntry("outbox", TRUE));
addEntry(LLFolderType::FT_BASIC_ROOT, new FolderEntry("basic_rt", TRUE));
+
+ addEntry(LLFolderType::FT_MARKETPLACE_LISTINGS, new FolderEntry("merchant", FALSE));
+ addEntry(LLFolderType::FT_MARKETPLACE_STOCK, new FolderEntry("stock", FALSE));
+ addEntry(LLFolderType::FT_MARKETPLACE_VERSION, new FolderEntry("version", FALSE));
addEntry(LLFolderType::FT_NONE, new FolderEntry("-1", FALSE));
};
diff --git a/indra/llinventory/llfoldertype.h b/indra/llinventory/llfoldertype.h
index 94c5d53d67..4a71e66f59 100644
--- a/indra/llinventory/llfoldertype.h
+++ b/indra/llinventory/llfoldertype.h
@@ -87,10 +87,14 @@ public:
FT_BASIC_ROOT = 52,
+ FT_MARKETPLACE_LISTINGS = 53,
+ FT_MARKETPLACE_STOCK = 54,
+ FT_MARKETPLACE_VERSION = 55, // Note: We actually *never* create folders with that type. This is used for icon override only.
+
// Folder types for our own virtual system folders
- FT_FIRESTORM = 53,
- FT_PHOENIX = 54,
- FT_RLV = 55,
+ FT_FIRESTORM = 56,
+ FT_PHOENIX = 57,
+ FT_RLV = 58,
// Folder types for our own virtual system folders
FT_COUNT,
diff --git a/indra/llmessage/llhttpclient.cpp b/indra/llmessage/llhttpclient.cpp
index 71e90a44f5..0f1c9a9466 100644
--- a/indra/llmessage/llhttpclient.cpp
+++ b/indra/llmessage/llhttpclient.cpp
@@ -585,6 +585,17 @@ void LLHTTPClient::patch(
request(url, HTTP_PATCH, new LLSDInjector(body), responder, timeout, headers);
}
+void LLHTTPClient::putRaw(
+ const std::string& url,
+ const U8* data,
+ S32 size,
+ ResponderPtr responder,
+ const LLSD& headers,
+ const F32 timeout)
+{
+ request(url, HTTP_PUT, new RawInjector(data, size), responder, timeout, headers);
+}
+
void LLHTTPClient::post(
const std::string& url,
const LLSD& body,
diff --git a/indra/llmessage/llhttpclient.h b/indra/llmessage/llhttpclient.h
index 0c255af734..8cab5408ab 100755
--- a/indra/llmessage/llhttpclient.h
+++ b/indra/llmessage/llhttpclient.h
@@ -80,6 +80,14 @@ public:
ResponderPtr,
const LLSD& headers = LLSD(),
const F32 timeout=HTTP_REQUEST_EXPIRY_SECS);
+ static void putRaw(
+ const std::string& url,
+ const U8* data,
+ S32 size,
+ ResponderPtr responder,
+ const LLSD& headers = LLSD(),
+ const F32 timeout=HTTP_REQUEST_EXPIRY_SECS);
+
static void patch(
const std::string& url,
diff --git a/indra/llui/llcommandmanager.cpp b/indra/llui/llcommandmanager.cpp
index 07b5212056..b501cdfd77 100755
--- a/indra/llui/llcommandmanager.cpp
+++ b/indra/llui/llcommandmanager.cpp
@@ -135,6 +135,25 @@ LLCommand * LLCommandManager::getCommand(const LLCommandId& commandId)
return command_match;
}
+LLCommand * LLCommandManager::getCommand(const std::string& name)
+{
+ LLCommand * command_match = NULL;
+
+ CommandVector::const_iterator it = mCommands.begin();
+
+ while (it != mCommands.end())
+ {
+ if ((*it)->name() == name)
+ {
+ command_match = *it;
+ break;
+ }
+ it++;
+ }
+
+ return command_match;
+}
+
void LLCommandManager::addCommand(LLCommand * command)
{
LLCommandId command_id = command->id();
diff --git a/indra/llui/llcommandmanager.h b/indra/llui/llcommandmanager.h
index b4165d4198..2bf9c9fdcc 100755
--- a/indra/llui/llcommandmanager.h
+++ b/indra/llui/llcommandmanager.h
@@ -206,6 +206,7 @@ public:
U32 commandCount() const;
LLCommand * getCommand(U32 commandIndex);
LLCommand * getCommand(const LLCommandId& commandId);
+ LLCommand * getCommand(const std::string& name);
static bool load();
diff --git a/indra/llui/llfolderview.cpp b/indra/llui/llfolderview.cpp
index 11995efae6..2387789f75 100755
--- a/indra/llui/llfolderview.cpp
+++ b/indra/llui/llfolderview.cpp
@@ -978,9 +978,6 @@ void LLFolderView::cut()
if (listener)
{
listener->cutToClipboard();
- // Re-apply FIRE-6714: Don't move objects to trash during cut&paste
- //listener->removeItem();
- // Re-apply FIRE-6714: Don't move objects to trash during cut&paste
}
}
diff --git a/indra/llui/llfolderviewitem.cpp b/indra/llui/llfolderviewitem.cpp
index e7380eb11e..57b481c53b 100644
--- a/indra/llui/llfolderviewitem.cpp
+++ b/indra/llui/llfolderviewitem.cpp
@@ -108,7 +108,8 @@ LLFolderViewItem::Params::Params()
item_height("item_height"),
item_top_pad("item_top_pad"),
creation_date(),
- allow_open("allow_open", true),
+ allow_wear("allow_wear", true),
+ allow_drop("allow_drop", true),
font_color("font_color"),
font_highlight_color("font_highlight_color"),
left_pad("left_pad", 0),
@@ -148,7 +149,8 @@ LLFolderViewItem::LLFolderViewItem(const LLFolderViewItem::Params& p)
mRoot(p.root),
mViewModelItem(p.listener),
mIsMouseOverTitle(false),
- mAllowOpen(p.allow_open),
+ mAllowWear(p.allow_wear),
+ mAllowDrop(p.allow_drop),
mFontColor(p.font_color),
mFontHighlightColor(p.font_highlight_color),
mLeftPad(p.left_pad),
@@ -508,7 +510,7 @@ void LLFolderViewItem::buildContextMenu(LLMenuGL& menu, U32 flags)
void LLFolderViewItem::openItem( void )
{
- if (mAllowOpen)
+ if (mAllowWear || !getViewModelItem()->isItemWearable())
{
getViewModelItem()->openItem();
}
@@ -1446,7 +1448,7 @@ void LLFolderViewFolder::gatherChildRangeExclusive(LLFolderViewItem* start, LLFo
{
return;
}
- if (selecting)
+ if (selecting && (*it)->getVisible())
{
items.push_back(*it);
}
@@ -1465,7 +1467,7 @@ void LLFolderViewFolder::gatherChildRangeExclusive(LLFolderViewItem* start, LLFo
return;
}
- if (selecting)
+ if (selecting && (*it)->getVisible())
{
items.push_back(*it);
}
@@ -1487,7 +1489,7 @@ void LLFolderViewFolder::gatherChildRangeExclusive(LLFolderViewItem* start, LLFo
return;
}
- if (selecting)
+ if (selecting && (*it)->getVisible())
{
items.push_back(*it);
}
@@ -1506,7 +1508,7 @@ void LLFolderViewFolder::gatherChildRangeExclusive(LLFolderViewItem* start, LLFo
return;
}
- if (selecting)
+ if (selecting && (*it)->getVisible())
{
items.push_back(*it);
}
@@ -1603,12 +1605,14 @@ void LLFolderViewFolder::destroyView()
while (!mItems.empty())
{
LLFolderViewItem *itemp = mItems.back();
+ mItems.pop_back();
itemp->destroyView(); // LLFolderViewItem::destroyView() removes entry from mItems
}
while (!mFolders.empty())
{
LLFolderViewFolder *folderp = mFolders.back();
+ mFolders.pop_back();
folderp->destroyView(); // LLFolderVievFolder::destroyView() removes entry from mFolders
}
@@ -1906,9 +1910,16 @@ BOOL LLFolderViewFolder::handleDragAndDropToThisFolder(MASK mask,
EAcceptance* accept,
std::string& tooltip_msg)
{
+ if (!mAllowDrop)
+ {
+ *accept = ACCEPT_NO;
+ tooltip_msg = LLTrans::getString("TooltipOutboxCannotDropOnRoot");
+ return TRUE;
+ }
+
BOOL accepted = getViewModelItem()->dragOrDrop(mask,drop,cargo_type,cargo_data, tooltip_msg);
-
- if (accepted)
+
+ if (accepted)
{
mDragAndDropTarget = TRUE;
*accept = ACCEPT_YES_MULTI;
diff --git a/indra/llui/llfolderviewitem.h b/indra/llui/llfolderviewitem.h
index e854a8342d..75ce58e5e0 100755
--- a/indra/llui/llfolderviewitem.h
+++ b/indra/llui/llfolderviewitem.h
@@ -59,7 +59,8 @@ public:
item_top_pad;
Optional creation_date;
- Optional allow_open;
+ Optional allow_wear;
+ Optional allow_drop;
Optional font_color;
Optional font_highlight_color;
@@ -121,7 +122,8 @@ protected:
mIsCurSelection,
mDragAndDropTarget,
mIsMouseOverTitle,
- mAllowOpen,
+ mAllowWear,
+ mAllowDrop,
mSelectPending;
LLUIColor mFontColor;
diff --git a/indra/llui/llfolderviewmodel.h b/indra/llui/llfolderviewmodel.h
index 6d3f770900..51d1302bf7 100755
--- a/indra/llui/llfolderviewmodel.h
+++ b/indra/llui/llfolderviewmodel.h
@@ -174,6 +174,8 @@ public:
virtual void openItem( void ) = 0;
virtual void closeItem( void ) = 0;
virtual void selectItem(void) = 0;
+
+ virtual BOOL isItemWearable() const { return FALSE; }
virtual BOOL isItemRenameable() const = 0;
virtual BOOL renameItem(const std::string& new_name) = 0;
@@ -187,7 +189,7 @@ public:
virtual BOOL isItemCopyable() const = 0;
virtual BOOL copyToClipboard() const = 0;
- virtual BOOL cutToClipboard() const = 0;
+ virtual BOOL cutToClipboard() = 0;
virtual BOOL isClipboardPasteable() const = 0;
virtual void pasteFromClipboard() = 0;
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 8f9a18c624..13e8e6b2d1 100755
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -378,6 +378,7 @@ set(viewer_SOURCE_FILES
llfloaterlagmeter.cpp
llfloaterland.cpp
llfloaterlandholdings.cpp
+ llfloatermarketplacelistings.cpp
llfloatermap.cpp
llfloatermediasettings.cpp
llfloatermemleak.cpp
@@ -1122,6 +1123,7 @@ set(viewer_HEADER_FILES
llfloaterland.h
llfloaterlandholdings.h
llfloatermap.h
+ llfloatermarketplacelistings.h
llfloatermediasettings.h
llfloatermemleak.h
llfloatermodelpreview.h
diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml
index 7d3dfc79d6..0edf2e3aee 100755
--- a/indra/newview/app_settings/commands.xml
+++ b/indra/newview/app_settings/commands.xml
@@ -124,6 +124,18 @@
tooltip_ref="Command_Marketplace_Tooltip"
execute_function="Avatar.OpenMarketplace"
/>
+
Value
0
- InventoryDisplayOutbox
-
InventoryInboxToggleState
+ InventoryOutboxDisplayBoth
+
InventoryOutboxLogging
InventoryOutboxMaxFolderDepth
+ InventoryOutboxMaxStockItemCount
+
InventorySortOrder
+ MarketplaceListingsSortOrder
+
InvertMouse
+ MarketplaceListingsLogging
+
MarketplaceURL