summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rw-r--r--indra/llcommon/CMakeLists.txt2
-rw-r--r--indra/llcommon/llassettype.cpp154
-rw-r--r--indra/llcommon/llassettype.h62
-rw-r--r--indra/llcommon/llfoldertype.cpp165
-rw-r--r--indra/llcommon/llfoldertype.h123
-rw-r--r--indra/llinventory/llinventory.cpp62
-rw-r--r--indra/llinventory/llinventory.h13
-rw-r--r--indra/llinventory/llinventorytype.cpp34
-rw-r--r--indra/llinventory/llinventorytype.h3
-rw-r--r--indra/llinventory/tests/inventorymisc_test.cpp4
-rw-r--r--indra/llmessage/lltransfersourceasset.cpp1
-rw-r--r--indra/llprimitive/llmediaentry.cpp1
-rw-r--r--indra/llprimitive/tests/llmediaentry_test.cpp116
-rw-r--r--indra/llui/llfloater.cpp6
-rw-r--r--indra/llui/llfloater.h3
-rw-r--r--indra/llui/llfloaterreg.cpp3
-rw-r--r--indra/newview/CMakeLists.txt10
-rw-r--r--indra/newview/app_settings/foldertypes.xml25
-rw-r--r--indra/newview/llagentpicksinfo.cpp3
-rw-r--r--indra/newview/llagentui.cpp5
-rw-r--r--indra/newview/llagentwearables.cpp17
-rw-r--r--indra/newview/llappearancemgr.cpp24
-rw-r--r--indra/newview/llassetuploadresponders.cpp2
-rw-r--r--indra/newview/llavataractions.cpp4
-rw-r--r--indra/newview/llavatarlist.cpp35
-rw-r--r--indra/newview/llavatarlist.h7
-rw-r--r--indra/newview/llchiclet.cpp38
-rw-r--r--indra/newview/llcolorswatch.cpp3
-rw-r--r--indra/newview/lldrawpoolbump.cpp2
-rw-r--r--indra/newview/lldrawpoolterrain.cpp4
-rw-r--r--indra/newview/lldrawpoolwater.cpp4
-rw-r--r--indra/newview/llface.cpp4
-rw-r--r--indra/newview/llfavoritesbar.cpp6
-rw-r--r--indra/newview/llfloateranimpreview.cpp2
-rw-r--r--indra/newview/llfloaterbulkpermission.cpp1
-rw-r--r--indra/newview/llfloaterbuy.cpp2
-rw-r--r--indra/newview/llfloaterbuycontents.cpp2
-rw-r--r--indra/newview/llfloaterinventory.cpp1
-rw-r--r--indra/newview/llfloaterinventory.h1
-rw-r--r--indra/newview/llfloaternamedesc.cpp2
-rw-r--r--indra/newview/llfloateropenobject.cpp4
-rw-r--r--indra/newview/llfloaterreporter.cpp6
-rw-r--r--indra/newview/llfloaterscriptdebug.cpp2
-rw-r--r--indra/newview/llfloatersnapshot.cpp2
-rw-r--r--indra/newview/llfloaterworldmap.cpp2
-rw-r--r--indra/newview/llfolderview.cpp5
-rw-r--r--indra/newview/llfolderview.h2
-rw-r--r--indra/newview/llfoldervieweventlistener.h3
-rw-r--r--indra/newview/llfolderviewitem.cpp10
-rw-r--r--indra/newview/llfriendcard.cpp8
-rw-r--r--indra/newview/llimfloater.cpp7
-rw-r--r--indra/newview/llinspectavatar.cpp19
-rw-r--r--indra/newview/llinventorybridge.cpp95
-rw-r--r--indra/newview/llinventorybridge.h8
-rw-r--r--indra/newview/llinventoryfunctions.cpp4
-rw-r--r--indra/newview/llinventorymodel.cpp63
-rw-r--r--indra/newview/llinventorymodel.h13
-rw-r--r--indra/newview/llinventorypanel.cpp30
-rw-r--r--indra/newview/llinventorypanel.h2
-rw-r--r--indra/newview/lllandmarkactions.cpp14
-rw-r--r--indra/newview/lllandmarkactions.h2
-rw-r--r--indra/newview/llnavigationbar.cpp7
-rw-r--r--indra/newview/llnavigationbar.h1
-rw-r--r--indra/newview/llnearbychat.cpp37
-rw-r--r--indra/newview/llnearbychat.h7
-rw-r--r--indra/newview/llnearbychatbar.cpp9
-rw-r--r--indra/newview/llnearbychatbar.h2
-rw-r--r--indra/newview/lloutputmonitorctrl.cpp12
-rw-r--r--indra/newview/lloutputmonitorctrl.h3
-rw-r--r--indra/newview/llpanelcontents.cpp3
-rw-r--r--indra/newview/llpanelimcontrolpanel.cpp35
-rw-r--r--indra/newview/llpanelimcontrolpanel.h3
-rw-r--r--indra/newview/llpanellandmarkinfo.cpp8
-rw-r--r--indra/newview/llpanellandmarkinfo.h85
-rw-r--r--indra/newview/llpanellandmarks.cpp33
-rw-r--r--indra/newview/llpanelmaininventory.cpp4
-rw-r--r--indra/newview/llpanelobjectinventory.cpp14
-rw-r--r--indra/newview/llpanelpeople.cpp67
-rw-r--r--indra/newview/llpanelpeople.h6
-rw-r--r--indra/newview/llpanelplaceinfo.cpp931
-rw-r--r--indra/newview/llpanelplaceinfo.h146
-rw-r--r--indra/newview/llpanelplaceprofile.cpp541
-rw-r--r--indra/newview/llpanelplaceprofile.h114
-rw-r--r--indra/newview/llpanelplaces.cpp231
-rw-r--r--indra/newview/llpanelplaces.h11
-rw-r--r--indra/newview/llpanelprofileview.h14
-rw-r--r--indra/newview/llparticipantlist.cpp110
-rw-r--r--indra/newview/llparticipantlist.h58
-rw-r--r--indra/newview/llpreview.cpp5
-rw-r--r--indra/newview/llpreviewgesture.cpp4
-rw-r--r--indra/newview/llpreviewtexture.cpp2
-rw-r--r--indra/newview/llresourcedata.h3
-rw-r--r--indra/newview/llselectmgr.cpp8
-rw-r--r--indra/newview/llspatialpartition.cpp2
-rw-r--r--indra/newview/llstartup.cpp6
-rw-r--r--indra/newview/lltexturectrl.cpp8
-rw-r--r--indra/newview/lltextureview.cpp2
-rw-r--r--indra/newview/lltoastgroupnotifypanel.cpp1
-rw-r--r--indra/newview/lltooldraganddrop.cpp21
-rw-r--r--indra/newview/llviewerassettype.cpp114
-rw-r--r--indra/newview/llviewerassettype.h54
-rw-r--r--indra/newview/llviewerfoldertype.cpp263
-rw-r--r--indra/newview/llviewerfoldertype.h57
-rw-r--r--indra/newview/llviewerinventory.cpp112
-rw-r--r--indra/newview/llviewerinventory.h4
-rw-r--r--indra/newview/llviewermenu.cpp13
-rw-r--r--indra/newview/llviewermenufile.cpp16
-rw-r--r--indra/newview/llviewermenufile.h6
-rw-r--r--indra/newview/llviewermessage.cpp42
-rw-r--r--indra/newview/llviewerobject.cpp6
-rw-r--r--indra/newview/llviewertexteditor.cpp20
-rw-r--r--indra/newview/llviewertexture.cpp14
-rw-r--r--indra/newview/llviewertexture.h15
-rw-r--r--indra/newview/llviewertexturelist.cpp12
-rw-r--r--indra/newview/llviewertexturelist.h8
-rw-r--r--indra/newview/llvoavatar.cpp2
-rw-r--r--indra/newview/llvoavatarself.cpp35
-rw-r--r--indra/newview/llvograss.cpp2
-rw-r--r--indra/newview/llvosky.cpp8
-rw-r--r--indra/newview/llvotree.cpp2
-rw-r--r--indra/newview/llvovolume.cpp4
-rw-r--r--indra/newview/llwearable.cpp4
-rw-r--r--indra/newview/llworldmap.cpp7
-rw-r--r--indra/newview/llworldmapview.cpp5
-rw-r--r--indra/newview/skins/default/textures/inv_folder_inbox.tgabin2085 -> 0 bytes
-rw-r--r--indra/newview/skins/default/xui/en/floater_im_session.xml22
-rw-r--r--indra/newview/skins/default/xui/en/inspect_avatar.xml12
-rw-r--r--indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml15
-rw-r--r--indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml7
-rw-r--r--indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml5
-rw-r--r--indra/newview/skins/default/xui/en/panel_bottomtray.xml4
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_control_panel.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_general.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml141
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_land_money.xml207
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_notices.xml243
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_roles.xml503
-rw-r--r--indra/newview/skins/default/xui/en/panel_im_control_panel.xml27
-rw-r--r--indra/newview/skins/default/xui/en/panel_landmark_info.xml257
-rw-r--r--indra/newview/skins/default/xui/en/panel_landmarks.xml18
-rw-r--r--indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_pick_info.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_place_profile.xml979
-rw-r--r--indra/newview/skins/default/xui/en/panel_places.xml18
-rw-r--r--indra/newview/skins/default/xui/en/panel_profile.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_profile_view.xml2
-rw-r--r--indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml10
-rw-r--r--indra/newview/skins/default/xui/en/widgets/talk_button.xml37
148 files changed, 2657 insertions, 4508 deletions
diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt
index f785698612..e7aaf3c984 100644
--- a/indra/llcommon/CMakeLists.txt
+++ b/indra/llcommon/CMakeLists.txt
@@ -50,7 +50,6 @@ set(llcommon_SOURCE_FILES
llfile.cpp
llfindlocale.cpp
llfixedbuffer.cpp
- llfoldertype.cpp
llformat.cpp
llframetimer.cpp
llheartbeat.cpp
@@ -151,7 +150,6 @@ set(llcommon_HEADER_FILES
llfile.h
llfindlocale.h
llfixedbuffer.h
- llfoldertype.h
llformat.h
llframetimer.h
llhash.h
diff --git a/indra/llcommon/llassettype.cpp b/indra/llcommon/llassettype.cpp
index 6d5b12d840..b2a92861cc 100644
--- a/indra/llcommon/llassettype.cpp
+++ b/indra/llcommon/llassettype.cpp
@@ -43,21 +43,30 @@
struct AssetEntry : public LLDictionaryEntry
{
AssetEntry(const char *desc_name,
- const char *type_name, // 8 character limit!
- const char *human_name, // for decoding to human readable form; put any and as many printable characters you want in each one
- bool can_link) // can you create a link to this type?
+ const char *type_name, // 8 character limit!
+ const char *human_name, // for decoding to human readable form; put any and as many printable characters you want in each one
+ const char *category_name, // used by llinventorymodel when creating new categories
+ EDragAndDropType dad_type,
+ bool can_link, // can you create a link to this type?
+ bool is_protected) // can the viewer change categories of this type?
:
LLDictionaryEntry(desc_name),
mTypeName(type_name),
mHumanName(human_name),
- mCanLink(can_link)
+ mCategoryName(category_name),
+ mDadType(dad_type),
+ mCanLink(can_link),
+ mIsProtected(is_protected)
{
llassert(strlen(mTypeName) <= 8);
}
const char *mTypeName;
const char *mHumanName;
+ const char *mCategoryName;
+ EDragAndDropType mDadType;
bool mCanLink;
+ bool mIsProtected;
};
class LLAssetDictionary : public LLSingleton<LLAssetDictionary>,
@@ -69,32 +78,48 @@ public:
LLAssetDictionary::LLAssetDictionary()
{
- // DESCRIPTION TYPE NAME HUMAN NAME CAN LINK?
- // |--------------------|-----------|-------------------|-----------|
- addEntry(LLAssetType::AT_TEXTURE, new AssetEntry("TEXTURE", "texture", "texture", FALSE));
- addEntry(LLAssetType::AT_SOUND, new AssetEntry("SOUND", "sound", "sound", FALSE));
- addEntry(LLAssetType::AT_CALLINGCARD, new AssetEntry("CALLINGCARD", "callcard", "calling card", FALSE));
- addEntry(LLAssetType::AT_LANDMARK, new AssetEntry("LANDMARK", "landmark", "landmark", FALSE));
- addEntry(LLAssetType::AT_SCRIPT, new AssetEntry("SCRIPT", "script", "legacy script", FALSE));
- addEntry(LLAssetType::AT_CLOTHING, new AssetEntry("CLOTHING", "clothing", "clothing", TRUE));
- addEntry(LLAssetType::AT_OBJECT, new AssetEntry("OBJECT", "object", "object", TRUE));
- addEntry(LLAssetType::AT_NOTECARD, new AssetEntry("NOTECARD", "notecard", "note card", FALSE));
- addEntry(LLAssetType::AT_CATEGORY, new AssetEntry("CATEGORY", "category", "folder", TRUE));
- addEntry(LLAssetType::AT_LSL_TEXT, new AssetEntry("LSL_TEXT", "lsltext", "lsl2 script", FALSE));
- addEntry(LLAssetType::AT_LSL_BYTECODE, new AssetEntry("LSL_BYTECODE", "lslbyte", "lsl bytecode", FALSE));
- addEntry(LLAssetType::AT_TEXTURE_TGA, new AssetEntry("TEXTURE_TGA", "txtr_tga", "tga texture", FALSE));
- addEntry(LLAssetType::AT_BODYPART, new AssetEntry("BODYPART", "bodypart", "body part", TRUE));
- addEntry(LLAssetType::AT_SOUND_WAV, new AssetEntry("SOUND_WAV", "snd_wav", "sound", FALSE));
- addEntry(LLAssetType::AT_IMAGE_TGA, new AssetEntry("IMAGE_TGA", "img_tga", "targa image", FALSE));
- addEntry(LLAssetType::AT_IMAGE_JPEG, new AssetEntry("IMAGE_JPEG", "jpeg", "jpeg image", FALSE));
- addEntry(LLAssetType::AT_ANIMATION, new AssetEntry("ANIMATION", "animatn", "animation", FALSE));
- addEntry(LLAssetType::AT_GESTURE, new AssetEntry("GESTURE", "gesture", "gesture", TRUE));
- addEntry(LLAssetType::AT_SIMSTATE, new AssetEntry("SIMSTATE", "simstate", "simstate", FALSE));
-
- addEntry(LLAssetType::AT_LINK, new AssetEntry("LINK", "link", "symbolic link", FALSE));
- addEntry(LLAssetType::AT_LINK_FOLDER, new AssetEntry("FOLDER_LINK", "link_f", "symbolic folder link", FALSE));
-
- addEntry(LLAssetType::AT_NONE, new AssetEntry("NONE", "-1", NULL, FALSE));
+ // DESCRIPTION TYPE NAME HUMAN NAME CATEGORY NAME DRAG&DROP CAN LINK? PROTECTED?
+ // |--------------------|-----------|-------------------|-------------------|---------------|-----------|-----------|
+ addEntry(LLAssetType::AT_TEXTURE, new AssetEntry("TEXTURE", "texture", "texture", "Textures", DAD_TEXTURE, TRUE, TRUE));
+ addEntry(LLAssetType::AT_SOUND, new AssetEntry("SOUND", "sound", "sound", "Sounds", DAD_SOUND, TRUE, TRUE));
+ addEntry(LLAssetType::AT_CALLINGCARD, new AssetEntry("CALLINGCARD", "callcard", "calling card", "Calling Cards", DAD_CALLINGCARD, TRUE, TRUE));
+ addEntry(LLAssetType::AT_LANDMARK, new AssetEntry("LANDMARK", "landmark", "landmark", "Landmarks", DAD_LANDMARK, TRUE, TRUE));
+ addEntry(LLAssetType::AT_SCRIPT, new AssetEntry("SCRIPT", "script", "legacy script", "Scripts", DAD_NONE, TRUE, TRUE));
+ addEntry(LLAssetType::AT_CLOTHING, new AssetEntry("CLOTHING", "clothing", "clothing", "Clothing", DAD_CLOTHING, TRUE, TRUE));
+ addEntry(LLAssetType::AT_OBJECT, new AssetEntry("OBJECT", "object", "object", "Objects", DAD_OBJECT, TRUE, TRUE));
+ addEntry(LLAssetType::AT_NOTECARD, new AssetEntry("NOTECARD", "notecard", "note card", "Notecards", DAD_NOTECARD, TRUE, TRUE));
+ addEntry(LLAssetType::AT_CATEGORY, new AssetEntry("CATEGORY", "category", "folder", "New Folder", DAD_CATEGORY, TRUE, TRUE));
+ addEntry(LLAssetType::AT_ROOT_CATEGORY, new AssetEntry("ROOT_CATEGORY", "root", "root", "Inventory", DAD_ROOT_CATEGORY, TRUE, TRUE));
+ addEntry(LLAssetType::AT_LSL_TEXT, new AssetEntry("LSL_TEXT", "lsltext", "lsl2 script", "Scripts", DAD_SCRIPT, TRUE, TRUE));
+ addEntry(LLAssetType::AT_LSL_BYTECODE, new AssetEntry("LSL_BYTECODE", "lslbyte", "lsl bytecode", "Scripts", DAD_NONE, TRUE, TRUE));
+ addEntry(LLAssetType::AT_TEXTURE_TGA, new AssetEntry("TEXTURE_TGA", "txtr_tga", "tga texture", "Uncompressed Images", DAD_NONE, TRUE, TRUE));
+ addEntry(LLAssetType::AT_BODYPART, new AssetEntry("BODYPART", "bodypart", "body part", "Body Parts", DAD_BODYPART, TRUE, TRUE));
+ addEntry(LLAssetType::AT_TRASH, new AssetEntry("TRASH", "trash", "trash", "Trash", DAD_NONE, FALSE, TRUE));
+ addEntry(LLAssetType::AT_SNAPSHOT_CATEGORY, new AssetEntry("SNAPSHOT_CATEGORY", "snapshot", "snapshot", "Photo Album", DAD_NONE, FALSE, TRUE));
+ addEntry(LLAssetType::AT_LOST_AND_FOUND, new AssetEntry("LOST_AND_FOUND", "lstndfnd", "lost and found", "Lost And Found", DAD_NONE, FALSE, TRUE));
+ addEntry(LLAssetType::AT_SOUND_WAV, new AssetEntry("SOUND_WAV", "snd_wav", "sound", "Uncompressed SoundS", DAD_NONE, TRUE, TRUE));
+ addEntry(LLAssetType::AT_IMAGE_TGA, new AssetEntry("IMAGE_TGA", "img_tga", "targa image", "Uncompressed Images", DAD_NONE, TRUE, TRUE));
+ addEntry(LLAssetType::AT_IMAGE_JPEG, new AssetEntry("IMAGE_JPEG", "jpeg", "jpeg image", "Uncompressed Images", DAD_NONE, TRUE, TRUE));
+ addEntry(LLAssetType::AT_ANIMATION, new AssetEntry("ANIMATION", "animatn", "animation", "Animations", DAD_ANIMATION, TRUE, TRUE));
+ addEntry(LLAssetType::AT_GESTURE, new AssetEntry("GESTURE", "gesture", "gesture", "Gestures", DAD_GESTURE, TRUE, TRUE));
+ addEntry(LLAssetType::AT_SIMSTATE, new AssetEntry("SIMSTATE", "simstate", "simstate", "New Folder", DAD_NONE, FALSE, TRUE));
+ addEntry(LLAssetType::AT_FAVORITE, new AssetEntry("FAVORITE", "favorite", "favorite", "favorite", DAD_NONE, FALSE, TRUE));
+
+ addEntry(LLAssetType::AT_LINK, new AssetEntry("LINK", "link", "symbolic link", "Link", DAD_LINK, FALSE, TRUE));
+ addEntry(LLAssetType::AT_LINK_FOLDER, new AssetEntry("FOLDER_LINK", "link_f", "symbolic folder link", "New Folder", DAD_LINK, FALSE, TRUE));
+
+ for (S32 ensemble_num = S32(LLAssetType::AT_FOLDER_ENSEMBLE_START);
+ ensemble_num <= S32(LLAssetType::AT_FOLDER_ENSEMBLE_END);
+ ensemble_num++)
+ {
+ addEntry(LLAssetType::EType(ensemble_num), new AssetEntry("ENSEMBLE", "ensemble", "ensemble", "New Folder", DAD_CATEGORY, FALSE, FALSE));
+ }
+
+ addEntry(LLAssetType::AT_CURRENT_OUTFIT, new AssetEntry("CURRENT", "current", "current outfit", "Current Look", DAD_CATEGORY, FALSE, TRUE));
+ addEntry(LLAssetType::AT_OUTFIT, new AssetEntry("OUTFIT", "outfit", "outfit", "New Look", DAD_CATEGORY, FALSE, FALSE));
+ addEntry(LLAssetType::AT_MY_OUTFITS, new AssetEntry("MY_OUTFITS", "my_otfts", "my outfits", "My Looks", DAD_CATEGORY, FALSE, TRUE));
+
+ addEntry(LLAssetType::AT_NONE, new AssetEntry("NONE", "-1", NULL, "New Folder", DAD_NONE, FALSE, FALSE));
};
// static
@@ -115,7 +140,8 @@ const std::string &LLAssetType::getDesc(LLAssetType::EType asset_type)
}
else
{
- return badLookup();
+ static const std::string error_string = "BAD TYPE";
+ return error_string;
}
}
@@ -130,7 +156,7 @@ const char *LLAssetType::lookup(LLAssetType::EType asset_type)
}
else
{
- return badLookup().c_str();
+ return "-1";
}
}
@@ -140,7 +166,6 @@ LLAssetType::EType LLAssetType::lookup(const char* name)
return lookup(ll_safe_string(name));
}
-// static
LLAssetType::EType LLAssetType::lookup(const std::string& type_name)
{
const LLAssetDictionary *dict = LLAssetDictionary::getInstance();
@@ -168,7 +193,7 @@ const char *LLAssetType::lookupHumanReadable(LLAssetType::EType asset_type)
}
else
{
- return badLookup().c_str();
+ return NULL;
}
}
@@ -178,7 +203,6 @@ LLAssetType::EType LLAssetType::lookupHumanReadable(const char* name)
return lookupHumanReadable(ll_safe_string(name));
}
-// static
LLAssetType::EType LLAssetType::lookupHumanReadable(const std::string& readable_name)
{
const LLAssetDictionary *dict = LLAssetDictionary::getInstance();
@@ -196,6 +220,32 @@ LLAssetType::EType LLAssetType::lookupHumanReadable(const std::string& readable_
}
// static
+const char *LLAssetType::lookupCategoryName(LLAssetType::EType asset_type)
+{
+ const LLAssetDictionary *dict = LLAssetDictionary::getInstance();
+ const AssetEntry *entry = dict->lookup(asset_type);
+ if (entry)
+ {
+ return entry->mCategoryName;
+ }
+ else
+ {
+ return "New Folder";
+ }
+}
+
+// static
+EDragAndDropType LLAssetType::lookupDragAndDropType(EType asset_type)
+{
+ const LLAssetDictionary *dict = LLAssetDictionary::getInstance();
+ const AssetEntry *entry = dict->lookup(asset_type);
+ if (entry)
+ return entry->mDadType;
+ else
+ return DAD_NONE;
+}
+
+// static
bool LLAssetType::lookupCanLink(EType asset_type)
{
const LLAssetDictionary *dict = LLAssetDictionary::getInstance();
@@ -219,9 +269,37 @@ bool LLAssetType::lookupIsLinkType(EType asset_type)
}
// static
-const std::string &LLAssetType::badLookup()
+// Only ensembles and plain folders aren't protected. "Protected" means
+// you can't change certain properties such as their type.
+bool LLAssetType::lookupIsProtectedCategoryType(EType asset_type)
{
- static const std::string sBadLookup = "llassettype_bad_lookup";
- return sBadLookup;
+ const LLAssetDictionary *dict = LLAssetDictionary::getInstance();
+ const AssetEntry *entry = dict->lookup(asset_type);
+ if (entry)
+ {
+ return entry->mIsProtected;
+ }
+ return true;
+}
+// static
+bool LLAssetType::lookupIsEnsembleCategoryType(EType asset_type)
+{
+ return (asset_type >= AT_FOLDER_ENSEMBLE_START &&
+ asset_type <= AT_FOLDER_ENSEMBLE_END);
+}
+
+
+// static. Generate a good default description
+void LLAssetType::generateDescriptionFor(LLAssetType::EType asset_type,
+ std::string& description)
+{
+ const S32 BUF_SIZE = 30;
+ char time_str[BUF_SIZE]; /* Flawfinder: ignore */
+ time_t now;
+ time(&now);
+ memset(time_str, '\0', BUF_SIZE);
+ strftime(time_str, BUF_SIZE - 1, "%Y-%m-%d %H:%M:%S ", localtime(&now));
+ description.assign(time_str);
+ description.append(LLAssetType::lookupHumanReadable(asset_type));
}
diff --git a/indra/llcommon/llassettype.h b/indra/llcommon/llassettype.h
index ec2290d30e..3c760e4d91 100644
--- a/indra/llcommon/llassettype.h
+++ b/indra/llcommon/llassettype.h
@@ -94,6 +94,18 @@ public:
AT_BODYPART = 13,
// A collection of textures and parameters that can be worn by an avatar.
+ AT_TRASH = 14,
+ // Only to be used as a marker for a category preferred type.
+ // Using this, we can throw things in the trash before completely deleting.
+
+ AT_SNAPSHOT_CATEGORY = 15,
+ // A marker for a folder meant for snapshots.
+ // No actual assets will be snapshots, though if there were, you
+ // could interpret them as textures.
+
+ AT_LOST_AND_FOUND = 16,
+ // Used to stuff lost&found items into.
+
AT_SOUND_WAV = 17,
// Uncompressed sound.
@@ -114,22 +126,38 @@ public:
AT_SIMSTATE = 22,
// Simstate file.
+ AT_FAVORITE = 23,
+ // favorite items
+
AT_LINK = 24,
// Inventory symbolic link
AT_LINK_FOLDER = 25,
// Inventory folder link
+
+ AT_FOLDER_ENSEMBLE_START = 26,
+ AT_FOLDER_ENSEMBLE_END = 45,
+ // This range is reserved for special clothing folder types.
+
+ AT_CURRENT_OUTFIT = 46,
+ // Current outfit
+
+ AT_OUTFIT = 47,
+ // Predefined outfit ("look")
+
+ AT_MY_OUTFITS = 48,
+ // Folder that holds your outfits.
+
- AT_COUNT = 26,
+ AT_COUNT = 49,
// +*********************************************************+
// | TO ADD AN ELEMENT TO THIS ENUM: |
// +*********************************************************+
// | 1. INSERT BEFORE AT_COUNT |
// | 2. INCREMENT AT_COUNT BY 1 |
- // | 3. ADD TO LLAssetType.cpp |
- // | 4. ADD TO LLViewerAssetType.cpp |
- // | 5. ADD TO DEFAULT_ASSET_FOR_INV in LLInventoryType.cpp |
+ // | 3. ADD TO LLAssetDictionary in LLAssetType.cpp |
+ // | 3. ADD TO DEFAULT_ASSET_FOR_INV in LLInventoryType.cpp |
// +*********************************************************+
AT_NONE = -1
@@ -145,17 +173,33 @@ public:
static EType lookupHumanReadable(const std::string& readable_name);
static const char* lookupHumanReadable(EType asset_type);
+ // Generate a good default description. You may want to add a verb
+ // or agent name after this depending on your application.
+ static void generateDescriptionFor(LLAssetType::EType asset_type,
+ std::string& description);
+
static EType getType(const std::string& desc_name);
static const std::string& getDesc(EType asset_type);
+ static EDragAndDropType lookupDragAndDropType(EType asset_type);
static bool lookupCanLink(EType asset_type);
static bool lookupIsLinkType(EType asset_type);
- static const std::string& badLookup(); // error string when a lookup fails
-
-protected:
- LLAssetType() {}
- ~LLAssetType() {}
+ static const char* lookupCategoryName(EType asset_type);
+ static bool lookupIsProtectedCategoryType(EType asset_type);
+ static bool lookupIsEnsembleCategoryType(EType asset_type);
+
+ /* TODO: Change return types from "const char *" to "const std::string &".
+ This is fairly straightforward, but requires changing some calls to use .c_str().
+ e.g.:
+ - fprintf(fp, "\t\ttype\t%s\n", LLAssetType::lookup(mType));
+ + fprintf(fp, "\t\ttype\t%s\n", LLAssetType::lookup(mType).c_str());
+ */
+
+private:
+ // don't instantiate or derive one of these objects
+ LLAssetType( void ) {}
+ ~LLAssetType( void ) {}
};
#endif // LL_LLASSETTYPE_H
diff --git a/indra/llcommon/llfoldertype.cpp b/indra/llcommon/llfoldertype.cpp
deleted file mode 100644
index 9107b11597..0000000000
--- a/indra/llcommon/llfoldertype.cpp
+++ /dev/null
@@ -1,165 +0,0 @@
-/**
- * @file llfoldertype.cpp
- * @brief Implementatino of LLFolderType functionality.
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#include "linden_common.h"
-
-#include "llfoldertype.h"
-#include "lldictionary.h"
-#include "llmemory.h"
-#include "llsingleton.h"
-
-///----------------------------------------------------------------------------
-/// Class LLFolderType
-///----------------------------------------------------------------------------
-struct FolderEntry : public LLDictionaryEntry
-{
- FolderEntry(const std::string &type_name, // 8 character limit!
- bool is_protected) // can the viewer change categories of this type?
- :
- LLDictionaryEntry(type_name),
- mIsProtected(is_protected)
- {
- llassert(type_name.length() <= 8);
- }
-
- const bool mIsProtected;
-};
-
-class LLFolderDictionary : public LLSingleton<LLFolderDictionary>,
- public LLDictionary<LLFolderType::EType, FolderEntry>
-{
-public:
- LLFolderDictionary();
-};
-
-LLFolderDictionary::LLFolderDictionary()
-{
- // TYPE NAME PROTECTED
- // |-----------|---------|
- addEntry(LLFolderType::FT_TEXTURE, new FolderEntry("texture", TRUE));
- addEntry(LLFolderType::FT_SOUND, new FolderEntry("sound", TRUE));
- addEntry(LLFolderType::FT_CALLINGCARD, new FolderEntry("callcard", TRUE));
- addEntry(LLFolderType::FT_LANDMARK, new FolderEntry("landmark", TRUE));
- addEntry(LLFolderType::FT_CLOTHING, new FolderEntry("clothing", TRUE));
- addEntry(LLFolderType::FT_OBJECT, new FolderEntry("object", TRUE));
- addEntry(LLFolderType::FT_NOTECARD, new FolderEntry("notecard", TRUE));
- addEntry(LLFolderType::FT_CATEGORY, new FolderEntry("category", TRUE));
- addEntry(LLFolderType::FT_ROOT_CATEGORY, new FolderEntry("root", TRUE));
- addEntry(LLFolderType::FT_LSL_TEXT, new FolderEntry("lsltext", TRUE));
- addEntry(LLFolderType::FT_BODYPART, new FolderEntry("bodypart", TRUE));
- addEntry(LLFolderType::FT_TRASH, new FolderEntry("trash", TRUE));
- addEntry(LLFolderType::FT_SNAPSHOT_CATEGORY, new FolderEntry("snapshot", TRUE));
- addEntry(LLFolderType::FT_LOST_AND_FOUND, new FolderEntry("lstndfnd", TRUE));
- addEntry(LLFolderType::FT_ANIMATION, new FolderEntry("animatn", TRUE));
- addEntry(LLFolderType::FT_GESTURE, new FolderEntry("gesture", TRUE));
- addEntry(LLFolderType::FT_FAVORITE, new FolderEntry("favorite", TRUE));
-
- for (S32 ensemble_num = S32(LLFolderType::FT_ENSEMBLE_START); ensemble_num <= S32(LLFolderType::FT_ENSEMBLE_END); ensemble_num++)
- {
- addEntry(LLFolderType::EType(ensemble_num), new FolderEntry("ensemble", FALSE));
- }
-
- addEntry(LLFolderType::FT_CURRENT_OUTFIT, new FolderEntry("current", TRUE));
- addEntry(LLFolderType::FT_OUTFIT, new FolderEntry("outfit", FALSE));
- addEntry(LLFolderType::FT_MY_OUTFITS, new FolderEntry("my_otfts", TRUE));
- addEntry(LLFolderType::FT_INBOX, new FolderEntry("inbox", TRUE));
-
- addEntry(LLFolderType::FT_NONE, new FolderEntry("-1", FALSE));
-};
-
-// static
-LLFolderType::EType LLFolderType::lookup(const std::string& name)
-{
- return LLFolderDictionary::getInstance()->lookup(name);
-}
-
-// static
-const std::string &LLFolderType::lookup(LLFolderType::EType folder_type)
-{
- const FolderEntry *entry = LLFolderDictionary::getInstance()->lookup(folder_type);
- if (entry)
- {
- return entry->mName;
- }
- else
- {
- return badLookup();
- }
-}
-
-// static
-// Only ensembles and plain folders aren't protected. "Protected" means
-// you can't change certain properties such as their type.
-bool LLFolderType::lookupIsProtectedType(EType folder_type)
-{
- const LLFolderDictionary *dict = LLFolderDictionary::getInstance();
- const FolderEntry *entry = dict->lookup(folder_type);
- if (entry)
- {
- return entry->mIsProtected;
- }
- return true;
-}
-
-// static
-bool LLFolderType::lookupIsEnsembleType(EType folder_type)
-{
- return (folder_type >= FT_ENSEMBLE_START &&
- folder_type <= FT_ENSEMBLE_END);
-}
-
-// static
-LLAssetType::EType LLFolderType::folderTypeToAssetType(LLFolderType::EType folder_type)
-{
- if (LLAssetType::lookup(LLAssetType::EType(folder_type)) == LLAssetType::badLookup())
- {
- llwarns << "Converting to unknown asset type " << folder_type << llendl;
- }
- return (LLAssetType::EType)folder_type;
-}
-
-// static
-LLFolderType::EType LLFolderType::assetTypeToFolderType(LLAssetType::EType asset_type)
-{
- if (LLFolderType::lookup(LLFolderType::EType(asset_type)) == LLFolderType::badLookup())
- {
- llwarns << "Converting to unknown folder type " << asset_type << llendl;
- }
- return (LLFolderType::EType)asset_type;
-}
-
-// static
-const std::string &LLFolderType::badLookup()
-{
- static const std::string sBadLookup = "llfoldertype_bad_lookup";
- return sBadLookup;
-}
diff --git a/indra/llcommon/llfoldertype.h b/indra/llcommon/llfoldertype.h
deleted file mode 100644
index 5374ffd829..0000000000
--- a/indra/llcommon/llfoldertype.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/**
- * @file llfoldertype.h
- * @brief Declaration of LLFolderType.
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLFOLDERTYPE_H
-#define LL_LLFOLDERTYPE_H
-
-#include <string>
-#include "llassettype.h"
-
-// This class handles folder types (similar to assettype, except for folders)
-// and operations on those.
-class LL_COMMON_API LLFolderType
-{
-public:
- // ! BACKWARDS COMPATIBILITY ! Folder type enums must match asset type enums.
- enum EType
- {
- FT_TEXTURE = 0,
-
- FT_SOUND = 1,
-
- FT_CALLINGCARD = 2,
-
- FT_LANDMARK = 3,
-
- // FT_SCRIPT = 4,
-
- FT_CLOTHING = 5,
-
- FT_OBJECT = 6,
-
- FT_NOTECARD = 7,
-
- FT_CATEGORY = 8,
-
- FT_ROOT_CATEGORY = 9,
-
- FT_LSL_TEXT = 10,
-
- // FT_LSL_BYTECODE = 11,
- // FT_TEXTURE_TGA = 12,
-
- FT_BODYPART = 13,
-
- FT_TRASH = 14,
-
- FT_SNAPSHOT_CATEGORY = 15,
-
- FT_LOST_AND_FOUND = 16,
-
- // FT_SOUND_WAV = 17,
- // FT_IMAGE_TGA = 18,
- // FT_IMAGE_JPEG = 19,
-
- FT_ANIMATION = 20,
-
- FT_GESTURE = 21,
-
- // FT_SIMSTATE = 22,
-
- FT_FAVORITE = 23,
-
- FT_ENSEMBLE_START = 26,
- FT_ENSEMBLE_END = 45,
- // This range is reserved for special clothing folder types.
-
- FT_CURRENT_OUTFIT = 46,
- FT_OUTFIT = 47,
- FT_MY_OUTFITS = 48,
-
- FT_INBOX = 49,
-
- FT_COUNT = 50,
-
- FT_NONE = -1
- };
-
- static EType lookup(const std::string& type_name);
- static const std::string& lookup(EType folder_type);
-
- static bool lookupIsProtectedType(EType folder_type);
- static bool lookupIsEnsembleType(EType folder_type);
-
- static LLAssetType::EType folderTypeToAssetType(LLFolderType::EType folder_type);
- static LLFolderType::EType assetTypeToFolderType(LLAssetType::EType asset_type);
-
- static const std::string& badLookup(); // error string when a lookup fails
-
-protected:
- LLFolderType() {}
- ~LLFolderType() {}
-};
-
-#endif // LL_LLFOLDERTYPE_H
diff --git a/indra/llinventory/llinventory.cpp b/indra/llinventory/llinventory.cpp
index d665deb605..5d3fbe5128 100644
--- a/indra/llinventory/llinventory.cpp
+++ b/indra/llinventory/llinventory.cpp
@@ -1324,7 +1324,7 @@ BOOL item_date_sort( LLInventoryItem* a, LLInventoryItem* b )
LLInventoryCategory::LLInventoryCategory(
const LLUUID& uuid,
const LLUUID& parent_uuid,
- LLFolderType::EType preferred_type,
+ LLAssetType::EType preferred_type,
const std::string& name) :
LLInventoryObject(uuid, parent_uuid, LLAssetType::AT_CATEGORY, name),
mPreferredType(preferred_type)
@@ -1332,7 +1332,7 @@ LLInventoryCategory::LLInventoryCategory(
}
LLInventoryCategory::LLInventoryCategory() :
- mPreferredType(LLFolderType::FT_NONE)
+ mPreferredType(LLAssetType::AT_NONE)
{
mType = LLAssetType::AT_CATEGORY;
}
@@ -1354,12 +1354,12 @@ void LLInventoryCategory::copyCategory(const LLInventoryCategory* other)
mPreferredType = other->mPreferredType;
}
-LLFolderType::EType LLInventoryCategory::getPreferredType() const
+LLAssetType::EType LLInventoryCategory::getPreferredType() const
{
return mPreferredType;
}
-void LLInventoryCategory::setPreferredType(LLFolderType::EType type)
+void LLInventoryCategory::setPreferredType(LLAssetType::EType type)
{
mPreferredType = type;
}
@@ -1405,13 +1405,13 @@ bool LLInventoryCategory::fromLLSD(const LLSD& sd)
if (sd.has(w))
{
S8 type = (U8)sd[w].asInteger();
- mPreferredType = static_cast<LLFolderType::EType>(type);
+ mPreferredType = static_cast<LLAssetType::EType>(type);
}
w = INV_ASSET_TYPE_LABEL_WS;
if (sd.has(w))
{
S8 type = (U8)sd[w].asInteger();
- mPreferredType = static_cast<LLFolderType::EType>(type);
+ mPreferredType = static_cast<LLAssetType::EType>(type);
}
w = INV_NAME_LABEL;
@@ -1433,7 +1433,7 @@ void LLInventoryCategory::unpackMessage(LLMessageSystem* msg,
msg->getUUIDFast(block, _PREHASH_ParentID, mParentUUID, block_num);
S8 type;
msg->getS8Fast(block, _PREHASH_Type, type, block_num);
- mPreferredType = static_cast<LLFolderType::EType>(type);
+ mPreferredType = static_cast<LLAssetType::EType>(type);
msg->getStringFast(block, _PREHASH_Name, mName, block_num);
LLStringUtil::replaceNonstandardASCII(mName, ' ');
}
@@ -1482,7 +1482,7 @@ BOOL LLInventoryCategory::importFile(LLFILE* fp)
}
else if(0 == strcmp("pref_type", keyword))
{
- mPreferredType = LLFolderType::lookup(valuestr);
+ mPreferredType = LLAssetType::lookup(valuestr);
}
else if(0 == strcmp("name", keyword))
{
@@ -1514,7 +1514,7 @@ BOOL LLInventoryCategory::exportFile(LLFILE* fp, BOOL) const
mParentUUID.toString(uuid_str);
fprintf(fp, "\t\tparent_id\t%s\n", uuid_str.c_str());
fprintf(fp, "\t\ttype\t%s\n", LLAssetType::lookup(mType));
- fprintf(fp, "\t\tpref_type\t%s\n", LLFolderType::lookup(mPreferredType).c_str());
+ fprintf(fp, "\t\tpref_type\t%s\n", LLAssetType::lookup(mPreferredType));
fprintf(fp, "\t\tname\t%s|\n", mName.c_str());
fprintf(fp,"\t}\n");
return TRUE;
@@ -1561,7 +1561,7 @@ BOOL LLInventoryCategory::importLegacyStream(std::istream& input_stream)
}
else if(0 == strcmp("pref_type", keyword))
{
- mPreferredType = LLFolderType::lookup(valuestr);
+ mPreferredType = LLAssetType::lookup(valuestr);
}
else if(0 == strcmp("name", keyword))
{
@@ -1593,7 +1593,7 @@ BOOL LLInventoryCategory::exportLegacyStream(std::ostream& output_stream, BOOL)
mParentUUID.toString(uuid_str);
output_stream << "\t\tparent_id\t" << uuid_str << "\n";
output_stream << "\t\ttype\t" << LLAssetType::lookup(mType) << "\n";
- output_stream << "\t\tpref_type\t" << LLFolderType::lookup(mPreferredType) << "\n";
+ output_stream << "\t\tpref_type\t" << LLAssetType::lookup(mPreferredType) << "\n";
output_stream << "\t\tname\t" << mName.c_str() << "|\n";
output_stream << "\t}\n";
return TRUE;
@@ -1629,6 +1629,38 @@ LLSD ll_create_sd_from_inventory_item(LLPointer<LLInventoryItem> item)
return rv;
}
+/* deprecated, use LLInventoryItem::fromLLSD() instead
+LLPointer<LLInventoryItem> ll_create_item_from_sd(const LLSD& sd_item)
+{
+ LLPointer<LLInventoryItem> rv = new LLInventoryItem;
+ rv->setUUID(sd_item[INV_ITEM_ID_LABEL].asUUID());
+ rv->setParent(sd_item[INV_PARENT_ID_LABEL].asUUID());
+ rv->rename(sd_item[INV_NAME_LABEL].asString());
+ rv->setType(
+ LLAssetType::lookup(sd_item[INV_ASSET_TYPE_LABEL].asString()));
+ if (sd_item.has("shadow_id"))
+ {
+ LLUUID asset_id = sd_item["shadow_id"];
+ LLXORCipher cipher(MAGIC_ID.mData, UUID_BYTES);
+ cipher.decrypt(asset_id.mData, UUID_BYTES);
+ rv->setAssetUUID(asset_id);
+ }
+ if (sd_item.has(INV_ASSET_ID_LABEL))
+ {
+ rv->setAssetUUID(sd_item[INV_ASSET_ID_LABEL].asUUID());
+ }
+ rv->setDescription(sd_item[INV_DESC_LABEL].asString());
+ rv->setSaleInfo(ll_sale_info_from_sd(sd_item[INV_SALE_INFO_LABEL]));
+ rv->setPermissions(ll_permissions_from_sd(sd_item[INV_PERMISSIONS_LABEL]));
+ rv->setInventoryType(
+ LLInventoryType::lookup(
+ sd_item[INV_INVENTORY_TYPE_LABEL].asString()));
+ rv->setFlags((U32)(sd_item[INV_FLAGS_LABEL].asInteger()));
+ rv->setCreationDate(sd_item[INV_CREATION_DATE_LABEL].asInteger());
+ return rv;
+}
+*/
+
LLSD ll_create_sd_from_inventory_category(LLPointer<LLInventoryCategory> cat)
{
LLSD rv;
@@ -1643,10 +1675,10 @@ LLSD ll_create_sd_from_inventory_category(LLPointer<LLInventoryCategory> cat)
rv[INV_PARENT_ID_LABEL] = cat->getParentUUID();
rv[INV_NAME_LABEL] = cat->getName();
rv[INV_ASSET_TYPE_LABEL] = LLAssetType::lookup(cat->getType());
- if(LLFolderType::lookupIsProtectedType(cat->getPreferredType()))
+ if(LLAssetType::lookupIsProtectedCategoryType(cat->getPreferredType()))
{
rv[INV_PREFERRED_TYPE_LABEL] =
- LLFolderType::lookup(cat->getPreferredType()).c_str();
+ LLAssetType::lookup(cat->getPreferredType());
}
return rv;
}
@@ -1660,7 +1692,7 @@ LLPointer<LLInventoryCategory> ll_create_category_from_sd(const LLSD& sd_cat)
rv->setType(
LLAssetType::lookup(sd_cat[INV_ASSET_TYPE_LABEL].asString()));
rv->setPreferredType(
- LLFolderType::lookup(
- sd_cat[INV_PREFERRED_TYPE_LABEL].asString()));
+ LLAssetType::lookup(
+ sd_cat[INV_PREFERRED_TYPE_LABEL].asString()));
return rv;
}
diff --git a/indra/llinventory/llinventory.h b/indra/llinventory/llinventory.h
index 3de9d14f54..bd581e860f 100644
--- a/indra/llinventory/llinventory.h
+++ b/indra/llinventory/llinventory.h
@@ -37,7 +37,6 @@
#include "llassetstorage.h"
#include "lldarray.h"
-#include "llfoldertype.h"
#include "llinventorytype.h"
#include "llmemtype.h"
#include "llpermissions.h"
@@ -322,15 +321,15 @@ protected:
public:
MEM_TYPE_NEW(LLMemType::MTYPE_INVENTORY);
LLInventoryCategory(const LLUUID& uuid, const LLUUID& parent_uuid,
- LLFolderType::EType preferred_type,
+ LLAssetType::EType preferred_type,
const std::string& name);
LLInventoryCategory();
LLInventoryCategory(const LLInventoryCategory* other);
void copyCategory(const LLInventoryCategory* other); // LLRefCount requires custom copy
// accessors and mutators
- LLFolderType::EType getPreferredType() const;
- void setPreferredType(LLFolderType::EType type);
+ LLAssetType::EType getPreferredType() const;
+ void setPreferredType(LLAssetType::EType type);
// For messaging system support
virtual void packMessage(LLMessageSystem* msg) const;
virtual void unpackMessage(LLMessageSystem* msg, const char* block, S32 block_num = 0);
@@ -346,8 +345,10 @@ public:
virtual BOOL exportLegacyStream(std::ostream& output_stream, BOOL include_asset_key = TRUE) const;
protected:
- // May be the type that this category was "meant" to hold (although it may hold any type).
- LLFolderType::EType mPreferredType;
+ // The type of asset that this category was "meant" to hold
+ // (although it may in fact hold any type).
+ LLAssetType::EType mPreferredType;
+
};
diff --git a/indra/llinventory/llinventorytype.cpp b/indra/llinventory/llinventorytype.cpp
index 0e71c0d12d..a445466b26 100644
--- a/indra/llinventory/llinventorytype.cpp
+++ b/indra/llinventory/llinventorytype.cpp
@@ -79,16 +79,24 @@ LLInventoryDictionary::LLInventoryDictionary()
addEntry(LLInventoryType::IT_SOUND, new InventoryEntry("sound", "sound", 1, LLAssetType::AT_SOUND));
addEntry(LLInventoryType::IT_CALLINGCARD, new InventoryEntry("callcard", "calling card", 1, LLAssetType::AT_CALLINGCARD));
addEntry(LLInventoryType::IT_LANDMARK, new InventoryEntry("landmark", "landmark", 1, LLAssetType::AT_LANDMARK));
+ //addEntry(LLInventoryType::IT_SCRIPT, new InventoryEntry(NULL,NULL));
+ //addEntry(LLInventoryType::IT_CLOTHING, new InventoryEntry(NULL,NULL));
addEntry(LLInventoryType::IT_OBJECT, new InventoryEntry("object", "object", 1, LLAssetType::AT_OBJECT));
addEntry(LLInventoryType::IT_NOTECARD, new InventoryEntry("notecard", "note card", 1, LLAssetType::AT_NOTECARD));
addEntry(LLInventoryType::IT_CATEGORY, new InventoryEntry("category", "folder" ));
addEntry(LLInventoryType::IT_ROOT_CATEGORY, new InventoryEntry("root", "root" ));
addEntry(LLInventoryType::IT_LSL, new InventoryEntry("script", "script", 2, LLAssetType::AT_LSL_TEXT, LLAssetType::AT_LSL_BYTECODE));
+ //addEntry(LLInventoryType::IT_LSL_BYTECODE, new InventoryEntry(NULL,NULL));
+ //addEntry(LLInventoryType::IT_TEXTURE_TGA, new InventoryEntry(NULL,NULL));
+ //addEntry(LLInventoryType::IT_BODYPART, new InventoryEntry(NULL,NULL));
+ //addEntry(LLInventoryType::IT_TRASH, new InventoryEntry(NULL,NULL));
addEntry(LLInventoryType::IT_SNAPSHOT, new InventoryEntry("snapshot", "snapshot", 1, LLAssetType::AT_TEXTURE));
+ //addEntry(LLInventoryType::IT_LOST_AND_FOUND, new InventoryEntry(NULL,NULL, ));
addEntry(LLInventoryType::IT_ATTACHMENT, new InventoryEntry("attach", "attachment", 1, LLAssetType::AT_OBJECT));
addEntry(LLInventoryType::IT_WEARABLE, new InventoryEntry("wearable", "wearable", 2, LLAssetType::AT_CLOTHING, LLAssetType::AT_BODYPART));
addEntry(LLInventoryType::IT_ANIMATION, new InventoryEntry("animation", "animation", 1, LLAssetType::AT_ANIMATION));
addEntry(LLInventoryType::IT_GESTURE, new InventoryEntry("gesture", "gesture", 1, LLAssetType::AT_GESTURE));
+ addEntry(LLInventoryType::IT_FAVORITE, new InventoryEntry("favorite", "favorite", 1, LLAssetType::AT_FAVORITE));
}
@@ -120,9 +128,35 @@ DEFAULT_ASSET_FOR_INV_TYPE[LLAssetType::AT_COUNT] =
LLInventoryType::IT_ANIMATION, // AT_ANIMATION
LLInventoryType::IT_GESTURE, // AT_GESTURE
LLInventoryType::IT_NONE, // AT_SIMSTATE
+ LLInventoryType::IT_FAVORITE, // AT_FAVORITE
LLInventoryType::IT_NONE, // AT_LINK
LLInventoryType::IT_NONE, // AT_LINK_FOLDER
+
+ LLInventoryType::IT_CATEGORY, // AT_ENSEMBLE
+ LLInventoryType::IT_CATEGORY, // AT_ENSEMBLE
+ LLInventoryType::IT_CATEGORY, // AT_ENSEMBLE
+ LLInventoryType::IT_CATEGORY, // AT_ENSEMBLE
+ LLInventoryType::IT_CATEGORY, // AT_ENSEMBLE
+ LLInventoryType::IT_CATEGORY, // AT_ENSEMBLE
+ LLInventoryType::IT_CATEGORY, // AT_ENSEMBLE
+ LLInventoryType::IT_CATEGORY, // AT_ENSEMBLE
+ LLInventoryType::IT_CATEGORY, // AT_ENSEMBLE
+ LLInventoryType::IT_CATEGORY, // AT_ENSEMBLE
+ LLInventoryType::IT_CATEGORY, // AT_ENSEMBLE
+ LLInventoryType::IT_CATEGORY, // AT_ENSEMBLE
+ LLInventoryType::IT_CATEGORY, // AT_ENSEMBLE
+ LLInventoryType::IT_CATEGORY, // AT_ENSEMBLE
+ LLInventoryType::IT_CATEGORY, // AT_ENSEMBLE
+ LLInventoryType::IT_CATEGORY, // AT_ENSEMBLE
+ LLInventoryType::IT_CATEGORY, // AT_ENSEMBLE
+ LLInventoryType::IT_CATEGORY, // AT_ENSEMBLE
+ LLInventoryType::IT_CATEGORY, // AT_ENSEMBLE
+ LLInventoryType::IT_CATEGORY, // AT_ENSEMBLE
+
+ LLInventoryType::IT_CATEGORY, // AT_CURRENT_OUTFIT
+ LLInventoryType::IT_CATEGORY, // AT_OUTFIT
+ LLInventoryType::IT_CATEGORY, // AT_MY_OUTFITS
};
// static
diff --git a/indra/llinventory/llinventorytype.h b/indra/llinventory/llinventorytype.h
index e515b8a304..14b28bfe4b 100644
--- a/indra/llinventory/llinventorytype.h
+++ b/indra/llinventory/llinventorytype.h
@@ -67,7 +67,8 @@ public:
IT_WEARABLE = 18,
IT_ANIMATION = 19,
IT_GESTURE = 20,
- IT_COUNT = 21,
+ IT_FAVORITE = 21,
+ IT_COUNT = 22,
IT_NONE = -1
};
diff --git a/indra/llinventory/tests/inventorymisc_test.cpp b/indra/llinventory/tests/inventorymisc_test.cpp
index c797a70c50..770594dc9d 100644
--- a/indra/llinventory/tests/inventorymisc_test.cpp
+++ b/indra/llinventory/tests/inventorymisc_test.cpp
@@ -94,7 +94,7 @@ LLPointer<LLInventoryCategory> create_random_inventory_cat()
LLPointer<LLInventoryCategory> cat = new LLInventoryCategory(
item_id,
parent_id,
- LLFolderType::FT_NONE,
+ LLAssetType::AT_NONE,
std::string("Sample category"));
return cat;
}
@@ -452,7 +452,7 @@ namespace tut
ensure_equals("4.type::getType() failed", dst->getType(), src->getType());
ensure_equals("5.preferred type::getPreferredType() failed", dst->getPreferredType(), src->getPreferredType());
- src->setPreferredType( LLFolderType::FT_TEXTURE);
+ src->setPreferredType( LLAssetType::AT_TEXTURE);
sd = ll_create_sd_from_inventory_category(src);
dst = ll_create_category_from_sd(sd);
ensure_equals("6.preferred type::getPreferredType() failed", dst->getPreferredType(), src->getPreferredType());
diff --git a/indra/llmessage/lltransfersourceasset.cpp b/indra/llmessage/lltransfersourceasset.cpp
index 7332f5c954..41f3f3f607 100644
--- a/indra/llmessage/lltransfersourceasset.cpp
+++ b/indra/llmessage/lltransfersourceasset.cpp
@@ -292,6 +292,7 @@ bool is_asset_id_knowable(LLAssetType::EType type)
case LLAssetType::AT_BODYPART:
case LLAssetType::AT_ANIMATION:
case LLAssetType::AT_GESTURE:
+ case LLAssetType::AT_FAVORITE:
case LLAssetType::AT_LINK:
case LLAssetType::AT_LINK_FOLDER:
rv = true;
diff --git a/indra/llprimitive/llmediaentry.cpp b/indra/llprimitive/llmediaentry.cpp
index 701300163a..fa04bf80e7 100644
--- a/indra/llprimitive/llmediaentry.cpp
+++ b/indra/llprimitive/llmediaentry.cpp
@@ -164,7 +164,6 @@ void LLMediaEntry::asLLSD(LLSD& sd) const
// "security" fields
sd[WHITELIST_ENABLE_KEY] = mWhiteListEnable;
- sd.erase(WHITELIST_KEY);
for (U32 i=0; i<mWhiteList.size(); i++)
{
sd[WHITELIST_KEY].append(mWhiteList[i]);
diff --git a/indra/llprimitive/tests/llmediaentry_test.cpp b/indra/llprimitive/tests/llmediaentry_test.cpp
index cd9608d56b..9ce6560923 100644
--- a/indra/llprimitive/tests/llmediaentry_test.cpp
+++ b/indra/llprimitive/tests/llmediaentry_test.cpp
@@ -223,7 +223,8 @@ namespace tut
{
set_test_name("Test LLMediaEntry Instantiation");
LLMediaEntry entry;
- ensure_llsd_equals(get_test_name() + " failed", defaultMediaEntryLLSD, entry.asLLSD());
+ ensure_llsd_equals(get_test_name(), defaultMediaEntryLLSD, entry.asLLSD());
+
}
template<> template<>
@@ -250,27 +251,12 @@ namespace tut
ensure_llsd_equals(get_test_name() + " failed", golden, entry.asLLSD());
}
- template<> template<>
- void object::test<4>()
- {
- set_test_name("Test LLMediaEntry::asLLSD()");
- LLMediaEntry entry;
- LLSD sd;
- // Put some cruft in the LLSD
- sd[LLMediaEntry::CURRENT_URL_KEY] = "http://www.example.com";
- LLSD whitelist;
- whitelist.append("*.example.com");
- sd[LLMediaEntry::WHITELIST_KEY] = whitelist;
- entry.asLLSD(sd);
- ensure_llsd_equals(get_test_name() + " failed", defaultMediaEntryLLSD, sd);
- }
-
// limit tests
const char *URL_OK = "http://www.example.com";
const char *URL_TOO_BIG = "http://www.example.com.qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq";
template<> template<>
- void object::test<5>()
+ void object::test<4>()
{
set_test_name("Test Limits on setting current URL");
LLMediaEntry entry;
@@ -281,7 +267,7 @@ namespace tut
}
template<> template<>
- void object::test<6>()
+ void object::test<5>()
{
set_test_name("Test Limits on setting home URL");
LLMediaEntry entry;
@@ -292,7 +278,7 @@ namespace tut
}
template<> template<>
- void object::test<7>()
+ void object::test<6>()
{
set_test_name("Test Limits on setting whitelist");
@@ -306,7 +292,7 @@ namespace tut
}
template<> template<>
- void object::test<8>()
+ void object::test<7>()
{
set_test_name("Test Limits on setting whitelist too big");
@@ -321,7 +307,7 @@ namespace tut
}
template<> template<>
- void object::test<9>()
+ void object::test<8>()
{
set_test_name("Test Limits on setting whitelist too many");
@@ -337,7 +323,7 @@ namespace tut
}
template<> template<>
- void object::test<10>()
+ void object::test<9>()
{
set_test_name("Test to make sure both setWhiteList() functions behave the same");
@@ -355,7 +341,7 @@ namespace tut
}
template<> template<>
- void object::test<11>()
+ void object::test<10>()
{
set_test_name("Test to make sure both setWhiteList() functions behave the same");
@@ -376,7 +362,7 @@ namespace tut
}
template<> template<>
- void object::test<12>()
+ void object::test<11>()
{
set_test_name("Test to make sure both setWhiteList() functions behave the same");
@@ -400,99 +386,99 @@ namespace tut
// Check the "empty whitelist" case
template<> template<>
- void object::test<13>() { whitelist_test("", "http://www.example.com", true); }
+ void object::test<12>() { whitelist_test("", "http://www.example.com", true); }
// Check the "missing scheme" case
template<> template<>
- void object::test<14>() { whitelist_test("www.example.com", "http://www.example.com", true); }
+ void object::test<13>() { whitelist_test("www.example.com", "http://www.example.com", true); }
// Check the "exactly the same" case
template<> template<>
- void object::test<15>() { whitelist_test("http://example.com", "http://example.com", true); }
+ void object::test<14>() { whitelist_test("http://example.com", "http://example.com", true); }
// Check the enable flag
template<> template<>
- void object::test<16>() { whitelist_test(false, "www.example.com", "http://www.secondlife.com", true); }
+ void object::test<15>() { whitelist_test(false, "www.example.com", "http://www.secondlife.com", true); }
template<> template<>
- void object::test<17>() { whitelist_test(true, "www.example.com", "http://www.secondlife.com", false); }
+ void object::test<16>() { whitelist_test(true, "www.example.com", "http://www.secondlife.com", false); }
// Check permutations of trailing slash:
template<> template<>
- void object::test<18>() { whitelist_test("http://www.example.com", "http://www.example.com/", true); }
+ void object::test<17>() { whitelist_test("http://www.example.com", "http://www.example.com/", true); }
template<> template<>
- void object::test<19>() { whitelist_test("http://www.example.com/", "http://www.example.com/", true); }
+ void object::test<18>() { whitelist_test("http://www.example.com/", "http://www.example.com/", true); }
template<> template<>
- void object::test<20>() { whitelist_test("http://www.example.com/", "http://www.example.com", false); }
+ void object::test<19>() { whitelist_test("http://www.example.com/", "http://www.example.com", false); }
template<> template<>
- void object::test<21>() { whitelist_test("http://www.example.com", "http://www.example.com/foobar", true); }
+ void object::test<20>() { whitelist_test("http://www.example.com", "http://www.example.com/foobar", true); }
template<> template<>
- void object::test<22>() { whitelist_test("http://www.example.com/", "http://www.example.com/foobar", false); }
+ void object::test<21>() { whitelist_test("http://www.example.com/", "http://www.example.com/foobar", false); }
// More cases...
template<> template<>
- void object::test<23>() { whitelist_test("http://example.com", "http://example.com/wiki", true); }
+ void object::test<22>() { whitelist_test("http://example.com", "http://example.com/wiki", true); }
template<> template<>
- void object::test<24>() { whitelist_test("www.example.com", "http://www.example.com/help", true); }
+ void object::test<23>() { whitelist_test("www.example.com", "http://www.example.com/help", true); }
template<> template<>
- void object::test<25>() { whitelist_test("http://www.example.com", "http://wwwexample.com", false); }
+ void object::test<24>() { whitelist_test("http://www.example.com", "http://wwwexample.com", false); }
template<> template<>
- void object::test<26>() { whitelist_test("http://www.example.com", "http://www.example.com/wiki", true); }
+ void object::test<25>() { whitelist_test("http://www.example.com", "http://www.example.com/wiki", true); }
template<> template<>
- void object::test<27>() { whitelist_test("example.com", "http://wwwexample.com", false); }
+ void object::test<26>() { whitelist_test("example.com", "http://wwwexample.com", false); }
template<> template<>
- void object::test<28>() { whitelist_test("http://www.example.com/", "http://www.amazon.com/wiki", false); }
+ void object::test<27>() { whitelist_test("http://www.example.com/", "http://www.amazon.com/wiki", false); }
template<> template<>
- void object::test<29>() { whitelist_test("www.example.com", "http://www.amazon.com", false); }
+ void object::test<28>() { whitelist_test("www.example.com", "http://www.amazon.com", false); }
// regexp cases
template<> template<>
- void object::test<30>() { whitelist_test("*.example.com", "http://www.example.com", true); }
+ void object::test<29>() { whitelist_test("*.example.com", "http://www.example.com", true); }
template<> template<>
- void object::test<31>() { whitelist_test("*.example.com", "http://www.amazon.com", false); }
+ void object::test<30>() { whitelist_test("*.example.com", "http://www.amazon.com", false); }
template<> template<>
- void object::test<32>() { whitelist_test("*.example.com", "http://www.example.com/foo/bar", true); }
+ void object::test<31>() { whitelist_test("*.example.com", "http://www.example.com/foo/bar", true); }
template<> template<>
- void object::test<33>() { whitelist_test("*.example.com", "http:/example.com/foo/bar", false); }
+ void object::test<32>() { whitelist_test("*.example.com", "http:/example.com/foo/bar", false); }
template<> template<>
- void object::test<34>() { whitelist_test("*example.com", "http://example.com/foo/bar", true); }
+ void object::test<33>() { whitelist_test("*example.com", "http://example.com/foo/bar", true); }
template<> template<>
- void object::test<35>() { whitelist_test("*example.com", "http://my.virus.com/foo/bar?example.com", false); }
+ void object::test<34>() { whitelist_test("*example.com", "http://my.virus.com/foo/bar?example.com", false); }
template<> template<>
- void object::test<36>() { whitelist_test("example.com", "http://my.virus.com/foo/bar?example.com", false); }
+ void object::test<35>() { whitelist_test("example.com", "http://my.virus.com/foo/bar?example.com", false); }
template<> template<>
- void object::test<37>() { whitelist_test("*example.com", "http://my.virus.com/foo/bar?*example.com", false); }
+ void object::test<36>() { whitelist_test("*example.com", "http://my.virus.com/foo/bar?*example.com", false); }
template<> template<>
- void object::test<38>() { whitelist_test("http://*example.com", "http://www.example.com", true); }
+ void object::test<37>() { whitelist_test("http://*example.com", "http://www.example.com", true); }
template<> template<>
- void object::test<39>() { whitelist_test("http://*.example.com", "http://www.example.com", true); }
+ void object::test<38>() { whitelist_test("http://*.example.com", "http://www.example.com", true); }
template<> template<>
- void object::test<40>() { whitelist_test("http://*.e$?^.com", "http://www.e$?^.com", true); }
+ void object::test<39>() { whitelist_test("http://*.e$?^.com", "http://www.e$?^.com", true); }
template<> template<>
- void object::test<41>() { whitelist_test("*.example.com/foo/bar", "http://www.example.com/", false); }
+ void object::test<40>() { whitelist_test("*.example.com/foo/bar", "http://www.example.com/", false); }
template<> template<>
- void object::test<42>() { whitelist_test("*.example.com/foo/bar", "http://example.com/foo/bar", false); }
+ void object::test<41>() { whitelist_test("*.example.com/foo/bar", "http://example.com/foo/bar", false); }
template<> template<>
- void object::test<43>() { whitelist_test("http://*.example.com/foo/bar", "http://www.example.com", false); }
+ void object::test<42>() { whitelist_test("http://*.example.com/foo/bar", "http://www.example.com", false); }
template<> template<>
- void object::test<44>() { whitelist_test("http://*.example.com", "https://www.example.com", false); }
+ void object::test<43>() { whitelist_test("http://*.example.com", "https://www.example.com", false); }
template<> template<>
- void object::test<45>() { whitelist_test("http*://*.example.com", "rtsp://www.example.com", false); }
+ void object::test<44>() { whitelist_test("http*://*.example.com", "rtsp://www.example.com", false); }
template<> template<>
- void object::test<46>() { whitelist_test("http*://*.example.com", "https://www.example.com", true); }
+ void object::test<45>() { whitelist_test("http*://*.example.com", "https://www.example.com", true); }
template<> template<>
- void object::test<47>() { whitelist_test("example.com", "http://www.example.com", false); }
+ void object::test<46>() { whitelist_test("example.com", "http://www.example.com", false); }
template<> template<>
- void object::test<48>() { whitelist_test("www.example.com", "http://www.example.com:80", false); }
+ void object::test<47>() { whitelist_test("www.example.com", "http://www.example.com:80", false); }
template<> template<>
- void object::test<49>() { whitelist_test("www.example.com", "http://www.example.com", true); }
+ void object::test<48>() { whitelist_test("www.example.com", "http://www.example.com", true); }
template<> template<>
- void object::test<50>() { whitelist_test("www.example.com/", "http://www.example.com", false); }
+ void object::test<49>() { whitelist_test("www.example.com/", "http://www.example.com", false); }
template<> template<>
- void object::test<51>() { whitelist_test("www.example.com/foo/bar/*", "http://www.example.com/foo/bar/baz", true); }
+ void object::test<50>() { whitelist_test("www.example.com/foo/bar/*", "http://www.example.com/foo/bar/baz", true); }
// Path only
template<> template<>
- void object::test<52>() { whitelist_test("/foo/*/baz", "http://www.example.com/foo/bar/baz", true); }
+ void object::test<51>() { whitelist_test("/foo/*/baz", "http://www.example.com/foo/bar/baz", true); }
template<> template<>
- void object::test<53>() { whitelist_test("/foo/*/baz", "http://www.example.com/foo/bar/", false); }
+ void object::test<52>() { whitelist_test("/foo/*/baz", "http://www.example.com/foo/bar/", false); }
}
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 99aebbcb30..8c72b079ee 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -772,12 +772,6 @@ LLMultiFloater* LLFloater::getHost()
return (LLMultiFloater*)mHostHandle.get();
}
-void LLFloater::applySavedVariables()
-{
- applyRectControl();
- applyDockState();
-}
-
void LLFloater::applyRectControl()
{
if (mRectControl.size() > 1)
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index 95c8dd84f6..ef0d06a58e 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -280,9 +280,6 @@ public:
protected:
void setRectControl(const std::string& rectname) { mRectControl = rectname; };
-
- virtual void applySavedVariables();
-
void applyRectControl();
void applyDockState();
void storeRectControl();
diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp
index f8e07913fb..aca4dc56ee 100644
--- a/indra/llui/llfloaterreg.cpp
+++ b/indra/llui/llfloaterreg.cpp
@@ -134,7 +134,8 @@ LLFloater* LLFloaterReg::getInstance(const std::string& name, const LLSD& key)
// Note: key should eventually be a non optional LLFloater arg; for now, set mKey to be safe
res->mKey = key;
res->setInstanceName(name);
- res->applySavedVariables(); // Can't apply rect and dock state until setting instance name
+ res->applyRectControl(); // Can't apply rect control until setting instance name
+ res->applyDockState();//same...
if (res->mAutoTile && !res->getHost() && index > 0)
{
const LLRect& cur_rect = res->getRect();
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 643f89068f..e138b431c5 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -216,6 +216,7 @@ set(viewer_SOURCE_FILES
llfloaterwhitelistentry.cpp
llfloaterwindlight.cpp
llfloaterworldmap.cpp
+ llfoldertype.cpp
llfolderview.cpp
llfolderviewitem.cpp
llfollowcam.cpp
@@ -316,7 +317,6 @@ set(viewer_SOURCE_FILES
llpanelimcontrolpanel.cpp
llpanelland.cpp
llpanellandaudio.cpp
- llpanellandmarkinfo.cpp
llpanellandmarks.cpp
llpanellandmedia.cpp
llpanellogin.cpp
@@ -337,7 +337,6 @@ set(viewer_SOURCE_FILES
llpanelpicks.cpp
llpanelplace.cpp
llpanelplaceinfo.cpp
- llpanelplaceprofile.cpp
llpanelplaces.cpp
llpanelplacestab.cpp
llpanelprimmediacontrols.cpp
@@ -437,14 +436,12 @@ set(viewer_SOURCE_FILES
llvectorperfoptions.cpp
llviewchildren.cpp
llviewerassetstorage.cpp
- llviewerassettype.cpp
llvieweraudio.cpp
llviewercamera.cpp
llviewercontrol.cpp
llviewercontrollistener.cpp
llviewerdisplay.cpp
llviewerfloaterreg.cpp
- llviewerfoldertype.cpp
llviewergenericmessage.cpp
llviewergesture.cpp
llviewerhelp.cpp
@@ -705,6 +702,7 @@ set(viewer_HEADER_FILES
llfloaterwhitelistentry.h
llfloaterwindlight.h
llfloaterworldmap.h
+ llfoldertype.h
llfolderview.h
llfoldervieweventlistener.h
llfolderviewitem.h
@@ -802,7 +800,6 @@ set(viewer_HEADER_FILES
llpanelimcontrolpanel.h
llpanelland.h
llpanellandaudio.h
- llpanellandmarkinfo.h
llpanellandmarks.h
llpanellandmedia.h
llpanellogin.h
@@ -823,7 +820,6 @@ set(viewer_HEADER_FILES
llpanelpicks.h
llpanelplace.h
llpanelplaceinfo.h
- llpanelplaceprofile.h
llpanelplaces.h
llpanelplacestab.h
llpanelprimmediacontrols.h
@@ -927,7 +923,6 @@ set(viewer_HEADER_FILES
llvectorperfoptions.h
llviewchildren.h
llviewerassetstorage.h
- llviewerassettype.h
llvieweraudio.h
llviewerbuild.h
llviewercamera.h
@@ -935,7 +930,6 @@ set(viewer_HEADER_FILES
llviewercontrollistener.h
llviewerdisplay.h
llviewerfloaterreg.h
- llviewerfoldertype.h
llviewergenericmessage.h
llviewergesture.h
llviewerhelp.h
diff --git a/indra/newview/app_settings/foldertypes.xml b/indra/newview/app_settings/foldertypes.xml
index 0d539177f3..2038779c4f 100644
--- a/indra/newview/app_settings/foldertypes.xml
+++ b/indra/newview/app_settings/foldertypes.xml
@@ -1,61 +1,66 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<ensemble_defs>
<ensemble
- foldertype_num="27"
+ asset_num="-1"
+ xui_name="default"
+ icon_name="inv_plain_closed.tga"
+ />
+ <ensemble
+ asset_num="27"
xui_name="head"
icon_name="inv_folder_outfit_head.tga"
allowed="hair,eyes"
/>
<ensemble
- foldertype_num="28"
+ asset_num="28"
xui_name="gloves"
icon_name="inv_folder_outfit_gloves.tga"
allowed="gloves"
/>
<ensemble
- foldertype_num="29"
+ asset_num="29"
xui_name="jacket"
icon_name="inv_folder_outfit_jacket.tga"
allowed="jacket"
/>
<ensemble
- foldertype_num="30"
+ asset_num="30"
xui_name="pants"
icon_name="inv_folder_outfit_pants.tga"
allowed="pants,underpants"
/>
<ensemble
- foldertype_num="31"
+ asset_num="31"
xui_name="shape"
icon_name="inv_folder_outfit_shape.tga"
allowed="shape,skin,hair,eyes"
/>
<ensemble
- foldertype_num="32"
+ asset_num="32"
xui_name="shoes"
icon_name="inv_folder_outfit_shoes.tga"
allowed="shoes,socks"
/>
<ensemble
- foldertype_num="33"
+ asset_num="33"
xui_name="shirt"
icon_name="inv_folder_outfit_shirt.tga"
allowed="shirt,undershirt"
/>
<ensemble
- foldertype_num="34"
+ asset_num="34"
xui_name="skirt"
icon_name="inv_folder_outfit_skirt.tga"
allowed=""
/>
<ensemble
- foldertype_num="35"
+ asset_num="35"
xui_name="underpants"
icon_name="inv_folder_outfit_underpants.tga"
allowed="underpants"
/>
<ensemble
- foldertype_num="36"
+ asset_num="36"
xui_name="undershirt"
icon_name="inv_folder_outfit_undershirt.tga"
allowed="undershirt"
diff --git a/indra/newview/llagentpicksinfo.cpp b/indra/newview/llagentpicksinfo.cpp
index 3c8d0dac42..6e5835bace 100644
--- a/indra/newview/llagentpicksinfo.cpp
+++ b/indra/newview/llagentpicksinfo.cpp
@@ -47,8 +47,7 @@ public:
~LLAgentPicksObserver()
{
- if (LLAvatarPropertiesProcessor::instanceExists())
- LLAvatarPropertiesProcessor::getInstance()->removeObserver(gAgent.getID(), this);
+ LLAvatarPropertiesProcessor::getInstance()->removeObserver(gAgent.getID(), this);
}
void sendAgentPicksRequest()
diff --git a/indra/newview/llagentui.cpp b/indra/newview/llagentui.cpp
index 2911a35581..09f7c49f23 100644
--- a/indra/newview/llagentui.cpp
+++ b/indra/newview/llagentui.cpp
@@ -92,10 +92,7 @@ std::string LLAgentUI::buildSLURL(const bool escaped /*= true*/)
//static
BOOL LLAgentUI::checkAgentDistance(const LLVector3& pole, F32 radius)
{
- F32 delta_x = gAgent.getPositionAgent().mV[VX] - pole.mV[VX];
- F32 delta_y = gAgent.getPositionAgent().mV[VY] - pole.mV[VY];
-
- return sqrt( delta_x* delta_x + delta_y* delta_y ) < radius;
+ return (gAgent.getPositionAgent() - pole).length() < radius;
}
BOOL LLAgentUI::buildLocationString(std::string& str, ELocationFormat fmt,const LLVector3& agent_pos_region)
{
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 8c76a219a0..4b3d27767c 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -434,7 +434,7 @@ void LLAgentWearables::saveWearableAs(const EWearableType type,
if (save_in_lost_and_found)
{
category_id = gInventory.findCategoryUUIDForType(
- LLFolderType::FT_LOST_AND_FOUND);
+ LLAssetType::AT_LOST_AND_FOUND);
}
else
{
@@ -840,7 +840,7 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs
}
// Get the UUID of the current outfit folder (will be created if it doesn't exist)
- const LLUUID current_outfit_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
+ LLUUID current_outfit_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_CURRENT_OUTFIT);
LLInitialWearablesFetch* outfit = new LLInitialWearablesFetch();
@@ -981,7 +981,8 @@ void LLAgentWearables::recoverMissingWearable(const EWearableType type, U32 inde
// Add a new one in the lost and found folder.
// (We used to overwrite the "not found" one, but that could potentially
// destory content.) JC
- const LLUUID lost_and_found_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND);
+ LLUUID lost_and_found_id =
+ gInventory.findCategoryUUIDForType(LLAssetType::AT_LOST_AND_FOUND);
LLPointer<LLInventoryCallback> cb =
new addWearableToAgentInventoryCallback(
LLPointer<LLRefCount>(NULL),
@@ -1122,8 +1123,8 @@ void LLAgentWearables::makeNewOutfit(const std::string& new_folder_name,
// First, make a folder in the Clothes directory.
LLUUID folder_id = gInventory.createNewCategory(
- gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING),
- LLFolderType::FT_NONE,
+ gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING),
+ LLAssetType::AT_NONE,
new_folder_name);
bool found_first_item = false;
@@ -1256,10 +1257,10 @@ LLUUID LLAgentWearables::makeNewOutfitLinks(const std::string& new_folder_name)
}
// First, make a folder in the My Outfits directory.
- const LLUUID parent_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS);
+ LLUUID parent_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_MY_OUTFITS);
LLUUID folder_id = gInventory.createNewCategory(
parent_id,
- LLFolderType::FT_OUTFIT,
+ LLAssetType::AT_OUTFIT,
new_folder_name);
LLAppearanceManager::shallowCopyCategory(LLAppearanceManager::getCOF(),folder_id, NULL);
@@ -2031,7 +2032,7 @@ void LLInitialWearablesFetch::processWearablesMessage()
{
if (!mAgentInitialWearables.empty()) // We have an empty current outfit folder, use the message data instead.
{
- const LLUUID current_outfit_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
+ LLUUID current_outfit_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_CURRENT_OUTFIT);
for (U8 i = 0; i < mAgentInitialWearables.size(); ++i)
{
// Populate the current outfit folder with links to the wearables passed in the message
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 80086de3dc..8d0f11e021 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -130,11 +130,11 @@ void LLOutfitObserver::done()
{
if(LLInventoryType::IT_GESTURE == item->getInventoryType())
{
- pid = gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE);
+ pid = gInventory.findCategoryUUIDForType(LLAssetType::AT_GESTURE);
}
else
{
- pid = gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING);
+ pid = gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING);
}
break;
}
@@ -146,7 +146,7 @@ void LLOutfitObserver::done()
LLUUID cat_id = gInventory.createNewCategory(
pid,
- LLFolderType::FT_NONE,
+ LLAssetType::AT_NONE,
name);
mCatID = cat_id;
LLPointer<LLInventoryCallback> cb = new LLWearInventoryCategoryCallback(mCatID, mAppend);
@@ -353,7 +353,7 @@ void removeDuplicateItems(LLInventoryModel::item_array_t& dst, const LLInventory
/* static */
LLUUID LLAppearanceManager::getCOF()
{
- return gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
+ return gInventory.findCategoryUUIDForType(LLAssetType::AT_CURRENT_OUTFIT);
}
// Update appearance from outfit folder.
@@ -373,12 +373,12 @@ void LLAppearanceManager::changeOutfit(bool proceed, const LLUUID& category, boo
else
{
LLViewerInventoryCategory* catp = gInventory.getCategory(category);
- if (catp->getPreferredType() == LLFolderType::FT_NONE ||
- LLFolderType::lookupIsEnsembleType(catp->getPreferredType()))
+ if (catp->getPreferredType() == LLAssetType::AT_NONE ||
+ LLAssetType::lookupIsEnsembleCategoryType(catp->getPreferredType()))
{
updateCOFFromCategory(category, append); // append is false - rebuild COF.
}
- else if (catp->getPreferredType() == LLFolderType::FT_OUTFIT)
+ else if (catp->getPreferredType() == LLAssetType::AT_OUTFIT)
{
rebuildCOFFromOutfit(category);
}
@@ -405,7 +405,7 @@ void LLAppearanceManager::updateCOFFromCategory(const LLUUID& category, bool app
return;
}
- const LLUUID current_outfit_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
+ const LLUUID &current_outfit_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_CURRENT_OUTFIT);
// Processes that take time should show the busy cursor
//inc_busy_count();
@@ -503,7 +503,7 @@ void LLAppearanceManager::shallowCopyCategory(const LLUUID& src_id, const LLUUID
{
LLViewerInventoryCategory *catp = item->getLinkedCategory();
// Skip copying outfit links.
- if (catp && catp->getPreferredType() != LLFolderType::FT_OUTFIT)
+ if (catp && catp->getPreferredType() != LLAssetType::AT_OUTFIT)
{
link_inventory_item(gAgent.getID(),
item->getLinkedUUID(),
@@ -641,7 +641,7 @@ void LLAppearanceManager::shallowCopyCategory(const LLUUID& src_id, const LLUUID
// Add link to outfit if category is an outfit.
LLViewerInventoryCategory* catp = gInventory.getCategory(category);
- if (!append && catp && catp->getPreferredType() == LLFolderType::FT_OUTFIT)
+ if (!append && catp && catp->getPreferredType() == LLAssetType::AT_OUTFIT)
{
link_inventory_item(gAgent.getID(), category, cof, catp->getName(),
LLAssetType::AT_LINK_FOLDER, link_waiter);
@@ -732,7 +732,7 @@ void LLAppearanceManager::rebuildCOFFromOutfit(const LLUUID& category)
LLNotifications::instance().add("CouldNotPutOnOutfit");
return;
}
-
+
// Processes that take time should show the busy cursor
//inc_busy_count();
@@ -750,7 +750,7 @@ void LLAppearanceManager::rebuildCOFFromOutfit(const LLUUID& category)
// Create a link to the outfit that we wore.
LLViewerInventoryCategory* catp = gInventory.getCategory(category);
- if (catp && catp->getPreferredType() == LLFolderType::FT_OUTFIT)
+ if (catp && catp->getPreferredType() == LLAssetType::AT_OUTFIT)
{
link_inventory_item(gAgent.getID(), category, current_outfit_id, catp->getName(),
LLAssetType::AT_LINK_FOLDER, link_waiter);
diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp
index d4df6dfbe7..5dbf57c9be 100644
--- a/indra/newview/llassetuploadresponders.cpp
+++ b/indra/newview/llassetuploadresponders.cpp
@@ -334,7 +334,7 @@ void LLNewAgentInventoryResponder::uploadComplete(const LLSD& content)
LLAssetStorage::LLStoreAssetCallback callback = NULL;
void *userdata = NULL;
upload_new_resource(next_file, asset_name, asset_name,
- 0, LLFolderType::FT_NONE, LLInventoryType::IT_NONE,
+ 0, LLAssetType::AT_NONE, LLInventoryType::IT_NONE,
next_owner_perms, group_perms,
everyone_perms, display_name,
callback, expected_upload_cost, userdata);
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 97e0aa5f46..2f67401301 100644
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -343,7 +343,7 @@ bool LLAvatarActions::callbackAddFriend(const LLSD& notification, const LLSD& re
// Servers older than 1.25 require the text of the message to be the
// calling card folder ID for the offering user. JC
LLUUID calling_card_folder_id =
- gInventory.findCategoryUUIDForType(LLFolderType::FT_CALLINGCARD);
+ gInventory.findCategoryUUIDForType(LLAssetType::AT_CALLINGCARD);
std::string message = calling_card_folder_id.asString();
requestFriendship(notification["payload"]["id"].asUUID(),
notification["payload"]["name"].asString(),
@@ -355,7 +355,7 @@ bool LLAvatarActions::callbackAddFriend(const LLSD& notification, const LLSD& re
// static
void LLAvatarActions::requestFriendship(const LLUUID& target_id, const std::string& target_name, const std::string& message)
{
- const LLUUID calling_card_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CALLINGCARD);
+ LLUUID calling_card_folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_CALLINGCARD);
send_improved_im(target_id,
target_name,
message,
diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp
index 8609ba8b1c..7b2dc02864 100644
--- a/indra/newview/llavatarlist.cpp
+++ b/indra/newview/llavatarlist.cpp
@@ -239,46 +239,11 @@ void LLAvatarList::refresh()
bool dirty = add_limit_exceeded || (have_filter && !have_names);
setDirty(dirty);
- // Refreshed all items, lets send refresh_complete signal.
- if(!dirty)
- {
- std::vector<LLSD> cur_values;
- getValues(cur_values);
- mRefreshCompleteSignal(this, LLSD((S32)cur_values.size()));
- }
-
// Commit if we've added/removed items.
if (modified)
onCommit();
}
-bool LLAvatarList::filterHasMatches()
-{
- uuid_vector_t values = getIDs();
-
- for (uuid_vector_t::const_iterator it=values.begin(); it != values.end(); it++)
- {
- std::string name;
- const LLUUID& buddy_id = *it;
- BOOL have_name = gCacheName->getFullName(buddy_id, name);
-
- // If name has not been loaded yet we consider it as a match.
- // When the name will be loaded the filter will be applied again(in refresh()).
-
- if (have_name && !findInsensitive(name, mNameFilter))
- {
- continue;
- }
-
- return true;
- }
- return false;
-}
-
-boost::signals2::connection LLAvatarList::setRefreshCompleteCallback(const commit_signal_t::slot_type& cb)
-{
- return mRefreshCompleteSignal.connect(cb);
-}
void LLAvatarList::addNewItem(const LLUUID& id, const std::string& name, BOOL is_online, EAddPosition pos)
{
diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h
index 195d9e5b55..51d3760d39 100644
--- a/indra/newview/llavatarlist.h
+++ b/indra/newview/llavatarlist.h
@@ -82,11 +82,6 @@ public:
const std::string getIconParamName() const{return mIconParamName;}
virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
- // Return true if filter has at least one match.
- bool filterHasMatches();
-
- boost::signals2::connection setRefreshCompleteCallback(const commit_signal_t::slot_type& cb);
-
protected:
void refresh();
@@ -112,8 +107,6 @@ private:
uuid_vector_t mIDs;
LLAvatarListItem::ContextMenu* mContextMenu;
-
- commit_signal_t mRefreshCompleteSignal;
};
/** Abstract comparator for avatar items */
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index b9e8c5394d..bad61101c1 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -51,7 +51,7 @@
#include "lltransientfloatermgr.h"
static LLDefaultChildRegistry::Register<LLChicletPanel> t1("chiclet_panel");
-static LLDefaultChildRegistry::Register<LLTalkButton> t2("talk_button");
+static LLDefaultChildRegistry::Register<LLTalkButton> t2("chiclet_talk");
static LLDefaultChildRegistry::Register<LLNotificationChiclet> t3("chiclet_notification");
static LLDefaultChildRegistry::Register<LLIMP2PChiclet> t4("chiclet_im_p2p");
static LLDefaultChildRegistry::Register<LLIMGroupChiclet> t5("chiclet_im_group");
@@ -830,21 +830,13 @@ LLChicletPanel::~LLChicletPanel()
void im_chiclet_callback(LLChicletPanel* panel, const LLSD& data){
LLUUID session_id = data["session_id"].asUUID();
- S32 unread = data["num_unread"].asInteger();
-
- LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
- if (im_floater && im_floater->getVisible())
- {
- unread = 0;
- }
-
std::list<LLChiclet*> chiclets = LLIMChiclet::sFindChicletsSignal(session_id);
std::list<LLChiclet *>::iterator iter;
for (iter = chiclets.begin(); iter != chiclets.end(); iter++) {
LLChiclet* chiclet = *iter;
if (chiclet != NULL)
{
- chiclet->setCounter(unread);
+ chiclet->setCounter(data["num_unread"].asInteger());
}
else
{
@@ -1265,7 +1257,30 @@ LLTalkButton::Params::Params()
, show_button("show_button")
, monitor("monitor")
{
- // See widgets/talk_button.xml
+ // *TODO Vadim: move hardcoded labels (!) and other params to XUI.
+ speak_button.name("left");
+ speak_button.label("Speak");
+ speak_button.label_selected("Speak");
+ speak_button.font(LLFontGL::getFontSansSerifSmall());
+ speak_button.tab_stop(false);
+ speak_button.is_toggle(true);
+ speak_button.picture_style(true);
+ // Use default button art. JC
+ //speak_button.image_selected(LLUI::getUIImage("SegmentedBtn_Left_Selected"));
+ //speak_button.image_unselected(LLUI::getUIImage("SegmentedBtn_Left_Off"));
+
+ show_button.name("right");
+ show_button.label(LLStringUtil::null);
+ show_button.rect(LLRect(0, 0, 20, 0));
+ show_button.tab_stop(false);
+ show_button.is_toggle(true);
+ show_button.picture_style(true);
+ show_button.image_selected(LLUI::getUIImage("ComboButton_Selected"));
+ show_button.image_unselected(LLUI::getUIImage("ComboButton_Off"));
+
+ monitor.name("monitor");
+ // *TODO: Make this data driven.
+ monitor.rect(LLRect(0, 18, 18, 0));
}
LLTalkButton::LLTalkButton(const Params& p)
@@ -1321,7 +1336,6 @@ LLTalkButton::LLTalkButton(const Params& p)
// never show "muted" because you can't mute yourself
mOutputMonitor->setIsMuted(false);
- mOutputMonitor->setIsAgentControl(true);
}
LLTalkButton::~LLTalkButton()
diff --git a/indra/newview/llcolorswatch.cpp b/indra/newview/llcolorswatch.cpp
index 7b75c77a1e..ed304bdd34 100644
--- a/indra/newview/llcolorswatch.cpp
+++ b/indra/newview/llcolorswatch.cpp
@@ -228,7 +228,8 @@ void LLColorSwatchCtrl::draw()
{
if (!mFallbackImageName.empty())
{
- LLPointer<LLViewerTexture> fallback_image = LLViewerTextureManager::getFetchedTextureFromFile(mFallbackImageName, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE);
+ LLPointer<LLViewerTexture> fallback_image = LLViewerTextureManager::getFetchedTextureFromFile(mFallbackImageName, TRUE,
+ LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
if( fallback_image->getComponents() == 4 )
{
gl_rect_2d_checkerboard( interior );
diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp
index e087feeaec..5f845c3721 100644
--- a/indra/newview/lldrawpoolbump.cpp
+++ b/indra/newview/lldrawpoolbump.cpp
@@ -144,7 +144,7 @@ void LLStandardBumpmap::restoreGL()
gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage =
LLViewerTextureManager::getFetchedTexture(LLUUID(bump_image_id),
TRUE,
- FALSE,
+ LLViewerTexture::BOOST_NONE,
LLViewerTexture::LOD_TEXTURE,
0,
0);
diff --git a/indra/newview/lldrawpoolterrain.cpp b/indra/newview/lldrawpoolterrain.cpp
index 790e75cfaa..9dc22cddcd 100644
--- a/indra/newview/lldrawpoolterrain.cpp
+++ b/indra/newview/lldrawpoolterrain.cpp
@@ -72,7 +72,7 @@ LLDrawPoolTerrain::LLDrawPoolTerrain(LLViewerTexture *texturep) :
sDetailScale = 1.f/gSavedSettings.getF32("RenderTerrainScale");
sDetailMode = gSavedSettings.getS32("RenderTerrainDetail");
mAlphaRampImagep = LLViewerTextureManager::getFetchedTextureFromFile("alpha_gradient.tga",
- TRUE, TRUE,
+ TRUE, LLViewerTexture::BOOST_UI,
LLViewerTexture::FETCHED_TEXTURE,
GL_ALPHA8, GL_ALPHA,
LLUUID("e97cf410-8e61-7005-ec06-629eba4cd1fb"));
@@ -81,7 +81,7 @@ LLDrawPoolTerrain::LLDrawPoolTerrain(LLViewerTexture *texturep) :
mAlphaRampImagep->setAddressMode(LLTexUnit::TAM_CLAMP);
m2DAlphaRampImagep = LLViewerTextureManager::getFetchedTextureFromFile("alpha_gradient_2d.j2c",
- TRUE, TRUE,
+ TRUE, LLViewerTexture::BOOST_UI,
LLViewerTexture::FETCHED_TEXTURE,
GL_ALPHA8, GL_ALPHA,
LLUUID("38b86f85-2575-52a9-a531-23108d8da837"));
diff --git a/indra/newview/lldrawpoolwater.cpp b/indra/newview/lldrawpoolwater.cpp
index 21e17cc207..107de934df 100644
--- a/indra/newview/lldrawpoolwater.cpp
+++ b/indra/newview/lldrawpoolwater.cpp
@@ -69,11 +69,11 @@ LLVector3 LLDrawPoolWater::sLightDir;
LLDrawPoolWater::LLDrawPoolWater() :
LLFacePool(POOL_WATER)
{
- mHBTex[0] = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, TRUE);
+ mHBTex[0] = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, LLViewerTexture::BOOST_UI);
gGL.getTexUnit(0)->bind(mHBTex[0]) ;
mHBTex[0]->setAddressMode(LLTexUnit::TAM_CLAMP);
- mHBTex[1] = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, TRUE);
+ mHBTex[1] = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, LLViewerTexture::BOOST_UI);
gGL.getTexUnit(0)->bind(mHBTex[1]);
mHBTex[1]->setAddressMode(LLTexUnit::TAM_CLAMP);
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index 09b3ce1e86..8ec448e281 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -515,8 +515,8 @@ void LLFace::renderSelected(LLViewerTexture *imagep, const LLColor4& color)
/* removed in lieu of raycast uv detection
void LLFace::renderSelectedUV()
{
- LLViewerTexture* red_blue_imagep = LLViewerTextureManager::getFetchedTextureFromFile("uv_test1.j2c", TRUE, TRUE);
- LLViewerTexture* green_imagep = LLViewerTextureManager::getFetchedTextureFromFile("uv_test2.tga", TRUE, TRUE);
+ LLViewerTexture* red_blue_imagep = LLViewerTextureManager::getFetchedTextureFromFile("uv_test1.j2c", TRUE, LLViewerTexture::BOOST_UI);
+ LLViewerTexture* green_imagep = LLViewerTextureManager::getFetchedTextureFromFile("uv_test2.tga", TRUE, LLViewerTexture::BOOST_UI);
LLGLSUVSelect object_select;
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index a3980457b9..a6afbc05be 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -437,7 +437,7 @@ BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
}
else
{
- const LLUUID favorites_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE);
+ LLUUID favorites_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE);
if (item->getParentUUID() == favorites_id)
{
llwarns << "Attemt to copy a favorite item into the same folder." << llendl;
@@ -539,7 +539,7 @@ void LLFavoritesBarCtrl::handleNewFavoriteDragAndDrop(LLInventoryItem *item, con
LLToolDragAndDrop* tool_dad = LLToolDragAndDrop::getInstance();
if (tool_dad->getSource() == LLToolDragAndDrop::SOURCE_NOTECARD)
{
- viewer_item->setType(LLAssetType::AT_LANDMARK);
+ viewer_item->setType(LLAssetType::AT_FAVORITE);
copy_inventory_from_notecard(tool_dad->getObjectID(), tool_dad->getSourceID(), viewer_item.get(), gInventoryCallbacks.registerCB(cb));
}
else
@@ -561,7 +561,7 @@ void LLFavoritesBarCtrl::changed(U32 mask)
{
if (mFavoriteFolderId.isNull())
{
- mFavoriteFolderId = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE);
+ mFavoriteFolderId = gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE);
if (mFavoriteFolderId.notNull())
{
diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp
index 095fe0a220..55b7ed0c99 100644
--- a/indra/newview/llfloateranimpreview.cpp
+++ b/indra/newview/llfloateranimpreview.cpp
@@ -989,7 +989,7 @@ void LLFloaterAnimPreview::onBtnOK(void* userdata)
name,
desc,
0,
- LLFolderType::FT_NONE,
+ LLAssetType::AT_NONE,
LLInventoryType::IT_ANIMATION,
LLFloaterPerms::getNextOwnerPerms(), LLFloaterPerms::getGroupPerms(), LLFloaterPerms::getEveryonePerms(),
name,
diff --git a/indra/newview/llfloaterbulkpermission.cpp b/indra/newview/llfloaterbulkpermission.cpp
index 538b44c056..7cb8987879 100644
--- a/indra/newview/llfloaterbulkpermission.cpp
+++ b/indra/newview/llfloaterbulkpermission.cpp
@@ -264,6 +264,7 @@ void LLFloaterBulkPermission::handleInventory(LLViewerObject* viewer_obj, Invent
( asstype == LLAssetType::AT_BODYPART && gSavedSettings.getBOOL("BulkChangeIncludeBodyParts" )) ||
( asstype == LLAssetType::AT_CLOTHING && gSavedSettings.getBOOL("BulkChangeIncludeClothing" )) ||
( asstype == LLAssetType::AT_GESTURE && gSavedSettings.getBOOL("BulkChangeIncludeGestures" )) ||
+ ( asstype == LLAssetType::AT_FAVORITE && gSavedSettings.getBOOL("BulkChangeIncludeFavourite" )) ||
( asstype == LLAssetType::AT_NOTECARD && gSavedSettings.getBOOL("BulkChangeIncludeNotecards" )) ||
( asstype == LLAssetType::AT_OBJECT && gSavedSettings.getBOOL("BulkChangeIncludeObjects" )) ||
( asstype == LLAssetType::AT_LSL_TEXT && gSavedSettings.getBOOL("BulkChangeIncludeScripts" )) ||
diff --git a/indra/newview/llfloaterbuy.cpp b/indra/newview/llfloaterbuy.cpp
index cefd7a3808..3da06fa7b3 100644
--- a/indra/newview/llfloaterbuy.cpp
+++ b/indra/newview/llfloaterbuy.cpp
@@ -293,7 +293,7 @@ void LLFloaterBuy::onClickBuy()
{
// Put the items where we put new folders.
LLUUID category_id;
- category_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_OBJECT);
+ category_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_OBJECT);
// *NOTE: doesn't work for multiple object buy, which UI does not
// currently support sale info is used for verification only, if
diff --git a/indra/newview/llfloaterbuycontents.cpp b/indra/newview/llfloaterbuycontents.cpp
index 32802f6a20..f3eaa0c916 100644
--- a/indra/newview/llfloaterbuycontents.cpp
+++ b/indra/newview/llfloaterbuycontents.cpp
@@ -286,7 +286,7 @@ void LLFloaterBuyContents::onClickBuy()
// Put the items where we put new folders.
LLUUID category_id;
- category_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CATEGORY);
+ category_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_CATEGORY);
// *NOTE: doesn't work for multiple object buy, which UI does not
// currently support sale info is used for verification only, if
diff --git a/indra/newview/llfloaterinventory.cpp b/indra/newview/llfloaterinventory.cpp
index 92778510e7..8570b5eb4a 100644
--- a/indra/newview/llfloaterinventory.cpp
+++ b/indra/newview/llfloaterinventory.cpp
@@ -40,7 +40,6 @@
#include "llinventorymodel.h"
#include "llpanelmaininventory.h"
#include "llresmgr.h"
-#include "llviewerfoldertype.h"
///----------------------------------------------------------------------------
/// LLFloaterInventory
diff --git a/indra/newview/llfloaterinventory.h b/indra/newview/llfloaterinventory.h
index c0de89bff2..f2f2963a33 100644
--- a/indra/newview/llfloaterinventory.h
+++ b/indra/newview/llfloaterinventory.h
@@ -35,7 +35,6 @@
#define LL_LLFLOATERINVENTORY_H
#include "llfloater.h"
-#include "llfoldertype.h"
class LLInventoryPanel;
class LLPanelMainInventory;
diff --git a/indra/newview/llfloaternamedesc.cpp b/indra/newview/llfloaternamedesc.cpp
index b7296518d4..ed7d2c71ea 100644
--- a/indra/newview/llfloaternamedesc.cpp
+++ b/indra/newview/llfloaternamedesc.cpp
@@ -176,7 +176,7 @@ void LLFloaterNameDesc::onBtnOK( )
upload_new_resource(mFilenameAndPath, // file
childGetValue("name_form").asString(),
childGetValue("description_form").asString(),
- 0, LLFolderType::FT_NONE, LLInventoryType::IT_NONE,
+ 0, LLAssetType::AT_NONE, LLInventoryType::IT_NONE,
LLFloaterPerms::getNextOwnerPerms(), LLFloaterPerms::getGroupPerms(), LLFloaterPerms::getEveryonePerms(),
display_name, callback, expected_upload_cost, nruserdata);
closeFloater(false);
diff --git a/indra/newview/llfloateropenobject.cpp b/indra/newview/llfloateropenobject.cpp
index e277aba493..b6ec0868cf 100644
--- a/indra/newview/llfloateropenobject.cpp
+++ b/indra/newview/llfloateropenobject.cpp
@@ -158,14 +158,14 @@ void LLFloaterOpenObject::moveToInventory(bool wear)
if (wear)
{
parent_category_id = gInventory.findCategoryUUIDForType(
- LLFolderType::FT_CLOTHING);
+ LLAssetType::AT_CLOTHING);
}
else
{
parent_category_id = gInventory.getRootFolderID();
}
LLUUID category_id = gInventory.createNewCategory(parent_category_id,
- LLFolderType::FT_NONE,
+ LLAssetType::AT_NONE,
name);
LLCatAndWear* data = new LLCatAndWear;
diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp
index b146ed9b38..ad2fe34e95 100644
--- a/indra/newview/llfloaterreporter.cpp
+++ b/indra/newview/llfloaterreporter.cpp
@@ -770,7 +770,7 @@ void LLFloaterReporter::takeScreenshot()
if (COMPLAINT_REPORT == mReportType)
{
mResourceDatap->mAssetInfo.mType = LLAssetType::AT_TEXTURE;
- mResourceDatap->mPreferredLocation = LLFolderType::EType(LLResourceData::INVALID_LOCATION);
+ mResourceDatap->mPreferredLocation = LLAssetType::EType(-2);
}
else
{
@@ -789,7 +789,7 @@ void LLFloaterReporter::takeScreenshot()
// store in the image list so it doesn't try to fetch from the server
LLPointer<LLViewerFetchedTexture> image_in_list =
- LLViewerTextureManager::getFetchedTexture(mResourceDatap->mAssetInfo.mUuid, TRUE, FALSE, LLViewerTexture::FETCHED_TEXTURE);
+ LLViewerTextureManager::getFetchedTexture(mResourceDatap->mAssetInfo.mUuid, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::FETCHED_TEXTURE);
image_in_list->createGLTexture(0, raw);
// the texture picker then uses that texture
@@ -838,7 +838,7 @@ void LLFloaterReporter::uploadDoneCallback(const LLUUID &uuid, void *user_data,
}
EReportType report_type = UNKNOWN_REPORT;
- if (data->mPreferredLocation == LLResourceData::INVALID_LOCATION)
+ if (data->mPreferredLocation == -2)
{
report_type = COMPLAINT_REPORT;
}
diff --git a/indra/newview/llfloaterscriptdebug.cpp b/indra/newview/llfloaterscriptdebug.cpp
index 3bf1848efb..eeea71cc4c 100644
--- a/indra/newview/llfloaterscriptdebug.cpp
+++ b/indra/newview/llfloaterscriptdebug.cpp
@@ -106,7 +106,7 @@ void LLFloaterScriptDebug::addScriptLine(const std::string &utf8mesg, const std:
if (objectp)
{
- objectp->setIcon(LLViewerTextureManager::getFetchedTextureFromFile("script_error.j2c", TRUE, TRUE));
+ objectp->setIcon(LLViewerTextureManager::getFetchedTextureFromFile("script_error.j2c", TRUE, LLViewerTexture::BOOST_UI));
floater_label = llformat("%s(%.2f, %.2f)", user_name.c_str(), objectp->getPositionRegion().mV[VX], objectp->getPositionRegion().mV[VY]);
}
else
diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index 541e2a2664..235e819218 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -980,7 +980,7 @@ void LLSnapshotLivePreview::saveTexture()
"Snapshot : " + pos_string,
"Taken by " + who_took_it + " at " + pos_string,
0,
- LLFolderType::FT_SNAPSHOT_CATEGORY,
+ LLAssetType::AT_SNAPSHOT_CATEGORY,
LLInventoryType::IT_SNAPSHOT,
PERM_ALL, // Note: Snapshots to inventory is a special case of content upload
PERM_NONE, // that ignores the user's premissions preferences and continues to
diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp
index 6567c1a649..f3f600149f 100644
--- a/indra/newview/llfloaterworldmap.cpp
+++ b/indra/newview/llfloaterworldmap.cpp
@@ -327,7 +327,7 @@ void LLFloaterWorldMap::onOpen(const LLSD& key)
LLFirstUse::useMap();
// Start speculative download of landmarks
- const LLUUID landmark_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK);
+ LLUUID landmark_folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK);
gInventory.startBackgroundFetch(landmark_folder_id);
childSetFocus("location", TRUE);
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index 7863c373c6..a963c96da4 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -55,7 +55,6 @@
#include "llviewermenu.h"
#include "lluictrlfactory.h"
#include "llviewercontrol.h"
-#include "llviewerfoldertype.h"
#include "llviewerwindow.h"
#include "llvoavatar.h"
#include "llfloaterproperties.h"
@@ -1109,7 +1108,7 @@ void LLFolderView::propertiesSelectedItems( void )
}
}
-void LLFolderView::changeType(LLInventoryModel *model, LLFolderType::EType new_folder_type)
+void LLFolderView::changeType(LLInventoryModel *model, LLAssetType::EType new_folder_type)
{
LLFolderBridge *folder_bridge = LLFolderBridge::sSelf;
@@ -1959,7 +1958,7 @@ bool LLFolderView::doToSelected(LLInventoryModel* model, const LLSD& userdata)
if (action.length() > change_folder_string.length() &&
(action.compare(0,change_folder_string.length(),"change_folder_type_") == 0))
{
- LLFolderType::EType new_folder_type = LLViewerFolderType::lookupTypeFromXUIName(action.substr(change_folder_string.length()));
+ LLAssetType::EType new_folder_type = LLFolderType::lookupTypeFromXUIName(action.substr(change_folder_string.length()));
changeType(model, new_folder_type);
return true;
}
diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h
index 0bd65b5f90..ebfb4efde2 100644
--- a/indra/newview/llfolderview.h
+++ b/indra/newview/llfolderview.h
@@ -192,7 +192,7 @@ public:
void propertiesSelectedItems( void );
// change the folder type
- void changeType(LLInventoryModel *model, LLFolderType::EType new_folder_type);
+ void changeType(LLInventoryModel *model, LLAssetType::EType new_folder_type);
void autoOpenItem(LLFolderViewFolder* item);
void closeAutoOpenedFolders();
diff --git a/indra/newview/llfoldervieweventlistener.h b/indra/newview/llfoldervieweventlistener.h
index 60ece75cea..ff38da279a 100644
--- a/indra/newview/llfoldervieweventlistener.h
+++ b/indra/newview/llfoldervieweventlistener.h
@@ -32,7 +32,6 @@
#define LLFOLDERVIEWEVENTLISTENER_H
#include "lldarray.h" // JAMESDEBUG convert to std::vector
-#include "llfoldertype.h"
#include "llfontgl.h" // just for StyleFlags enum
#include "llpointer.h"
@@ -58,7 +57,7 @@ public:
virtual const LLUUID& getUUID() const = 0;
virtual time_t getCreationDate() const = 0; // UTC seconds
virtual PermissionMask getPermissionMask() const = 0;
- virtual LLFolderType::EType getPreferredType() const = 0;
+ virtual LLAssetType::EType getPreferredType() const = 0;
virtual LLPointer<LLUIImage> getIcon() const = 0;
virtual LLFontGL::StyleFlags getLabelStyle() const = 0;
virtual std::string getLabelSuffix() const = 0;
diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp
index 6fdaefd21a..f83a426cda 100644
--- a/indra/newview/llfolderviewitem.cpp
+++ b/indra/newview/llfolderviewitem.cpp
@@ -248,13 +248,13 @@ void LLFolderViewItem::refreshFromListener()
if(mListener)
{
mLabel = mListener->getDisplayName();
- LLFolderType::EType preferred_type = mListener->getPreferredType();
+ LLAssetType::EType preferred_type = mListener->getPreferredType();
// *TODO: to be removed when database supports multi language. This is a
// temporary attempt to display the inventory folder in the user locale.
// mantipov: *NOTE: be sure this code is synchronized with LLFriendCardsManager::findChildFolderUUID
// it uses the same way to find localized string
- if (LLFolderType::lookupIsProtectedType(preferred_type))
+ if (LLAssetType::lookupIsProtectedCategoryType(preferred_type))
{
LLTrans::findString(mLabel, "InvFolder " + mLabel);
};
@@ -1753,7 +1753,7 @@ bool LLFolderViewFolder::isTrash() const
{
if (mAmTrash == LLFolderViewFolder::UNKNOWN)
{
- mAmTrash = mListener->getUUID() == gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH, false) ? LLFolderViewFolder::TRASH : LLFolderViewFolder::NOT_TRASH;
+ mAmTrash = mListener->getUUID() == gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH, false) ? LLFolderViewFolder::TRASH : LLFolderViewFolder::NOT_TRASH;
}
return mAmTrash == LLFolderViewFolder::TRASH;
}
@@ -2167,7 +2167,7 @@ BOOL LLFolderViewFolder::handleDoubleClick( S32 x, S32 y, MASK mask )
{
const LLUUID &cat_uuid = getListener()->getUUID();
const LLViewerInventoryCategory *cat = gInventory.getCategory(cat_uuid);
- if (cat && cat->getPreferredType() == LLFolderType::FT_OUTFIT)
+ if (cat && cat->getPreferredType() == LLAssetType::AT_OUTFIT)
{
getListener()->performAction(NULL, NULL,"replaceoutfit");
return TRUE;
@@ -2490,7 +2490,7 @@ bool LLInventorySort::operator()(const LLFolderViewItem* const& a, const LLFolde
&& b->getListener()->getInventoryType() == LLInventoryType::IT_LANDMARK)
{
- static const LLUUID& favorites_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE);
+ static LLUUID favorites_folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE);
LLUUID a_uuid = a->getParentFolder()->getListener()->getUUID();
LLUUID b_uuid = b->getParentFolder()->getListener()->getUUID();
diff --git a/indra/newview/llfriendcard.cpp b/indra/newview/llfriendcard.cpp
index 5f79fe8b20..fbcaeee01f 100644
--- a/indra/newview/llfriendcard.cpp
+++ b/indra/newview/llfriendcard.cpp
@@ -135,14 +135,14 @@ const LLUUID LLFriendCardsManager::extractAvatarID(const LLUUID& avatarID)
// and this method must be called before any actions with friend list
void LLFriendCardsManager::ensureFriendFoldersExist()
{
- const LLUUID callingCardsFolderID = gInventory.findCategoryUUIDForType(LLFolderType::FT_CALLINGCARD);
+ LLUUID callingCardsFolderID = gInventory.findCategoryUUIDForType(LLAssetType::AT_CALLINGCARD);
LLUUID friendFolderUUID = findFriendFolderUUIDImpl();
if (friendFolderUUID.isNull())
{
friendFolderUUID = gInventory.createNewCategory(callingCardsFolderID,
- LLFolderType::FT_CALLINGCARD, get_friend_folder_name());
+ LLAssetType::AT_CALLINGCARD, get_friend_folder_name());
}
LLUUID friendAllSubfolderUUID = findFriendAllSubfolderUUIDImpl();
@@ -150,7 +150,7 @@ void LLFriendCardsManager::ensureFriendFoldersExist()
if (friendAllSubfolderUUID.isNull())
{
friendAllSubfolderUUID = gInventory.createNewCategory(friendFolderUUID,
- LLFolderType::FT_CALLINGCARD, get_friend_all_subfolder_name());
+ LLAssetType::AT_CALLINGCARD, get_friend_all_subfolder_name());
}
}
@@ -351,7 +351,7 @@ void LLFriendCardsManager::collectFriendsLists(folderid_buddies_map_t& folderBud
/************************************************************************/
const LLUUID& LLFriendCardsManager::findFriendFolderUUIDImpl() const
{
- const LLUUID callingCardsFolderID = gInventory.findCategoryUUIDForType(LLFolderType::FT_CALLINGCARD);
+ LLUUID callingCardsFolderID = gInventory.findCategoryUUIDForType(LLAssetType::AT_CALLINGCARD);
std::string friendFolderName = get_friend_folder_name();
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 19fa66fd0e..dee86f4a22 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -106,8 +106,6 @@ void LLIMFloater::onFocusReceived()
// virtual
void LLIMFloater::onClose(bool app_quitting)
{
- if (!gIMMgr->hasSession(mSessionID)) return;
-
setTyping(false);
gIMMgr->leaveSession(mSessionID);
}
@@ -236,10 +234,7 @@ BOOL LLIMFloater::postBuild()
mChatHistory = getChild<LLChatHistory>("chat_history");
- std::string session_name(LLIMModel::instance().getName(mSessionID));
- LLStringUtil::toUpper(session_name);
- setTitle(session_name);
-
+ setTitle(LLIMModel::instance().getName(mSessionID));
setDocked(true);
mTypingStart = LLTrans::getString("IM_typing_start_string");
diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp
index 9989a3b473..bfad2b1624 100644
--- a/indra/newview/llinspectavatar.cpp
+++ b/indra/newview/llinspectavatar.cpp
@@ -188,8 +188,7 @@ LLInspectAvatar::LLInspectAvatar(const LLSD& sd)
{
mCommitCallbackRegistrar.add("InspectAvatar.ViewProfile", boost::bind(&LLInspectAvatar::onClickViewProfile, this));
mCommitCallbackRegistrar.add("InspectAvatar.AddFriend", boost::bind(&LLInspectAvatar::onClickAddFriend, this));
- mCommitCallbackRegistrar.add("InspectAvatar.IM",
- boost::bind(&LLInspectAvatar::onClickIM, this));
+ mCommitCallbackRegistrar.add("InspectAvatar.IM", boost::bind(&LLInspectAvatar::onClickIM, this));
mCommitCallbackRegistrar.add("InspectAvatar.Teleport", boost::bind(&LLInspectAvatar::onClickTeleport, this));
mCommitCallbackRegistrar.add("InspectAvatar.InviteToGroup", boost::bind(&LLInspectAvatar::onClickInviteToGroup, this));
mCommitCallbackRegistrar.add("InspectAvatar.Pay", boost::bind(&LLInspectAvatar::onClickPay, this));
@@ -307,21 +306,7 @@ void LLInspectAvatar::requestUpdate()
// You can't re-add someone as a friend if they are already your friend
bool is_friend = LLAvatarTracker::instance().getBuddyInfo(mAvatarID) != NULL;
bool is_self = (mAvatarID == gAgentID);
- if (is_self)
- {
- getChild<LLUICtrl>("add_friend_btn")->setVisible(false);
- getChild<LLUICtrl>("im_btn")->setVisible(false);
- }
- else if (is_friend)
- {
- getChild<LLUICtrl>("add_friend_btn")->setVisible(false);
- getChild<LLUICtrl>("im_btn")->setVisible(true);
- }
- else
- {
- getChild<LLUICtrl>("add_friend_btn")->setVisible(true);
- getChild<LLUICtrl>("im_btn")->setVisible(false);
- }
+ childSetEnabled("add_friend_btn", !is_friend && !is_self);
// Use an avatar_icon even though the image id will come down with the
// avatar properties because the avatar_icon code maintains a cache of icons
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index b9a25d5dc7..b9775cf0e9 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -78,7 +78,6 @@
#include "llscrollcontainer.h"
#include "llimview.h"
#include "lltooldraganddrop.h"
-#include "llviewerfoldertype.h"
#include "llviewertexturelist.h"
#include "llviewerinventory.h"
#include "llviewerobjectlist.h"
@@ -86,7 +85,6 @@
#include "llvoavatar.h"
#include "llwearable.h"
#include "llwearablelist.h"
-#include "llviewerassettype.h"
#include "llviewermessage.h"
#include "llviewerregion.h"
#include "llvoavatarself.h"
@@ -204,9 +202,9 @@ PermissionMask LLInvFVBridge::getPermissionMask() const
}
// virtual
-LLFolderType::EType LLInvFVBridge::getPreferredType() const
+LLAssetType::EType LLInvFVBridge::getPreferredType() const
{
- return LLFolderType::FT_NONE;
+ return LLAssetType::AT_NONE;
}
@@ -341,7 +339,7 @@ void LLInvFVBridge::removeBatchNoCheck(LLDynamicArray<LLFolderViewEventListener*
LLInventoryModel* model = getInventoryModel();
if(!model) return;
LLMessageSystem* msg = gMessageSystem;
- const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ LLUUID trash_id = model->findCategoryUUIDForType(LLAssetType::AT_TRASH);
LLViewerInventoryItem* item = NULL;
LLViewerInventoryCategory* cat = NULL;
std::vector<LLUUID> move_ids;
@@ -506,7 +504,7 @@ BOOL LLInvFVBridge::isClipboardPasteableAsLink() const
}
}
const LLViewerInventoryCategory *cat = model->getCategory(objects.get(i));
- if (cat && !LLFolderType::lookupIsProtectedType(cat->getPreferredType()))
+ if (cat && !LLAssetType::lookupCanLink(cat->getPreferredType()))
{
return FALSE;
}
@@ -647,7 +645,7 @@ BOOL LLInvFVBridge::startDrag(EDragAndDropType* type, LLUUID* id) const
if(obj)
{
- *type = LLViewerAssetType::lookupDragAndDropType(obj->getActualType());
+ *type = LLAssetType::lookupDragAndDropType(obj->getActualType());
if(*type == DAD_NONE)
{
return FALSE;
@@ -688,7 +686,7 @@ BOOL LLInvFVBridge::isInTrash() const
{
LLInventoryModel* model = getInventoryModel();
if(!model) return FALSE;
- const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ const LLUUID trash_id = model->findCategoryUUIDForType(LLAssetType::AT_TRASH);
return model->isObjectDescendentOf(mUUID, trash_id);
}
@@ -701,7 +699,7 @@ BOOL LLInvFVBridge::isLinkedObjectInTrash() const
{
LLInventoryModel* model = getInventoryModel();
if(!model) return FALSE;
- const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ const LLUUID trash_id = model->findCategoryUUIDForType(LLAssetType::AT_TRASH);
return model->isObjectDescendentOf(obj->getLinkedUUID(), trash_id);
}
return FALSE;
@@ -719,7 +717,7 @@ BOOL LLInvFVBridge::isCOFFolder() const
{
const LLInventoryModel* model = getInventoryModel();
if(!model) return TRUE;
- const LLUUID cof_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
+ const LLUUID cof_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_CURRENT_OUTFIT);
if (mUUID == cof_id || model->isObjectDescendentOf(mUUID, cof_id))
{
return TRUE;
@@ -1046,7 +1044,7 @@ void LLItemBridge::restoreItem()
if(item)
{
LLInventoryModel* model = getInventoryModel();
- const LLUUID new_parent = model->findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(item->getType()));
+ const LLUUID new_parent = model->findCategoryUUIDForType(item->getType());
// do not restamp on restore.
LLInvFVBridge::changeItemParent(model, item, new_parent, FALSE);
}
@@ -1079,7 +1077,7 @@ void LLItemBridge::restoreToWorld()
}
// Check if it's in the trash. (again similar to the normal rez logic)
- const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);
if(gInventory.isObjectDescendentOf(itemp->getUUID(), trash_id))
{
remove_from_inventory = TRUE;
@@ -1274,7 +1272,7 @@ BOOL LLItemBridge::removeItem()
LLPreview::hide(mUUID, TRUE);
LLInventoryModel* model = getInventoryModel();
if(!model) return FALSE;
- const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ LLUUID trash_id = model->findCategoryUUIDForType(LLAssetType::AT_TRASH);
LLViewerInventoryItem* item = getItem();
// if item is not already in trash
@@ -1367,7 +1365,7 @@ BOOL LLFolderBridge::isItemMovable() const
LLInventoryObject* obj = getInventoryObject();
if(obj)
{
- return (!LLFolderType::lookupIsProtectedType(((LLInventoryCategory*)obj)->getPreferredType()));
+ return (!LLAssetType::lookupIsProtectedCategoryType(((LLInventoryCategory*)obj)->getPreferredType()));
}
return FALSE;
}
@@ -1403,7 +1401,7 @@ BOOL LLFolderBridge::isItemRemovable()
return FALSE;
}
- if(LLFolderType::lookupIsProtectedType(category->getPreferredType()))
+ if(LLAssetType::lookupIsProtectedCategoryType(category->getPreferredType()))
{
return FALSE;
}
@@ -1416,7 +1414,7 @@ BOOL LLFolderBridge::isItemRemovable()
for( i = 0; i < descendent_categories.count(); i++ )
{
LLInventoryCategory* category = descendent_categories[i];
- if(LLFolderType::lookupIsProtectedType(category->getPreferredType()))
+ if(LLAssetType::lookupIsProtectedCategoryType(category->getPreferredType()))
{
return FALSE;
}
@@ -1593,20 +1591,20 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
const LLUUID& cat_id = inv_cat->getUUID();
// Is the destination the trash?
- const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ const LLUUID trash_id = model->findCategoryUUIDForType(LLAssetType::AT_TRASH);
BOOL move_is_into_trash = (mUUID == trash_id)
|| model->isObjectDescendentOf(mUUID, trash_id);
- BOOL is_movable = (!LLFolderType::lookupIsProtectedType(inv_cat->getPreferredType()));
- const LLUUID current_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
+ BOOL is_movable = (!LLAssetType::lookupIsProtectedCategoryType(inv_cat->getPreferredType()));
+ LLUUID current_outfit_id = model->findCategoryUUIDForType(LLAssetType::AT_CURRENT_OUTFIT);
BOOL move_is_into_current_outfit = (mUUID == current_outfit_id);
- BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT);
+ BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLAssetType::AT_OUTFIT);
if (move_is_into_current_outfit || move_is_into_outfit)
{
// BAP - restrictions?
is_movable = true;
}
- if (mUUID == gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE))
+ if (mUUID == gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE))
{
is_movable = FALSE; // It's generally movable but not into Favorites folder. EXT-1604
}
@@ -1618,7 +1616,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
for( i = 0; i < descendent_categories.count(); i++ )
{
LLInventoryCategory* category = descendent_categories[i];
- if(LLFolderType::lookupIsProtectedType(category->getPreferredType()))
+ if(LLAssetType::lookupIsProtectedCategoryType(category->getPreferredType()))
{
// ...can't move "special folders" like Textures
is_movable = FALSE;
@@ -1851,8 +1849,8 @@ bool LLFindCOFValidItems::operator()(LLInventoryCategory* cat,
LLViewerInventoryCategory *linked_category = ((LLViewerInventoryItem*)item)->getLinkedCategory(); // BAP - safe?
// BAP remove AT_NONE support after ensembles are fully working?
return (linked_category &&
- ((linked_category->getPreferredType() == LLFolderType::FT_NONE) ||
- (LLFolderType::lookupIsEnsembleType(linked_category->getPreferredType()))));
+ ((linked_category->getPreferredType() == LLAssetType::AT_NONE) ||
+ (LLAssetType::lookupIsEnsembleCategoryType(linked_category->getPreferredType()))));
}
}
@@ -2154,7 +2152,7 @@ void LLFolderBridge::determineFolderType()
BOOL LLFolderBridge::isItemRenameable() const
{
LLViewerInventoryCategory* cat = (LLViewerInventoryCategory*)getCategory();
- if(cat && !LLFolderType::lookupIsProtectedType(cat->getPreferredType())
+ if(cat && !LLAssetType::lookupIsProtectedCategoryType(cat->getPreferredType())
&& (cat->getOwnerID() == gAgent.getID()))
{
return TRUE;
@@ -2169,15 +2167,15 @@ void LLFolderBridge::restoreItem()
if(cat)
{
LLInventoryModel* model = getInventoryModel();
- const LLUUID new_parent = model->findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(cat->getType()));
+ LLUUID new_parent = model->findCategoryUUIDForType(cat->getType());
// do not restamp children on restore
LLInvFVBridge::changeCategoryParent(model, cat, new_parent, FALSE);
}
}
-LLFolderType::EType LLFolderBridge::getPreferredType() const
+LLAssetType::EType LLFolderBridge::getPreferredType() const
{
- LLFolderType::EType preferred_type = LLFolderType::FT_NONE;
+ LLAssetType::EType preferred_type = LLAssetType::AT_NONE;
LLViewerInventoryCategory* cat = getCategory();
if(cat)
{
@@ -2190,7 +2188,7 @@ LLFolderType::EType LLFolderBridge::getPreferredType() const
// Icons for folders are based on the preferred type
LLUIImagePtr LLFolderBridge::getIcon() const
{
- LLFolderType::EType preferred_type = LLFolderType::FT_NONE;
+ LLAssetType::EType preferred_type = LLAssetType::AT_NONE;
LLViewerInventoryCategory* cat = getCategory();
if(cat)
{
@@ -2199,7 +2197,7 @@ LLUIImagePtr LLFolderBridge::getIcon() const
return getIcon(preferred_type);
}
-LLUIImagePtr LLFolderBridge::getIcon(LLFolderType::EType preferred_type)
+LLUIImagePtr LLFolderBridge::getIcon(LLAssetType::EType preferred_type)
{
// we only have one folder image now
return LLUI::getUIImage("Inv_FolderClosed");
@@ -2238,7 +2236,7 @@ BOOL LLFolderBridge::removeItem()
LLInventoryModel* model = getInventoryModel();
if(!model) return FALSE;
- const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ LLUUID trash_id = model->findCategoryUUIDForType(LLAssetType::AT_TRASH);
// Look for any gestures and deactivate them
LLInventoryModel::cat_array_t descendent_categories;
@@ -2356,11 +2354,11 @@ void LLFolderBridge::folderOptionsMenu()
if(!model) return;
const LLInventoryCategory* category = model->getCategory(mUUID);
- LLFolderType::EType type = category->getPreferredType();
- const bool is_default_folder = category && LLFolderType::lookupIsProtectedType(type);
+ LLAssetType::EType type = category->getPreferredType();
+ const bool is_default_folder = category && LLAssetType::lookupIsProtectedCategoryType(type);
// BAP change once we're no longer treating regular categories as ensembles.
- const bool is_ensemble = category && (type == LLFolderType::FT_NONE ||
- LLFolderType::lookupIsEnsembleType(type));
+ const bool is_ensemble = category && (type == LLAssetType::AT_NONE ||
+ LLAssetType::lookupIsEnsembleCategoryType(type));
// calling card related functionality for folders.
@@ -2426,8 +2424,8 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// std::vector<std::string> disabled_items;
LLInventoryModel* model = getInventoryModel();
if(!model) return;
- const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
- const LLUUID lost_and_found_id = model->findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND);
+ LLUUID trash_id = model->findCategoryUUIDForType(LLAssetType::AT_TRASH);
+ LLUUID lost_and_found_id = model->findCategoryUUIDForType(LLAssetType::AT_LOST_AND_FOUND);
mItems.clear(); //adding code to clear out member Items (which means Items should not have other data here at this point)
mDisabledItems.clear(); //adding code to clear out disabled members from previous
@@ -2457,6 +2455,7 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
else if(isAgentInventory()) // do not allow creating in library
{
LLViewerInventoryCategory *cat = getCategory();
+
// BAP removed protected check to re-enable standard ops in untyped folders.
// Not sure what the right thing is to do here.
if (!isCOFFolder() && cat /*&&
@@ -2473,7 +2472,7 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
mItems.push_back(std::string("Change Type"));
LLViewerInventoryCategory *cat = getCategory();
- if (cat && LLFolderType::lookupIsProtectedType(cat->getPreferredType()))
+ if (cat && LLAssetType::lookupIsProtectedCategoryType(cat->getPreferredType()))
{
mDisabledItems.push_back(std::string("Change Type"));
}
@@ -2483,7 +2482,7 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
else
{
// Want some but not all of the items from getClipboardEntries for outfits.
- if (cat && cat->getPreferredType()==LLFolderType::FT_OUTFIT)
+ if (cat && cat->getPreferredType()==LLAssetType::AT_OUTFIT)
{
mItems.push_back(std::string("Rename"));
mItems.push_back(std::string("Delete"));
@@ -2619,7 +2618,7 @@ void LLFolderBridge::createNewCategory(void* user_data)
if(!model) return;
LLUUID id;
id = model->createNewCategory(bridge->getUUID(),
- LLFolderType::FT_NONE,
+ LLAssetType::AT_NONE,
LLStringUtil::null);
model->notifyObservers();
@@ -2704,7 +2703,7 @@ void LLFolderBridge::createWearable(LLFolderBridge* bridge, EWearableType type)
// Separate function so can be called by global menu as well as right-click
// menu.
// static
-void LLFolderBridge::createWearable(const LLUUID &parent_id, EWearableType type)
+void LLFolderBridge::createWearable(LLUUID parent_id, EWearableType type)
{
LLWearable* wearable = LLWearableList::instance().createNewWearable(type);
LLAssetType::EType asset_type = wearable->getAssetType();
@@ -2847,17 +2846,17 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
break;
case LLAssetType::AT_CATEGORY:
- is_movable = !LLFolderType::lookupIsProtectedType(((LLInventoryCategory*)inv_item)->getPreferredType());
+ is_movable = !LLAssetType::lookupIsProtectedCategoryType(((LLInventoryCategory*)inv_item)->getPreferredType());
break;
default:
break;
}
- const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ LLUUID trash_id = model->findCategoryUUIDForType(LLAssetType::AT_TRASH);
BOOL move_is_into_trash = (mUUID == trash_id) || model->isObjectDescendentOf(mUUID, trash_id);
- const LLUUID current_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
+ LLUUID current_outfit_id = model->findCategoryUUIDForType(LLAssetType::AT_CURRENT_OUTFIT);
BOOL move_is_into_current_outfit = (mUUID == current_outfit_id);
- BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT);
+ BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLAssetType::AT_OUTFIT);
if(is_movable && move_is_into_trash)
{
@@ -2887,7 +2886,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
.isObjDirectDescendentOfCategory (inv_item, getCategory());
}
- const LLUUID& favorites_id = model->findCategoryUUIDForType(LLFolderType::FT_FAVORITE);
+ LLUUID favorites_id = model->findCategoryUUIDForType(LLAssetType::AT_FAVORITE);
// we can move item inside a folder only if this folder is Favorites. See EXT-719
accept = is_movable && ((mUUID != inv_item->getParentUUID()) || (mUUID == favorites_id));
@@ -4935,7 +4934,7 @@ void LLLSLTextBridgeAction::doIt()
BOOL LLWearableBridgeAction::isInTrash() const
{
if(!mModel) return FALSE;
- const LLUUID trash_id = mModel->findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ LLUUID trash_id = mModel->findCategoryUUIDForType(LLAssetType::AT_TRASH);
return mModel->isObjectDescendentOf(mUUID, trash_id);
}
@@ -5074,7 +5073,7 @@ std::string LLLinkFolderBridge::sPrefix("Link: ");
LLUIImagePtr LLLinkFolderBridge::getIcon() const
{
- LLFolderType::EType preferred_type = LLFolderType::FT_NONE;
+ LLAssetType::EType preferred_type = LLAssetType::AT_NONE;
if (LLViewerInventoryItem *item = getItem())
{
if (const LLViewerInventoryCategory* cat = item->getLinkedCategory())
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index f95e8f9361..3f3513a665 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -159,7 +159,7 @@ public:
virtual const std::string& getName() const;
virtual const std::string& getDisplayName() const;
virtual PermissionMask getPermissionMask() const;
- virtual LLFolderType::EType getPreferredType() const;
+ virtual LLAssetType::EType getPreferredType() const;
virtual time_t getCreationDate() const;
virtual LLFontGL::StyleFlags getLabelStyle() const
{
@@ -298,9 +298,9 @@ public:
virtual void selectItem();
virtual void restoreItem();
- virtual LLFolderType::EType getPreferredType() const;
+ virtual LLAssetType::EType getPreferredType() const;
virtual LLUIImagePtr getIcon() const;
- static LLUIImagePtr getIcon(LLFolderType::EType preferred_type);
+ static LLUIImagePtr getIcon(LLAssetType::EType asset_type);
virtual BOOL renameItem(const std::string& new_name);
virtual BOOL removeItem();
@@ -321,7 +321,7 @@ public:
virtual BOOL copyToClipboard() const;
static void createWearable(LLFolderBridge* bridge, EWearableType type);
- static void createWearable(const LLUUID &parent_folder_id, EWearableType type);
+ static void createWearable(LLUUID parent_folder_id, EWearableType type);
LLViewerInventoryCategory* getCategory() const;
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 75218e98e0..77121bd922 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -317,6 +317,10 @@ const std::string& get_item_icon_name(LLAssetType::EType asset_type,
case LLAssetType::AT_GESTURE:
idx = GESTURE_ICON_NAME;
break;
+ case LLAssetType::AT_FAVORITE:
+ //TODO - need bette idx
+ idx = LANDMARK_ICON_NAME;
+ break;
case LLAssetType::AT_LINK:
idx = LINKITEM_ICON_NAME;
break;
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index baf34b42ff..23439191f3 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -49,7 +49,6 @@
#include "llinventoryfunctions.h"
#include "llinventorypanel.h"
#include "llfloaterinventory.h"
-#include "llviewerfoldertype.h"
#include "llviewerinventory.h"
#include "llviewermessage.h"
#include "llviewerwindow.h"
@@ -317,7 +316,7 @@ void LLInventoryModel::unlockDirectDescendentArrays(const LLUUID& cat_id)
// specifies 'type' as what it defaults to containing. The category is
// not necessarily only for that type. *NOTE: This will create a new
// inventory category on the fly if one does not exist.
-const LLUUID LLInventoryModel::findCategoryUUIDForType(LLFolderType::EType t, bool create_folder)
+LLUUID LLInventoryModel::findCategoryUUIDForType(LLAssetType::EType t, bool create_folder)
{
const LLUUID &rv = findCatUUID(t);
if(rv.isNull() && isInventoryUsable() && create_folder)
@@ -333,10 +332,10 @@ const LLUUID LLInventoryModel::findCategoryUUIDForType(LLFolderType::EType t, bo
// Internal method which looks for a category with the specified
// preferred type. Returns LLUUID::null if not found.
-const LLUUID &LLInventoryModel::findCatUUID(LLFolderType::EType preferred_type) const
+const LLUUID &LLInventoryModel::findCatUUID(LLAssetType::EType preferred_type) const
{
const LLUUID &root_id = gInventory.getRootFolderID();
- if(LLFolderType::FT_CATEGORY == preferred_type)
+ if(LLAssetType::AT_CATEGORY == preferred_type)
{
return root_id;
}
@@ -364,7 +363,7 @@ const LLUUID &LLInventoryModel::findCatUUID(LLFolderType::EType preferred_type)
// version will take care of details like what the name should be
// based on preferred type. Returns the UUID of the new category.
LLUUID LLInventoryModel::createNewCategory(const LLUUID& parent_id,
- LLFolderType::EType preferred_type,
+ LLAssetType::EType preferred_type,
const std::string& pname)
{
LLUUID id;
@@ -374,9 +373,9 @@ LLUUID LLInventoryModel::createNewCategory(const LLUUID& parent_id,
return id;
}
- if(LLFolderType::lookup(preferred_type) == LLFolderType::badLookup())
+ if(preferred_type == LLAssetType::AT_SIMSTATE)
{
- lldebugs << "Attempt to create undefined category." << llendl;
+ lldebugs << "Attempt to create simstate category." << llendl;
return id;
}
@@ -388,7 +387,7 @@ LLUUID LLInventoryModel::createNewCategory(const LLUUID& parent_id,
}
else
{
- name.assign(LLViewerFolderType::lookupNewCategoryName(preferred_type));
+ name.assign(LLAssetType::lookupCategoryName(preferred_type));
}
// Add the category to the internal representation
@@ -452,7 +451,7 @@ void LLInventoryModel::collectDescendentsIf(const LLUUID& id,
// Start with categories
if(!include_trash)
{
- const LLUUID trash_id = findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ const LLUUID trash_id = findCategoryUUIDForType(LLAssetType::AT_TRASH);
if(trash_id.notNull() && (trash_id == id))
return;
}
@@ -486,7 +485,7 @@ void LLInventoryModel::collectDescendentsIf(const LLUUID& id,
if (item->getActualType() == LLAssetType::AT_LINK_FOLDER)
{
LLViewerInventoryCategory *linked_cat = item->getLinkedCategory();
- if (linked_cat && linked_cat->getPreferredType() != LLFolderType::FT_OUTFIT)
+ if (linked_cat && linked_cat->getPreferredType() != LLAssetType::AT_OUTFIT)
// BAP - was
// LLAssetType::lookupIsEnsembleCategoryType(linked_cat->getPreferredType()))
// Change back once ensemble typing is in place.
@@ -666,7 +665,7 @@ U32 LLInventoryModel::updateItem(const LLViewerInventoryItem* item)
if(item->getParentUUID().isNull())
{
- const LLUUID category_id = findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(new_item->getType()));
+ LLUUID category_id = findCategoryUUIDForType(new_item->getType());
new_item->setParent(category_id);
item_array_t* item_array = get_ptr_in_map(mParentChildItemTree, category_id);
if( item_array )
@@ -690,7 +689,7 @@ U32 LLInventoryModel::updateItem(const LLViewerInventoryItem* item)
LLUUID parent_id = item->getParentUUID();
if(parent_id == CATEGORIZE_LOST_AND_FOUND_ID)
{
- parent_id = findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND);
+ parent_id = findCategoryUUIDForType(LLAssetType::AT_LOST_AND_FOUND);
new_item->setParent(parent_id);
}
item_array_t* item_array = get_ptr_in_map(mParentChildItemTree, parent_id);
@@ -703,7 +702,7 @@ U32 LLInventoryModel::updateItem(const LLViewerInventoryItem* item)
// Whoops! No such parent, make one.
llinfos << "Lost item: " << new_item->getUUID() << " - "
<< new_item->getName() << llendl;
- parent_id = findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND);
+ parent_id = findCategoryUUIDForType(LLAssetType::AT_LOST_AND_FOUND);
new_item->setParent(parent_id);
item_array = get_ptr_in_map(mParentChildItemTree, parent_id);
if(item_array)
@@ -1185,7 +1184,7 @@ void LLInventoryModel::mock(const LLUUID& root_id)
root_id,
LLUUID::null,
LLAssetType::AT_CATEGORY,
- LLFolderType::lookupNewCategoryName(LLFolderType::FT_ROOT_CATEGORY),
+ LLAssetType::lookupCategoryName(LLAssetType::AT_ROOT_CATEGORY),
gAgent.getID());
addCategory(cat);
gInventory.buildParentChildMap();
@@ -1343,7 +1342,7 @@ void fetchDescendentsResponder::result(const LLSD& content)
item_it != folder_sd["items"].endArray();
++item_it)
{
- const LLUUID lost_uuid = gInventory.findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND);
+ LLUUID lost_uuid = gInventory.findCategoryUUIDForType(LLAssetType::AT_LOST_AND_FOUND);
if (lost_uuid.notNull())
{
LLSD item = *item_it;
@@ -2050,11 +2049,11 @@ bool LLInventoryModel::loadSkeleton(
cat->setUUID(folder_id.asUUID());
cat->setParent(parent_id.asUUID());
- LLFolderType::EType preferred_type = LLFolderType::FT_NONE;
+ LLAssetType::EType preferred_type = LLAssetType::AT_NONE;
LLSD type_default = (*it)["type_default"];
if(type_default.isDefined())
{
- preferred_type = (LLFolderType::EType)type_default.asInteger();
+ preferred_type = (LLAssetType::EType)type_default.asInteger();
}
cat->setPreferredType(preferred_type);
cat->setVersion(version.asInteger());
@@ -2401,12 +2400,12 @@ void LLInventoryModel::buildParentChildMap()
<< cat->getName() << llendl;
++lost;
// plop it into the lost & found.
- LLFolderType::EType pref = cat->getPreferredType();
- if(LLFolderType::FT_NONE == pref)
+ LLAssetType::EType pref = cat->getPreferredType();
+ if(LLAssetType::AT_NONE == pref)
{
- cat->setParent(findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND));
+ cat->setParent(findCategoryUUIDForType(LLAssetType::AT_LOST_AND_FOUND));
}
- else if(LLFolderType::FT_CATEGORY == pref)
+ else if(LLAssetType::AT_CATEGORY == pref)
{
// it's the root
cat->setParent(LLUUID::null);
@@ -2465,7 +2464,7 @@ void LLInventoryModel::buildParentChildMap()
++lost;
// plop it into the lost & found.
//
- item->setParent(findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND));
+ item->setParent(findCategoryUUIDForType(LLAssetType::AT_LOST_AND_FOUND));
// move it later using a special message to move items. If
// we update server here, the client might crash.
//item->updateServer();
@@ -2486,7 +2485,7 @@ void LLInventoryModel::buildParentChildMap()
llwarns << "Found " << lost << " lost items." << llendl;
LLMessageSystem* msg = gMessageSystem;
BOOL start_new_message = TRUE;
- const LLUUID lnf = findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND);
+ LLUUID lnf = findCategoryUUIDForType(LLAssetType::AT_LOST_AND_FOUND);
for(std::vector<LLUUID>::iterator it = lost_item_ids.begin() ; it < lost_item_ids.end(); ++it)
{
if(start_new_message)
@@ -2939,7 +2938,7 @@ void LLInventoryModel::processUpdateInventoryFolder(LLMessageSystem* msg,
lastfolder = tfolder;
tfolder->unpackMessage(msg, _PREHASH_FolderData, i);
// make sure it's not a protected folder
- tfolder->setPreferredType(LLFolderType::FT_NONE);
+ tfolder->setPreferredType(LLAssetType::AT_NONE);
folders.push_back(tfolder);
// examine update for changes.
LLViewerInventoryCategory* folderp = gInventory.getCategory(tfolder->getUUID());
@@ -3326,31 +3325,31 @@ void LLInventoryModel::processMoveInventoryItem(LLMessageSystem* msg, void**)
//----------------------------------------------------------------------------
-// Trash: LLFolderType::FT_TRASH, "ConfirmEmptyTrash"
-// Lost&Found: LLFolderType::FT_LOST_AND_FOUND, "ConfirmEmptyLostAndFound"
+// Trash: LLAssetType::AT_TRASH, "ConfirmEmptyTrash"
+// Lost&Found: LLAssetType::AT_LOST_AND_FOUND, "ConfirmEmptyLostAndFound"
-bool LLInventoryModel::callbackEmptyFolderType(const LLSD& notification, const LLSD& response, LLFolderType::EType preferred_type)
+bool LLInventoryModel::callbackEmptyFolderType(const LLSD& notification, const LLSD& response, LLAssetType::EType folder_type)
{
S32 option = LLNotification::getSelectedOption(notification, response);
if (option == 0) // YES
{
- const LLUUID folder_id = findCategoryUUIDForType(preferred_type);
+ LLUUID folder_id = findCategoryUUIDForType(folder_type);
purgeDescendentsOf(folder_id);
notifyObservers();
}
return false;
}
-void LLInventoryModel::emptyFolderType(const std::string notification, LLFolderType::EType preferred_type)
+void LLInventoryModel::emptyFolderType(const std::string notification, LLAssetType::EType folder_type)
{
if (!notification.empty())
{
LLNotifications::instance().add(notification, LLSD(), LLSD(),
- boost::bind(&LLInventoryModel::callbackEmptyFolderType, this, _1, _2, preferred_type));
+ boost::bind(&LLInventoryModel::callbackEmptyFolderType, this, _1, _2, folder_type));
}
else
{
- const LLUUID folder_id = findCategoryUUIDForType(preferred_type);
+ LLUUID folder_id = findCategoryUUIDForType(folder_type);
purgeDescendentsOf(folder_id);
notifyObservers();
}
@@ -3361,7 +3360,7 @@ void LLInventoryModel::emptyFolderType(const std::string notification, LLFolderT
void LLInventoryModel::removeItem(const LLUUID& item_id)
{
LLViewerInventoryItem* item = getItem(item_id);
- const LLUUID new_parent = findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ const LLUUID new_parent = findCategoryUUIDForType(LLAssetType::AT_TRASH);
if (item && item->getParentUUID() != new_parent)
{
LLInventoryModel::update_list_t update;
diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h
index aba0a619db..d51460b374 100644
--- a/indra/newview/llinventorymodel.h
+++ b/indra/newview/llinventorymodel.h
@@ -34,7 +34,6 @@
#define LL_LLINVENTORYMODEL_H
#include "llassettype.h"
-#include "llfoldertype.h"
#include "lldarray.h"
#include "llframetimer.h"
#include "llhttpclient.h"
@@ -281,7 +280,7 @@ public:
// SDK: Added flag to specify whether the folder should be created if not found. This fixes the horrible
// multiple trash can bug.
- const LLUUID findCategoryUUIDForType(LLFolderType::EType preferred_type, bool create_folder = true);
+ LLUUID findCategoryUUIDForType(LLAssetType::EType preferred_type, bool create_folder = true);
// Call this method when it's time to update everyone on a new
// state, by default, the inventory model will not update
@@ -330,7 +329,7 @@ public:
// category. If you want to use the default name based on type,
// pass in a NULL to the 'name parameter.
LLUUID createNewCategory(const LLUUID& parent_id,
- LLFolderType::EType preferred_type,
+ LLAssetType::EType preferred_type,
const std::string& name);
// methods to load up inventory skeleton & meat. These are used
@@ -386,9 +385,9 @@ public:
bool isCategoryComplete(const LLUUID& cat_id) const;
// callbacks
- // Trigger a notification and empty the folder type (FT_TRASH or FT_LOST_AND_FOUND) if confirmed
- void emptyFolderType(const std::string notification, LLFolderType::EType folder_type);
- bool callbackEmptyFolderType(const LLSD& notification, const LLSD& response, LLFolderType::EType preferred_type);
+ // Trigger a notification and empty the folder type (AT_TRASH or AT_LOST_AND_FOUND) if confirmed
+ void emptyFolderType(const std::string notification, LLAssetType::EType folder_type);
+ bool callbackEmptyFolderType(const LLSD& notification, const LLSD& response, LLAssetType::EType folder_type);
// Utility Functions
void removeItem(const LLUUID& item_id);
@@ -432,7 +431,7 @@ protected:
//
// Internal method which looks for a category with the specified
// preferred type. Returns LLUUID::null if not found
- const LLUUID &findCatUUID(LLFolderType::EType preferred_type) const;
+ const LLUUID &findCatUUID(LLAssetType::EType preferred_type) const;
// Empty the entire contents
void empty();
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 178e7d0823..d1ca0efed3 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -78,7 +78,6 @@
#include "lltabcontainer.h"
#include "lltooldraganddrop.h"
#include "lluictrlfactory.h"
-#include "llviewerfoldertype.h"
#include "llviewerinventory.h"
#include "llviewermessage.h"
#include "llviewerobjectlist.h"
@@ -111,8 +110,8 @@ LLInventoryPanel::LLInventoryPanel(const LLInventoryPanel::Params& p) :
// contex menu callbacks
mCommitCallbackRegistrar.add("Inventory.DoToSelected", boost::bind(&LLInventoryPanel::doToSelected, this, _2));
- mCommitCallbackRegistrar.add("Inventory.EmptyTrash", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyTrash", LLFolderType::FT_TRASH));
- mCommitCallbackRegistrar.add("Inventory.EmptyLostAndFound", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyLostAndFound", LLFolderType::FT_LOST_AND_FOUND));
+ mCommitCallbackRegistrar.add("Inventory.EmptyTrash", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyTrash", LLAssetType::AT_TRASH));
+ mCommitCallbackRegistrar.add("Inventory.EmptyLostAndFound", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyLostAndFound", LLAssetType::AT_LOST_AND_FOUND));
mCommitCallbackRegistrar.add("Inventory.DoCreate", boost::bind(&LLInventoryPanel::doCreate, this, _2));
mCommitCallbackRegistrar.add("Inventory.AttachObject", boost::bind(&LLInventoryPanel::attachObject, this, _2));
mCommitCallbackRegistrar.add("Inventory.BeginIMSession", boost::bind(&LLInventoryPanel::beginIMSession, this));
@@ -170,19 +169,19 @@ BOOL LLInventoryPanel::postBuild()
// determine the root folder, if any, so inventory contents show just the children
// of that folder (i.e. not including the folder itself).
- const LLFolderType::EType preferred_type = LLViewerFolderType::lookupTypeFromNewCategoryName(mStartFolderString);
+ const LLAssetType::EType preferred_type = LLAssetType::lookupHumanReadable(mStartFolderString);
- if ("INVENTORY" == mStartFolderString)
+ if ("inventory" == mStartFolderString)
{
mStartFolderID = gInventory.getRootFolderID();
}
- else if ("LIBRARY" == mStartFolderString)
+ else if ("library" == mStartFolderString)
{
mStartFolderID = gInventory.getLibraryRootFolderID();
}
else
{
- mStartFolderID = (preferred_type != LLFolderType::FT_NONE ? gInventory.findCategoryUUIDForType(preferred_type) : LLUUID::null);
+ mStartFolderID = (preferred_type != LLAssetType::AT_NONE ? gInventory.findCategoryUUIDForType(preferred_type) : LLUUID::null);
}
// build view of inventory if we need default full hierarchy and inventory ready, otherwise wait for modelChanged() callback
@@ -193,7 +192,7 @@ BOOL LLInventoryPanel::postBuild()
}
// bit of a hack to make sure the inventory is open.
- mFolders->openFolder(preferred_type != LLFolderType::FT_NONE ? LLViewerFolderType::lookupNewCategoryName(preferred_type) : "My Inventory");
+ mFolders->openFolder(preferred_type != LLAssetType::AT_NONE ? LLAssetType::lookupCategoryName(preferred_type) : "My Inventory");
if (mSortOrderSetting != INHERIT_SORT_ORDER)
{
@@ -383,19 +382,6 @@ void LLInventoryPanel::modelChanged(U32 mask)
view_item->getParentFolder()->extractItem(view_item);
view_item->addToFolder(new_parent, mFolders);
}
-/*
- on the other side in case Inventory Panel has content of the any folder
- it is possible that item moved to some folder which is absent in current
- Panel. For ex. removing item (via moving to trash).
- In this case we need to check if new parent is other then inventory start folder
- and simply remove its View from the hierarchy.
- See details in EXT-2098.
-*/
- // So, let check if item was moved into folder out of this Inventory Panel.
- else if (mStartFolderID.notNull() && NULL == new_parent && model_item->getParentUUID() != mStartFolderID)
- {
- view_item->getParentFolder()->extractItem(view_item);
- }
}
}
else
@@ -664,7 +650,7 @@ void LLInventoryPanel::openAllFolders()
mFolders->arrangeAll();
}
-void LLInventoryPanel::openDefaultFolderForType(LLFolderType::EType type)
+void LLInventoryPanel::openDefaultFolderForType(LLAssetType::EType type)
{
LLUUID category_id = mInventory->findCategoryUUIDForType(type);
LLOpenFolderByID opener(category_id);
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 9f74fad5c1..997678a478 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -122,7 +122,7 @@ public:
// Call this method to set the selection.
void openAllFolders();
- void openDefaultFolderForType(LLFolderType::EType);
+ void openDefaultFolderForType(LLAssetType::EType);
void setSelection(const LLUUID& obj_id, BOOL take_keyboard_focus);
void setSelectCallback(const LLFolderView::signal_t::slot_type& cb) { if (mFolders) mFolders->setSelectCallback(cb); }
void clearSelection();
diff --git a/indra/newview/lllandmarkactions.cpp b/indra/newview/lllandmarkactions.cpp
index b1829b3945..0b07dd4f21 100644
--- a/indra/newview/lllandmarkactions.cpp
+++ b/indra/newview/lllandmarkactions.cpp
@@ -135,13 +135,13 @@ public:
// Returns true if the given inventory item is a landmark pointing to the current parcel.
// Used to find out if there is at least one landmark from current parcel.
-class LLFirstAgentParcelLandmark : public LLInventoryCollectFunctor
+class LLFistAgentParcelLandmark : public LLInventoryCollectFunctor
{
private:
bool mFounded;// to avoid unnecessary check
public:
- LLFirstAgentParcelLandmark(): mFounded(false){}
+ LLFistAgentParcelLandmark(): mFounded(false){}
/*virtual*/ bool operator()(LLInventoryCategory* cat, LLInventoryItem* item)
{
@@ -165,7 +165,8 @@ static void fetch_landmarks(LLInventoryModel::cat_array_t& cats,
LLInventoryCollectFunctor& add)
{
// Look in "My Favorites"
- const LLUUID favorites_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE);
+ LLUUID favorites_folder_id =
+ gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE);
gInventory.collectDescendentsIf(favorites_folder_id,
cats,
items,
@@ -173,7 +174,8 @@ static void fetch_landmarks(LLInventoryModel::cat_array_t& cats,
add);
// Look in "Landmarks"
- const LLUUID landmarks_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK);
+ LLUUID landmarks_folder_id =
+ gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK);
gInventory.collectDescendentsIf(landmarks_folder_id,
cats,
items,
@@ -200,7 +202,7 @@ bool LLLandmarkActions::landmarkAlreadyExists()
//static
bool LLLandmarkActions::hasParcelLandmark()
{
- LLFirstAgentParcelLandmark get_first_agent_landmark;
+ LLFistAgentParcelLandmark get_first_agent_landmark;
LLInventoryModel::cat_array_t cats;
LLInventoryModel::item_array_t items;
fetch_landmarks(cats, items, get_first_agent_landmark);
@@ -285,7 +287,7 @@ void LLLandmarkActions::createLandmarkHere()
LLAgentUI::buildLocationString(landmark_name, LLAgentUI::LOCATION_FORMAT_LANDMARK);
LLAgentUI::buildLocationString(landmark_desc, LLAgentUI::LOCATION_FORMAT_FULL);
- const LLUUID folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK);
+ LLUUID folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK);
createLandmarkHere(landmark_name, landmark_desc, folder_id);
}
diff --git a/indra/newview/lllandmarkactions.h b/indra/newview/lllandmarkactions.h
index 1c524c820c..312426cab0 100644
--- a/indra/newview/lllandmarkactions.h
+++ b/indra/newview/lllandmarkactions.h
@@ -55,7 +55,7 @@ public:
static bool landmarkAlreadyExists();
/**
- * @brief Checks whether landmark exists for current agent parcel.
+ * @brief Checks whether landmark exists for current parcel.
*/
static bool hasParcelLandmark();
diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp
index b35fd6134b..e63daac4af 100644
--- a/indra/newview/llnavigationbar.cpp
+++ b/indra/newview/llnavigationbar.cpp
@@ -50,7 +50,6 @@
#include "llslurl.h"
#include "llurlsimstring.h"
#include "llviewerinventory.h"
-#include "llviewermenu.h"
#include "llviewerparcelmgr.h"
#include "llworldmap.h"
#include "llappviewer.h"
@@ -272,12 +271,6 @@ void LLNavigationBar::draw()
LLPanel::draw();
}
-BOOL LLNavigationBar::handleRightMouseDown(S32 x, S32 y, MASK mask)
-{
- show_navbar_context_menu(this,x,y);
- return TRUE;
-}
-
void LLNavigationBar::onBackButtonClicked()
{
LLTeleportHistory::getInstance()->goBack();
diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h
index 52f5a827e4..04707d8d48 100644
--- a/indra/newview/llnavigationbar.h
+++ b/indra/newview/llnavigationbar.h
@@ -54,7 +54,6 @@ public:
virtual ~LLNavigationBar();
/*virtual*/ void draw();
- /*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL postBuild();
void handleLoginComplete();
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index 81d033d7f9..12638ab855 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -97,39 +97,14 @@ BOOL LLNearbyChat::postBuild()
if (getDockControl() == NULL)
{
setDockControl(new LLDockControl(
- LLBottomTray::getInstance()->getNearbyChatBar(), this,
- getDockTongue(), LLDockControl::LEFT, boost::bind(&LLNearbyChat::getAllowedRect, this, _1)));
+ LLBottomTray::getInstance()->getNearbyChatBar(), this,
+ getDockTongue(), LLDockControl::LEFT, boost::bind(&LLNearbyChat::getAllowedRect, this, _1)));
}
return true;
}
-void LLNearbyChat::applySavedVariables()
-{
-
- if (mRectControl.size() > 1)
- {
- const LLRect& rect = LLUI::sSettingGroups["floater"]->getRect(mRectControl);
- reshape(rect.getWidth(), rect.getHeight());
- setRect(rect);
- }
-
-
- if(!LLUI::sSettingGroups["floater"]->controlExists(mDocStateControl))
- {
- setDocked(true);
- }
- else
- {
- if (mDocStateControl.size() > 1)
- {
- bool dockState = LLUI::sSettingGroups["floater"]->getBOOL(mDocStateControl);
- setDocked(dockState);
- }
- }
-}
-
LLColor4 nearbychat_get_text_color(const LLChat& chat)
{
LLColor4 text_color;
@@ -290,5 +265,11 @@ void LLNearbyChat::getAllowedRect(LLRect& rect)
{
rect = gViewerWindow->getWorldViewRect();
}
-
+void LLNearbyChat::setVisible (BOOL visible)
+{
+ LLDockableFloater::setVisible(visible);
+}
+void LLNearbyChat::toggleWindow()
+{
+}
diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h
index cb4654654a..20cbf7537d 100644
--- a/indra/newview/llnearbychat.h
+++ b/indra/newview/llnearbychat.h
@@ -52,15 +52,16 @@ public:
void onNearbyChatContextMenuItemClicked(const LLSD& userdata);
bool onNearbyChatCheckContextMenuItem(const LLSD& userdata);
- void setDocked (bool docked, bool pop_on_undock = true);
+ void setDocked (bool docked, bool pop_on_undock);
+ void toggleWindow ();
/*virtual*/ void onOpen (const LLSD& key);
+ virtual void setVisible (BOOL visible);
+
virtual void setRect (const LLRect &rect);
private:
- virtual void applySavedVariables();
-
void getAllowedRect (LLRect& rect);
void onNearbySpeakers ();
diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp
index d7a5ff289c..32dc5e5927 100644
--- a/indra/newview/llnearbychatbar.cpp
+++ b/indra/newview/llnearbychatbar.cpp
@@ -77,10 +77,6 @@ LLGestureComboBox::LLGestureComboBox(const LLGestureComboBox::Params& p)
// refresh list from current active gestures
refreshGestures();
-
- // This forces using of halign from xml, since LLComboBox
- // sets it to LLFontGL::LEFT, if text entry is disabled
- mButton->setHAlign(p.drop_down_button.font_halign);
}
LLGestureComboBox::~LLGestureComboBox()
@@ -211,7 +207,6 @@ LLNearbyChatBar::LLNearbyChatBar()
: LLPanel()
, mChatBox(NULL)
{
- mSpeakerMgr = LLLocalSpeakerMgr::getInstance();
}
//virtual
@@ -521,8 +516,8 @@ void LLNearbyChatBar::displaySpeakingIndicator()
LLUUID id;
id.setNull();
- mSpeakerMgr->update(TRUE);
- mSpeakerMgr->getSpeakerList(&speaker_list, FALSE);
+ mSpeakerMgr.update(TRUE);
+ mSpeakerMgr.getSpeakerList(&speaker_list, FALSE);
for (LLSpeakerMgr::speaker_list_t::iterator i = speaker_list.begin(); i != speaker_list.end(); ++i)
{
diff --git a/indra/newview/llnearbychatbar.h b/indra/newview/llnearbychatbar.h
index 0307eee7bf..06204e6367 100644
--- a/indra/newview/llnearbychatbar.h
+++ b/indra/newview/llnearbychatbar.h
@@ -127,7 +127,7 @@ protected:
LLLineEditor* mChatBox;
LLTalkButton* mTalkBtn;
LLOutputMonitorCtrl* mOutputMonitor;
- LLLocalSpeakerMgr* mSpeakerMgr;
+ LLActiveSpeakerMgr mSpeakerMgr;
};
#endif
diff --git a/indra/newview/lloutputmonitorctrl.cpp b/indra/newview/lloutputmonitorctrl.cpp
index 39381e3faa..8bac9937f0 100644
--- a/indra/newview/lloutputmonitorctrl.cpp
+++ b/indra/newview/lloutputmonitorctrl.cpp
@@ -80,8 +80,7 @@ LLOutputMonitorCtrl::LLOutputMonitorCtrl(const LLOutputMonitorCtrl::Params& p)
mImageLevel2(p.image_level_2),
mImageLevel3(p.image_level_3),
mAutoUpdate(p.auto_update),
- mSpeakerId(p.speaker_id),
- mIsAgentControl(false)
+ mSpeakerId(p.speaker_id)
{
//static LLUIColor output_monitor_muted_color = LLUIColorTable::instance().getColor("OutputMonitorMutedColor", LLColor4::orange);
//static LLUIColor output_monitor_overdriven_color = LLUIColorTable::instance().getColor("OutputMonitorOverdrivenColor", LLColor4::red);
@@ -133,14 +132,7 @@ void LLOutputMonitorCtrl::draw()
if (getVisible() && mAutoUpdate && !mIsMuted && mSpeakerId.notNull())
{
setPower(gVoiceClient->getCurrentPower(mSpeakerId));
- if(mIsAgentControl)
- {
- setIsTalking(gVoiceClient->getUserPTTState());
- }
- else
- {
- setIsTalking(gVoiceClient->getIsSpeaking(mSpeakerId));
- }
+ setIsTalking(gVoiceClient->getIsSpeaking(mSpeakerId));
}
LLPointer<LLUIImage> icon;
diff --git a/indra/newview/lloutputmonitorctrl.h b/indra/newview/lloutputmonitorctrl.h
index 85ea552a57..7a7b8bc3a1 100644
--- a/indra/newview/lloutputmonitorctrl.h
+++ b/indra/newview/lloutputmonitorctrl.h
@@ -81,8 +81,6 @@ public:
// For the current user, need to know the PTT state to show
// correct button image.
- void setIsAgentControl(bool val) { mIsAgentControl = val; }
-
void setIsTalking(bool val) { mIsTalking = val; }
void setSpeakerId(const LLUUID& speaker_id);
@@ -102,7 +100,6 @@ private:
F32 mPower;
- bool mIsAgentControl;
bool mIsMuted;
bool mIsTalking;
LLPointer<LLUIImage> mImageMute;
diff --git a/indra/newview/llpanelcontents.cpp b/indra/newview/llpanelcontents.cpp
index 9d591ef43d..c28792a711 100644
--- a/indra/newview/llpanelcontents.cpp
+++ b/indra/newview/llpanelcontents.cpp
@@ -59,7 +59,6 @@
#include "lltoolcomp.h"
#include "lltoolmgr.h"
#include "lltrans.h"
-#include "llviewerassettype.h"
#include "llviewerobject.h"
#include "llviewerregion.h"
#include "llviewerwindow.h"
@@ -168,7 +167,7 @@ void LLPanelContents::onClickNewScript(void *userdata)
PERM_NONE,
PERM_MOVE | PERM_TRANSFER);
std::string desc;
- LLViewerAssetType::generateDescriptionFor(LLAssetType::AT_LSL_TEXT, desc);
+ LLAssetType::generateDescriptionFor(LLAssetType::AT_LSL_TEXT, desc);
LLPointer<LLViewerInventoryItem> new_item =
new LLViewerInventoryItem(
LLUUID::null,
diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp
index 21e88b6d07..b54975b76b 100644
--- a/indra/newview/llpanelimcontrolpanel.cpp
+++ b/indra/newview/llpanelimcontrolpanel.cpp
@@ -112,32 +112,21 @@ BOOL LLPanelIMControlPanel::postBuild()
childSetAction("add_friend_btn", boost::bind(&LLPanelIMControlPanel::onAddFriendButtonClicked, this));
childSetAction("share_btn", boost::bind(&LLPanelIMControlPanel::onShareButtonClicked, this));
- childSetAction("teleport_btn", boost::bind(&LLPanelIMControlPanel::onTeleportButtonClicked, this));
- childSetAction("pay_btn", boost::bind(&LLPanelIMControlPanel::onPayButtonClicked, this));
childSetEnabled("add_friend_btn", !LLAvatarActions::isFriend(getChild<LLAvatarIconCtrl>("avatar_icon")->getAvatarId()));
return LLPanelChatControlPanel::postBuild();
}
-void LLPanelIMControlPanel::onTeleportButtonClicked()
-{
- LLAvatarActions::offerTeleport(mAvatarID);
-}
-void LLPanelIMControlPanel::onPayButtonClicked()
-{
- LLAvatarActions::pay(mAvatarID);
-}
-
void LLPanelIMControlPanel::onViewProfileButtonClicked()
{
- LLAvatarActions::showProfile(mAvatarID);
+ LLAvatarActions::showProfile(getChild<LLAvatarIconCtrl>("avatar_icon")->getAvatarId());
}
void LLPanelIMControlPanel::onAddFriendButtonClicked()
{
LLAvatarIconCtrl* avatar_icon = getChild<LLAvatarIconCtrl>("avatar_icon");
std::string full_name = avatar_icon->getFirstName() + " " + avatar_icon->getLastName();
- LLAvatarActions::requestFriendshipDialog(mAvatarID, full_name);
+ LLAvatarActions::requestFriendshipDialog(avatar_icon->getAvatarId(), full_name);
}
void LLPanelIMControlPanel::onShareButtonClicked()
@@ -151,12 +140,12 @@ void LLPanelIMControlPanel::setSessionId(const LLUUID& session_id)
LLIMModel& im_model = LLIMModel::instance();
- mAvatarID = im_model.getOtherParticipantID(session_id);
+ LLUUID avatar_id = im_model.getOtherParticipantID(session_id);
// Disable "Add friend" button for friends.
- childSetEnabled("add_friend_btn", !LLAvatarActions::isFriend(mAvatarID));
+ childSetEnabled("add_friend_btn", !LLAvatarActions::isFriend(avatar_id));
- getChild<LLAvatarIconCtrl>("avatar_icon")->setValue(mAvatarID);
+ getChild<LLAvatarIconCtrl>("avatar_icon")->setValue(avatar_id);
// Disable profile button if participant is not realy SL avatar
LLIMModel::LLIMSession* im_session =
@@ -199,20 +188,6 @@ void LLPanelGroupControlPanel::onGroupInfoButtonClicked()
LLGroupActions::show(mGroupID);
}
-void LLPanelGroupControlPanel::onSortMenuItemClicked(const LLSD& userdata)
-{
- // TODO: Check this code when when sort order menu will be added. (EM)
- if (false && !mParticipantList)
- return;
-
- std::string chosen_item = userdata.asString();
-
- if (chosen_item == "sort_name")
- {
- mParticipantList->setSortOrder(LLParticipantList::E_SORT_BY_NAME);
- }
-
-}
void LLPanelGroupControlPanel::setSessionId(const LLUUID& session_id)
{
diff --git a/indra/newview/llpanelimcontrolpanel.h b/indra/newview/llpanelimcontrolpanel.h
index fa101f4280..d25f33935a 100644
--- a/indra/newview/llpanelimcontrolpanel.h
+++ b/indra/newview/llpanelimcontrolpanel.h
@@ -73,8 +73,6 @@ private:
void onViewProfileButtonClicked();
void onAddFriendButtonClicked();
void onShareButtonClicked();
- void onTeleportButtonClicked();
- void onPayButtonClicked();
LLUUID mAvatarID;
};
@@ -99,7 +97,6 @@ protected:
private:
void onGroupInfoButtonClicked();
- void onSortMenuItemClicked(const LLSD& userdata);
};
class LLPanelAdHocControlPanel : public LLPanelGroupControlPanel
diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp
index 1152ca6873..6f3b0db498 100644
--- a/indra/newview/llpanellandmarkinfo.cpp
+++ b/indra/newview/llpanellandmarkinfo.cpp
@@ -344,7 +344,7 @@ void LLPanelLandmarkInfo::createLandmark(const LLUUID& folder_id)
LLStringUtil::replaceChar(desc, '\n', ' ');
// If no folder chosen use the "Landmarks" folder.
LLLandmarkActions::createLandmarkHere(name, desc,
- folder_id.notNull() ? folder_id : gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK));
+ folder_id.notNull() ? folder_id : gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK));
}
// static
@@ -379,7 +379,7 @@ void LLPanelLandmarkInfo::populateFoldersList()
mFolderCombo->removeall();
// Put the "Landmarks" folder first in list.
- LLUUID landmarks_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK);
+ LLUUID landmarks_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK);
const LLViewerInventoryCategory* cat = gInventory.getCategory(landmarks_id);
if (!cat)
{
@@ -411,7 +411,7 @@ static bool cmp_folders(const folder_pair_t& left, const folder_pair_t& right)
static void collectLandmarkFolders(LLInventoryModel::cat_array_t& cats)
{
- LLUUID landmarks_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK);
+ LLUUID landmarks_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK);
// Add descendent folders of the "Landmarks" category.
LLInventoryModel::item_array_t items; // unused
@@ -424,7 +424,7 @@ static void collectLandmarkFolders(LLInventoryModel::cat_array_t& cats)
is_category);
// Add the "My Favorites" category.
- LLUUID favorites_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE);
+ LLUUID favorites_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE);
LLViewerInventoryCategory* favorites_cat = gInventory.getCategory(favorites_id);
if (!favorites_cat)
{
diff --git a/indra/newview/llpanellandmarkinfo.h b/indra/newview/llpanellandmarkinfo.h
deleted file mode 100644
index 03377986b3..0000000000
--- a/indra/newview/llpanellandmarkinfo.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/**
- * @file llpanellandmarkinfo.h
- * @brief Displays landmark info in Side Tray.
- *
- * $LicenseInfo:firstyear=2009&license=viewergpl$
- *
- * Copyright (c) 2004-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLPANELLANDMARKINFO_H
-#define LL_LLPANELLANDMARKINFO_H
-
-#include "llpanelplaceinfo.h"
-
-class LLComboBox;
-class LLLineEditor;
-class LLTextEditor;
-
-class LLPanelLandmarkInfo : public LLPanelPlaceInfo
-{
-public:
- LLPanelLandmarkInfo();
- /*virtual*/ ~LLPanelLandmarkInfo();
-
- /*virtual*/ BOOL postBuild();
-
- /*virtual*/ void resetLocation();
-
- /*virtual*/ void setInfoType(INFO_TYPE type);
-
- /*virtual*/ void processParcelInfo(const LLParcelData& parcel_data);
-
- // Displays landmark owner, creator and creation date info.
- void displayItemInfo(const LLInventoryItem* pItem);
-
- void toggleLandmarkEditMode(BOOL enabled);
-
- const std::string& getLandmarkTitle() const;
- const std::string getLandmarkNotes() const;
- const LLUUID getLandmarkFolder() const;
-
- // Select current landmark folder in combobox.
- BOOL setLandmarkFolder(const LLUUID& id);
-
- // Create a landmark for the current location
- // in a folder specified by folder_id.
- void createLandmark(const LLUUID& folder_id);
-
- static std::string getFullFolderName(const LLViewerInventoryCategory* cat);
-
-private:
- void populateFoldersList();
-
- LLTextBox* mOwner;
- LLTextBox* mCreator;
- LLTextBox* mCreated;
- LLLineEditor* mTitleEditor;
- LLTextEditor* mNotesEditor;
- LLComboBox* mFolderCombo;
-};
-
-#endif // LL_LLPANELLANDMARKINFO_H
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index 6d6fd38cce..91e1590dc3 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -553,16 +553,14 @@ void LLLandmarksPanel::onAddAction(const LLSD& userdata) const
std::string command_name = userdata.asString();
if("add_landmark" == command_name)
{
- LLViewerInventoryItem* landmark = LLLandmarkActions::findLandmarkForAgentPos();
- if(landmark)
- {
- LLSideTray::getInstance()->showPanel("panel_places",
- LLSD().insert("type", "landmark").insert("id",landmark->getUUID()));
- }
- else
+ if(LLLandmarkActions::landmarkAlreadyExists())
{
- LLSideTray::getInstance()->showPanel("panel_places", LLSD().insert("type", "create_landmark"));
+ std::string location;
+ LLAgentUI::buildLocationString(location, LLAgentUI::LOCATION_FORMAT_FULL);
+ llwarns<<" Landmark already exists at location: "<< location<<llendl;
+ return;
}
+ LLSideTray::getInstance()->showPanel("panel_places", LLSD().insert("type", "create_landmark"));
}
else if ("category" == command_name)
{
@@ -586,7 +584,7 @@ void LLLandmarksPanel::onAddAction(const LLSD& userdata) const
menu_create_inventory_item(mCurrentSelectedList->getRootFolder(),
dynamic_cast<LLFolderBridge*> (folder_bridge), LLSD(
"category"), gInventory.findCategoryUUIDForType(
- LLFolderType::FT_LANDMARK));
+ LLAssetType::AT_LANDMARK));
}
}
}
@@ -618,21 +616,19 @@ void LLLandmarksPanel::onClipboardAction(const LLSD& userdata) const
void LLLandmarksPanel::onFoldingAction(const LLSD& userdata)
{
- LLFolderView* landmarks_folder = mLandmarksInventoryPanel->getRootFolder();
- LLFolderView* fav_folder = mFavoritesInventoryPanel->getRootFolder();
+ if(!mCurrentSelectedList) return;
+
+ LLFolderView* root_folder = mCurrentSelectedList->getRootFolder();
std::string command_name = userdata.asString();
if ("expand_all" == command_name)
{
- landmarks_folder->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_DOWN);
- fav_folder->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_DOWN);
- landmarks_folder->arrangeAll();
- fav_folder->arrangeAll();
+ root_folder->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_DOWN);
+ root_folder->arrangeAll();
}
else if ("collapse_all" == command_name)
{
- landmarks_folder->closeAllFolders();
- fav_folder->closeAllFolders();
+ root_folder->closeAllFolders();
}
else if ( "sort_by_date" == command_name)
{
@@ -643,9 +639,6 @@ void LLLandmarksPanel::onFoldingAction(const LLSD& userdata)
}
else
{
- if(!mCurrentSelectedList) return;
-
- LLFolderView* root_folder = mCurrentSelectedList->getRootFolder();
root_folder->doToSelected(&gInventory, userdata);
}
}
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index 25be09fa24..617445a27f 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -84,8 +84,8 @@ LLPanelMainInventory::LLPanelMainInventory()
// Menu Callbacks (non contex menus)
mCommitCallbackRegistrar.add("Inventory.DoToSelected", boost::bind(&LLPanelMainInventory::doToSelected, this, _2));
mCommitCallbackRegistrar.add("Inventory.CloseAllFolders", boost::bind(&LLPanelMainInventory::closeAllFolders, this));
- mCommitCallbackRegistrar.add("Inventory.EmptyTrash", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyTrash", LLFolderType::FT_TRASH));
- mCommitCallbackRegistrar.add("Inventory.EmptyLostAndFound", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyLostAndFound", LLFolderType::FT_LOST_AND_FOUND));
+ mCommitCallbackRegistrar.add("Inventory.EmptyTrash", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyTrash", LLAssetType::AT_TRASH));
+ mCommitCallbackRegistrar.add("Inventory.EmptyLostAndFound", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyLostAndFound", LLAssetType::AT_LOST_AND_FOUND));
mCommitCallbackRegistrar.add("Inventory.DoCreate", boost::bind(&LLPanelMainInventory::doCreate, this, _2));
mCommitCallbackRegistrar.add("Inventory.NewWindow", boost::bind(&LLPanelMainInventory::newWindow, this));
mCommitCallbackRegistrar.add("Inventory.ShowFilters", boost::bind(&LLPanelMainInventory::toggleFindOptions, this));
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index 79b33e29f5..68181f12b9 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -60,7 +60,6 @@
#include "llsidetray.h"
#include "llstatusbar.h"
#include "lltrans.h"
-#include "llviewerassettype.h"
#include "llviewerregion.h"
#include "llviewerobjectlist.h"
#include "llviewermessage.h"
@@ -103,7 +102,7 @@ public:
virtual const std::string& getName() const;
virtual const std::string& getDisplayName() const;
virtual PermissionMask getPermissionMask() const { return PERM_NONE; }
- /*virtual*/ LLFolderType::EType getPreferredType() const { return LLFolderType::FT_NONE; }
+ /*virtual*/ LLAssetType::EType getPreferredType() const { return LLAssetType::AT_NONE; }
virtual const LLUUID& getUUID() const { return mUUID; }
virtual time_t getCreationDate() const;
virtual LLUIImagePtr getIcon() const;
@@ -276,7 +275,7 @@ bool LLTaskInvFVBridge::commitBuyItem(const LLSD& notification, const LLSD& resp
msg->addUUIDFast(_PREHASH_ObjectID, notification["payload"]["task_id"].asUUID());
msg->addUUIDFast(_PREHASH_ItemID, notification["payload"]["item_id"].asUUID());
msg->addUUIDFast(_PREHASH_FolderID,
- gInventory.findCategoryUUIDForType((LLFolderType::EType)notification["payload"]["type"].asInteger()));
+ gInventory.findCategoryUUIDForType((LLAssetType::EType)notification["payload"]["type"].asInteger()));
msg->sendReliable(object->getRegion()->getHost());
}
return false;
@@ -574,7 +573,7 @@ BOOL LLTaskInvFVBridge::startDrag(EDragAndDropType* type, LLUUID* id) const
// || gAgent.isGodlike())
{
- *type = LLViewerAssetType::lookupDragAndDropType(inv->getType());
+ *type = LLAssetType::lookupDragAndDropType(inv->getType());
*id = inv->getUUID();
return TRUE;
@@ -779,7 +778,7 @@ BOOL LLTaskCategoryBridge::startDrag(EDragAndDropType* type, LLUUID* id) const
// || gAgent.isGodlike())
{
- *type = LLViewerAssetType::lookupDragAndDropType(inv->getType());
+ *type = LLAssetType::lookupDragAndDropType(inv->getType());
*id = inv->getUUID();
return TRUE;
@@ -1462,6 +1461,7 @@ LLTaskInvFVBridge* LLTaskInvFVBridge::createObjectBridge(LLPanelObjectInventory*
item->getFlags());
break;
case LLAssetType::AT_CATEGORY:
+ case LLAssetType::AT_FAVORITE:
new_bridge = new LLTaskCategoryBridge(panel,
object->getUUID(),
object->getName());
@@ -1503,8 +1503,8 @@ LLPanelObjectInventory::LLPanelObjectInventory(const LLPanelObjectInventory::Par
{
// Setup context menu callbacks
mCommitCallbackRegistrar.add("Inventory.DoToSelected", boost::bind(&LLPanelObjectInventory::doToSelected, this, _2));
- mCommitCallbackRegistrar.add("Inventory.EmptyTrash", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyTrash", LLFolderType::FT_TRASH));
- mCommitCallbackRegistrar.add("Inventory.EmptyLostAndFound", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyLostAndFound", LLFolderType::FT_LOST_AND_FOUND));
+ mCommitCallbackRegistrar.add("Inventory.EmptyTrash", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyTrash", LLAssetType::AT_TRASH));
+ mCommitCallbackRegistrar.add("Inventory.EmptyLostAndFound", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyLostAndFound", LLAssetType::AT_LOST_AND_FOUND));
mCommitCallbackRegistrar.add("Inventory.DoCreate", boost::bind(&do_nothing));
mCommitCallbackRegistrar.add("Inventory.AttachObject", boost::bind(&do_nothing));
mCommitCallbackRegistrar.add("Inventory.BeginIMSession", boost::bind(&do_nothing));
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index 2f8fae0f5d..4580eeb336 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -42,7 +42,6 @@
#include "llpanelpeople.h"
// newview
-#include "llaccordionctrl.h"
#include "llaccordionctrltab.h"
#include "llagent.h"
#include "llavataractions.h"
@@ -517,9 +516,6 @@ BOOL LLPanelPeople::postBuild()
// call this method in case some list is empty and buttons can be in inconsistent state
updateButtons();
- mOnlineFriendList->setRefreshCompleteCallback(boost::bind(&LLPanelPeople::onFriendListRefreshComplete, this, _1, _2));
- mAllFriendList->setRefreshCompleteCallback(boost::bind(&LLPanelPeople::onFriendListRefreshComplete, this, _1, _2));
-
return TRUE;
}
@@ -564,8 +560,6 @@ void LLPanelPeople::updateFriendList()
mOnlineFriendList->setDirty();
mAllFriendList->setDirty();
-
- showFriendsAccordionsIfNeeded();
}
void LLPanelPeople::updateNearbyList()
@@ -803,15 +797,14 @@ void LLPanelPeople::reSelectedCurrentTab()
void LLPanelPeople::onFilterEdit(const std::string& search_string)
{
- std::string search_upper = search_string;
- // Searches are case-insensitive
- LLStringUtil::toUpper(search_upper);
- LLStringUtil::trimHead(search_upper);
-
- if (mFilterSubString == search_upper)
+ if (mFilterSubString == search_string)
return;
- mFilterSubString = search_upper;
+ mFilterSubString = search_string;
+
+ // Searches are case-insensitive
+ LLStringUtil::toUpper(mFilterSubString);
+ LLStringUtil::trimHead(mFilterSubString);
// Apply new filter.
mNearbyList->setNameFilter(mFilterSubString);
@@ -819,8 +812,6 @@ void LLPanelPeople::onFilterEdit(const std::string& search_string)
mAllFriendList->setNameFilter(mFilterSubString);
mRecentList->setNameFilter(mFilterSubString);
mGroupList->setNameFilter(mFilterSubString);
-
- showFriendsAccordionsIfNeeded();
}
void LLPanelPeople::onTabSelected(const LLSD& param)
@@ -1133,49 +1124,3 @@ void LLPanelPeople::onOpen(const LLSD& key)
else
reSelectedCurrentTab();
}
-
-void LLPanelPeople::showAccordion(const std::string name, bool show)
-{
- if(name.empty())
- {
- llwarns << "No name provided" << llendl;
- return;
- }
-
- LLAccordionCtrlTab* tab = getChild<LLAccordionCtrlTab>(name);
- tab->setVisible(show);
- if(show)
- {
- // expand accordion
- tab->changeOpenClose(false);
- }
-}
-
-void LLPanelPeople::showFriendsAccordionsIfNeeded()
-{
- if(FRIENDS_TAB_NAME == getActiveTabName())
- {
- // Expand and show accordions if needed, else - hide them
- showAccordion("tab_online", mOnlineFriendList->filterHasMatches());
- showAccordion("tab_all", mAllFriendList->filterHasMatches());
-
- // Rearrange accordions
- LLAccordionCtrl* accordion = getChild<LLAccordionCtrl>("friends_accordion");
- accordion->arrange();
- }
-}
-
-void LLPanelPeople::onFriendListRefreshComplete(LLUICtrl*ctrl, const LLSD& param)
-{
- if(ctrl == mOnlineFriendList)
- {
- showAccordion("tab_online", param.asInteger());
- }
- else if(ctrl == mAllFriendList)
- {
- showAccordion("tab_all", param.asInteger());
- }
-
- LLAccordionCtrl* accordion = getChild<LLAccordionCtrl>("friends_accordion");
- accordion->arrange();
-}
diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h
index 9bf9befe90..dc0aaeb70f 100644
--- a/indra/newview/llpanelpeople.h
+++ b/indra/newview/llpanelpeople.h
@@ -124,12 +124,6 @@ private:
void onFriendsAccordionExpandedCollapsed(const LLSD& param, LLAvatarList* avatar_list);
- void showAccordion(const std::string name, bool show);
-
- void showFriendsAccordionsIfNeeded();
-
- void onFriendListRefreshComplete(LLUICtrl*ctrl, const LLSD& param);
-
LLFilterEditor* mFilterEditor;
LLTabContainer* mTabContainer;
LLAvatarList* mOnlineFriendList;
diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp
index 2c5f4b5afa..34644cfe42 100644
--- a/indra/newview/llpanelplaceinfo.cpp
+++ b/indra/newview/llpanelplaceinfo.cpp
@@ -1,6 +1,6 @@
/**
* @file llpanelplaceinfo.cpp
- * @brief Base class for place information in Side Tray.
+ * @brief Displays place information in Side Tray.
*
* $LicenseInfo:firstyear=2009&license=viewergpl$
*
@@ -39,34 +39,66 @@
#include "llsecondlifeurls.h"
#include "llinventory.h"
+#include "llparcel.h"
-#include "llsdutil_math.h"
+#include "llqueryflags.h"
+#include "llbutton.h"
+#include "llcombobox.h"
+#include "lliconctrl.h"
#include "llscrollcontainer.h"
#include "lltextbox.h"
+#include "lltrans.h"
+#include "llaccordionctrl.h"
+#include "llaccordionctrltab.h"
#include "llagent.h"
+#include "llagentui.h"
+#include "llappviewer.h"
#include "llavatarpropertiesprocessor.h"
+#include "llcallbacklist.h"
#include "llexpandabletextbox.h"
#include "llfloaterworldmap.h"
+#include "llfloaterbuycurrency.h"
#include "llinventorymodel.h"
+#include "lllandmarkactions.h"
#include "llpanelpick.h"
#include "lltexturectrl.h"
+#include "llstatusbar.h"
#include "llviewerinventory.h"
#include "llviewerparcelmgr.h"
#include "llviewerregion.h"
+#include "llviewercontrol.h"
#include "llviewertexteditor.h"
#include "llworldmap.h"
+#include "llsdutil_math.h"
+
+//----------------------------------------------------------------------------
+// Aux types and methods
+//----------------------------------------------------------------------------
+
+typedef std::pair<LLUUID, std::string> folder_pair_t;
+
+static bool cmp_folders(const folder_pair_t& left, const folder_pair_t& right);
+static void collectLandmarkFolders(LLInventoryModel::cat_array_t& cats);
+
+static LLRegisterPanelClassWrapper<LLPanelPlaceInfo> t_place_info("panel_place_info");
LLPanelPlaceInfo::LLPanelPlaceInfo()
: LLPanel(),
mParcelID(),
mRequestedID(),
mPosRegion(),
- mMinHeight(0)
+ mLandmarkID(),
+ mMinHeight(0),
+ mScrollingPanel(NULL),
+ mInfoPanel(NULL),
+ mMediaPanel(NULL),
+ mForSalePanel(NULL),
+ mYouAreHerePanel(NULL),
+ mSelectedParcelID(-1)
{}
-//virtual
LLPanelPlaceInfo::~LLPanelPlaceInfo()
{
if (mParcelID.notNull())
@@ -75,41 +107,220 @@ LLPanelPlaceInfo::~LLPanelPlaceInfo()
}
}
-//virtual
BOOL LLPanelPlaceInfo::postBuild()
{
- mTitle = getChild<LLTextBox>("title");
+ mTitle = getChild<LLTextBox>("panel_title");
mCurrentTitle = mTitle->getText();
+ mForSalePanel = getChild<LLPanel>("for_sale_panel");
+ mYouAreHerePanel = getChild<LLPanel>("here_panel");
+ gIdleCallbacks.addFunction(&LLPanelPlaceInfo::updateYouAreHereBanner, this);
+
+ //Icon value should contain sale price of last selected parcel.
+ mForSalePanel->getChild<LLIconCtrl>("icon_for_sale")->
+ setMouseDownCallback(boost::bind(&LLPanelPlaceInfo::onForSaleBannerClick, this));
+
mSnapshotCtrl = getChild<LLTextureCtrl>("logo");
mRegionName = getChild<LLTextBox>("region_title");
mParcelName = getChild<LLTextBox>("parcel_title");
mDescEditor = getChild<LLExpandableTextBox>("description");
mMaturityRatingText = getChild<LLTextBox>("maturity_value");
+ mParcelOwner = getChild<LLTextBox>("owner_value");
+ mLastVisited = getChild<LLTextBox>("last_visited_value");
+
+ mRatingText = getChild<LLTextBox>("rating_value");
+ mVoiceText = getChild<LLTextBox>("voice_value");
+ mFlyText = getChild<LLTextBox>("fly_value");
+ mPushText = getChild<LLTextBox>("push_value");
+ mBuildText = getChild<LLTextBox>("build_value");
+ mScriptsText = getChild<LLTextBox>("scripts_value");
+ mDamageText = getChild<LLTextBox>("damage_value");
+
+ mRegionNameText = getChild<LLTextBox>("region_name");
+ mRegionTypeText = getChild<LLTextBox>("region_type");
+ mRegionRatingText = getChild<LLTextBox>("region_rating");
+ mRegionOwnerText = getChild<LLTextBox>("region_owner");
+ mRegionGroupText = getChild<LLTextBox>("region_group");
+
+ mEstateNameText = getChild<LLTextBox>("estate_name");
+ mEstateRatingText = getChild<LLTextBox>("estate_rating");
+ mEstateOwnerText = getChild<LLTextBox>("estate_owner");
+ mCovenantText = getChild<LLTextEditor>("covenant");
+
+ mSalesPriceText = getChild<LLTextBox>("sales_price");
+ mAreaText = getChild<LLTextBox>("area");
+ mTrafficText = getChild<LLTextBox>("traffic");
+ mPrimitivesText = getChild<LLTextBox>("primitives");
+ mParcelScriptsText = getChild<LLTextBox>("parcel_scripts");
+ mTerraformLimitsText = getChild<LLTextBox>("terraform_limits");
+ mSubdivideText = getChild<LLTextEditor>("subdivide");
+ mResaleText = getChild<LLTextEditor>("resale");
+ mSaleToText = getChild<LLTextBox>("sale_to");
- LLScrollContainer* scroll_container = getChild<LLScrollContainer>("place_scroll");
+ mOwner = getChild<LLTextBox>("owner");
+ mCreator = getChild<LLTextBox>("creator");
+ mCreated = getChild<LLTextBox>("created");
+
+ mTitleEditor = getChild<LLLineEditor>("title_editor");
+ mNotesEditor = getChild<LLTextEditor>("notes_editor");
+ mFolderCombo = getChild<LLComboBox>("folder_combo");
+
+ LLScrollContainer* scroll_container = getChild<LLScrollContainer>("scroll_container");
scroll_container->setBorderVisible(FALSE);
mMinHeight = scroll_container->getScrolledViewRect().getHeight();
+ mScrollingPanel = getChild<LLPanel>("scrolling_panel");
+ mInfoPanel = getChild<LLPanel>("info_panel");
+ mMediaPanel = getChild<LLMediaPanel>("media_panel");
+ if (!mMediaPanel)
+ return FALSE;
+
return TRUE;
}
-//virtual
+void LLPanelPlaceInfo::displayItemInfo(const LLInventoryItem* pItem)
+{
+ if (!pItem)
+ return;
+
+ mLandmarkID = pItem->getUUID();
+
+ if(!gCacheName)
+ return;
+
+ const LLPermissions& perm = pItem->getPermissions();
+
+ //////////////////
+ // CREATOR NAME //
+ //////////////////
+ if (pItem->getCreatorUUID().notNull())
+ {
+ std::string name;
+ LLUUID creator_id = pItem->getCreatorUUID();
+ if (!gCacheName->getFullName(creator_id, name))
+ {
+ gCacheName->get(creator_id, FALSE,
+ boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, this, mCreator, _2, _3));
+ }
+ mCreator->setText(name);
+ }
+ else
+ {
+ mCreator->setText(getString("unknown"));
+ }
+
+ ////////////////
+ // OWNER NAME //
+ ////////////////
+ if(perm.isOwned())
+ {
+ std::string name;
+ if (perm.isGroupOwned())
+ {
+ LLUUID group_id = perm.getGroup();
+ if (!gCacheName->getGroupName(group_id, name))
+ {
+ gCacheName->get(group_id, TRUE,
+ boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, this, mOwner, _2, _3));
+ }
+ }
+ else
+ {
+ LLUUID owner_id = perm.getOwner();
+ if (!gCacheName->getFullName(owner_id, name))
+ {
+ gCacheName->get(owner_id, FALSE,
+ boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, this, mOwner, _2, _3));
+ }
+ }
+ mOwner->setText(name);
+ }
+ else
+ {
+ mOwner->setText(getString("public"));
+ }
+
+ //////////////////
+ // ACQUIRE DATE //
+ //////////////////
+ time_t time_utc = pItem->getCreationDate();
+ if (0 == time_utc)
+ {
+ mCreated->setText(getString("unknown"));
+ }
+ else
+ {
+ std::string timeStr = getString("acquired_date");
+ LLSD substitution;
+ substitution["datetime"] = (S32) time_utc;
+ LLStringUtil::format (timeStr, substitution);
+ mCreated->setText(timeStr);
+ }
+
+ mTitleEditor->setText(pItem->getName());
+ mNotesEditor->setText(pItem->getDescription());
+}
+
+void LLPanelPlaceInfo::nameUpdatedCallback(
+ LLTextBox* text,
+ const std::string& first,
+ const std::string& last)
+{
+ text->setText(first + " " + last);
+}
+
void LLPanelPlaceInfo::resetLocation()
{
mParcelID.setNull();
mRequestedID.setNull();
+ mLandmarkID.setNull();
mPosRegion.clearVec();
-
+ mForSalePanel->setVisible(FALSE);
+ mYouAreHerePanel->setVisible(FALSE);
std::string not_available = getString("not_available");
mMaturityRatingText->setValue(not_available);
+ mParcelOwner->setValue(not_available);
+ mLastVisited->setValue(not_available);
mRegionName->setText(not_available);
mParcelName->setText(not_available);
mDescEditor->setText(not_available);
-
+ mCreator->setText(not_available);
+ mOwner->setText(not_available);
+ mCreated->setText(not_available);
+ mTitleEditor->setText(LLStringUtil::null);
+ mNotesEditor->setText(LLStringUtil::null);
mSnapshotCtrl->setImageAssetID(LLUUID::null);
mSnapshotCtrl->setFallbackImageName("default_land_picture.j2c");
+
+ mRatingText->setText(not_available);
+ mVoiceText->setText(not_available);
+ mFlyText->setText(not_available);
+ mPushText->setText(not_available);
+ mBuildText->setText(not_available);
+ mParcelScriptsText->setText(not_available);
+ mDamageText->setText(not_available);
+
+ mRegionNameText->setValue(not_available);
+ mRegionTypeText->setValue(not_available);
+ mRegionRatingText->setValue(not_available);
+ mRegionOwnerText->setValue(not_available);
+ mRegionGroupText->setValue(not_available);
+
+ mEstateNameText->setValue(not_available);
+ mEstateRatingText->setValue(not_available);
+ mEstateOwnerText->setValue(not_available);
+ mCovenantText->setValue(not_available);
+
+ mSalesPriceText->setValue(not_available);
+ mAreaText->setValue(not_available);
+ mTrafficText->setValue(not_available);
+ mPrimitivesText->setValue(not_available);
+ mParcelScriptsText->setValue(not_available);
+ mTerraformLimitsText->setValue(not_available);
+ mSubdivideText->setValue(not_available);
+ mResaleText->setValue(not_available);
+ mSaleToText->setValue(not_available);
}
//virtual
@@ -119,55 +330,108 @@ void LLPanelPlaceInfo::setParcelID(const LLUUID& parcel_id)
sendParcelInfoRequest();
}
-//virtual
void LLPanelPlaceInfo::setInfoType(INFO_TYPE type)
{
- mTitle->setText(mCurrentTitle);
+ LLPanel* landmark_info_panel = getChild<LLPanel>("landmark_info_panel");
+ LLPanel* landmark_edit_panel = getChild<LLPanel>("landmark_edit_panel");
- mInfoType = type;
-}
+ bool is_info_type_agent = type == AGENT;
+ bool is_info_type_create_landmark = type == CREATE_LANDMARK;
+ bool is_info_type_landmark = type == LANDMARK;
+ bool is_info_type_teleport_history = type == TELEPORT_HISTORY;
-void LLPanelPlaceInfo::sendParcelInfoRequest()
-{
- if (mParcelID != mRequestedID)
+ getChild<LLTextBox>("maturity_label")->setVisible(!is_info_type_agent);
+ mMaturityRatingText->setVisible(!is_info_type_agent);
+
+ getChild<LLTextBox>("owner_label")->setVisible(is_info_type_agent);
+ mParcelOwner->setVisible(is_info_type_agent);
+
+ getChild<LLTextBox>("last_visited_label")->setVisible(is_info_type_teleport_history);
+ mLastVisited->setVisible(is_info_type_teleport_history);
+
+ landmark_info_panel->setVisible(is_info_type_landmark);
+ landmark_edit_panel->setVisible(is_info_type_landmark || is_info_type_create_landmark);
+
+ getChild<LLTextBox>("folder_lable")->setVisible(is_info_type_create_landmark);
+ mFolderCombo->setVisible(is_info_type_create_landmark);
+
+ getChild<LLAccordionCtrl>("advanced_info_accordion")->setVisible(is_info_type_agent);
+
+ switch(type)
{
- LLRemoteParcelInfoProcessor::getInstance()->addObserver(mParcelID, this);
- LLRemoteParcelInfoProcessor::getInstance()->sendParcelInfoRequest(mParcelID);
+ case CREATE_LANDMARK:
+ mCurrentTitle = getString("title_create_landmark");
- mRequestedID = mParcelID;
+ mTitleEditor->setEnabled(TRUE);
+ mNotesEditor->setEnabled(TRUE);
+
+ populateFoldersList();
+ break;
+
+ case AGENT:
+ case PLACE:
+ mCurrentTitle = getString("title_place");
+
+ if (!isMediaPanelVisible())
+ {
+ mTitle->setText(mCurrentTitle);
+ }
+ break;
+
+ case LANDMARK:
+ mCurrentTitle = getString("title_landmark");
+
+ mTitleEditor->setEnabled(FALSE);
+ mNotesEditor->setEnabled(FALSE);
+
+ populateFoldersList();
+ break;
+
+ case TELEPORT_HISTORY:
+ mCurrentTitle = getString("title_teleport_history");
+ break;
}
+
+ if (type != AGENT)
+ toggleMediaPanel(FALSE);
+
+ mInfoType = type;
}
-void LLPanelPlaceInfo::displayParcelInfo(const LLUUID& region_id,
- const LLVector3d& pos_global)
+BOOL LLPanelPlaceInfo::isMediaPanelVisible()
{
- LLViewerRegion* region = gAgent.getRegion();
- if (!region)
- return;
+ if (!mMediaPanel)
+ return FALSE;
- mPosRegion.setVec((F32)fmod(pos_global.mdV[VX], (F64)REGION_WIDTH_METERS),
- (F32)fmod(pos_global.mdV[VY], (F64)REGION_WIDTH_METERS),
- (F32)pos_global.mdV[VZ]);
+ return mMediaPanel->getVisible();
+}
- LLSD body;
- std::string url = region->getCapability("RemoteParcelRequest");
- if (!url.empty())
+void LLPanelPlaceInfo::toggleMediaPanel(BOOL visible)
+{
+ if (!mMediaPanel)
+ return;
+
+ if (visible)
{
- body["location"] = ll_sd_from_vector3(mPosRegion);
- if (!region_id.isNull())
- {
- body["region_id"] = region_id;
- }
- if (!pos_global.isExactlyZero())
- {
- U64 region_handle = to_region_handle(pos_global);
- body["region_handle"] = ll_sd_from_U64(region_handle);
- }
- LLHTTPClient::post(url, body, new LLRemoteParcelRequestResponder(getObserverHandle()));
+ mTitle->setText(getString("title_media"));
}
else
{
- mDescEditor->setText(getString("server_update_text"));
+ mTitle->setText(mCurrentTitle);
+ }
+
+ mInfoPanel->setVisible(!visible);
+ mMediaPanel->setVisible(visible);
+}
+
+void LLPanelPlaceInfo::sendParcelInfoRequest()
+{
+ if (mParcelID != mRequestedID)
+ {
+ LLRemoteParcelInfoProcessor::getInstance()->addObserver(mParcelID, this);
+ LLRemoteParcelInfoProcessor::getInstance()->sendParcelInfoRequest(mParcelID);
+
+ mRequestedID = mParcelID;
}
}
@@ -209,6 +473,27 @@ void LLPanelPlaceInfo::processParcelInfo(const LLParcelData& parcel_data)
mDescEditor->setText(parcel_data.desc);
}
+ // HACK: Flag 0x2 == adult region,
+ // Flag 0x1 == mature region, otherwise assume PG
+ std::string rating = LLViewerRegion::accessToString(SIM_ACCESS_PG);
+ if (parcel_data.flags & 0x2)
+ {
+ rating = LLViewerRegion::accessToString(SIM_ACCESS_ADULT);
+ }
+ else if (parcel_data.flags & 0x1)
+ {
+ rating = LLViewerRegion::accessToString(SIM_ACCESS_MATURE);
+ }
+
+ mMaturityRatingText->setValue(rating);
+ mRatingText->setValue(rating);
+
+ //update for_sale banner, here we should use DFQ_FOR_SALE instead of PF_FOR_SALE
+ //because we deal with remote parcel response format
+ bool is_for_sale = (parcel_data.flags & DFQ_FOR_SALE) &&
+ mInfoType == AGENT ? TRUE : FALSE;
+ mForSalePanel->setVisible(is_for_sale);
+
S32 region_x;
S32 region_y;
S32 region_z;
@@ -236,25 +521,408 @@ void LLPanelPlaceInfo::processParcelInfo(const LLParcelData& parcel_data)
{
mParcelName->setText(getString("not_available"));
}
+
+ if (mInfoType == CREATE_LANDMARK)
+ {
+ if (parcel_data.name.empty())
+ {
+ mTitleEditor->setText(llformat("%s (%d, %d, %d)",
+ parcel_data.sim_name.c_str(), region_x, region_y, region_z));
+ }
+ else
+ {
+ mTitleEditor->setText(parcel_data.name);
+ }
+
+ // FIXME: Creating landmark works only for current agent location.
+ std::string desc;
+ LLAgentUI::buildLocationString(desc, LLAgentUI::LOCATION_FORMAT_FULL, gAgent.getPositionAgent());
+ mNotesEditor->setText(desc);
+
+ if (!LLLandmarkActions::landmarkAlreadyExists())
+ {
+ createLandmark(mFolderCombo->getValue().asUUID());
+ }
+ }
}
-// virtual
-void LLPanelPlaceInfo::handleVisibilityChange(BOOL new_visibility)
+void LLPanelPlaceInfo::displayParcelInfo(const LLUUID& region_id,
+ const LLVector3d& pos_global)
{
- LLPanel::handleVisibilityChange(new_visibility);
+ LLViewerRegion* region = gAgent.getRegion();
+ if (!region)
+ return;
- LLViewerParcelMgr* parcel_mgr = LLViewerParcelMgr::getInstance();
- if (!parcel_mgr)
+ mPosRegion.setVec((F32)fmod(pos_global.mdV[VX], (F64)REGION_WIDTH_METERS),
+ (F32)fmod(pos_global.mdV[VY], (F64)REGION_WIDTH_METERS),
+ (F32)pos_global.mdV[VZ]);
+
+ LLSD body;
+ std::string url = region->getCapability("RemoteParcelRequest");
+ if (!url.empty())
+ {
+ body["location"] = ll_sd_from_vector3(mPosRegion);
+ if (!region_id.isNull())
+ {
+ body["region_id"] = region_id;
+ }
+ if (!pos_global.isExactlyZero())
+ {
+ U64 region_handle = to_region_handle(pos_global);
+ body["region_handle"] = ll_sd_from_U64(region_handle);
+ }
+ LLHTTPClient::post(url, body, new LLRemoteParcelRequestResponder(getObserverHandle()));
+ }
+ else
+ {
+ mDescEditor->setText(getString("server_update_text"));
+ }
+}
+
+void LLPanelPlaceInfo::displaySelectedParcelInfo(LLParcel* parcel,
+ LLViewerRegion* region,
+ const LLVector3d& pos_global,
+ bool is_current_parcel)
+{
+ if (!region || !parcel)
return;
- // Remove land selection when panel hides.
- if (!new_visibility)
+ // send EstateCovenantInfo message
+ LLMessageSystem *msg = gMessageSystem;
+ msg->newMessage("EstateCovenantRequest");
+ msg->nextBlockFast(_PREHASH_AgentData);
+ msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
+ msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID());
+ msg->sendReliable(region->getHost());
+
+ LLParcelData parcel_data;
+
+ // HACK: Converting sim access flags to the format
+ // returned by remote parcel response.
+ switch(region->getSimAccess())
{
- if (!parcel_mgr->selectionEmpty())
+ case SIM_ACCESS_MATURE:
+ parcel_data.flags = 0x1;
+ break;
+
+ case SIM_ACCESS_ADULT:
+ parcel_data.flags = 0x2;
+ break;
+
+ default:
+ parcel_data.flags = 0;
+ }
+ parcel_data.desc = parcel->getDesc();
+ parcel_data.name = parcel->getName();
+ parcel_data.sim_name = region->getName();
+ parcel_data.snapshot_id = parcel->getSnapshotID();
+ mPosRegion.setVec((F32)fmod(pos_global.mdV[VX], (F64)REGION_WIDTH_METERS),
+ (F32)fmod(pos_global.mdV[VY], (F64)REGION_WIDTH_METERS),
+ (F32)pos_global.mdV[VZ]);
+ parcel_data.global_x = pos_global.mdV[VX];
+ parcel_data.global_y = pos_global.mdV[VY];
+ parcel_data.global_z = pos_global.mdV[VZ];
+
+ std::string on = getString("on");
+ std::string off = getString("off");
+
+ // Processing parcel characteristics
+ if (parcel->getParcelFlagAllowVoice())
+ {
+ mVoiceText->setText(on);
+ }
+ else
+ {
+ mVoiceText->setText(off);
+ }
+
+ if (!region->getBlockFly() && parcel->getAllowFly())
+ {
+ mFlyText->setText(on);
+ }
+ else
+ {
+ mFlyText->setText(off);
+ }
+
+ if (region->getRestrictPushObject() || parcel->getRestrictPushObject())
+ {
+ mPushText->setText(off);
+ }
+ else
+ {
+ mPushText->setText(on);
+ }
+
+ if (parcel->getAllowModify())
+ {
+ mBuildText->setText(on);
+ }
+ else
+ {
+ mBuildText->setText(off);
+ }
+
+ if((region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS) ||
+ (region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) ||
+ !parcel->getAllowOtherScripts())
+ {
+ mScriptsText->setText(off);
+ }
+ else
+ {
+ mScriptsText->setText(on);
+ }
+
+ if (region->getAllowDamage() || parcel->getAllowDamage())
+ {
+ mDamageText->setText(on);
+ }
+ else
+ {
+ mDamageText->setText(off);
+ }
+
+ mRegionNameText->setText(region->getName());
+ mRegionTypeText->setText(region->getSimProductName());
+ mRegionRatingText->setText(region->getSimAccessString());
+
+ // Determine parcel owner
+ if (parcel->isPublic())
+ {
+ mParcelOwner->setText(getString("public"));
+ mRegionOwnerText->setText(getString("public"));
+ }
+ else
+ {
+ if (parcel->getIsGroupOwned())
{
- parcel_mgr->deselectLand();
+ mRegionOwnerText->setText(getString("group_owned_text"));
+
+ if(!parcel->getGroupID().isNull())
+ {
+ // FIXME: Using parcel group as region group.
+ gCacheName->get(parcel->getGroupID(), TRUE,
+ boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, this, mRegionGroupText, _2, _3));
+
+ gCacheName->get(parcel->getGroupID(), TRUE,
+ boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, this, mParcelOwner, _2, _3));
+ }
+ else
+ {
+ std::string owner = getString("none_text");
+ mRegionGroupText->setText(owner);
+ mParcelOwner->setText(owner);
+ }
+ }
+ else
+ {
+ // Figure out the owner's name
+ gCacheName->get(parcel->getOwnerID(), FALSE,
+ boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, this, mParcelOwner, _2, _3));
+ gCacheName->get(region->getOwner(), FALSE,
+ boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, this, mRegionOwnerText, _2, _3));
+ }
+
+ if(LLParcel::OS_LEASE_PENDING == parcel->getOwnershipStatus())
+ {
+ mRegionOwnerText->setText(mRegionOwnerText->getText() + getString("sale_pending_text"));
+ }
+ }
+
+ mEstateRatingText->setText(region->getSimAccessString());
+
+ S32 area;
+ S32 claim_price;
+ S32 rent_price;
+ F32 dwell;
+ BOOL for_sale = parcel->getForSale();
+ LLViewerParcelMgr::getInstance()->getDisplayInfo(&area,
+ &claim_price,
+ &rent_price,
+ &for_sale,
+ &dwell);
+ if (for_sale)
+ {
+ // Adding "For Sale" flag in remote parcel response format.
+ parcel_data.flags |= DFQ_FOR_SALE;
+
+ const LLUUID& auth_buyer_id = parcel->getAuthorizedBuyerID();
+ if(auth_buyer_id.notNull())
+ {
+ gCacheName->get(auth_buyer_id, TRUE,
+ boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, this, mSaleToText, _2, _3));
+
+ // Show sales info to a specific person or a group he belongs to.
+ if (auth_buyer_id != gAgent.getID() && !gAgent.isInGroup(auth_buyer_id))
+ {
+ for_sale = FALSE;
+ }
+ }
+ else
+ {
+ mSaleToText->setText(getString("anyone"));
+ }
+
+ const U8* sign = (U8*)getString("price_text").c_str();
+ const U8* sqm = (U8*)getString("area_text").c_str();
+
+ mSalesPriceText->setText(llformat("%s%d ", sign, parcel->getSalePrice()));
+ mAreaText->setText(llformat("%d %s", area, sqm));
+ mTrafficText->setText(llformat("%.0f", dwell));
+
+ // Can't have more than region max tasks, regardless of parcel
+ // object bonus factor.
+ S32 primitives = llmin(llround(parcel->getMaxPrimCapacity() * parcel->getParcelPrimBonus()),
+ (S32)region->getMaxTasks());
+
+ const U8* available = (U8*)getString("available").c_str();
+ const U8* allocated = (U8*)getString("allocated").c_str();
+
+ mPrimitivesText->setText(llformat("%d %s, %d %s", primitives, available, parcel->getPrimCount(), allocated));
+
+ if (parcel->getAllowOtherScripts())
+ {
+ mParcelScriptsText->setText(getString("all_residents_text"));
+ }
+ else if (parcel->getAllowGroupScripts())
+ {
+ mParcelScriptsText->setText(getString("group_text"));
+ }
+ else
+ {
+ mParcelScriptsText->setText(off);
+ }
+
+ mTerraformLimitsText->setText(parcel->getAllowTerraform() ? on : off);
+
+ if (region->getRegionFlags() & REGION_FLAGS_ALLOW_PARCEL_CHANGES)
+ {
+ mSubdivideText->setText(getString("can_change"));
+ }
+ else
+ {
+ mSubdivideText->setText(getString("can_not_change"));
+ }
+ if (region->getRegionFlags() & REGION_FLAGS_BLOCK_LAND_RESELL)
+ {
+ mResaleText->setText(getString("can_not_resell"));
+ }
+ else
+ {
+ mResaleText->setText(getString("can_resell"));
+ }
+ }
+
+ mSelectedParcelID = parcel->getLocalID();
+ mLastSelectedRegionID = region->getRegionID();
+ processParcelInfo(parcel_data);
+
+ mYouAreHerePanel->setVisible(is_current_parcel);
+ getChild<LLAccordionCtrlTab>("sales_tab")->setVisible(for_sale);
+}
+
+void LLPanelPlaceInfo::updateEstateName(const std::string& name)
+{
+ mEstateNameText->setText(name);
+}
+
+void LLPanelPlaceInfo::updateEstateOwnerName(const std::string& name)
+{
+ mEstateOwnerText->setText(name);
+}
+
+void LLPanelPlaceInfo::updateCovenantText(const std::string &text)
+{
+ mCovenantText->setText(text);
+}
+
+void LLPanelPlaceInfo::updateLastVisitedText(const LLDate &date)
+{
+ if (date.isNull())
+ {
+ mLastVisited->setText(getString("unknown"));
+ }
+ else
+ {
+ std::string timeStr = getString("acquired_date");
+ LLSD substitution;
+ substitution["datetime"] = (S32) date.secondsSinceEpoch();
+ LLStringUtil::format (timeStr, substitution);
+ mLastVisited->setText(timeStr);
+ }
+}
+
+void LLPanelPlaceInfo::toggleLandmarkEditMode(BOOL enabled)
+{
+ // If switching to edit mode while creating landmark
+ // the "Create Landmark" title remains.
+ if (enabled && mInfoType != CREATE_LANDMARK)
+ {
+ mTitle->setText(getString("title_edit_landmark"));
+ }
+ else
+ {
+ mTitle->setText(mCurrentTitle);
+ }
+
+ if (mNotesEditor->getReadOnly() == (enabled == TRUE))
+ {
+ mTitleEditor->setEnabled(enabled);
+ mNotesEditor->setReadOnly(!enabled);
+ mFolderCombo->setVisible(enabled);
+ getChild<LLTextBox>("folder_lable")->setVisible(enabled);
+
+ // HACK: To change the text color in a text editor
+ // when it was enabled/disabled we set the text once again.
+ mNotesEditor->setText(mNotesEditor->getText());
+ }
+}
+
+const std::string& LLPanelPlaceInfo::getLandmarkTitle() const
+{
+ return mTitleEditor->getText();
+}
+
+const std::string LLPanelPlaceInfo::getLandmarkNotes() const
+{
+ return mNotesEditor->getText();
+}
+
+const LLUUID LLPanelPlaceInfo::getLandmarkFolder() const
+{
+ return mFolderCombo->getValue().asUUID();
+}
+
+BOOL LLPanelPlaceInfo::setLandmarkFolder(const LLUUID& id)
+{
+ return mFolderCombo->setCurrentByID(id);
+}
+
+void LLPanelPlaceInfo::createLandmark(const LLUUID& folder_id)
+{
+ std::string name = mTitleEditor->getText();
+ std::string desc = mNotesEditor->getText();
+
+ LLStringUtil::trim(name);
+ LLStringUtil::trim(desc);
+
+ // If typed name is empty use the parcel name instead.
+ if (name.empty())
+ {
+ name = mParcelName->getText();
+
+ // If no parcel exists use the region name instead.
+ if (name.empty())
+ {
+ name = mRegionName->getText();
}
}
+
+ LLStringUtil::replaceChar(desc, '\n', ' ');
+ // If no folder chosen use the "Landmarks" folder.
+ LLLandmarkActions::createLandmarkHere(name, desc,
+ folder_id.notNull() ? folder_id : gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK));
}
void LLPanelPlaceInfo::createPick(const LLVector3d& pos_global, LLPanelPickEdit* pick_panel)
@@ -274,10 +942,159 @@ void LLPanelPlaceInfo::createPick(const LLVector3d& pos_global, LLPanelPickEdit*
pick_panel->setPickData(&data);
}
-// static
-void LLPanelPlaceInfo::nameUpdatedCallback(LLTextBox* text,
- const std::string& first,
- const std::string& last)
+// virtual
+void LLPanelPlaceInfo::handleVisibilityChange (BOOL new_visibility)
{
- text->setText(first + " " + last);
+ LLPanel::handleVisibilityChange(new_visibility);
+
+ LLViewerParcelMgr* parcel_mgr = LLViewerParcelMgr::getInstance();
+ if (!parcel_mgr)
+ return;
+
+ // Remove land selection when panel hides.
+ if (!new_visibility)
+ {
+ if (!parcel_mgr->selectionEmpty())
+ {
+ parcel_mgr->deselectLand();
+ }
+ }
+}
+
+void LLPanelPlaceInfo::populateFoldersList()
+{
+ // Collect all folders that can contain landmarks.
+ LLInventoryModel::cat_array_t cats;
+ collectLandmarkFolders(cats);
+
+ mFolderCombo->removeall();
+
+ // Put the "Landmarks" folder first in list.
+ LLUUID landmarks_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK);
+ const LLViewerInventoryCategory* cat = gInventory.getCategory(landmarks_id);
+ if (!cat)
+ {
+ llwarns << "Cannot find the landmarks folder" << llendl;
+ }
+ std::string cat_full_name = getFullFolderName(cat);
+ mFolderCombo->add(cat_full_name, cat->getUUID());
+
+ typedef std::vector<folder_pair_t> folder_vec_t;
+ folder_vec_t folders;
+ // Sort the folders by their full name.
+ for (S32 i = 0; i < cats.count(); i++)
+ {
+ cat = cats.get(i);
+ cat_full_name = getFullFolderName(cat);
+ folders.push_back(folder_pair_t(cat->getUUID(), cat_full_name));
+ }
+ sort(folders.begin(), folders.end(), cmp_folders);
+
+ // Finally, populate the combobox.
+ for (folder_vec_t::const_iterator it = folders.begin(); it != folders.end(); it++)
+ mFolderCombo->add(it->second, LLSD(it->first));
+}
+
+//static
+void LLPanelPlaceInfo::updateYouAreHereBanner(void* userdata)
+{
+ //YouAreHere Banner should be displayed only for selected places,
+ // If you want to display it for landmark or teleport history item, you should check by mParcelId
+
+ LLPanelPlaceInfo* self = static_cast<LLPanelPlaceInfo*>(userdata);
+ if(!self->getVisible())
+ return;
+ if(!gDisconnected)
+ {
+ static F32 radius = gSavedSettings.getF32("YouAreHereDistance");
+
+ BOOL display_banner = gAgent.getRegion()->getRegionID() == self->mLastSelectedRegionID &&
+ LLAgentUI::checkAgentDistance(self->mPosRegion, radius);
+
+ self->mYouAreHerePanel->setVisible(display_banner);
+ }
+}
+
+void LLPanelPlaceInfo::onForSaleBannerClick()
+{
+ LLViewerParcelMgr* mgr = LLViewerParcelMgr::getInstance();
+ LLParcelSelectionHandle hParcel = mgr->getFloatingParcelSelection();
+ LLViewerRegion* selected_region = mgr->getSelectionRegion();
+ if(!hParcel.isNull() && selected_region)
+ {
+ if(hParcel->getParcel()->getLocalID() == mSelectedParcelID &&
+ mLastSelectedRegionID ==selected_region->getRegionID())
+ {
+ if(hParcel->getParcel()->getSalePrice() - gStatusBar->getBalance() > 0)
+ {
+ LLFloaterBuyCurrency::buyCurrency("Buying selected land ", hParcel->getParcel()->getSalePrice());
+ }
+ else
+ {
+ LLViewerParcelMgr::getInstance()->startBuyLand();
+ }
+ }
+ else
+ {
+ LL_WARNS("Places") << "User is trying to buy remote parcel.Operation is not supported"<< LL_ENDL;
+ }
+
+ }
+
+
+}
+
+/*static*/
+std::string LLPanelPlaceInfo::getFullFolderName(const LLViewerInventoryCategory* cat)
+{
+ std::string name = cat->getName();
+ LLUUID parent_id;
+
+ // translate category name, if it's right below the root
+ // FIXME: it can throw notification about non existent string in strings.xml
+ if (cat->getParentUUID().notNull() && cat->getParentUUID() == gInventory.getRootFolderID())
+ {
+ LLTrans::findString(name, "InvFolder " + name);
+ }
+
+ // we don't want "My Inventory" to appear in the name
+ while ((parent_id = cat->getParentUUID()).notNull() && parent_id != gInventory.getRootFolderID())
+ {
+ cat = gInventory.getCategory(parent_id);
+ name = cat->getName() + "/" + name;
+ }
+
+ return name;
+}
+
+static bool cmp_folders(const folder_pair_t& left, const folder_pair_t& right)
+{
+ return left.second < right.second;
+}
+
+static void collectLandmarkFolders(LLInventoryModel::cat_array_t& cats)
+{
+ LLUUID landmarks_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK);
+
+ // Add descendent folders of the "Landmarks" category.
+ LLInventoryModel::item_array_t items; // unused
+ LLIsType is_category(LLAssetType::AT_CATEGORY);
+ gInventory.collectDescendentsIf(
+ landmarks_id,
+ cats,
+ items,
+ LLInventoryModel::EXCLUDE_TRASH,
+ is_category);
+
+ // Add the "My Favorites" category.
+ LLUUID favorites_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE);
+ LLViewerInventoryCategory* favorites_cat = gInventory.getCategory(favorites_id);
+ if (!favorites_cat)
+ {
+ llwarns << "Cannot find the favorites folder" << llendl;
+ }
+ else
+ {
+ cats.put(favorites_cat);
+ }
}
diff --git a/indra/newview/llpanelplaceinfo.h b/indra/newview/llpanelplaceinfo.h
index c9e1347542..07a2434d59 100644
--- a/indra/newview/llpanelplaceinfo.h
+++ b/indra/newview/llpanelplaceinfo.h
@@ -1,6 +1,6 @@
/**
* @file llpanelplaceinfo.h
- * @brief Base class for place information in Side Tray.
+ * @brief Displays place information in Side Tray.
*
* $LicenseInfo:firstyear=2009&license=viewergpl$
*
@@ -38,13 +38,19 @@
#include "v3dmath.h"
#include "lluuid.h"
+#include "llpanelmedia.h"
#include "llremoteparcelrequest.h"
+class LLButton;
+class LLComboBox;
class LLExpandableTextBox;
class LLInventoryItem;
+class LLLineEditor;
class LLPanelPickEdit;
class LLParcel;
+class LLIconCtrl;
class LLTextBox;
+class LLTextEditor;
class LLTextureCtrl;
class LLViewerRegion;
class LLViewerInventoryCategory;
@@ -68,18 +74,30 @@ public:
// Ignore all old location information, useful if you are
// recycling an existing dialog and need to clear it.
- virtual void resetLocation();
+ void resetLocation();
// Sends a request for data about the given parcel, which will
// only update the location if there is none already available.
/*virtual*/ void setParcelID(const LLUUID& parcel_id);
- // Depending on how the panel was triggered
- // (from landmark or current location, or other)
+ // Depending on how the panel was triggered
+ // (from landmark or current location, or other)
// sets a corresponding title and contents.
- virtual void setInfoType(INFO_TYPE type);
+ void setInfoType(INFO_TYPE type);
+
+ // Create a landmark for the current location
+ // in a folder specified by folder_id.
+ void createLandmark(const LLUUID& folder_id);
+
+ // Create a pick for the location specified
+ // by global_pos.
+ void createPick(const LLVector3d& pos_global, LLPanelPickEdit* pick_panel);
+
+ BOOL isMediaPanelVisible();
+ void toggleMediaPanel(BOOL visible);
+ void displayItemInfo(const LLInventoryItem* pItem);
+ /*virtual*/ void setErrorStatus(U32 status, const std::string& reason);
- // Requests remote parcel info by parcel ID.
void sendParcelInfoRequest();
// Displays information about a remote parcel.
@@ -87,37 +105,109 @@ public:
void displayParcelInfo(const LLUUID& region_id,
const LLVector3d& pos_global);
- /*virtual*/ void setErrorStatus(U32 status, const std::string& reason);
+ // Displays information about the currently selected parcel
+ // without sending a request to the server.
+ // If is_current_parcel true shows "You Are Here" banner.
+ void displaySelectedParcelInfo(LLParcel* parcel,
+ LLViewerRegion* region,
+ const LLVector3d& pos_global,
+ bool is_current_parcel);
- /*virtual*/ void processParcelInfo(const LLParcelData& parcel_data);
+ void updateEstateName(const std::string& name);
+ void updateEstateOwnerName(const std::string& name);
+ void updateCovenantText(const std::string &text);
+ void updateLastVisitedText(const LLDate &date);
+
+ void nameUpdatedCallback(LLTextBox* text,
+ const std::string& first,
+ const std::string& last);
+
+ void toggleLandmarkEditMode(BOOL enabled);
+ const std::string& getLandmarkTitle() const;
+ const std::string getLandmarkNotes() const;
+ const LLUUID getLandmarkFolder() const;
+
+ // Select current landmark folder in combobox.
+ BOOL setLandmarkFolder(const LLUUID& id);
+
+ /*virtual*/ void processParcelInfo(const LLParcelData& parcel_data);
/*virtual*/ void handleVisibilityChange (BOOL new_visibility);
+
+ static std::string getFullFolderName(const LLViewerInventoryCategory* cat);
- // Create a pick for the location specified
- // by global_pos.
- void createPick(const LLVector3d& pos_global, LLPanelPickEdit* pick_panel);
+private:
-protected:
- static void nameUpdatedCallback(LLTextBox* text,
- const std::string& first,
- const std::string& last);
+ void populateFoldersList();
+ static void updateYouAreHereBanner(void*);// added to gIdleCallbacks
+ void onForSaleBannerClick();
/**
* mParcelID is valid only for remote places, in other cases it's null. See resetLocation()
*/
- LLUUID mParcelID;
- LLUUID mRequestedID;
- LLVector3 mPosRegion;
- std::string mCurrentTitle;
- S32 mMinHeight;
- INFO_TYPE mInfoType;
-
- LLTextBox* mTitle;
- LLTextureCtrl* mSnapshotCtrl;
- LLTextBox* mRegionName;
- LLTextBox* mParcelName;
- LLExpandableTextBox* mDescEditor;
- LLTextBox* mMaturityRatingText;
+ LLUUID mParcelID;
+ LLUUID mRequestedID;
+ LLUUID mLandmarkID;
+ LLVector3 mPosRegion;
+ std::string mCurrentTitle;
+ S32 mMinHeight;
+ INFO_TYPE mInfoType;
+
+ /**
+ * Hold last displayed parcel. Needs for YouAreHere banner.
+ */
+ S32 mSelectedParcelID;
+ LLUUID mLastSelectedRegionID;
+
+ LLTextBox* mTitle;
+ LLPanel* mForSalePanel;
+ LLPanel* mYouAreHerePanel;
+ LLTextureCtrl* mSnapshotCtrl;
+ LLTextBox* mRegionName;
+ LLTextBox* mParcelName;
+ LLExpandableTextBox*mDescEditor;
+ LLTextBox* mMaturityRatingText;
+ LLTextBox* mParcelOwner;
+ LLTextBox* mLastVisited;
+
+ LLTextBox* mRatingText;
+ LLTextBox* mVoiceText;
+ LLTextBox* mFlyText;
+ LLTextBox* mPushText;
+ LLTextBox* mBuildText;
+ LLTextBox* mScriptsText;
+ LLTextBox* mDamageText;
+
+ LLTextBox* mRegionNameText;
+ LLTextBox* mRegionTypeText;
+ LLTextBox* mRegionRatingText;
+ LLTextBox* mRegionOwnerText;
+ LLTextBox* mRegionGroupText;
+
+ LLTextBox* mEstateNameText;
+ LLTextBox* mEstateRatingText;
+ LLTextBox* mEstateOwnerText;
+ LLTextEditor* mCovenantText;
+
+ LLTextBox* mSalesPriceText;
+ LLTextBox* mAreaText;
+ LLTextBox* mTrafficText;
+ LLTextBox* mPrimitivesText;
+ LLTextBox* mParcelScriptsText;
+ LLTextBox* mTerraformLimitsText;
+ LLTextEditor* mSubdivideText;
+ LLTextEditor* mResaleText;
+ LLTextBox* mSaleToText;
+
+ LLTextBox* mOwner;
+ LLTextBox* mCreator;
+ LLTextBox* mCreated;
+ LLLineEditor* mTitleEditor;
+ LLTextEditor* mNotesEditor;
+ LLComboBox* mFolderCombo;
+ LLPanel* mScrollingPanel;
+ LLPanel* mInfoPanel;
+ LLMediaPanel* mMediaPanel;
};
#endif // LL_LLPANELPLACEINFO_H
diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp
deleted file mode 100644
index 9ba72fe6cf..0000000000
--- a/indra/newview/llpanelplaceprofile.cpp
+++ /dev/null
@@ -1,541 +0,0 @@
-/**
- * @file llpanelplaceprofile.cpp
- * @brief Displays place profile in Side Tray.
- *
- * $LicenseInfo:firstyear=2009&license=viewergpl$
- *
- * Copyright (c) 2004-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llpanelplaceprofile.h"
-
-#include "llparcel.h"
-
-#include "llqueryflags.h"
-
-#include "lliconctrl.h"
-#include "lllineeditor.h"
-#include "lltextbox.h"
-#include "lltexteditor.h"
-
-#include "llaccordionctrl.h"
-#include "llaccordionctrltab.h"
-#include "llagent.h"
-#include "llagentui.h"
-#include "llappviewer.h"
-#include "llcallbacklist.h"
-#include "llfloaterbuycurrency.h"
-#include "llstatusbar.h"
-#include "llviewercontrol.h"
-#include "llviewerparcelmgr.h"
-#include "llviewerregion.h"
-
-static LLRegisterPanelClassWrapper<LLPanelPlaceProfile> t_place_profile("panel_place_profile");
-
-LLPanelPlaceProfile::LLPanelPlaceProfile()
-: LLPanelPlaceInfo(),
- mForSalePanel(NULL),
- mYouAreHerePanel(NULL),
- mSelectedParcelID(-1)
-{}
-
-// virtual
-LLPanelPlaceProfile::~LLPanelPlaceProfile()
-{}
-
-// virtual
-BOOL LLPanelPlaceProfile::postBuild()
-{
- LLPanelPlaceInfo::postBuild();
-
- mForSalePanel = getChild<LLPanel>("for_sale_panel");
- mYouAreHerePanel = getChild<LLPanel>("here_panel");
- gIdleCallbacks.addFunction(&LLPanelPlaceProfile::updateYouAreHereBanner, this);
-
- //Icon value should contain sale price of last selected parcel.
- mForSalePanel->getChild<LLIconCtrl>("icon_for_sale")->
- setMouseDownCallback(boost::bind(&LLPanelPlaceProfile::onForSaleBannerClick, this));
-
- mParcelOwner = getChild<LLTextBox>("owner_value");
- mLastVisited = getChild<LLTextBox>("last_visited_value");
-
- mRatingText = getChild<LLTextBox>("rating_value");
- mVoiceText = getChild<LLTextBox>("voice_value");
- mFlyText = getChild<LLTextBox>("fly_value");
- mPushText = getChild<LLTextBox>("push_value");
- mBuildText = getChild<LLTextBox>("build_value");
- mScriptsText = getChild<LLTextBox>("scripts_value");
- mDamageText = getChild<LLTextBox>("damage_value");
-
- mRegionNameText = getChild<LLTextBox>("region_name");
- mRegionTypeText = getChild<LLTextBox>("region_type");
- mRegionRatingText = getChild<LLTextBox>("region_rating");
- mRegionOwnerText = getChild<LLTextBox>("region_owner");
- mRegionGroupText = getChild<LLTextBox>("region_group");
-
- mEstateNameText = getChild<LLTextBox>("estate_name");
- mEstateRatingText = getChild<LLTextBox>("estate_rating");
- mEstateOwnerText = getChild<LLTextBox>("estate_owner");
- mCovenantText = getChild<LLTextEditor>("covenant");
-
- mSalesPriceText = getChild<LLTextBox>("sales_price");
- mAreaText = getChild<LLTextBox>("area");
- mTrafficText = getChild<LLTextBox>("traffic");
- mPrimitivesText = getChild<LLTextBox>("primitives");
- mParcelScriptsText = getChild<LLTextBox>("parcel_scripts");
- mTerraformLimitsText = getChild<LLTextBox>("terraform_limits");
- mSubdivideText = getChild<LLTextEditor>("subdivide");
- mResaleText = getChild<LLTextEditor>("resale");
- mSaleToText = getChild<LLTextBox>("sale_to");
-
- return TRUE;
-}
-
-// virtual
-void LLPanelPlaceProfile::resetLocation()
-{
- LLPanelPlaceInfo::resetLocation();
-
- mForSalePanel->setVisible(FALSE);
- mYouAreHerePanel->setVisible(FALSE);
-
- std::string not_available = getString("not_available");
- mParcelOwner->setValue(not_available);
- mLastVisited->setValue(not_available);
-
- mRatingText->setText(not_available);
- mVoiceText->setText(not_available);
- mFlyText->setText(not_available);
- mPushText->setText(not_available);
- mBuildText->setText(not_available);
- mParcelScriptsText->setText(not_available);
- mDamageText->setText(not_available);
-
- mRegionNameText->setValue(not_available);
- mRegionTypeText->setValue(not_available);
- mRegionRatingText->setValue(not_available);
- mRegionOwnerText->setValue(not_available);
- mRegionGroupText->setValue(not_available);
-
- mEstateNameText->setValue(not_available);
- mEstateRatingText->setValue(not_available);
- mEstateOwnerText->setValue(not_available);
- mCovenantText->setValue(not_available);
-
- mSalesPriceText->setValue(not_available);
- mAreaText->setValue(not_available);
- mTrafficText->setValue(not_available);
- mPrimitivesText->setValue(not_available);
- mParcelScriptsText->setValue(not_available);
- mTerraformLimitsText->setValue(not_available);
- mSubdivideText->setValue(not_available);
- mResaleText->setValue(not_available);
- mSaleToText->setValue(not_available);
-}
-
-// virtual
-void LLPanelPlaceProfile::setInfoType(INFO_TYPE type)
-{
- bool is_info_type_agent = type == AGENT;
- bool is_info_type_teleport_history = type == TELEPORT_HISTORY;
-
- getChild<LLTextBox>("maturity_label")->setVisible(!is_info_type_agent);
- mMaturityRatingText->setVisible(!is_info_type_agent);
-
- getChild<LLTextBox>("owner_label")->setVisible(is_info_type_agent);
- mParcelOwner->setVisible(is_info_type_agent);
-
- getChild<LLTextBox>("last_visited_label")->setVisible(is_info_type_teleport_history);
- mLastVisited->setVisible(is_info_type_teleport_history);
-
- getChild<LLAccordionCtrl>("advanced_info_accordion")->setVisible(is_info_type_agent);
-
- switch(type)
- {
- case AGENT:
- case PLACE:
- default:
- mCurrentTitle = getString("title_place");
- break;
-
- case TELEPORT_HISTORY:
- mCurrentTitle = getString("title_teleport_history");
- break;
- }
-
- LLPanelPlaceInfo::setInfoType(type);
-}
-
-// virtual
-void LLPanelPlaceProfile::processParcelInfo(const LLParcelData& parcel_data)
-{
- LLPanelPlaceInfo::processParcelInfo(parcel_data);
-
- // HACK: Flag 0x2 == adult region,
- // Flag 0x1 == mature region, otherwise assume PG
- std::string rating = LLViewerRegion::accessToString(SIM_ACCESS_PG);
- if (parcel_data.flags & 0x2)
- {
- rating = LLViewerRegion::accessToString(SIM_ACCESS_ADULT);
- }
- else if (parcel_data.flags & 0x1)
- {
- rating = LLViewerRegion::accessToString(SIM_ACCESS_MATURE);
- }
-
- mMaturityRatingText->setValue(rating);
- mRatingText->setValue(rating);
-
- //update for_sale banner, here we should use DFQ_FOR_SALE instead of PF_FOR_SALE
- //because we deal with remote parcel response format
- bool is_for_sale = (parcel_data.flags & DFQ_FOR_SALE) &&
- mInfoType == AGENT ? TRUE : FALSE;
- mForSalePanel->setVisible(is_for_sale);
-}
-
-void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
- LLViewerRegion* region,
- const LLVector3d& pos_global,
- bool is_current_parcel)
-{
- if (!region || !parcel)
- return;
-
- // send EstateCovenantInfo message
- LLMessageSystem *msg = gMessageSystem;
- msg->newMessage("EstateCovenantRequest");
- msg->nextBlockFast(_PREHASH_AgentData);
- msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
- msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID());
- msg->sendReliable(region->getHost());
-
- LLParcelData parcel_data;
-
- // HACK: Converting sim access flags to the format
- // returned by remote parcel response.
- switch(region->getSimAccess())
- {
- case SIM_ACCESS_MATURE:
- parcel_data.flags = 0x1;
- break;
-
- case SIM_ACCESS_ADULT:
- parcel_data.flags = 0x2;
- break;
-
- default:
- parcel_data.flags = 0;
- }
- parcel_data.desc = parcel->getDesc();
- parcel_data.name = parcel->getName();
- parcel_data.sim_name = region->getName();
- parcel_data.snapshot_id = parcel->getSnapshotID();
- mPosRegion.setVec((F32)fmod(pos_global.mdV[VX], (F64)REGION_WIDTH_METERS),
- (F32)fmod(pos_global.mdV[VY], (F64)REGION_WIDTH_METERS),
- (F32)pos_global.mdV[VZ]);
- parcel_data.global_x = pos_global.mdV[VX];
- parcel_data.global_y = pos_global.mdV[VY];
- parcel_data.global_z = pos_global.mdV[VZ];
-
- std::string on = getString("on");
- std::string off = getString("off");
-
- // Processing parcel characteristics
- if (parcel->getParcelFlagAllowVoice())
- {
- mVoiceText->setText(on);
- }
- else
- {
- mVoiceText->setText(off);
- }
-
- if (!region->getBlockFly() && parcel->getAllowFly())
- {
- mFlyText->setText(on);
- }
- else
- {
- mFlyText->setText(off);
- }
-
- if (region->getRestrictPushObject() || parcel->getRestrictPushObject())
- {
- mPushText->setText(off);
- }
- else
- {
- mPushText->setText(on);
- }
-
- if (parcel->getAllowModify())
- {
- mBuildText->setText(on);
- }
- else
- {
- mBuildText->setText(off);
- }
-
- if((region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS) ||
- (region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) ||
- !parcel->getAllowOtherScripts())
- {
- mScriptsText->setText(off);
- }
- else
- {
- mScriptsText->setText(on);
- }
-
- if (region->getAllowDamage() || parcel->getAllowDamage())
- {
- mDamageText->setText(on);
- }
- else
- {
- mDamageText->setText(off);
- }
-
- mRegionNameText->setText(region->getName());
- mRegionTypeText->setText(region->getSimProductName());
- mRegionRatingText->setText(region->getSimAccessString());
-
- // Determine parcel owner
- if (parcel->isPublic())
- {
- mParcelOwner->setText(getString("public"));
- mRegionOwnerText->setText(getString("public"));
- }
- else
- {
- if (parcel->getIsGroupOwned())
- {
- mRegionOwnerText->setText(getString("group_owned_text"));
-
- if(!parcel->getGroupID().isNull())
- {
- // FIXME: Using parcel group as region group.
- gCacheName->get(parcel->getGroupID(), TRUE,
- boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mRegionGroupText, _2, _3));
-
- gCacheName->get(parcel->getGroupID(), TRUE,
- boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mParcelOwner, _2, _3));
- }
- else
- {
- std::string owner = getString("none_text");
- mRegionGroupText->setText(owner);
- mParcelOwner->setText(owner);
- }
- }
- else
- {
- // Figure out the owner's name
- gCacheName->get(parcel->getOwnerID(), FALSE,
- boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mParcelOwner, _2, _3));
- gCacheName->get(region->getOwner(), FALSE,
- boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mRegionOwnerText, _2, _3));
- }
-
- if(LLParcel::OS_LEASE_PENDING == parcel->getOwnershipStatus())
- {
- mRegionOwnerText->setText(mRegionOwnerText->getText() + getString("sale_pending_text"));
- }
- }
-
- mEstateRatingText->setText(region->getSimAccessString());
-
- S32 area;
- S32 claim_price;
- S32 rent_price;
- F32 dwell;
- BOOL for_sale = parcel->getForSale();
- LLViewerParcelMgr::getInstance()->getDisplayInfo(&area,
- &claim_price,
- &rent_price,
- &for_sale,
- &dwell);
- if (for_sale)
- {
- // Adding "For Sale" flag in remote parcel response format.
- parcel_data.flags |= DFQ_FOR_SALE;
-
- const LLUUID& auth_buyer_id = parcel->getAuthorizedBuyerID();
- if(auth_buyer_id.notNull())
- {
- gCacheName->get(auth_buyer_id, TRUE,
- boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mSaleToText, _2, _3));
-
- // Show sales info to a specific person or a group he belongs to.
- if (auth_buyer_id != gAgent.getID() && !gAgent.isInGroup(auth_buyer_id))
- {
- for_sale = FALSE;
- }
- }
- else
- {
- mSaleToText->setText(getString("anyone"));
- }
-
- const U8* sign = (U8*)getString("price_text").c_str();
- const U8* sqm = (U8*)getString("area_text").c_str();
-
- mSalesPriceText->setText(llformat("%s%d ", sign, parcel->getSalePrice()));
- mAreaText->setText(llformat("%d %s", area, sqm));
- mTrafficText->setText(llformat("%.0f", dwell));
-
- // Can't have more than region max tasks, regardless of parcel
- // object bonus factor.
- S32 primitives = llmin(llround(parcel->getMaxPrimCapacity() * parcel->getParcelPrimBonus()),
- (S32)region->getMaxTasks());
-
- const U8* available = (U8*)getString("available").c_str();
- const U8* allocated = (U8*)getString("allocated").c_str();
-
- mPrimitivesText->setText(llformat("%d %s, %d %s", primitives, available, parcel->getPrimCount(), allocated));
-
- if (parcel->getAllowOtherScripts())
- {
- mParcelScriptsText->setText(getString("all_residents_text"));
- }
- else if (parcel->getAllowGroupScripts())
- {
- mParcelScriptsText->setText(getString("group_text"));
- }
- else
- {
- mParcelScriptsText->setText(off);
- }
-
- mTerraformLimitsText->setText(parcel->getAllowTerraform() ? on : off);
-
- if (region->getRegionFlags() & REGION_FLAGS_ALLOW_PARCEL_CHANGES)
- {
- mSubdivideText->setText(getString("can_change"));
- }
- else
- {
- mSubdivideText->setText(getString("can_not_change"));
- }
- if (region->getRegionFlags() & REGION_FLAGS_BLOCK_LAND_RESELL)
- {
- mResaleText->setText(getString("can_not_resell"));
- }
- else
- {
- mResaleText->setText(getString("can_resell"));
- }
- }
-
- mSelectedParcelID = parcel->getLocalID();
- mLastSelectedRegionID = region->getRegionID();
- processParcelInfo(parcel_data);
-
- mYouAreHerePanel->setVisible(is_current_parcel);
- getChild<LLAccordionCtrlTab>("sales_tab")->setVisible(for_sale);
-}
-
-void LLPanelPlaceProfile::updateEstateName(const std::string& name)
-{
- mEstateNameText->setText(name);
-}
-
-void LLPanelPlaceProfile::updateEstateOwnerName(const std::string& name)
-{
- mEstateOwnerText->setText(name);
-}
-
-void LLPanelPlaceProfile::updateCovenantText(const std::string &text)
-{
- mCovenantText->setText(text);
-}
-
-void LLPanelPlaceProfile::updateLastVisitedText(const LLDate &date)
-{
- if (date.isNull())
- {
- mLastVisited->setText(getString("unknown"));
- }
- else
- {
- std::string timeStr = getString("acquired_date");
- LLSD substitution;
- substitution["datetime"] = (S32) date.secondsSinceEpoch();
- LLStringUtil::format (timeStr, substitution);
- mLastVisited->setText(timeStr);
- }
-}
-
-void LLPanelPlaceProfile::onForSaleBannerClick()
-{
- LLViewerParcelMgr* mgr = LLViewerParcelMgr::getInstance();
- LLParcelSelectionHandle hParcel = mgr->getFloatingParcelSelection();
- LLViewerRegion* selected_region = mgr->getSelectionRegion();
- if(!hParcel.isNull() && selected_region)
- {
- if(hParcel->getParcel()->getLocalID() == mSelectedParcelID &&
- mLastSelectedRegionID ==selected_region->getRegionID())
- {
- if(hParcel->getParcel()->getSalePrice() - gStatusBar->getBalance() > 0)
- {
- LLFloaterBuyCurrency::buyCurrency("Buying selected land ", hParcel->getParcel()->getSalePrice());
- }
- else
- {
- LLViewerParcelMgr::getInstance()->startBuyLand();
- }
- }
- else
- {
- LL_WARNS("Places") << "User is trying to buy remote parcel.Operation is not supported"<< LL_ENDL;
- }
-
- }
-}
-
-// static
-void LLPanelPlaceProfile::updateYouAreHereBanner(void* userdata)
-{
- //YouAreHere Banner should be displayed only for selected places,
- // If you want to display it for landmark or teleport history item, you should check by mParcelId
-
- LLPanelPlaceProfile* self = static_cast<LLPanelPlaceProfile*>(userdata);
- if(!self->getVisible())
- return;
-
- if(!gDisconnected)
- {
- static F32 radius = gSavedSettings.getF32("YouAreHereDistance");
-
- BOOL display_banner = gAgent.getRegion()->getRegionID() == self->mLastSelectedRegionID &&
- LLAgentUI::checkAgentDistance(self->mPosRegion, radius);
-
- self->mYouAreHerePanel->setVisible(display_banner);
- }
-}
diff --git a/indra/newview/llpanelplaceprofile.h b/indra/newview/llpanelplaceprofile.h
deleted file mode 100644
index d8e4bcb6bd..0000000000
--- a/indra/newview/llpanelplaceprofile.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/**
- * @file llpanelplaceprofile.h
- * @brief Displays place profile in Side Tray.
- *
- * $LicenseInfo:firstyear=2009&license=viewergpl$
- *
- * Copyright (c) 2004-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLPANELPLACEPROFILE_H
-#define LL_LLPANELPLACEPROFILE_H
-
-#include "llpanelplaceinfo.h"
-
-class LLTextEditor;
-
-class LLPanelPlaceProfile : public LLPanelPlaceInfo
-{
-public:
- LLPanelPlaceProfile();
- /*virtual*/ ~LLPanelPlaceProfile();
-
- /*virtual*/ BOOL postBuild();
-
- /*virtual*/ void resetLocation();
-
- /*virtual*/ void setInfoType(INFO_TYPE type);
-
- /*virtual*/ void processParcelInfo(const LLParcelData& parcel_data);
-
- // Displays information about the currently selected parcel
- // without sending a request to the server.
- // If is_current_parcel true shows "You Are Here" banner.
- void displaySelectedParcelInfo(LLParcel* parcel,
- LLViewerRegion* region,
- const LLVector3d& pos_global,
- bool is_current_parcel);
-
- void updateEstateName(const std::string& name);
- void updateEstateOwnerName(const std::string& name);
- void updateCovenantText(const std::string &text);
- void updateLastVisitedText(const LLDate &date);
-
-private:
- void onForSaleBannerClick();
-
- static void updateYouAreHereBanner(void*);// added to gIdleCallbacks
-
- /**
- * Holds last displayed parcel. Needed for YouAreHere banner.
- */
- S32 mSelectedParcelID;
- LLUUID mLastSelectedRegionID;
-
- LLPanel* mForSalePanel;
- LLPanel* mYouAreHerePanel;
-
- LLTextBox* mParcelOwner;
- LLTextBox* mLastVisited;
-
- LLTextBox* mRatingText;
- LLTextBox* mVoiceText;
- LLTextBox* mFlyText;
- LLTextBox* mPushText;
- LLTextBox* mBuildText;
- LLTextBox* mScriptsText;
- LLTextBox* mDamageText;
-
- LLTextBox* mRegionNameText;
- LLTextBox* mRegionTypeText;
- LLTextBox* mRegionRatingText;
- LLTextBox* mRegionOwnerText;
- LLTextBox* mRegionGroupText;
-
- LLTextBox* mEstateNameText;
- LLTextBox* mEstateRatingText;
- LLTextBox* mEstateOwnerText;
- LLTextEditor* mCovenantText;
-
- LLTextBox* mSalesPriceText;
- LLTextBox* mAreaText;
- LLTextBox* mTrafficText;
- LLTextBox* mPrimitivesText;
- LLTextBox* mParcelScriptsText;
- LLTextBox* mTerraformLimitsText;
- LLTextEditor* mSubdivideText;
- LLTextEditor* mResaleText;
- LLTextBox* mSaleToText;
-};
-
-#endif // LL_LLPANELPLACEPROFILE_H
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index 66efb96fc7..b2e9110e96 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -57,10 +57,9 @@
#include "llinventorymodel.h"
#include "lllandmarkactions.h"
#include "lllandmarklist.h"
-#include "llpanellandmarkinfo.h"
+#include "llpanelplaceinfo.h"
#include "llpanellandmarks.h"
#include "llpanelpick.h"
-#include "llpanelplaceprofile.h"
#include "llpanelteleporthistory.h"
#include "llteleporthistorystorage.h"
#include "lltoggleablemenu.h"
@@ -122,8 +121,7 @@ LLPanelPlaces::LLPanelPlaces()
mFilterSubString(LLStringUtil::null),
mActivePanel(NULL),
mFilterEditor(NULL),
- mPlaceProfile(NULL),
- mLandmarkInfo(NULL),
+ mPlaceInfo(NULL),
mPickPanel(NULL),
mItem(NULL),
mPlaceMenu(NULL),
@@ -137,7 +135,7 @@ LLPanelPlaces::LLPanelPlaces()
gInventory.addObserver(mInventoryObserver);
LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(
- boost::bind(&LLPanelPlaces::updateVerbs, this));
+ boost::bind(&LLPanelPlaces::onAgentParcelChange, this));
//LLUICtrlFactory::getInstance()->buildPanel(this, "panel_places.xml"); // Called from LLRegisterPanelClass::defaultPanelClassBuilder()
}
@@ -208,32 +206,25 @@ BOOL LLPanelPlaces::postBuild()
mFilterEditor->setCommitCallback(boost::bind(&LLPanelPlaces::onFilterEdit, this, _2, false));
}
- mPlaceProfile = getChild<LLPanelPlaceProfile>("panel_place_profile");
- mLandmarkInfo = getChild<LLPanelLandmarkInfo>("panel_landmark_info");
- if (!mPlaceProfile || !mLandmarkInfo)
- return FALSE;
+ mPlaceInfo = getChild<LLPanelPlaceInfo>("panel_place_info");
- LLButton* back_btn = mPlaceProfile->getChild<LLButton>("back_btn");
+ LLButton* back_btn = mPlaceInfo->getChild<LLButton>("back_btn");
back_btn->setClickedCallback(boost::bind(&LLPanelPlaces::onBackButtonClicked, this));
- back_btn = mLandmarkInfo->getChild<LLButton>("back_btn");
- back_btn->setClickedCallback(boost::bind(&LLPanelPlaces::onBackButtonClicked, this));
-
- LLLineEditor* title_editor = mLandmarkInfo->getChild<LLLineEditor>("title_editor");
+ LLLineEditor* title_editor = mPlaceInfo->getChild<LLLineEditor>("title_editor");
title_editor->setKeystrokeCallback(boost::bind(&LLPanelPlaces::onEditButtonClicked, this), NULL);
- LLTextEditor* notes_editor = mLandmarkInfo->getChild<LLTextEditor>("notes_editor");
+ LLTextEditor* notes_editor = mPlaceInfo->getChild<LLTextEditor>("notes_editor");
notes_editor->setKeystrokeCallback(boost::bind(&LLPanelPlaces::onEditButtonClicked, this));
- LLComboBox* folder_combo = mLandmarkInfo->getChild<LLComboBox>("folder_combo");
+ LLComboBox* folder_combo = mPlaceInfo->getChild<LLComboBox>("folder_combo");
folder_combo->setSelectionCallback(boost::bind(&LLPanelPlaces::onEditButtonClicked, this));
-
return TRUE;
}
void LLPanelPlaces::onOpen(const LLSD& key)
{
- if(!mPlaceProfile || !mLandmarkInfo || key.size() == 0)
+ if(mPlaceInfo == NULL || key.size() == 0)
return;
mFilterEditor->clear();
@@ -248,11 +239,11 @@ void LLPanelPlaces::onOpen(const LLSD& key)
if (mPlaceInfoType == AGENT_INFO_TYPE)
{
- mPlaceProfile->setInfoType(LLPanelPlaceInfo::AGENT);
+ mPlaceInfo->setInfoType(LLPanelPlaceInfo::AGENT);
}
else if (mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE)
{
- mLandmarkInfo->setInfoType(LLPanelPlaceInfo::CREATE_LANDMARK);
+ mPlaceInfo->setInfoType(LLPanelPlaceInfo::CREATE_LANDMARK);
if (key.has("x") && key.has("y") && key.has("z"))
{
@@ -265,11 +256,11 @@ void LLPanelPlaces::onOpen(const LLSD& key)
mPosGlobal = gAgent.getPositionGlobal();
}
- mLandmarkInfo->displayParcelInfo(LLUUID(), mPosGlobal);
+ mPlaceInfo->displayParcelInfo(LLUUID(), mPosGlobal);
}
else if (mPlaceInfoType == LANDMARK_INFO_TYPE)
{
- mLandmarkInfo->setInfoType(LLPanelPlaceInfo::LANDMARK);
+ mPlaceInfo->setInfoType(LLPanelPlaceInfo::LANDMARK);
LLInventoryItem* item = gInventory.getItem(key["id"].asUUID());
if (!item)
@@ -279,12 +270,17 @@ void LLPanelPlaces::onOpen(const LLSD& key)
}
else if (mPlaceInfoType == REMOTE_PLACE_INFO_TYPE)
{
+ if (mPlaceInfo->isMediaPanelVisible())
+ {
+ toggleMediaPanel();
+ }
+
mPosGlobal = LLVector3d(key["x"].asReal(),
key["y"].asReal(),
key["z"].asReal());
- mPlaceProfile->setInfoType(LLPanelPlaceInfo::PLACE);
- mPlaceProfile->displayParcelInfo(LLUUID(), mPosGlobal);
+ mPlaceInfo->setInfoType(LLPanelPlaceInfo::PLACE);
+ mPlaceInfo->displayParcelInfo(LLUUID(), mPosGlobal);
}
else if (mPlaceInfoType == TELEPORT_HISTORY_INFO_TYPE)
{
@@ -295,9 +291,9 @@ void LLPanelPlaces::onOpen(const LLSD& key)
mPosGlobal = hist_items[index].mGlobalPos;
- mPlaceProfile->setInfoType(LLPanelPlaceInfo::TELEPORT_HISTORY);
- mPlaceProfile->updateLastVisitedText(hist_items[index].mDate);
- mPlaceProfile->displayParcelInfo(LLUUID(), mPosGlobal);
+ mPlaceInfo->setInfoType(LLPanelPlaceInfo::TELEPORT_HISTORY);
+ mPlaceInfo->updateLastVisitedText(hist_items[index].mDate);
+ mPlaceInfo->displayParcelInfo(LLUUID(), mPosGlobal);
}
LLViewerParcelMgr* parcel_mgr = LLViewerParcelMgr::getInstance();
@@ -325,7 +321,7 @@ void LLPanelPlaces::onOpen(const LLSD& key)
void LLPanelPlaces::setItem(LLInventoryItem* item)
{
- if (!mLandmarkInfo || !item)
+ if (!mPlaceInfo || !item)
return;
mItem = item;
@@ -355,19 +351,19 @@ void LLPanelPlaces::setItem(LLInventoryItem* item)
if (is_landmark_editable)
{
- if(!mLandmarkInfo->setLandmarkFolder(mItem->getParentUUID()) && !mItem->getParentUUID().isNull())
+ if(!mPlaceInfo->setLandmarkFolder(mItem->getParentUUID()) && !mItem->getParentUUID().isNull())
{
const LLViewerInventoryCategory* cat = gInventory.getCategory(mItem->getParentUUID());
- if (cat)
+ if(cat)
{
- std::string cat_fullname = LLPanelLandmarkInfo::getFullFolderName(cat);
- LLComboBox* folderList = mLandmarkInfo->getChild<LLComboBox>("folder_combo");
- folderList->add(cat_fullname, cat->getUUID(), ADD_TOP);
+ std::string cat_fullname = LLPanelPlaceInfo::getFullFolderName(cat);
+ LLComboBox* folderList = mPlaceInfo->getChild<LLComboBox>("folder_combo");
+ folderList->add(cat_fullname, cat->getUUID(),ADD_TOP);
}
}
}
- mLandmarkInfo->displayItemInfo(mItem);
+ mPlaceInfo->displayItemInfo(mItem);
LLLandmark* lm = gLandmarkList.getAsset(mItem->getAssetUUID(),
boost::bind(&LLPanelPlaces::onLandmarkLoaded, this, _1));
@@ -379,13 +375,13 @@ void LLPanelPlaces::setItem(LLInventoryItem* item)
void LLPanelPlaces::onLandmarkLoaded(LLLandmark* landmark)
{
- if (!mLandmarkInfo)
+ if (!mPlaceInfo)
return;
LLUUID region_id;
landmark->getRegionID(region_id);
landmark->getGlobalPos(mPosGlobal);
- mLandmarkInfo->displayParcelInfo(region_id, mPosGlobal);
+ mPlaceInfo->displayParcelInfo(region_id, mPosGlobal);
}
void LLPanelPlaces::onFilterEdit(const std::string& search_string, bool force_filter)
@@ -422,8 +418,10 @@ void LLPanelPlaces::onShareButtonClicked()
void LLPanelPlaces::onTeleportButtonClicked()
{
- LLPanelPlaceInfo* panel = getCurrentInfoPanel();
- if (panel && panel->getVisible())
+ if (!mPlaceInfo)
+ return;
+
+ if (mPlaceInfo->getVisible())
{
if (mPlaceInfoType == LANDMARK_INFO_TYPE)
{
@@ -452,8 +450,10 @@ void LLPanelPlaces::onTeleportButtonClicked()
void LLPanelPlaces::onShowOnMapButtonClicked()
{
- LLPanelPlaceInfo* panel = getCurrentInfoPanel();
- if (panel && panel->getVisible())
+ if (!mPlaceInfo)
+ return;
+
+ if (mPlaceInfo->getVisible())
{
LLFloaterWorldMap* worldmap_instance = LLFloaterWorldMap::getInstance();
if(!worldmap_instance)
@@ -496,31 +496,31 @@ void LLPanelPlaces::onShowOnMapButtonClicked()
void LLPanelPlaces::onEditButtonClicked()
{
- if (!mLandmarkInfo || isLandmarkEditModeOn)
+ if (!mPlaceInfo || isLandmarkEditModeOn)
return;
isLandmarkEditModeOn = true;
- mLandmarkInfo->toggleLandmarkEditMode(TRUE);
+ mPlaceInfo->toggleLandmarkEditMode(TRUE);
updateVerbs();
}
void LLPanelPlaces::onSaveButtonClicked()
{
- if (!mLandmarkInfo || mItem.isNull())
+ if (!mPlaceInfo || mItem.isNull())
return;
- std::string current_title_value = mLandmarkInfo->getLandmarkTitle();
+ std::string current_title_value = mPlaceInfo->getLandmarkTitle();
std::string item_title_value = mItem->getName();
- std::string current_notes_value = mLandmarkInfo->getLandmarkNotes();
+ std::string current_notes_value = mPlaceInfo->getLandmarkNotes();
std::string item_notes_value = mItem->getDescription();
LLStringUtil::trim(current_title_value);
LLStringUtil::trim(current_notes_value);
LLUUID item_id = mItem->getUUID();
- LLUUID folder_id = mLandmarkInfo->getLandmarkFolder();
+ LLUUID folder_id = mPlaceInfo->getLandmarkFolder();
LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(mItem);
@@ -553,7 +553,7 @@ void LLPanelPlaces::onSaveButtonClicked()
void LLPanelPlaces::onCancelButtonClicked()
{
- if (!mLandmarkInfo)
+ if (!mPlaceInfo)
return;
if (mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE)
@@ -562,13 +562,13 @@ void LLPanelPlaces::onCancelButtonClicked()
}
else
{
- mLandmarkInfo->toggleLandmarkEditMode(FALSE);
+ mPlaceInfo->toggleLandmarkEditMode(FALSE);
isLandmarkEditModeOn = false;
updateVerbs();
// Reload the landmark properties.
- mLandmarkInfo->displayItemInfo(mItem);
+ mPlaceInfo->displayItemInfo(mItem);
}
}
@@ -597,7 +597,7 @@ void LLPanelPlaces::onOverflowButtonClicked()
if (mItem.notNull())
{
const LLUUID& item_id = mItem->getUUID();
- const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ const LLUUID& trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);
is_landmark_removable = gInventory.isObjectDescendentOf(item_id, gInventory.getRootFolderID()) &&
!gInventory.isObjectDescendentOf(item_id, trash_id);
}
@@ -652,6 +652,9 @@ void LLPanelPlaces::onOverflowMenuItemClicked(const LLSD& param)
}
else if (item == "pick")
{
+ if (!mPlaceInfo)
+ return;
+
if (mPickPanel == NULL)
{
mPickPanel = LLPanelPickEdit::create();
@@ -664,12 +667,7 @@ void LLPanelPlaces::onOverflowMenuItemClicked(const LLSD& param)
togglePickPanel(TRUE);
mPickPanel->onOpen(LLSD());
-
- LLPanelPlaceInfo* panel = getCurrentInfoPanel();
- if (panel)
- {
- panel->createPick(mPosGlobal, mPickPanel);
- }
+ mPlaceInfo->createPick(mPosGlobal, mPickPanel);
LLRect rect = getRect();
mPickPanel->reshape(rect.getWidth(), rect.getHeight());
@@ -679,7 +677,7 @@ void LLPanelPlaces::onOverflowMenuItemClicked(const LLSD& param)
{
if ( mItem.notNull() )
{
- const LLUUID& favorites_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE);
+ LLUUID favorites_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE);
if ( favorites_id.notNull() )
{
copy_inventory_item(gAgent.getID(),
@@ -696,16 +694,39 @@ void LLPanelPlaces::onOverflowMenuItemClicked(const LLSD& param)
void LLPanelPlaces::onBackButtonClicked()
{
- togglePlaceInfoPanel(FALSE);
+ if (!mPlaceInfo)
+ return;
+
+ if (mPlaceInfo->isMediaPanelVisible())
+ {
+ toggleMediaPanel();
+ }
+ else
+ {
+ togglePlaceInfoPanel(FALSE);
- // Resetting mPlaceInfoType when Place Info panel is closed.
- mPlaceInfoType = LLStringUtil::null;
+ // Resetting mPlaceInfoType when Place Info panel is closed.
+ mPlaceInfoType = LLStringUtil::null;
- isLandmarkEditModeOn = false;
+ isLandmarkEditModeOn = false;
+ }
updateVerbs();
}
+void LLPanelPlaces::toggleMediaPanel()
+{
+ if (!mPlaceInfo)
+ return;
+
+ mPlaceInfo->toggleMediaPanel(!mPlaceInfo->isMediaPanelVisible());
+
+ // Refresh the current place info because
+ // the media panel controls can't refer to
+ // the remote parcel media.
+ onOpen(LLSD().insert("type", AGENT_INFO_TYPE));
+}
+
void LLPanelPlaces::togglePickPanel(BOOL visible)
{
setAllChildrenVisible(this, !visible);
@@ -716,50 +737,26 @@ void LLPanelPlaces::togglePickPanel(BOOL visible)
void LLPanelPlaces::togglePlaceInfoPanel(BOOL visible)
{
- if (!mPlaceProfile || !mLandmarkInfo)
+ if (!mPlaceInfo)
return;
+ mPlaceInfo->setVisible(visible);
mFilterEditor->setVisible(!visible);
mTabContainer->setVisible(!visible);
- if (mPlaceInfoType == AGENT_INFO_TYPE ||
- mPlaceInfoType == REMOTE_PLACE_INFO_TYPE ||
- mPlaceInfoType == TELEPORT_HISTORY_INFO_TYPE)
+ if (visible)
{
- mPlaceProfile->setVisible(visible);
+ mPlaceInfo->resetLocation();
- if (visible)
- {
- mPlaceProfile->resetLocation();
-
- LLRect rect = getRect();
- LLRect new_rect = LLRect(rect.mLeft, rect.mTop, rect.mRight, mTabContainer->getRect().mBottom);
- mPlaceProfile->reshape(new_rect.getWidth(), new_rect.getHeight());
-
- mLandmarkInfo->setVisible(FALSE);
- }
- }
- else if (mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE ||
- mPlaceInfoType == LANDMARK_INFO_TYPE)
- {
- mLandmarkInfo->setVisible(visible);
-
- if (visible)
- {
- mLandmarkInfo->resetLocation();
-
- LLRect rect = getRect();
- LLRect new_rect = LLRect(rect.mLeft, rect.mTop, rect.mRight, mTabContainer->getRect().mBottom);
- mLandmarkInfo->reshape(new_rect.getWidth(), new_rect.getHeight());
-
- mPlaceProfile->setVisible(FALSE);
- }
+ LLRect rect = getRect();
+ LLRect new_rect = LLRect(rect.mLeft, rect.mTop, rect.mRight, mTabContainer->getRect().mBottom);
+ mPlaceInfo->reshape(new_rect.getWidth(),new_rect.getHeight());
}
}
void LLPanelPlaces::changedParcelSelection()
{
- if (!mPlaceProfile)
+ if (!mPlaceInfo)
return;
LLViewerParcelMgr* parcel_mgr = LLViewerParcelMgr::getInstance();
@@ -785,8 +782,8 @@ void LLPanelPlaces::changedParcelSelection()
}
}
- mPlaceProfile->resetLocation();
- mPlaceProfile->displaySelectedParcelInfo(parcel, region, mPosGlobal, is_current_parcel);
+ mPlaceInfo->resetLocation();
+ mPlaceInfo->displaySelectedParcelInfo(parcel, region, mPosGlobal, is_current_parcel);
updateVerbs();
}
@@ -833,22 +830,30 @@ void LLPanelPlaces::changedInventory(U32 mask)
gInventory.removeObserver(mInventoryObserver);
}
-void LLPanelPlaces::updateVerbs()
+void LLPanelPlaces::onAgentParcelChange()
{
- bool is_place_info_visible;
+ if (!mPlaceInfo)
+ return;
- LLPanelPlaceInfo* panel = getCurrentInfoPanel();
- if (panel)
+ if (mPlaceInfo->isMediaPanelVisible())
{
- is_place_info_visible = panel->getVisible();
+ onOpen(LLSD().insert("type", AGENT_INFO_TYPE));
}
else
{
- is_place_info_visible = false;
+ updateVerbs();
}
+}
+void LLPanelPlaces::updateVerbs()
+{
+ if (!mPlaceInfo)
+ return;
+
+ bool is_place_info_visible = mPlaceInfo->getVisible();
bool is_agent_place_info_visible = mPlaceInfoType == AGENT_INFO_TYPE;
bool is_create_landmark_visible = mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE;
+ bool is_media_panel_visible = mPlaceInfo->isMediaPanelVisible();
mTeleportBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn);
mShowOnMapBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn);
@@ -859,7 +864,7 @@ void LLPanelPlaces::updateVerbs()
mCancelBtn->setVisible(isLandmarkEditModeOn);
mCloseBtn->setVisible(is_create_landmark_visible && !isLandmarkEditModeOn);
- mOverflowBtn->setEnabled(is_place_info_visible && !is_create_landmark_visible);
+ mOverflowBtn->setEnabled(is_place_info_visible && !is_media_panel_visible && !is_create_landmark_visible);
if (is_place_info_visible)
{
@@ -867,13 +872,16 @@ void LLPanelPlaces::updateVerbs()
{
// We don't need to teleport to the current location
// so check if the location is not within the current parcel.
- mTeleportBtn->setEnabled(!mPosGlobal.isExactlyZero() &&
+ mTeleportBtn->setEnabled(!is_media_panel_visible &&
+ !mPosGlobal.isExactlyZero() &&
!LLViewerParcelMgr::getInstance()->inAgentParcel(mPosGlobal));
}
else if (mPlaceInfoType == LANDMARK_INFO_TYPE || mPlaceInfoType == REMOTE_PLACE_INFO_TYPE)
{
mTeleportBtn->setEnabled(TRUE);
}
+
+ mShowOnMapBtn->setEnabled(!is_media_panel_visible);
}
else
{
@@ -882,23 +890,6 @@ void LLPanelPlaces::updateVerbs()
}
}
-LLPanelPlaceInfo* LLPanelPlaces::getCurrentInfoPanel()
-{
- if (mPlaceInfoType == AGENT_INFO_TYPE ||
- mPlaceInfoType == REMOTE_PLACE_INFO_TYPE ||
- mPlaceInfoType == TELEPORT_HISTORY_INFO_TYPE)
- {
- return mPlaceProfile;
- }
- else if (mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE ||
- mPlaceInfoType == LANDMARK_INFO_TYPE)
- {
- return mLandmarkInfo;
- }
-
- return NULL;
-}
-
static bool is_agent_in_selected_parcel(LLParcel* parcel)
{
LLViewerParcelMgr* parcel_mgr = LLViewerParcelMgr::getInstance();
diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h
index 39eb5261db..e2d281dd84 100644
--- a/indra/newview/llpanelplaces.h
+++ b/indra/newview/llpanelplaces.h
@@ -37,10 +37,6 @@
class LLInventoryItem;
class LLFilterEditor;
class LLLandmark;
-
-class LLPanelLandmarkInfo;
-class LLPanelPlaceProfile;
-
class LLPanelPickEdit;
class LLPanelPlaceInfo;
class LLPanelPlacesTab;
@@ -89,16 +85,13 @@ private:
void togglePickPanel(BOOL visible);
void togglePlaceInfoPanel(BOOL visible);
+ void onAgentParcelChange();
void updateVerbs();
- LLPanelPlaceInfo* getCurrentInfoPanel();
-
LLFilterEditor* mFilterEditor;
LLPanelPlacesTab* mActivePanel;
LLTabContainer* mTabContainer;
- LLPanelPlaceProfile* mPlaceProfile;
- LLPanelLandmarkInfo* mLandmarkInfo;
-
+ LLPanelPlaceInfo* mPlaceInfo;
LLPanelPickEdit* mPickPanel;
LLToggleableMenu* mPlaceMenu;
LLToggleableMenu* mLandmarkMenu;
diff --git a/indra/newview/llpanelprofileview.h b/indra/newview/llpanelprofileview.h
index 45c2fc116e..b59d1d42f3 100644
--- a/indra/newview/llpanelprofileview.h
+++ b/indra/newview/llpanelprofileview.h
@@ -36,8 +36,6 @@
#include "llpanel.h"
#include "llpanelprofile.h"
#include "llavatarpropertiesprocessor.h"
-#include "llagent.h"
-#include "lltooldraganddrop.h"
class LLPanelProfile;
class LLPanelProfileTab;
@@ -66,18 +64,6 @@ public:
/*virtual*/ void togglePanel(LLPanel* panel);
- BOOL handleDragAndDrop(S32 x, S32 y, MASK mask,
- BOOL drop, EDragAndDropType cargo_type,
- void *cargo_data, EAcceptance *accept,
- std::string& tooltip_msg)
- {
- LLToolDragAndDrop::handleGiveDragAndDrop(getAvatarId(), gAgent.getSessionID(), drop,
- cargo_type, cargo_data, accept);
-
- return TRUE;
- }
-
-
protected:
void onBackBtnClick();
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index 9450bee315..e97eb1df2b 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -32,11 +32,6 @@
#include "llviewerprecompiledheaders.h"
-// common includes
-#include "lltrans.h"
-#include "llavataractions.h"
-#include "llagent.h"
-
#include "llparticipantlist.h"
#include "llavatarlist.h"
#include "llspeakers.h"
@@ -44,18 +39,15 @@
//LLParticipantList retrieves add, clear and remove events and updates view accordingly
LLParticipantList::LLParticipantList(LLSpeakerMgr* data_source, LLAvatarList* avatar_list):
mSpeakerMgr(data_source),
- mAvatarList(avatar_list),
- mSpeakerAddListener(*this),
- mSpeakerRemoveListener(*this),
- mSpeakerClearListener(*this),
- mSortOrder(E_SORT_BY_NAME)
+ mAvatarList(avatar_list)
{
- mSpeakerMgr->addListener(&mSpeakerAddListener, "add");
- mSpeakerMgr->addListener(&mSpeakerRemoveListener, "remove");
- mSpeakerMgr->addListener(&mSpeakerClearListener, "clear");
+ mSpeakerAddListener = new SpeakerAddListener(mAvatarList);
+ mSpeakerRemoveListener = new SpeakerRemoveListener(mAvatarList);
+ mSpeakerClearListener = new SpeakerClearListener(mAvatarList);
- mAvatarList->setNoItemsCommentText(LLTrans::getString("LoadingData"));
- mAvatarList->setDoubleClickCallback(boost::bind(&LLParticipantList::onAvatarListDoubleClicked, this, mAvatarList));
+ mSpeakerMgr->addListener(mSpeakerAddListener, "add");
+ mSpeakerMgr->addListener(mSpeakerRemoveListener, "remove");
+ mSpeakerMgr->addListener(mSpeakerClearListener, "clear");
//Lets fill avatarList with existing speakers
LLAvatarList::uuid_vector_t& group_members = mAvatarList->getIDs();
@@ -66,33 +58,24 @@ LLParticipantList::LLParticipantList(LLSpeakerMgr* data_source, LLAvatarList* av
{
group_members.push_back((*it)->mID);
}
- sort();
+ mAvatarList->setDirty();
+ mAvatarList->sortByName();
}
LLParticipantList::~LLParticipantList()
{
+ delete mSpeakerAddListener;
+ delete mSpeakerRemoveListener;
+ delete mSpeakerClearListener;
+ mSpeakerAddListener = NULL;
+ mSpeakerRemoveListener = NULL;
+ mSpeakerClearListener = NULL;
}
-void LLParticipantList::onAvatarListDoubleClicked(LLAvatarList* list)
-{
- LLUUID clicked_id = list->getSelectedUUID();
-
- if (clicked_id.isNull() || clicked_id == gAgent.getID())
- return;
-
- LLAvatarActions::startIM(clicked_id);
-}
-
-void LLParticipantList::setSortOrder(EParticipantSortOrder order)
-{
- if ( mSortOrder != order )
- {
- mSortOrder = order;
- sort();
- }
-}
-
-bool LLParticipantList::onAddItemEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata)
+//
+// LLParticipantList::SpeakerAddListener
+//
+bool LLParticipantList::SpeakerAddListener::handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata)
{
LLAvatarList::uuid_vector_t& group_members = mAvatarList->getIDs();
LLUUID uu_id = event->getValue().asUUID();
@@ -105,11 +88,15 @@ bool LLParticipantList::onAddItemEvent(LLPointer<LLOldEvents::LLEvent> event, co
}
group_members.push_back(uu_id);
- sort();
+ mAvatarList->setDirty();
+ mAvatarList->sortByName();
return true;
}
-bool LLParticipantList::onRemoveItemEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata)
+//
+// LLParticipantList::SpeakerRemoveListener
+//
+bool LLParticipantList::SpeakerRemoveListener::handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata)
{
LLAvatarList::uuid_vector_t& group_members = mAvatarList->getIDs();
LLAvatarList::uuid_vector_t::iterator pos = std::find(group_members.begin(), group_members.end(), event->getValue().asUUID());
@@ -121,7 +108,10 @@ bool LLParticipantList::onRemoveItemEvent(LLPointer<LLOldEvents::LLEvent> event,
return true;
}
-bool LLParticipantList::onClearListEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata)
+//
+// LLParticipantList::SpeakerClearListener
+//
+bool LLParticipantList::SpeakerClearListener::handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata)
{
LLAvatarList::uuid_vector_t& group_members = mAvatarList->getIDs();
group_members.clear();
@@ -129,45 +119,3 @@ bool LLParticipantList::onClearListEvent(LLPointer<LLOldEvents::LLEvent> event,
return true;
}
-void LLParticipantList::sort()
-{
- if ( !mAvatarList )
- return;
-
- // Mark AvatarList as dirty one
- mAvatarList->setDirty();
-
- // TODO: Implement more sorting orders after specs updating (EM)
- switch ( mSortOrder ) {
- case E_SORT_BY_NAME :
- mAvatarList->sortByName();
- break;
- default :
- llwarns << "Unrecognized sort order for " << mAvatarList->getName() << llendl;
- return;
- }
-}
-
-//
-// LLParticipantList::SpeakerAddListener
-//
-bool LLParticipantList::SpeakerAddListener::handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata)
-{
- return mParent.onAddItemEvent(event, userdata);
-}
-
-//
-// LLParticipantList::SpeakerRemoveListener
-//
-bool LLParticipantList::SpeakerRemoveListener::handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata)
-{
- return mParent.onRemoveItemEvent(event, userdata);
-}
-
-//
-// LLParticipantList::SpeakerClearListener
-//
-bool LLParticipantList::SpeakerClearListener::handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata)
-{
- return mParent.onClearListEvent(event, userdata);
-}
diff --git a/indra/newview/llparticipantlist.h b/indra/newview/llparticipantlist.h
index 04d9e29256..68aae0aee5 100644
--- a/indra/newview/llparticipantlist.h
+++ b/indra/newview/llparticipantlist.h
@@ -38,74 +38,46 @@ class LLAvatarList;
class LLParticipantList
{
- LOG_CLASS(LLParticipantList);
public:
LLParticipantList(LLSpeakerMgr* data_source, LLAvatarList* avatar_list);
~LLParticipantList();
- typedef enum e_participant_sort_oder {
- E_SORT_BY_NAME = 0,
- } EParticipantSortOrder;
-
- /**
- * Set and sort Avatarlist by given order
- */
- void setSortOrder(EParticipantSortOrder order = E_SORT_BY_NAME);
-
protected:
- /**
- * LLSpeakerMgr event handlers
- */
- bool onAddItemEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata);
- bool onRemoveItemEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata);
- bool onClearListEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata);
-
- /**
- * Sorts the Avatarlist by stored order
- */
- void sort();
//List of listeners implementing LLOldEvents::LLSimpleListener.
//There is no way to handle all the events in one listener as LLSpeakerMgr registers listeners in such a way
//that one listener can handle only one type of event
- class BaseSpeakerListner : public LLOldEvents::LLSimpleListener
+ class SpeakerAddListener : public LLOldEvents::LLSimpleListener
{
public:
- BaseSpeakerListner(LLParticipantList& parent) : mParent(parent) {}
- protected:
- LLParticipantList& mParent;
- };
+ SpeakerAddListener(LLAvatarList* avatar_list) : mAvatarList(avatar_list) {}
- class SpeakerAddListener : public BaseSpeakerListner
- {
- public:
- SpeakerAddListener(LLParticipantList& parent) : BaseSpeakerListner(parent) {}
/*virtual*/ bool handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata);
+ LLAvatarList* mAvatarList;
};
- class SpeakerRemoveListener : public BaseSpeakerListner
+ class SpeakerRemoveListener : public LLOldEvents::LLSimpleListener
{
public:
- SpeakerRemoveListener(LLParticipantList& parent) : BaseSpeakerListner(parent) {}
+ SpeakerRemoveListener(LLAvatarList* avatar_list) : mAvatarList(avatar_list) {}
+
/*virtual*/ bool handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata);
+ LLAvatarList* mAvatarList;
};
- class SpeakerClearListener : public BaseSpeakerListner
+ class SpeakerClearListener : public LLOldEvents::LLSimpleListener
{
public:
- SpeakerClearListener(LLParticipantList& parent) : BaseSpeakerListner(parent) {}
+ SpeakerClearListener(LLAvatarList* avatar_list) : mAvatarList(avatar_list) {}
+
/*virtual*/ bool handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata);
+ LLAvatarList* mAvatarList;
};
-
private:
- void onAvatarListDoubleClicked(LLAvatarList* list);
-
LLSpeakerMgr* mSpeakerMgr;
- LLAvatarList* mAvatarList;
-
- SpeakerAddListener mSpeakerAddListener;
- SpeakerRemoveListener mSpeakerRemoveListener;
- SpeakerClearListener mSpeakerClearListener;
+ LLAvatarList* mAvatarList;
- EParticipantSortOrder mSortOrder;
+ SpeakerAddListener* mSpeakerAddListener;
+ SpeakerRemoveListener* mSpeakerRemoveListener;
+ SpeakerClearListener* mSpeakerClearListener;
};
diff --git a/indra/newview/llpreview.cpp b/indra/newview/llpreview.cpp
index 34e78b5c46..b06e70c00a 100644
--- a/indra/newview/llpreview.cpp
+++ b/indra/newview/llpreview.cpp
@@ -45,7 +45,6 @@
#include "lltooldraganddrop.h"
#include "llradiogroup.h"
#include "llassetstorage.h"
-#include "llviewerassettype.h"
#include "llviewerobject.h"
#include "llviewerobjectlist.h"
#include "lldbstrings.h"
@@ -318,7 +317,7 @@ BOOL LLPreview::handleHover(S32 x, S32 y, MASK mask)
&& LLToolDragAndDrop::getInstance()->isOverThreshold(screen_x, screen_y))
{
EDragAndDropType type;
- type = LLViewerAssetType::lookupDragAndDropType(item->getType());
+ type = LLAssetType::lookupDragAndDropType(item->getType());
LLToolDragAndDrop::ESource src = LLToolDragAndDrop::SOURCE_LIBRARY;
if(!mObjectUUID.isNull())
{
@@ -407,7 +406,7 @@ void LLPreview::onDiscardBtn(void* data)
*/
// Move the item to the trash
- const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ LLUUID trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);
if (item->getParentUUID() != trash_id)
{
LLInventoryModel::update_list_t update;
diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp
index 7b3a20d102..ab2afb8056 100644
--- a/indra/newview/llpreviewgesture.cpp
+++ b/indra/newview/llpreviewgesture.cpp
@@ -130,10 +130,10 @@ LLPreviewGesture* LLPreviewGesture::show(const LLUUID& item_id, const LLUUID& ob
preview->setObjectID(object_id);
// Start speculative download of sounds and animations
- const LLUUID animation_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_ANIMATION);
+ LLUUID animation_folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_ANIMATION);
gInventory.startBackgroundFetch(animation_folder_id);
- const LLUUID sound_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_SOUND);
+ LLUUID sound_folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_SOUND);
gInventory.startBackgroundFetch(sound_folder_id);
// this will call refresh when we have everything.
diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp
index 9c21faa3be..86fa2c4695 100644
--- a/indra/newview/llpreviewtexture.cpp
+++ b/indra/newview/llpreviewtexture.cpp
@@ -552,7 +552,7 @@ void LLPreviewTexture::onAspectRatioCommit(LLUICtrl* ctrl, void* userdata)
void LLPreviewTexture::loadAsset()
{
- mImage = LLViewerTextureManager::getFetchedTexture(mImageID, MIPMAP_TRUE, FALSE, LLViewerTexture::LOD_TEXTURE);
+ mImage = LLViewerTextureManager::getFetchedTexture(mImageID, MIPMAP_TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
mImage->setBoostLevel(LLViewerTexture::BOOST_PREVIEW);
mAssetStatus = PREVIEW_ASSET_LOADING;
updateDimensions();
diff --git a/indra/newview/llresourcedata.h b/indra/newview/llresourcedata.h
index b4b9042689..46b79150bb 100644
--- a/indra/newview/llresourcedata.h
+++ b/indra/newview/llresourcedata.h
@@ -39,12 +39,11 @@
struct LLResourceData
{
LLAssetInfo mAssetInfo;
- LLFolderType::EType mPreferredLocation;
+ LLAssetType::EType mPreferredLocation;
LLInventoryType::EType mInventoryType;
U32 mNextOwnerPerm;
S32 mExpectedUploadCost;
void *mUserData;
- static const S8 INVALID_LOCATION = -2;
};
#endif
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index abfb51b6e1..b8ceef0899 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -1448,7 +1448,7 @@ void LLSelectMgr::selectionSetImage(const LLUUID& imageid)
// Texture picker defaults aren't inventory items
// * Don't need to worry about permissions for them
// * Can just apply the texture and be done with it.
- objectp->setTEImage(te, LLViewerTextureManager::getFetchedTexture(mImageID, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE));
+ objectp->setTEImage(te, LLViewerTextureManager::getFetchedTexture(mImageID, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
}
return true;
}
@@ -1604,7 +1604,7 @@ BOOL LLSelectMgr::selectionRevertTextures()
}
else
{
- object->setTEImage(te, LLViewerTextureManager::getFetchedTexture(id, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE));
+ object->setTEImage(te, LLViewerTextureManager::getFetchedTexture(id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
}
}
}
@@ -2827,7 +2827,7 @@ bool LLSelectMgr::confirmDelete(const LLSD& notification, const LLSD& response,
case 0:
{
// TODO: Make sure you have delete permissions on all of them.
- const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ LLUUID trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);
// attempt to derez into the trash.
LLDeRezInfo* info = new LLDeRezInfo(DRD_TRASH, trash_id);
LLSelectMgr::getInstance()->sendListToRegions("DeRezObject",
@@ -4604,7 +4604,7 @@ void LLSelectMgr::updateSilhouettes()
if (!mSilhouetteImagep)
{
- mSilhouetteImagep = LLViewerTextureManager::getFetchedTextureFromFile("silhouette.j2c", TRUE, TRUE);
+ mSilhouetteImagep = LLViewerTextureManager::getFetchedTextureFromFile("silhouette.j2c", TRUE, LLViewerTexture::BOOST_UI);
}
mHighlightedObjects->cleanupNodes();
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index 9f317803ce..279e143851 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -2704,7 +2704,7 @@ void renderTexturePriority(LLDrawable* drawable)
drawBox(center, size);
/*S32 boost = imagep->getBoostLevel();
- if (boost)
+ if (boost>LLViewerTexture::BOOST_NONE)
{
F32 t = (F32) boost / (F32) (LLViewerTexture::BOOST_MAX_LEVEL-1);
LLVector4 col = lerp(boost_cold, boost_hot, t);
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index b23e7feda2..9bdea57491 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -334,7 +334,7 @@ void populate_favorites_bar()
S32 count = lib_cats->count();
for(S32 i = 0; i < count; ++i)
{
- if(lib_cats->get(i)->getPreferredType() == LLFolderType::FT_LANDMARK)
+ if(lib_cats->get(i)->getPreferredType() == LLAssetType::AT_LANDMARK)
{
lib_landmarks = lib_cats->get(i)->getUUID();
break;
@@ -351,7 +351,7 @@ void populate_favorites_bar()
gInventory.getDirectDescendentsOf(lib_landmarks, lm_cats, lm_items);
if (!lm_items) return;
- const LLUUID favorites_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE);
+ LLUUID favorites_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE);
if (favorites_id.isNull())
{
llerror("My Inventory is missing My Favorites", 0);
@@ -1673,7 +1673,7 @@ bool idle_startup()
gInventory.buildParentChildMap();
//all categories loaded. lets create "My Favorites" category
- gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE,true);
+ gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE,true);
// lets create "Friends" and "Friends/All" in the Inventory "Calling Cards" and fill it with buddies
LLFriendCardsManager::instance().syncFriendsFolder();
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp
index cb7b29dfc6..efe8804742 100644
--- a/indra/newview/lltexturectrl.cpp
+++ b/indra/newview/lltexturectrl.cpp
@@ -426,7 +426,7 @@ BOOL LLFloaterTexturePicker::postBuild()
mInventoryPanel->getRootFolder()->getFilter()->markDefault();
// Commented out to stop opening all folders with textures
- // mInventoryPanel->openDefaultFolderForType(LLFolderType::FT_TEXTURE);
+ // mInventoryPanel->openDefaultFolderForType(LLAssetType::AT_TEXTURE);
// don't put keyboard focus on selected item, because the selection callback
// will assume that this was user input
@@ -529,7 +529,7 @@ void LLFloaterTexturePicker::draw()
mTexturep = NULL;
if(mImageAssetID.notNull())
{
- mTexturep = LLViewerTextureManager::getFetchedTexture(mImageAssetID, MIPMAP_YES, IMMEDIATE_NO);
+ mTexturep = LLViewerTextureManager::getFetchedTexture(mImageAssetID, MIPMAP_YES);
mTexturep->setBoostLevel(LLViewerTexture::BOOST_PREVIEW);
}
else if (!mFallbackImageName.empty())
@@ -1073,7 +1073,7 @@ BOOL LLTextureCtrl::handleMouseDown(S32 x, S32 y, MASK mask)
{
showPicker(FALSE);
//grab textures first...
- gInventory.startBackgroundFetch(gInventory.findCategoryUUIDForType(LLFolderType::FT_TEXTURE));
+ gInventory.startBackgroundFetch(gInventory.findCategoryUUIDForType(LLAssetType::AT_TEXTURE));
//...then start full inventory fetch.
gInventory.startBackgroundFetch();
handled = TRUE;
@@ -1190,7 +1190,7 @@ void LLTextureCtrl::draw()
}
else if (!mImageAssetID.isNull())
{
- mTexturep = LLViewerTextureManager::getFetchedTexture(mImageAssetID, MIPMAP_YES, IMMEDIATE_NO);
+ mTexturep = LLViewerTextureManager::getFetchedTexture(mImageAssetID, MIPMAP_YES);
mTexturep->setBoostLevel(LLViewerTexture::BOOST_PREVIEW);
}
else if (!mFallbackImageName.empty())
diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp
index ea675c5a6e..dafa4f25ca 100644
--- a/indra/newview/lltextureview.cpp
+++ b/indra/newview/lltextureview.cpp
@@ -168,7 +168,7 @@ void LLTextureBar::draw()
{
color = LLColor4::green4;
}
- else if (mImagep->getBoostLevel())
+ else if (mImagep->getBoostLevel() > LLViewerTexture::BOOST_NONE)
{
color = LLColor4::magenta;
}
diff --git a/indra/newview/lltoastgroupnotifypanel.cpp b/indra/newview/lltoastgroupnotifypanel.cpp
index f82573f46c..e78737fe0d 100644
--- a/indra/newview/lltoastgroupnotifypanel.cpp
+++ b/indra/newview/lltoastgroupnotifypanel.cpp
@@ -220,6 +220,7 @@ bool LLToastGroupNotifyPanel::isAttachmentOpenable(LLAssetType::EType type)
switch(type)
{
case LLAssetType::AT_LANDMARK:
+ case LLAssetType::AT_FAVORITE:
case LLAssetType::AT_NOTECARD:
case LLAssetType::AT_IMAGE_JPEG:
case LLAssetType::AT_IMAGE_TGA:
diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp
index 959cb3f182..9a63f07a7e 100644
--- a/indra/newview/lltooldraganddrop.cpp
+++ b/indra/newview/lltooldraganddrop.cpp
@@ -92,7 +92,7 @@ public:
virtual bool operator()(LLInventoryCategory* cat,
LLInventoryItem* item)
{
- if(cat && (cat->getPreferredType() == LLFolderType::FT_NONE))
+ if(cat && (cat->getPreferredType() == LLAssetType::AT_NONE))
{
return true;
}
@@ -109,7 +109,7 @@ public:
LLInventoryItem* item)
{
if(item) return true;
- if(cat && (cat->getPreferredType() == LLFolderType::FT_NONE))
+ if(cat && (cat->getPreferredType() == LLAssetType::AT_NONE))
{
return true;
}
@@ -1317,7 +1317,8 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,
// Check if it's in the trash.
bool is_in_trash = false;
- const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ LLUUID trash_id;
+ trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);
if(gInventory.isObjectDescendentOf(item->getUUID(), trash_id))
{
is_in_trash = true;
@@ -2087,7 +2088,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezAttachmentFromInv(
if(!item || !item->isComplete()) return ACCEPT_NO;
// must not be in the trash
- const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ LLUUID trash_id(gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH));
if( gInventory.isObjectDescendentOf( item->getUUID(), trash_id ) )
{
return ACCEPT_NO;
@@ -2169,7 +2170,8 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnLand(
}
// Check if it's in the trash.
- const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ LLUUID trash_id;
+ trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);
if(gInventory.isObjectDescendentOf(item->getUUID(), trash_id))
{
accept = ACCEPT_YES_SINGLE;
@@ -2247,7 +2249,8 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnObject(
}
// Check if it's in the trash.
- const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ LLUUID trash_id;
+ trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);
if(gInventory.isObjectDescendentOf(item->getUUID(), trash_id))
{
accept = ACCEPT_YES_SINGLE;
@@ -2385,7 +2388,7 @@ EAcceptance LLToolDragAndDrop::dad3dWearItem(
if(mSource == SOURCE_AGENT || mSource == SOURCE_LIBRARY)
{
// it's in the agent inventory
- const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ LLUUID trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);
if( gInventory.isObjectDescendentOf( item->getUUID(), trash_id ) )
{
return ACCEPT_NO;
@@ -2440,7 +2443,7 @@ EAcceptance LLToolDragAndDrop::dad3dActivateGesture(
if(mSource == SOURCE_AGENT || mSource == SOURCE_LIBRARY)
{
// it's in the agent inventory
- const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ LLUUID trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);
if( gInventory.isObjectDescendentOf( item->getUUID(), trash_id ) )
{
return ACCEPT_NO;
@@ -2499,7 +2502,7 @@ EAcceptance LLToolDragAndDrop::dad3dWearCategory(
if(mSource == SOURCE_AGENT)
{
- const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ LLUUID trash_id(gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH));
if( gInventory.isObjectDescendentOf( category->getUUID(), trash_id ) )
{
return ACCEPT_NO;
diff --git a/indra/newview/llviewerassettype.cpp b/indra/newview/llviewerassettype.cpp
deleted file mode 100644
index c974171c2c..0000000000
--- a/indra/newview/llviewerassettype.cpp
+++ /dev/null
@@ -1,114 +0,0 @@
-/**
- * @file llassettype.cpp
- * @brief Implementatino of LLViewerAssetType functionality.
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llviewerassettype.h"
-#include "lldictionary.h"
-#include "llmemory.h"
-#include "llsingleton.h"
-
-static const std::string empty_string;
-
-struct ViewerAssetEntry : public LLDictionaryEntry
-{
- ViewerAssetEntry(EDragAndDropType dad_type // drag and drop type
- )
- :
- LLDictionaryEntry(empty_string), // no reverse lookup needed for now, so just leave this blank
- mDadType(dad_type)
- {
- }
- EDragAndDropType mDadType;
-};
-
-class LLViewerAssetDictionary : public LLSingleton<LLViewerAssetDictionary>,
- public LLDictionary<LLViewerAssetType::EType, ViewerAssetEntry>
-{
-public:
- LLViewerAssetDictionary();
-};
-
-LLViewerAssetDictionary::LLViewerAssetDictionary()
-{
- // DRAG&DROP TYPE
- // |--------------------|
- addEntry(LLViewerAssetType::AT_TEXTURE, new ViewerAssetEntry(DAD_TEXTURE));
- addEntry(LLViewerAssetType::AT_SOUND, new ViewerAssetEntry(DAD_SOUND));
- addEntry(LLViewerAssetType::AT_CALLINGCARD, new ViewerAssetEntry(DAD_CALLINGCARD));
- addEntry(LLViewerAssetType::AT_LANDMARK, new ViewerAssetEntry(DAD_LANDMARK));
- addEntry(LLViewerAssetType::AT_SCRIPT, new ViewerAssetEntry(DAD_NONE));
- addEntry(LLViewerAssetType::AT_CLOTHING, new ViewerAssetEntry(DAD_CLOTHING));
- addEntry(LLViewerAssetType::AT_OBJECT, new ViewerAssetEntry(DAD_OBJECT));
- addEntry(LLViewerAssetType::AT_NOTECARD, new ViewerAssetEntry(DAD_NOTECARD));
- addEntry(LLViewerAssetType::AT_CATEGORY, new ViewerAssetEntry(DAD_CATEGORY));
- addEntry(LLViewerAssetType::AT_ROOT_CATEGORY, new ViewerAssetEntry(DAD_ROOT_CATEGORY));
- addEntry(LLViewerAssetType::AT_LSL_TEXT, new ViewerAssetEntry(DAD_SCRIPT));
- addEntry(LLViewerAssetType::AT_LSL_BYTECODE, new ViewerAssetEntry(DAD_NONE));
- addEntry(LLViewerAssetType::AT_TEXTURE_TGA, new ViewerAssetEntry(DAD_NONE));
- addEntry(LLViewerAssetType::AT_BODYPART, new ViewerAssetEntry(DAD_BODYPART));
- addEntry(LLViewerAssetType::AT_SOUND_WAV, new ViewerAssetEntry(DAD_NONE));
- addEntry(LLViewerAssetType::AT_IMAGE_TGA, new ViewerAssetEntry(DAD_NONE));
- addEntry(LLViewerAssetType::AT_IMAGE_JPEG, new ViewerAssetEntry(DAD_NONE));
- addEntry(LLViewerAssetType::AT_ANIMATION, new ViewerAssetEntry(DAD_ANIMATION));
- addEntry(LLViewerAssetType::AT_GESTURE, new ViewerAssetEntry(DAD_GESTURE));
- addEntry(LLViewerAssetType::AT_SIMSTATE, new ViewerAssetEntry(DAD_NONE));
-
- addEntry(LLViewerAssetType::AT_LINK, new ViewerAssetEntry(DAD_LINK));
- addEntry(LLViewerAssetType::AT_LINK_FOLDER, new ViewerAssetEntry(DAD_LINK));
-
- addEntry(LLViewerAssetType::AT_NONE, new ViewerAssetEntry(DAD_NONE));
-};
-
-EDragAndDropType LLViewerAssetType::lookupDragAndDropType(EType asset_type)
-{
- const LLViewerAssetDictionary *dict = LLViewerAssetDictionary::getInstance();
- const ViewerAssetEntry *entry = dict->lookup(asset_type);
- if (entry)
- return entry->mDadType;
- else
- return DAD_NONE;
-}
-
-// Generate a good default description
-void LLViewerAssetType::generateDescriptionFor(LLViewerAssetType::EType asset_type,
- std::string& description)
-{
- const S32 BUF_SIZE = 30;
- char time_str[BUF_SIZE]; /* Flawfinder: ignore */
- time_t now;
- time(&now);
- memset(time_str, '\0', BUF_SIZE);
- strftime(time_str, BUF_SIZE - 1, "%Y-%m-%d %H:%M:%S ", localtime(&now));
- description.assign(time_str);
- description.append(LLAssetType::lookupHumanReadable(asset_type));
-}
diff --git a/indra/newview/llviewerassettype.h b/indra/newview/llviewerassettype.h
deleted file mode 100644
index 01158885ce..0000000000
--- a/indra/newview/llviewerassettype.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * @file llviewerassettype.h
- * @brief Declaration of LLViewerViewerAssetType.
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLVIEWERASSETTYPE_H
-#define LL_LLVIEWERASSETTYPE_H
-
-#include <string>
-#include "llassettype.h"
-
-// This class is similar to llassettype, but contains methods
-// only used by the viewer.
-class LLViewerAssetType : public LLAssetType
-{
-public:
- // Generate a good default description. You may want to add a verb
- // or agent name after this depending on your application.
- static void generateDescriptionFor(LLViewerAssetType::EType asset_type,
- std::string& description);
- static EDragAndDropType lookupDragAndDropType(EType asset_type);
-protected:
- LLViewerAssetType() {}
- ~LLViewerAssetType() {}
-};
-
-#endif // LL_LLVIEWERASSETTYPE_H
diff --git a/indra/newview/llviewerfoldertype.cpp b/indra/newview/llviewerfoldertype.cpp
deleted file mode 100644
index 384538364f..0000000000
--- a/indra/newview/llviewerfoldertype.cpp
+++ /dev/null
@@ -1,263 +0,0 @@
-/**
- * @file llfoldertype.cpp
- * @brief Implementation of LLViewerFolderType functionality.
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llviewerfoldertype.h"
-#include "lldictionary.h"
-#include "llmemory.h"
-#include "llvisualparam.h"
-
-static const std::string empty_string;
-
-struct ViewerFolderEntry : public LLDictionaryEntry
-{
- // Constructor for non-ensembles
- ViewerFolderEntry(const std::string &new_category_name, // default name when creating a new category of this type
- const std::string &icon_name // name of the folder icon
- )
- :
- LLDictionaryEntry(empty_string), // no reverse lookup needed on non-ensembles, so just leave this blank
- mIconName(icon_name),
- mNewCategoryName(new_category_name)
- {
- mAllowedNames.clear();
- }
-
- // Constructor for ensembles
- ViewerFolderEntry(const std::string &xui_name, // name of the xui menu item
- const std::string &new_category_name, // default name when creating a new category of this type
- const std::string &icon_name, // name of the folder icon
- const std::string allowed_names // allowed item typenames for this folder type
- )
- :
- LLDictionaryEntry(xui_name),
- mIconName(icon_name),
- mNewCategoryName(new_category_name)
- {
- const std::string delims (",");
- LLStringUtilBase<char>::getTokens(allowed_names, mAllowedNames, delims);
- }
-
- bool getIsAllowedName(const std::string &name) const
- {
- if (mAllowedNames.empty())
- return false;
- for (name_vec_t::const_iterator iter = mAllowedNames.begin();
- iter != mAllowedNames.end();
- iter++)
- {
- if (name == (*iter))
- return true;
- }
- return false;
- }
- const std::string mIconName;
- const std::string mNewCategoryName;
- typedef std::vector<std::string> name_vec_t;
- name_vec_t mAllowedNames;
-};
-
-class LLViewerFolderDictionary : public LLSingleton<LLViewerFolderDictionary>,
- public LLDictionary<LLFolderType::EType, ViewerFolderEntry>
-{
-public:
- LLViewerFolderDictionary();
-protected:
- bool initEnsemblesFromFile(); // Reads in ensemble information from foldertypes.xml
-};
-
-LLViewerFolderDictionary::LLViewerFolderDictionary()
-{
- initEnsemblesFromFile();
-
- // NEW CATEGORY NAME FOLDER ICON NAME
- // |-------------------------|---------------------------|
- addEntry(LLFolderType::FT_TEXTURE, new ViewerFolderEntry("Textures", "inv_folder_texture.tga"));
- addEntry(LLFolderType::FT_SOUND, new ViewerFolderEntry("Sounds", "inv_folder_sound.tga"));
- addEntry(LLFolderType::FT_CALLINGCARD, new ViewerFolderEntry("Calling Cards", "inv_folder_callingcard.tga"));
- addEntry(LLFolderType::FT_LANDMARK, new ViewerFolderEntry("Landmarks", "inv_folder_landmark.tga"));
- addEntry(LLFolderType::FT_CLOTHING, new ViewerFolderEntry("Clothing", "inv_folder_clothing.tga"));
- addEntry(LLFolderType::FT_OBJECT, new ViewerFolderEntry("Objects", "inv_folder_object.tga"));
- addEntry(LLFolderType::FT_NOTECARD, new ViewerFolderEntry("Notecards", "inv_folder_notecard.tga"));
- addEntry(LLFolderType::FT_CATEGORY, new ViewerFolderEntry("New Folder", "inv_folder_plain_closed.tga"));
- addEntry(LLFolderType::FT_ROOT_CATEGORY, new ViewerFolderEntry("Inventory", ""));
- addEntry(LLFolderType::FT_LSL_TEXT, new ViewerFolderEntry("Scripts", "inv_folder_script.tga"));
- addEntry(LLFolderType::FT_BODYPART, new ViewerFolderEntry("Body Parts", "inv_folder_bodypart.tga"));
- addEntry(LLFolderType::FT_TRASH, new ViewerFolderEntry("Trash", "inv_folder_trash.tga"));
- addEntry(LLFolderType::FT_SNAPSHOT_CATEGORY, new ViewerFolderEntry("Photo Album", "inv_folder_snapshot.tga"));
- addEntry(LLFolderType::FT_LOST_AND_FOUND, new ViewerFolderEntry("Lost And Found", "inv_folder_lostandfound.tga"));
- addEntry(LLFolderType::FT_ANIMATION, new ViewerFolderEntry("Animations", "inv_folder_animation.tga"));
- addEntry(LLFolderType::FT_GESTURE, new ViewerFolderEntry("Gestures", "inv_folder_gesture.tga"));
- addEntry(LLFolderType::FT_FAVORITE, new ViewerFolderEntry("Favorite", "inv_folder_plain_closed.tga"));
-
- addEntry(LLFolderType::FT_CURRENT_OUTFIT, new ViewerFolderEntry("Current Outfit", "inv_folder_current_outfit.tga"));
- addEntry(LLFolderType::FT_OUTFIT, new ViewerFolderEntry("New Outfit", "inv_folder_outfit.tga"));
- addEntry(LLFolderType::FT_MY_OUTFITS, new ViewerFolderEntry("My Outfits", "inv_folder_my_outfits.tga"));
- addEntry(LLFolderType::FT_INBOX, new ViewerFolderEntry("Inbox", "inv_folder_inbox.tga"));
-
- addEntry(LLFolderType::FT_NONE, new ViewerFolderEntry("New Folder", "inv_folder_plain_closed.tga"));
-}
-
-bool LLViewerFolderDictionary::initEnsemblesFromFile()
-{
- std::string xml_filename = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,"foldertypes.xml");
- LLXmlTree folder_def;
- if (!folder_def.parseFile(xml_filename))
- {
- llerrs << "Failed to parse folders file " << xml_filename << llendl;
- return false;
- }
-
- LLXmlTreeNode* rootp = folder_def.getRoot();
- for (LLXmlTreeNode* ensemble = rootp->getFirstChild();
- ensemble;
- ensemble = rootp->getNextChild())
- {
- if (!ensemble->hasName("ensemble"))
- {
- llwarns << "Invalid ensemble definition node " << ensemble->getName() << llendl;
- continue;
- }
-
- S32 ensemble_type;
- static LLStdStringHandle ensemble_num_string = LLXmlTree::addAttributeString("foldertype_num");
- if (!ensemble->getFastAttributeS32(ensemble_num_string, ensemble_type))
- {
- llwarns << "No ensemble type defined" << llendl;
- continue;
- }
-
-
- if (ensemble_type < S32(LLFolderType::FT_ENSEMBLE_START) || ensemble_type > S32(LLFolderType::FT_ENSEMBLE_END))
- {
- llwarns << "Exceeded maximum ensemble index" << LLFolderType::FT_ENSEMBLE_END << llendl;
- break;
- }
-
- std::string xui_name;
- static LLStdStringHandle xui_name_string = LLXmlTree::addAttributeString("xui_name");
- if (!ensemble->getFastAttributeString(xui_name_string, xui_name))
- {
- llwarns << "No xui name defined" << llendl;
- continue;
- }
-
- std::string icon_name;
- static LLStdStringHandle icon_name_string = LLXmlTree::addAttributeString("icon_name");
- if (!ensemble->getFastAttributeString(icon_name_string, icon_name))
- {
- llwarns << "No ensemble icon name defined" << llendl;
- continue;
- }
-
- std::string allowed_names;
- static LLStdStringHandle allowed_names_string = LLXmlTree::addAttributeString("allowed");
- if (!ensemble->getFastAttributeString(allowed_names_string, allowed_names))
- {
- }
-
- // Add the entry and increment the asset number.
- const static std::string new_ensemble_name = "New Ensemble";
- addEntry(LLFolderType::EType(ensemble_type), new ViewerFolderEntry(xui_name, new_ensemble_name, icon_name, allowed_names));
- }
-
- return true;
-}
-
-
-const std::string &LLViewerFolderType::lookupXUIName(LLFolderType::EType folder_type)
-{
- const ViewerFolderEntry *entry = LLViewerFolderDictionary::getInstance()->lookup(folder_type);
- if (entry)
- {
- return entry->mName;
- }
- return badLookup();
-}
-
-LLFolderType::EType LLViewerFolderType::lookupTypeFromXUIName(const std::string &name)
-{
- return LLViewerFolderDictionary::getInstance()->lookup(name);
-}
-
-const std::string &LLViewerFolderType::lookupIconName(LLFolderType::EType folder_type)
-{
- const ViewerFolderEntry *entry = LLViewerFolderDictionary::getInstance()->lookup(folder_type);
- if (entry)
- {
- return entry->mIconName;
- }
- return badLookup();
-}
-
-const std::string &LLViewerFolderType::lookupNewCategoryName(LLFolderType::EType folder_type)
-{
- const ViewerFolderEntry *entry = LLViewerFolderDictionary::getInstance()->lookup(folder_type);
- if (entry)
- {
- return entry->mNewCategoryName;
- }
- return badLookup();
-}
-
-LLFolderType::EType LLViewerFolderType::lookupTypeFromNewCategoryName(const std::string& name)
-{
- for (LLViewerFolderDictionary::const_iterator iter = LLViewerFolderDictionary::getInstance()->begin();
- iter != LLViewerFolderDictionary::getInstance()->end();
- iter++)
- {
- const ViewerFolderEntry *entry = iter->second;
- if (entry->mNewCategoryName == name)
- {
- return iter->first;
- }
- }
- return FT_NONE;
-}
-
-
-U64 LLViewerFolderType::lookupValidFolderTypes(const std::string& item_name)
-{
- U64 matching_folders = 0;
- for (LLViewerFolderDictionary::const_iterator iter = LLViewerFolderDictionary::getInstance()->begin();
- iter != LLViewerFolderDictionary::getInstance()->end();
- iter++)
- {
- const ViewerFolderEntry *entry = iter->second;
- if (entry->getIsAllowedName(item_name))
- {
- matching_folders |= 1LL << iter->first;
- }
- }
- return matching_folders;
-}
diff --git a/indra/newview/llviewerfoldertype.h b/indra/newview/llviewerfoldertype.h
deleted file mode 100644
index a6aea62b2a..0000000000
--- a/indra/newview/llviewerfoldertype.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * @file llviewerfoldertype.h
- * @brief Declaration of LLAssetType.
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLVIEWERFOLDERTYPE_H
-#define LL_LLVIEWERFOLDERTYPE_H
-
-#include <string>
-#include "llfoldertype.h"
-
-// This class is similar to llfoldertype, but contains methods
-// only used by the viewer. This also handles ensembles.
-class LLViewerFolderType : public LLFolderType
-{
-public:
- static const std::string& lookupXUIName(EType folder_type); // name used by the UI
- static LLFolderType::EType lookupTypeFromXUIName(const std::string& name);
-
- static const std::string& lookupIconName(EType asset_type); // folder icon name
- static const std::string& lookupNewCategoryName(EType folder_type); // default name when creating new category
- static LLFolderType::EType lookupTypeFromNewCategoryName(const std::string& name); // default name when creating new category
-
- static U64 lookupValidFolderTypes(const std::string& item_name); // which folders allow an item of this type?
-protected:
- LLViewerFolderType() {}
- ~LLViewerFolderType() {}
-};
-
-#endif // LL_LLVIEWERFOLDERTYPE_H
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index 1d62ead843..470739baa9 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -37,7 +37,7 @@
#include "indra_constants.h"
#include "llagent.h"
-#include "llviewerfoldertype.h"
+#include "llfoldertype.h"
#include "llfolderview.h"
#include "llviewercontrol.h"
#include "llconsole.h"
@@ -48,7 +48,6 @@
#include "llinventorybridge.h"
#include "llfloaterinventory.h"
-#include "llviewerassettype.h"
#include "llviewerregion.h"
#include "llviewerobjectlist.h"
#include "llpreviewgesture.h"
@@ -360,7 +359,7 @@ void LLViewerInventoryItem::updateParentOnServer(BOOL restamp) const
LLViewerInventoryCategory::LLViewerInventoryCategory(const LLUUID& uuid,
const LLUUID& parent_uuid,
- LLFolderType::EType pref,
+ LLAssetType::EType pref,
const std::string& name,
const LLUUID& owner_id) :
LLInventoryCategory(uuid, parent_uuid, pref, name),
@@ -417,7 +416,7 @@ void LLViewerInventoryCategory::updateServer(BOOL is_new) const
{
// communicate that change with the server.
- if (LLFolderType::lookupIsProtectedType(mPreferredType))
+ if (LLAssetType::lookupIsProtectedCategoryType(mPreferredType))
{
LLNotifications::instance().add("CannotModifyProtectedCategories");
return;
@@ -441,7 +440,7 @@ void LLViewerInventoryCategory::removeFromServer( void )
llinfos << "Removing inventory category " << mUUID << " from server."
<< llendl;
// communicate that change with the server.
- if(LLFolderType::lookupIsProtectedType(mPreferredType))
+ if(LLAssetType::lookupIsProtectedCategoryType(mPreferredType))
{
LLNotifications::instance().add("CannotRemoveProtectedCategories");
return;
@@ -544,7 +543,7 @@ bool LLViewerInventoryCategory::importFileLocal(LLFILE* fp)
}
else if(0 == strcmp("pref_type", keyword))
{
- mPreferredType = LLFolderType::lookup(valuestr);
+ mPreferredType = LLAssetType::lookup(valuestr);
}
else if(0 == strcmp("name", keyword))
{
@@ -582,7 +581,7 @@ bool LLViewerInventoryCategory::exportFileLocal(LLFILE* fp) const
mParentUUID.toString(uuid_str);
fprintf(fp, "\t\tparent_id\t%s\n", uuid_str.c_str());
fprintf(fp, "\t\ttype\t%s\n", LLAssetType::lookup(mType));
- fprintf(fp, "\t\tpref_type\t%s\n", LLFolderType::lookup(mPreferredType).c_str());
+ fprintf(fp, "\t\tpref_type\t%s\n", LLAssetType::lookup(mPreferredType));
fprintf(fp, "\t\tname\t%s|\n", mName.c_str());
mOwnerID.toString(uuid_str);
fprintf(fp, "\t\towner_id\t%s\n", uuid_str.c_str());
@@ -593,8 +592,8 @@ bool LLViewerInventoryCategory::exportFileLocal(LLFILE* fp) const
void LLViewerInventoryCategory::determineFolderType()
{
- LLFolderType::EType original_type = getPreferredType();
- if (LLFolderType::lookupIsProtectedType(original_type))
+ LLAssetType::EType original_type = getPreferredType();
+ if (LLAssetType::lookupIsProtectedCategoryType(original_type))
return;
U64 folder_valid = 0;
@@ -617,28 +616,28 @@ void LLViewerInventoryCategory::determineFolderType()
{
const EWearableType wearable_type = item->getWearableType();
const std::string& wearable_name = LLWearableDictionary::getTypeName(wearable_type);
- U64 valid_folder_types = LLViewerFolderType::lookupValidFolderTypes(wearable_name);
+ U64 valid_folder_types = LLFolderType::lookupValidFolderTypes(wearable_name);
folder_valid |= valid_folder_types;
folder_invalid |= ~valid_folder_types;
}
}
- for (U8 i = LLFolderType::FT_ENSEMBLE_START; i <= LLFolderType::FT_ENSEMBLE_END; i++)
+ for (U8 i = LLAssetType::AT_FOLDER_ENSEMBLE_START; i <= LLAssetType::AT_FOLDER_ENSEMBLE_END; i++)
{
if ((folder_valid & (1LL << i)) &&
!(folder_invalid & (1LL << i)))
{
- changeType((LLFolderType::EType)i);
+ changeType((LLAssetType::EType)i);
return;
}
}
}
- if (LLFolderType::lookupIsEnsembleType(original_type))
+ if (LLAssetType::lookupIsEnsembleCategoryType(original_type))
{
- changeType(LLFolderType::FT_NONE);
+ changeType(LLAssetType::AT_NONE);
}
}
-void LLViewerInventoryCategory::changeType(LLFolderType::EType new_folder_type)
+void LLViewerInventoryCategory::changeType(LLAssetType::EType new_folder_type)
{
const LLUUID &folder_id = getUUID();
const LLUUID &parent_id = getParentUUID();
@@ -949,7 +948,7 @@ void copy_inventory_from_notecard(const LLUUID& object_id, const LLUUID& notecar
body["notecard-id"] = notecard_inv_id;
body["object-id"] = object_id;
body["item-id"] = src->getUUID();
- body["folder-id"] = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(src->getType()));
+ body["folder-id"] = gInventory.findCategoryUUIDForType(src->getType());
body["callback-id"] = (LLSD::Integer)callback_id;
request["message"] = "CopyInventoryFromNotecard";
@@ -965,7 +964,7 @@ void create_new_item(const std::string& name,
U32 next_owner_perm)
{
std::string desc;
- LLViewerAssetType::generateDescriptionFor(asset_type, desc);
+ LLAssetType::generateDescriptionFor(asset_type, desc);
next_owner_perm = (next_owner_perm) ? next_owner_perm : PERM_MOVE | PERM_TRANSFER;
@@ -990,14 +989,19 @@ const std::string NEW_LSL_NAME = "New Script"; // *TODO:Translate? (probably not
const std::string NEW_NOTECARD_NAME = "New Note"; // *TODO:Translate? (probably not)
const std::string NEW_GESTURE_NAME = "New Gesture"; // *TODO:Translate? (probably not)
-// ! REFACTOR ! Really need to refactor this so that it's not a bunch of if-then statements...
void menu_create_inventory_item(LLFolderView* folder, LLFolderBridge *bridge, const LLSD& userdata, const LLUUID& default_parent_uuid)
{
- std::string type_name = userdata.asString();
+ std::string type = userdata.asString();
- if (("category" == type_name) || ("current" == type_name) || ("outfit" == type_name) || ("my_otfts" == type_name))
+ if (("category" == type) || ("current" == type) || ("outfit" == type) || ("my_otfts" == type) )
{
- LLFolderType::EType preferred_type = LLFolderType::lookup(type_name);
+ LLAssetType::EType a_type = LLAssetType::AT_NONE;
+ if ("current" == type)
+ a_type = LLAssetType::AT_CURRENT_OUTFIT;
+ if ("outfit" == type)
+ a_type = LLAssetType::AT_OUTFIT;
+ if ("my_otfts" == type)
+ a_type = LLAssetType::AT_MY_OUTFITS;
LLUUID parent_id;
if (bridge)
@@ -1013,100 +1017,100 @@ void menu_create_inventory_item(LLFolderView* folder, LLFolderBridge *bridge, co
parent_id = gInventory.getRootFolderID();
}
- LLUUID category = gInventory.createNewCategory(parent_id, preferred_type, LLStringUtil::null);
+ LLUUID category = gInventory.createNewCategory(parent_id, a_type, LLStringUtil::null);
gInventory.notifyObservers();
folder->setSelectionByID(category, TRUE);
}
- else if ("lsl" == type_name)
+ else if ("lsl" == type)
{
- const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_LSL_TEXT);
+ LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_LSL_TEXT);
create_new_item(NEW_LSL_NAME,
parent_id,
LLAssetType::AT_LSL_TEXT,
LLInventoryType::IT_LSL,
PERM_MOVE | PERM_TRANSFER);
}
- else if ("notecard" == type_name)
+ else if ("notecard" == type)
{
- const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_NOTECARD);
+ LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_NOTECARD);
create_new_item(NEW_NOTECARD_NAME,
parent_id,
LLAssetType::AT_NOTECARD,
LLInventoryType::IT_NOTECARD,
PERM_ALL);
}
- else if ("gesture" == type_name)
+ else if ("gesture" == type)
{
- const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE);
+ LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_GESTURE);
create_new_item(NEW_GESTURE_NAME,
parent_id,
LLAssetType::AT_GESTURE,
LLInventoryType::IT_GESTURE,
PERM_ALL);
}
- else if ("shirt" == type_name)
+ else if ("shirt" == type)
{
- const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING);
+ LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING);
LLFolderBridge::createWearable(parent_id, WT_SHIRT);
}
- else if ("pants" == type_name)
+ else if ("pants" == type)
{
- const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING);
+ LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING);
LLFolderBridge::createWearable(parent_id, WT_PANTS);
}
- else if ("shoes" == type_name)
+ else if ("shoes" == type)
{
- const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING);
+ LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING);
LLFolderBridge::createWearable(parent_id, WT_SHOES);
}
- else if ("socks" == type_name)
+ else if ("socks" == type)
{
- const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING);
+ LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING);
LLFolderBridge::createWearable(parent_id, WT_SOCKS);
}
- else if ("jacket" == type_name)
+ else if ("jacket" == type)
{
- const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING);
+ LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING);
LLFolderBridge::createWearable(parent_id, WT_JACKET);
}
- else if ("skirt" == type_name)
+ else if ("skirt" == type)
{
- const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING);
+ LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING);
LLFolderBridge::createWearable(parent_id, WT_SKIRT);
}
- else if ("gloves" == type_name)
+ else if ("gloves" == type)
{
- const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING);
+ LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING);
LLFolderBridge::createWearable(parent_id, WT_GLOVES);
}
- else if ("undershirt" == type_name)
+ else if ("undershirt" == type)
{
- const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING);
+ LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING);
LLFolderBridge::createWearable(parent_id, WT_UNDERSHIRT);
}
- else if ("underpants" == type_name)
+ else if ("underpants" == type)
{
- const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING);
+ LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING);
LLFolderBridge::createWearable(parent_id, WT_UNDERPANTS);
}
- else if ("shape" == type_name)
+ else if ("shape" == type)
{
- const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_BODYPART);
+ LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_BODYPART);
LLFolderBridge::createWearable(parent_id, WT_SHAPE);
}
- else if ("skin" == type_name)
+ else if ("skin" == type)
{
- const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_BODYPART);
+ LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_BODYPART);
LLFolderBridge::createWearable(parent_id, WT_SKIN);
}
- else if ("hair" == type_name)
+ else if ("hair" == type)
{
- const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_BODYPART);
+ LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_BODYPART);
LLFolderBridge::createWearable(parent_id, WT_HAIR);
}
- else if ("eyes" == type_name)
+ else if ("eyes" == type)
{
- const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_BODYPART);
+ LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_BODYPART);
LLFolderBridge::createWearable(parent_id, WT_EYES);
}
diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h
index 529425aa25..d523bf2859 100644
--- a/indra/newview/llviewerinventory.h
+++ b/indra/newview/llviewerinventory.h
@@ -185,7 +185,7 @@ protected:
public:
LLViewerInventoryCategory(const LLUUID& uuid, const LLUUID& parent_uuid,
- LLFolderType::EType preferred_type,
+ LLAssetType::EType preferred_type,
const std::string& name,
const LLUUID& owner_id);
LLViewerInventoryCategory(const LLUUID& owner_id);
@@ -221,7 +221,7 @@ public:
bool exportFileLocal(LLFILE* fp) const;
bool importFileLocal(LLFILE* fp);
void determineFolderType();
- void changeType(LLFolderType::EType new_folder_type);
+ void changeType(LLAssetType::EType new_folder_type);
protected:
LLUUID mOwnerID;
S32 mVersion;
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 9a98264847..23ceb1e72d 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -4176,10 +4176,12 @@ void handle_take_copy()
{
if (LLSelectMgr::getInstance()->getSelection()->isEmpty()) return;
- const LLUUID category_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_OBJECT);
+ LLUUID category_id =
+ gInventory.findCategoryUUIDForType(LLAssetType::AT_OBJECT);
derez_objects(DRD_ACQUIRE_TO_AGENT_INVENTORY, category_id);
}
+
// You can return an object to its owner if it is on your land.
class LLObjectReturn : public view_listener_t
{
@@ -4260,7 +4262,7 @@ class LLObjectEnableReturn : public view_listener_t
void force_take_copy(void*)
{
if (LLSelectMgr::getInstance()->getSelection()->isEmpty()) return;
- const LLUUID category_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_OBJECT);
+ const LLUUID& category_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_OBJECT);
derez_objects(DRD_FORCE_TO_GOD_INVENTORY, category_id);
}
@@ -4321,7 +4323,8 @@ void handle_take()
if(category_id.notNull())
{
// check trash
- const LLUUID trash = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ LLUUID trash;
+ trash = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);
if(category_id == trash || gInventory.isObjectDescendentOf(category_id, trash))
{
category_id.setNull();
@@ -4337,7 +4340,7 @@ void handle_take()
}
if(category_id.isNull())
{
- category_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_OBJECT);
+ category_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_OBJECT);
}
LLSD payload;
payload["folder_id"] = category_id;
@@ -6916,7 +6919,7 @@ void handle_grab_texture(void* data)
LL_INFOS("texture") << "Adding baked texture " << asset_id << " to inventory." << llendl;
LLAssetType::EType asset_type = LLAssetType::AT_TEXTURE;
LLInventoryType::EType inv_type = LLInventoryType::IT_TEXTURE;
- const LLUUID folder_id = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(asset_type));
+ LLUUID folder_id(gInventory.findCategoryUUIDForType(asset_type));
if(folder_id.notNull())
{
std::string name = "Unknown";
diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp
index d17c7e486f..d3a9e1cef8 100644
--- a/indra/newview/llviewermenufile.cpp
+++ b/indra/newview/llviewermenufile.cpp
@@ -319,7 +319,7 @@ class LLFileUploadBulk : public view_listener_t
LLAssetStorage::LLStoreAssetCallback callback = NULL;
S32 expected_upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();
void *userdata = NULL;
- upload_new_resource(filename, asset_name, asset_name, 0, LLFolderType::FT_NONE, LLInventoryType::IT_NONE,
+ upload_new_resource(filename, asset_name, asset_name, 0, LLAssetType::AT_NONE, LLInventoryType::IT_NONE,
LLFloaterPerms::getNextOwnerPerms(), LLFloaterPerms::getGroupPerms(), LLFloaterPerms::getEveryonePerms(),
display_name,
callback, expected_upload_cost, userdata);
@@ -493,7 +493,7 @@ void handle_compress_image(void*)
void upload_new_resource(const std::string& src_filename, std::string name,
std::string desc, S32 compression_info,
- LLFolderType::EType destination_folder_type,
+ LLAssetType::EType destination_folder_type,
LLInventoryType::EType inv_type,
U32 next_owner_perms,
U32 group_perms,
@@ -810,7 +810,7 @@ void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExt
if(result >= 0)
{
- LLFolderType::EType dest_loc = (data->mPreferredLocation == LLFolderType::FT_NONE) ? LLFolderType::assetTypeToFolderType(data->mAssetInfo.mType) : data->mPreferredLocation;
+ LLAssetType::EType dest_loc = (data->mPreferredLocation == LLAssetType::AT_NONE) ? data->mAssetInfo.mType : data->mPreferredLocation;
if (LLAssetType::AT_SOUND == data->mAssetInfo.mType ||
LLAssetType::AT_TEXTURE == data->mAssetInfo.mType ||
@@ -856,7 +856,7 @@ void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExt
{
// Actually add the upload to inventory
llinfos << "Adding " << uuid << " to inventory." << llendl;
- const LLUUID folder_id = gInventory.findCategoryUUIDForType(dest_loc);
+ LLUUID folder_id(gInventory.findCategoryUUIDForType(dest_loc));
if(folder_id.notNull())
{
U32 next_owner_perms = data->mNextOwnerPerm;
@@ -903,7 +903,7 @@ void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExt
LLAssetStorage::LLStoreAssetCallback callback = NULL;
void *userdata = NULL;
upload_new_resource(next_file, asset_name, asset_name, // file
- 0, LLFolderType::FT_NONE, LLInventoryType::IT_NONE,
+ 0, LLAssetType::AT_NONE, LLInventoryType::IT_NONE,
PERM_NONE, PERM_NONE, PERM_NONE,
display_name,
callback,
@@ -915,7 +915,7 @@ void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExt
void upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_type,
std::string name,
std::string desc, S32 compression_info,
- LLFolderType::EType destination_folder_type,
+ LLAssetType::EType destination_folder_type,
LLInventoryType::EType inv_type,
U32 next_owner_perms,
U32 group_perms,
@@ -973,14 +973,14 @@ void upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty
llinfos << "Name: " << name << llendl;
llinfos << "Desc: " << desc << llendl;
llinfos << "Expected Upload Cost: " << expected_upload_cost << llendl;
- lldebugs << "Folder: " << gInventory.findCategoryUUIDForType((destination_folder_type == LLFolderType::FT_NONE) ? LLFolderType::assetTypeToFolderType(asset_type) : destination_folder_type) << llendl;
+ lldebugs << "Folder: " << gInventory.findCategoryUUIDForType((destination_folder_type == LLAssetType::AT_NONE) ? asset_type : destination_folder_type) << llendl;
lldebugs << "Asset Type: " << LLAssetType::lookup(asset_type) << llendl;
std::string url = gAgent.getRegion()->getCapability("NewFileAgentInventory");
if (!url.empty())
{
llinfos << "New Agent Inventory via capability" << llendl;
LLSD body;
- body["folder_id"] = gInventory.findCategoryUUIDForType((destination_folder_type == LLFolderType::FT_NONE) ? LLFolderType::assetTypeToFolderType(asset_type) : destination_folder_type);
+ body["folder_id"] = gInventory.findCategoryUUIDForType((destination_folder_type == LLAssetType::AT_NONE) ? asset_type : destination_folder_type);
body["asset_type"] = LLAssetType::lookup(asset_type);
body["inventory_type"] = LLInventoryType::lookup(inv_type);
body["name"] = name;
diff --git a/indra/newview/llviewermenufile.h b/indra/newview/llviewermenufile.h
index da78537a29..bf21292082 100644
--- a/indra/newview/llviewermenufile.h
+++ b/indra/newview/llviewermenufile.h
@@ -33,7 +33,7 @@
#ifndef LLVIEWERMENUFILE_H
#define LLVIEWERMENUFILE_H
-#include "llfoldertype.h"
+#include "llassettype.h"
#include "llinventorytype.h"
class LLTransactionID;
@@ -45,7 +45,7 @@ void upload_new_resource(const std::string& src_filename,
std::string name,
std::string desc,
S32 compression_info,
- LLFolderType::EType destination_folder_type,
+ LLAssetType::EType destination_folder_type,
LLInventoryType::EType inv_type,
U32 next_owner_perms,
U32 group_perms,
@@ -60,7 +60,7 @@ void upload_new_resource(const LLTransactionID &tid,
std::string name,
std::string desc,
S32 compression_info,
- LLFolderType::EType destination_folder_type,
+ LLAssetType::EType destination_folder_type,
LLInventoryType::EType inv_type,
U32 next_owner_perms,
U32 group_perms,
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index d8e6c52c8c..ff1c7b526f 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -140,7 +140,7 @@
#include "llgroupactions.h"
#include "llagentui.h"
#include "llpanelblockedlist.h"
-#include "llpanelplaceprofile.h"
+#include "llpanelplaceinfo.h"
#include <boost/tokenizer.hpp>
#include <boost/algorithm/string/split.hpp>
@@ -209,6 +209,7 @@ const BOOL SCRIPT_QUESTION_IS_CAUTION[SCRIPT_PERMISSION_EOF] =
bool friendship_offer_callback(const LLSD& notification, const LLSD& response)
{
S32 option = LLNotification::getSelectedOption(notification, response);
+ LLUUID fid;
LLMessageSystem* msg = gMessageSystem;
const LLSD& payload = notification["payload"];
@@ -218,11 +219,10 @@ bool friendship_offer_callback(const LLSD& notification, const LLSD& response)
switch(option)
{
case 0:
- {
// accept
LLAvatarTracker::formFriendship(payload["from_id"]);
- const LLUUID fid = gInventory.findCategoryUUIDForType(LLFolderType::FT_CALLINGCARD);
+ fid = gInventory.findCategoryUUIDForType(LLAssetType::AT_CALLINGCARD);
// This will also trigger an onlinenotification if the user is online
msg->newMessageFast(_PREHASH_AcceptFriendship);
@@ -235,9 +235,7 @@ bool friendship_offer_callback(const LLSD& notification, const LLSD& response)
msg->addUUIDFast(_PREHASH_FolderID, fid);
msg->sendReliable(LLHost(payload["sender"].asString()));
break;
- }
case 1:
- {
// decline
// We no longer notify other viewers, but we DO still send
// the rejection to the simulator to delete the pending userop.
@@ -249,7 +247,6 @@ bool friendship_offer_callback(const LLSD& notification, const LLSD& response)
msg->addUUIDFast(_PREHASH_TransactionID, payload["session_id"]);
msg->sendReliable(LLHost(payload["sender"].asString()));
break;
- }
default:
// close button probably, possibly timed out
break;
@@ -770,7 +767,8 @@ public:
virtual void done()
{
LL_DEBUGS("Messaging") << "LLDiscardAgentOffer::done()" << LL_ENDL;
- const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ LLUUID trash_id;
+ trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);
bool notify = false;
if(trash_id.notNull() && mObjectID.notNull())
{
@@ -877,7 +875,7 @@ void open_offer(const std::vector<LLUUID>& items, const std::string& from_name)
{
std::vector<LLUUID>::const_iterator it = items.begin();
std::vector<LLUUID>::const_iterator end = items.end();
- const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ LLUUID trash_id(gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH));
LLInventoryItem* item;
for(; it != end; ++it)
{
@@ -948,12 +946,13 @@ void open_offer(const std::vector<LLUUID>& items, const std::string& from_name)
}
//Trash Check
- const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ LLUUID trash_id;
+ trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);
if(gInventory.isObjectDescendentOf(item->getUUID(), trash_id))
{
return;
}
- const LLUUID lost_and_found_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND);
+ LLUUID lost_and_found_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_LOST_AND_FOUND);
//BOOL inventory_has_focus = gFocusMgr.childHasKeyboardFocus(view);
BOOL user_is_away = gAwayTimer.getStarted();
@@ -1717,7 +1716,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
info->mFromGroup = from_group;
info->mTransactionID = session_id;
info->mType = (LLAssetType::EType) asset_type;
- info->mFolderID = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(info->mType));
+ info->mFolderID = gInventory.findCategoryUUIDForType(info->mType);
std::string from_name;
from_name += "A group member named ";
@@ -1851,7 +1850,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
info->mFromID = from_id;
info->mFromGroup = from_group;
info->mTransactionID = session_id;
- info->mFolderID = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(info->mType));
+ info->mFolderID = gInventory.findCategoryUUIDForType(info->mType);
if (dialog == IM_TASK_INVENTORY_OFFERED)
{
@@ -2145,7 +2144,7 @@ bool callingcard_offer_callback(const LLSD& notification, const LLSD& response)
msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
msg->nextBlockFast(_PREHASH_TransactionBlock);
msg->addUUIDFast(_PREHASH_TransactionID, notification["payload"]["transaction_id"].asUUID());
- fid = gInventory.findCategoryUUIDForType(LLFolderType::FT_CALLINGCARD);
+ fid = gInventory.findCategoryUUIDForType(LLAssetType::AT_CALLINGCARD);
msg->nextBlockFast(_PREHASH_FolderData);
msg->addUUIDFast(_PREHASH_FolderID, fid);
msg->sendReliable(LLHost(notification["payload"]["sender"].asString()));
@@ -2598,10 +2597,11 @@ BOOL LLPostTeleportNotifiers::tick()
{
// get callingcards and landmarks available to the user arriving.
LLInventoryFetchDescendentsObserver::folder_ref_t folders;
- const LLUUID callingcard_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CALLINGCARD);
- if(callingcard_id.notNull())
- folders.push_back(callingcard_id);
- const LLUUID folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK);
+ LLUUID folder_id;
+ folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_CALLINGCARD);
+ if(folder_id.notNull())
+ folders.push_back(folder_id);
+ folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK);
if(folder_id.notNull())
folders.push_back(folder_id);
if(!folders.empty())
@@ -4819,7 +4819,7 @@ void container_inventory_arrived(LLViewerObject* object,
// create a new inventory category to put this in
LLUUID cat_id;
cat_id = gInventory.createNewCategory(gInventory.getRootFolderID(),
- LLFolderType::FT_NONE,
+ LLAssetType::AT_NONE,
LLTrans::getString("AcquiredItems"));
InventoryObjectList::const_iterator it = inventory->begin();
@@ -4869,7 +4869,7 @@ void container_inventory_arrived(LLViewerObject* object,
}
LLInventoryItem* item = (LLInventoryItem*)((LLInventoryObject*)(*it));
- const LLUUID category = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(item->getType()));
+ LLUUID category = gInventory.findCategoryUUIDForType(item->getType());
LLUUID item_id;
item_id.generate();
@@ -5549,7 +5549,7 @@ void process_covenant_reply(LLMessageSystem* msg, void**)
LLPanelLandCovenant::updateEstateOwnerName(owner_name);
LLFloaterBuyLand::updateEstateOwnerName(owner_name);
- LLPanelPlaceProfile* panel = LLSideTray::getInstance()->findChild<LLPanelPlaceProfile>("panel_place_profile");
+ LLPanelPlaceInfo* panel = LLSideTray::getInstance()->findChild<LLPanelPlaceInfo>("panel_place_info");
if (panel)
{
panel->updateEstateName(estate_name);
@@ -5683,7 +5683,7 @@ void onCovenantLoadComplete(LLVFS *vfs,
LLPanelLandCovenant::updateCovenantText(covenant_text);
LLFloaterBuyLand::updateCovenantText(covenant_text, asset_uuid);
- LLPanelPlaceProfile* panel = LLSideTray::getInstance()->findChild<LLPanelPlaceProfile>("panel_place_profile");
+ LLPanelPlaceInfo* panel = LLSideTray::getInstance()->findChild<LLPanelPlaceInfo>("panel_place_info");
if (panel)
{
panel->updateCovenantText(covenant_text);
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 20cd516fa0..26411ce152 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -2928,7 +2928,7 @@ void LLViewerObject::boostTexturePriority(BOOL boost_children /* = TRUE */)
{
LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT);
LLUUID sculpt_id = sculpt_params->getSculptTexture();
- LLViewerTextureManager::getFetchedTexture(sculpt_id, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE)->setBoostLevel(LLViewerTexture::BOOST_SELECTED);
+ LLViewerTextureManager::getFetchedTexture(sculpt_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE)->setBoostLevel(LLViewerTexture::BOOST_SELECTED);
}
if (boost_children)
@@ -3691,7 +3691,7 @@ void LLViewerObject::setTE(const U8 te, const LLTextureEntry &texture_entry)
// if (mDrawable.notNull() && mDrawable->isVisible())
// {
const LLUUID& image_id = getTE(te)->getID();
- mTEImages[te] = LLViewerTextureManager::getFetchedTexture(image_id, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE);
+ mTEImages[te] = LLViewerTextureManager::getFetchedTexture(image_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
// }
}
@@ -3717,7 +3717,7 @@ S32 LLViewerObject::setTETextureCore(const U8 te, const LLUUID& uuid, LLHost hos
uuid == LLUUID::null)
{
retval = LLPrimitive::setTETexture(te, uuid);
- mTEImages[te] = LLViewerTextureManager::getFetchedTexture(uuid, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE, 0, 0, host);
+ mTEImages[te] = LLViewerTextureManager::getFetchedTexture(uuid, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host);
setChanged(TEXTURE);
if (mDrawable.notNull())
{
diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp
index 90dff465c9..5c40f2a540 100644
--- a/indra/newview/llviewertexteditor.cpp
+++ b/indra/newview/llviewertexteditor.cpp
@@ -62,7 +62,6 @@
#include "lltooltip.h"
#include "lltrans.h"
#include "lluictrlfactory.h"
-#include "llviewerassettype.h"
#include "llviewercontrol.h"
#include "llviewerinventory.h"
#include "llviewertexturelist.h"
@@ -506,17 +505,19 @@ LLUIImagePtr LLEmbeddedItems::getItemImage(llwchar ext_char) const
}
break;
- case LLAssetType::AT_SOUND: img_name = "Inv_Sound"; break;
+ case LLAssetType::AT_SOUND: img_name = "Inv_Sound"; break;
case LLAssetType::AT_CLOTHING: img_name = "Inv_Clothing"; break;
- case LLAssetType::AT_OBJECT: img_name = "Inv_Object"; break;
+ case LLAssetType::AT_OBJECT: img_name = "Inv_Object"; break;
case LLAssetType::AT_CALLINGCARD: img_name = "Inv_CallingCard"; break;
- case LLAssetType::AT_LANDMARK: img_name = "Inv_Landmark"; break;
+ case LLAssetType::AT_LANDMARK: img_name = "Inv_Landmark"; break;
case LLAssetType::AT_NOTECARD: img_name = "Inv_Notecard"; break;
case LLAssetType::AT_LSL_TEXT: img_name = "Inv_Script"; break;
- case LLAssetType::AT_BODYPART: img_name = "Inv_Skin"; break;
- case LLAssetType::AT_ANIMATION: img_name = "Inv_Animation"; break;
- case LLAssetType::AT_GESTURE: img_name = "Inv_Gesture"; break;
- default: llassert(0);
+ case LLAssetType::AT_BODYPART: img_name = "Inv_Skin"; break;
+ case LLAssetType::AT_ANIMATION: img_name = "Inv_Animation";break;
+ case LLAssetType::AT_GESTURE: img_name = "Inv_Gesture"; break;
+ //TODO need img_name
+ case LLAssetType::AT_FAVORITE: img_name = "Inv_Landmark"; break;
+ default: llassert(0);
}
return LLUI::getUIImage(img_name);
@@ -731,10 +732,11 @@ BOOL LLViewerTextEditor::handleHover(S32 x, S32 y, MASK mask)
if( LLToolDragAndDrop::getInstance()->isOverThreshold( screen_x, screen_y ) )
{
LLToolDragAndDrop::getInstance()->beginDrag(
- LLViewerAssetType::lookupDragAndDropType( mDragItem->getType() ),
+ LLAssetType::lookupDragAndDropType( mDragItem->getType() ),
mDragItem->getUUID(),
LLToolDragAndDrop::SOURCE_NOTECARD,
mPreviewID, mObjectID);
+
return LLToolDragAndDrop::getInstance()->handleHover( x, y, mask );
}
getWindow()->setCursor(UI_CURSOR_HAND);
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 758bf8c1aa..6b8c8c01d4 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -198,6 +198,7 @@ LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTexture(
LLGLenum primary_format,
LLHost request_from_host)
{
+ llassert_always(boost_priority >= LLViewerTexture::BOOST_NONE) ;
return gTextureList.getImage(image_id, usemipmaps, boost_priority, texture_type, internal_format, primary_format, request_from_host) ;
}
@@ -210,6 +211,7 @@ LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromFile(
LLGLenum primary_format,
const LLUUID& force_id)
{
+ llassert_always(boost_priority >= LLViewerTexture::BOOST_NONE) ;
return gTextureList.getImageFromFile(filename, usemipmaps, boost_priority, texture_type, internal_format, primary_format, force_id) ;
}
@@ -256,10 +258,10 @@ void LLViewerTextureManager::init()
image_raw = NULL;
LLViewerFetchedTexture::sDefaultImagep->dontDiscard();
#else
- LLViewerFetchedTexture::sDefaultImagep = LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, TRUE);
+ LLViewerFetchedTexture::sDefaultImagep = LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLViewerTexture::BOOST_UI);
#endif
- LLViewerFetchedTexture::sSmokeImagep = LLViewerTextureManager::getFetchedTexture(IMG_SMOKE, TRUE, TRUE);
+ LLViewerFetchedTexture::sSmokeImagep = LLViewerTextureManager::getFetchedTexture(IMG_SMOKE, TRUE, LLViewerTexture::BOOST_UI);
LLViewerFetchedTexture::sSmokeImagep->setNoDelete() ;
LLViewerTexture::initClass() ;
@@ -1240,7 +1242,7 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
{
ddiscard+=2;
}
- else if (mGLTexturep.notNull() && !mGLTexturep->getBoundRecently() && mBoostLevel == 0)
+ else if (mGLTexturep.notNull() && !mGLTexturep->getBoundRecently() && mBoostLevel == LLViewerTexture::BOOST_NONE)
{
ddiscard-=2;
}
@@ -1252,11 +1254,11 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
pixel_priority = llclamp(pixel_priority, 0.0f, priority-1.f); // priority range = 100000-900000
if ( mBoostLevel > BOOST_HIGH)
{
- priority = 1000000.f + pixel_priority + 1000.f * mBoostLevel;
+ priority = 1000000.f + pixel_priority + 1000.f * (mBoostLevel - LLViewerTexture::BOOST_NONE);
}
else
{
- priority += 0.f + pixel_priority + 1000.f * mBoostLevel;
+ priority += 0.f + pixel_priority + 1000.f * (mBoostLevel - LLViewerTexture::BOOST_NONE);
}
}
return priority;
@@ -1436,7 +1438,7 @@ bool LLViewerFetchedTexture::updateFetch()
}
if (!mDontDiscard)
{
- if (mBoostLevel == 0)
+ if (mBoostLevel == LLViewerTexture::BOOST_NONE)
{
desired_discard = llmax(desired_discard, current_discard-1);
}
diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h
index 020478beef..ff8f14e879 100644
--- a/indra/newview/llviewertexture.h
+++ b/indra/newview/llviewertexture.h
@@ -107,11 +107,12 @@ public:
enum EBoostLevel
{
- BOOST_NONE = 0,
- BOOST_AVATAR_BAKED = 1,
- BOOST_AVATAR = 2,
- BOOST_CLOUDS = 3,
- BOOST_SCULPTED = 4,
+ //skip 0 and 1 to avoid mistakenly mixing boost level with boolean numbers.
+ BOOST_NONE = 2,
+ BOOST_AVATAR_BAKED = 3,
+ BOOST_AVATAR = 4,
+ BOOST_CLOUDS = 5,
+ BOOST_SCULPTED = 6,
BOOST_HIGH = 10,
BOOST_TERRAIN = 11, // has to be high priority for minimap / low detail
@@ -601,7 +602,7 @@ public:
static LLViewerFetchedTexture* getFetchedTexture(const LLUUID &image_id,
BOOL usemipmap = TRUE,
- BOOL level_immediate = FALSE, // Get the requested level immediately upon creation.
+ S32 boost_priority = LLViewerTexture::BOOST_NONE, // Get the requested level immediately upon creation.
S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
LLGLint internal_format = 0,
LLGLenum primary_format = 0,
@@ -610,7 +611,7 @@ public:
static LLViewerFetchedTexture* getFetchedTextureFromFile(const std::string& filename,
BOOL usemipmap = TRUE,
- BOOL level_immediate = FALSE, // Get the requested level immediately upon creation.
+ S32 boost_priority = LLViewerTexture::BOOST_NONE, // Get the requested level immediately upon creation.
S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
LLGLint internal_format = 0,
LLGLenum primary_format = 0,
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index b5986c70f5..d2be1ac9b5 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -197,7 +197,7 @@ void LLViewerTextureList::doPrefetchImages()
if(LLViewerTexture::FETCHED_TEXTURE == texture_type || LLViewerTexture::LOD_TEXTURE == texture_type)
{
- LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture(uuid, MIPMAP_TRUE, FALSE, texture_type);
+ LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture(uuid, MIPMAP_TRUE, LLViewerTexture::BOOST_NONE, texture_type);
if (image)
{
image->addTextureStats((F32)pixel_area);
@@ -325,14 +325,14 @@ LLViewerFetchedTexture* LLViewerTextureList::getImageFromFile(const std::string&
{
// Never mind that this ignores image_set_id;
// getImage() will handle that later.
- return LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, TRUE);
+ return LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLViewerTexture::BOOST_UI);
}
std::string full_path = gDirUtilp->findSkinnedFilename("textures", filename);
if (full_path.empty())
{
llwarns << "Failed to find local image file: " << filename << llendl;
- return LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, TRUE);
+ return LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLViewerTexture::BOOST_UI);
}
// generate UUID based on hash of filename
@@ -400,7 +400,7 @@ LLViewerFetchedTexture* LLViewerTextureList::getImage(const LLUUID &image_id,
if ((&image_id == NULL) || image_id.isNull())
{
- return (LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, TRUE));
+ return (LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLViewerTexture::BOOST_UI));
}
LLPointer<LLViewerFetchedTexture> imagep = findImage(image_id);
@@ -1171,7 +1171,7 @@ void LLViewerTextureList::receiveImageHeader(LLMessageSystem *msg, void **user_d
U8 *data = new U8[data_size];
msg->getBinaryDataFast(_PREHASH_ImageData, _PREHASH_Data, data, data_size);
- LLViewerFetchedTexture *image = LLViewerTextureManager::getFetchedTexture(id, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE);
+ LLViewerFetchedTexture *image = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
if (!image)
{
delete [] data;
@@ -1235,7 +1235,7 @@ void LLViewerTextureList::receiveImagePacket(LLMessageSystem *msg, void **user_d
U8 *data = new U8[data_size];
msg->getBinaryDataFast(_PREHASH_ImageData, _PREHASH_Data, data, data_size);
- LLViewerFetchedTexture *image = LLViewerTextureManager::getFetchedTexture(id, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE);
+ LLViewerFetchedTexture *image = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
if (!image)
{
delete [] data;
diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h
index fda57ce981..6948db70f8 100644
--- a/indra/newview/llviewertexturelist.h
+++ b/indra/newview/llviewertexturelist.h
@@ -131,7 +131,7 @@ private:
LLViewerFetchedTexture * getImage(const LLUUID &image_id,
BOOL usemipmap = TRUE,
- BOOL level_immediate = FALSE, // Get the requested level immediately upon creation.
+ S32 boost_priority = LLViewerTexture::BOOST_NONE, // Get the requested level immediately upon creation.
S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
LLGLint internal_format = 0,
LLGLenum primary_format = 0,
@@ -140,7 +140,7 @@ private:
LLViewerFetchedTexture * getImageFromFile(const std::string& filename,
BOOL usemipmap = TRUE,
- BOOL level_immediate = FALSE, // Get the requested level immediately upon creation.
+ S32 boost_priority = LLViewerTexture::BOOST_NONE, // Get the requested level immediately upon creation.
S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
LLGLint internal_format = 0,
LLGLenum primary_format = 0,
@@ -149,7 +149,7 @@ private:
LLViewerFetchedTexture* createImage(const LLUUID &image_id,
BOOL usemipmap = TRUE,
- BOOL level_immediate = FALSE, // Get the requested level immediately upon creation.
+ S32 boost_priority = LLViewerTexture::BOOST_NONE, // Get the requested level immediately upon creation.
S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
LLGLint internal_format = 0,
LLGLenum primary_format = 0,
@@ -159,7 +159,7 @@ private:
// Request image from a specific host, used for baked avatar textures.
// Implemented in header in case someone changes default params above. JC
LLViewerFetchedTexture* getImageFromHost(const LLUUID& image_id, LLHost host)
- { return getImage(image_id, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE, 0, 0, host); }
+ { return getImage(image_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host); }
public:
typedef std::set<LLPointer<LLViewerFetchedTexture> > image_list_t;
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 4bf66ba17e..240f87d104 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6520,7 +6520,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
&& baked_index != BAKED_SKIRT)
{
setTEImage(mBakedTextureDatas[baked_index].mTextureIndex,
- LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[baked_index].mLastTextureIndex, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE));
+ LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[baked_index].mLastTextureIndex, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
}
}
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index e7a43924db..a964f43171 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -41,22 +41,53 @@
#include "llvoavatarself.h"
#include "llvoavatar.h"
-#include "pipeline.h"
+#include <stdio.h>
+#include <ctype.h>
+
+#include "llaudioengine.h"
+#include "noise.h"
+// TODO: Seraph - Remove unnecessary headers. These are copied from llvoavatar.h.
#include "llagent.h" // Get state values from here
#include "llagentwearables.h"
+#include "llviewercontrol.h"
+#include "lldrawpoolavatar.h"
+#include "lldriverparam.h"
+#include "lleditingmotion.h"
+#include "llemote.h"
+#include "llface.h"
+#include "llfirstuse.h"
+#include "llheadrotmotion.h"
#include "llhudeffecttrail.h"
#include "llhudmanager.h"
+#include "llkeyframefallmotion.h"
+#include "llkeyframestandmotion.h"
+#include "llkeyframewalkmotion.h"
+#include "llmutelist.h"
#include "llselectmgr.h"
+#include "llsprite.h"
+#include "lltargetingmotion.h"
+#include "lltexlayer.h"
+#include "lltexglobalcolor.h"
#include "lltoolgrab.h" // for needsRenderBeam
#include "lltoolmgr.h" // for needsRenderBeam
#include "lltoolmorph.h"
#include "lltrans.h"
#include "llviewercamera.h"
+#include "llviewertexturelist.h"
#include "llviewermenu.h"
#include "llviewerobjectlist.h"
+#include "llviewerparcelmgr.h"
#include "llviewerstats.h"
-#include "llviewerregion.h"
+#include "llvovolume.h"
+#include "llworld.h"
+#include "pipeline.h"
+#include "llviewershadermgr.h"
+#include "llsky.h"
+#include "llanimstatelabels.h"
+#include "llgesturemgr.h" //needed to trigger the voice gesticulations
+#include "llvoiceclient.h"
+#include "llvoicevisualizer.h" // Ventrella
#include "llappearancemgr.h"
#if LL_MSVC
diff --git a/indra/newview/llvograss.cpp b/indra/newview/llvograss.cpp
index 570a3334b9..110433a27d 100644
--- a/indra/newview/llvograss.cpp
+++ b/indra/newview/llvograss.cpp
@@ -106,7 +106,7 @@ void LLVOGrass::updateSpecies()
SpeciesMap::const_iterator it = sSpeciesTable.begin();
mSpecies = (*it).first;
}
- setTEImage(0, LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE));
+ setTEImage(0, LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
}
diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp
index d44c543266..d37deaf53d 100644
--- a/indra/newview/llvosky.cpp
+++ b/indra/newview/llvosky.cpp
@@ -376,9 +376,9 @@ LLVOSky::LLVOSky(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp)
mSun.setIntensity(SUN_INTENSITY);
mMoon.setIntensity(0.1f * SUN_INTENSITY);
- mSunTexturep = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, TRUE);
+ mSunTexturep = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, LLViewerTexture::BOOST_UI);
mSunTexturep->setAddressMode(LLTexUnit::TAM_CLAMP);
- mMoonTexturep = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, TRUE);
+ mMoonTexturep = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, LLViewerTexture::BOOST_UI);
mMoonTexturep->setAddressMode(LLTexUnit::TAM_CLAMP);
mBloomTexturep = LLViewerTextureManager::getFetchedTexture(IMG_BLOOM1);
mBloomTexturep->setNoDelete() ;
@@ -472,9 +472,9 @@ void LLVOSky::restoreGL()
{
mSkyTex[i].restoreGL();
}
- mSunTexturep = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, TRUE);
+ mSunTexturep = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, LLViewerTexture::BOOST_UI);
mSunTexturep->setAddressMode(LLTexUnit::TAM_CLAMP);
- mMoonTexturep = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, TRUE);
+ mMoonTexturep = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, LLViewerTexture::BOOST_UI);
mMoonTexturep->setAddressMode(LLTexUnit::TAM_CLAMP);
mBloomTexturep = LLViewerTextureManager::getFetchedTexture(IMG_BLOOM1);
mBloomTexturep->setNoDelete() ;
diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp
index 615ae13bc2..ec118d89bc 100644
--- a/indra/newview/llvotree.cpp
+++ b/indra/newview/llvotree.cpp
@@ -311,7 +311,7 @@ U32 LLVOTree::processUpdateMessage(LLMessageSystem *mesgsys,
//
// Load Species-Specific data
//
- mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE);
+ mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
mBranchLength = sSpeciesTable[mSpecies]->mBranchLength;
mTrunkLength = sSpeciesTable[mSpecies]->mTrunkLength;
mLeafScale = sSpeciesTable[mSpecies]->mLeafScale;
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 7d4bef3f7d..1d94e9118e 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -665,7 +665,7 @@ void LLVOVolume::updateTextures()
{
LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT);
LLUUID id = sculpt_params->getSculptTexture();
- mSculptTexture = LLViewerTextureManager::getFetchedTexture(id, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE);
+ mSculptTexture = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
if (mSculptTexture.notNull())
{
S32 lod = llmin(mLOD, 3);
@@ -876,7 +876,7 @@ BOOL LLVOVolume::setVolume(const LLVolumeParams &volume_params, const S32 detail
if (isSculpted())
{
- mSculptTexture = LLViewerTextureManager::getFetchedTexture(volume_params.getSculptID(), TRUE, FALSE, LLViewerTexture::LOD_TEXTURE);
+ mSculptTexture = LLViewerTextureManager::getFetchedTexture(volume_params.getSculptID(), TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
if (mSculptTexture.notNull())
{
//ignore sculpt GL usage since bao fixed this in a separate branch
diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp
index e647f479e1..f2cf84c228 100644
--- a/indra/newview/llwearable.cpp
+++ b/indra/newview/llwearable.cpp
@@ -661,7 +661,7 @@ void LLWearable::writeToAvatar( BOOL set_by_user, BOOL update_customize_floater
{
image_id = LLVOAvatarDictionary::getDefaultTextureImageID((ETextureIndex) te);
}
- LLViewerTexture* image = LLViewerTextureManager::getFetchedTexture( image_id, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE );
+ LLViewerTexture* image = LLViewerTextureManager::getFetchedTexture( image_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE );
// MULTI-WEARABLE: replace hard-coded 0
avatar->setLocalTextureTE(te, image, set_by_user, 0);
}
@@ -1123,7 +1123,7 @@ void LLWearable::saveNewAsset() const
{
llinfos << "Update Agent Inventory via capability" << llendl;
LLSD body;
- body["folder_id"] = gInventory.findCategoryUUIDForType(LLFolderType::assetToFolderType(getAssetType()));
+ body["folder_id"] = gInventory.findCategoryUUIDForType(getAssetType());
body["asset_type"] = LLAssetType::lookup(getAssetType());
body["inventory_type"] = LLInventoryType::lookup(LLInventoryType::IT_WEARABLE);
body["name"] = getName();
diff --git a/indra/newview/llworldmap.cpp b/indra/newview/llworldmap.cpp
index f198f3a0cf..355d4141c3 100644
--- a/indra/newview/llworldmap.cpp
+++ b/indra/newview/llworldmap.cpp
@@ -525,7 +525,7 @@ void LLWorldMap::processMapLayerReply(LLMessageSystem* msg, void**)
LLWorldMapLayer new_layer;
new_layer.LayerDefined = TRUE;
msg->getUUIDFast(_PREHASH_LayerData, _PREHASH_ImageID, new_layer.LayerImageID, block);
- new_layer.LayerImage = LLViewerTextureManager::getFetchedTexture(new_layer.LayerImageID, MIPMAP_TRUE, FALSE, LLViewerTexture::LOD_TEXTURE);
+ new_layer.LayerImage = LLViewerTextureManager::getFetchedTexture(new_layer.LayerImageID, MIPMAP_TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
gGL.getTexUnit(0)->bind(new_layer.LayerImage);
new_layer.LayerImage->setAddressMode(LLTexUnit::TAM_CLAMP);
@@ -640,14 +640,15 @@ void LLWorldMap::processMapBlockReply(LLMessageSystem* msg, void**)
siminfo->mMapImageID[agent_flags] = image_id;
#ifdef IMMEDIATE_IMAGE_LOAD
- siminfo->mCurrentImage = LLViewerTextureManager::getFetchedTexture(siminfo->mMapImageID[LLWorldMap::getInstance()->mCurrentMap], MIPMAP_TRUE, FALSE, LLViewerTexture::LOD_TEXTURE);
+ siminfo->mCurrentImage = LLViewerTextureManager::getFetchedTexture(siminfo->mMapImageID[LLWorldMap::getInstance()->mCurrentMap],
+ MIPMAP_TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
siminfo->mCurrentImage->setAddressMode(LLTexUnit::TAM_CLAMP);
#endif
if (siminfo->mMapImageID[2].notNull())
{
#ifdef IMMEDIATE_IMAGE_LOAD
- siminfo->mOverlayImage = LLViewerTextureManager::getFetchedTexture(siminfo->mMapImageID[2], MIPMAP_TRUE, FALSE, LLViewerTexture::LOD_TEXTURE);
+ siminfo->mOverlayImage = LLViewerTextureManager::getFetchedTexture(siminfo->mMapImageID[2], MIPMAP_TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
#endif
}
else
diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp
index 823db027ee..920415873e 100644
--- a/indra/newview/llworldmapview.cpp
+++ b/indra/newview/llworldmapview.cpp
@@ -511,7 +511,8 @@ void LLWorldMapView::draw()
(textures_requested_this_tick < MAX_REQUEST_PER_TICK)))
{
textures_requested_this_tick++;
- info->mCurrentImage = LLViewerTextureManager::getFetchedTexture(info->mMapImageID[LLWorldMap::getInstance()->mCurrentMap], MIPMAP_TRUE, FALSE, LLViewerTexture::LOD_TEXTURE);
+ info->mCurrentImage = LLViewerTextureManager::getFetchedTexture(info->mMapImageID[LLWorldMap::getInstance()->mCurrentMap],
+ MIPMAP_TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
info->mCurrentImage->setAddressMode(LLTexUnit::TAM_CLAMP);
simimage = info->mCurrentImage;
gGL.getTexUnit(0)->bind(simimage);
@@ -524,7 +525,7 @@ void LLWorldMapView::draw()
(textures_requested_this_tick < MAX_REQUEST_PER_TICK)))
{
textures_requested_this_tick++;
- info->mOverlayImage = LLViewerTextureManager::getFetchedTexture(info->mMapImageID[2], MIPMAP_TRUE, FALSE, LLViewerTexture::LOD_TEXTURE);
+ info->mOverlayImage = LLViewerTextureManager::getFetchedTexture(info->mMapImageID[2], MIPMAP_TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
info->mOverlayImage->setAddressMode(LLTexUnit::TAM_CLAMP);
overlayimage = info->mOverlayImage;
gGL.getTexUnit(0)->bind(overlayimage);
diff --git a/indra/newview/skins/default/textures/inv_folder_inbox.tga b/indra/newview/skins/default/textures/inv_folder_inbox.tga
deleted file mode 100644
index 04539c2cc4..0000000000
--- a/indra/newview/skins/default/textures/inv_folder_inbox.tga
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml
index 88aca005cf..26d2f4e497 100644
--- a/indra/newview/skins/default/xui/en/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_session.xml
@@ -3,7 +3,7 @@
legacy_header_height="18"
background_visible="true"
follows="left|top|right|bottom"
- height="359"
+ height="270"
layout="topleft"
left="0"
name="panel_im"
@@ -12,13 +12,13 @@
can_dock="true"
can_minimize="true"
visible="true"
- width="400"
+ width="365"
can_resize="true"
min_width="200"
min_height="150">
<layout_stack follows="left|top|right|bottom"
- height="344"
- width="400"
+ height="255"
+ width="365"
layout="topleft"
orientation="horizontal"
name="im_panels"
@@ -28,13 +28,13 @@
name="panel_im_control_panel"
layout="topleft"
top_delta="-3"
- height="344"
+ width="146"
+ height="255"
follows="left"
label="IM Control Panel"
- auto_resize="false"
user_resize="false" />
- <layout_panel height="344"
- width="235"
+ <layout_panel height="255"
+ width="200"
left_delta="146"
top="0"
user_resize="false">
@@ -56,14 +56,14 @@
length="1"
follows="left|top|right|bottom"
font="SansSerif"
- height="290"
+ height="205"
layout="topleft"
name="chat_history"
parse_highlights="true"
allow_html="true"
- width="230">
+ width="195">
</chat_history>
- <line_editor follows="left|right" name="chat_editor" height="20" layout="topleft" width="225">
+ <line_editor follows="left|right" name="chat_editor" height="20" layout="topleft" width="190">
</line_editor>
</layout_panel>
</layout_stack>
diff --git a/indra/newview/skins/default/xui/en/inspect_avatar.xml b/indra/newview/skins/default/xui/en/inspect_avatar.xml
index e2ae81e0b9..6b13e2f1c7 100644
--- a/indra/newview/skins/default/xui/en/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/en/inspect_avatar.xml
@@ -128,8 +128,6 @@
left_delta="110"
tab_stop="false"
width="18" />
- <!-- Overlapping buttons for default actions
- llinspectavatar.cpp makes visible the most likely default action -->
<button
follows="bottom|left"
height="23"
@@ -138,16 +136,6 @@
top="246"
name="add_friend_btn"
width="100" />
- <button
- follows="bottom|left"
- height="23"
- label="IM"
- left_delta="0"
- top_delta="0"
- name="im_btn"
- width="100"
- commit_callback.function="InspectAvatar.IM"
- />
<menu_button
follows="top|left"
height="18"
diff --git a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
index 8ee67b9a02..6049476a43 100644
--- a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
@@ -7,6 +7,7 @@
name="Gear Menu">
<menu_item_call
label="View Profile"
+ layout="topleft"
enabled="true"
name="view_profile">
<menu_item_call.on_click
@@ -14,42 +15,49 @@
</menu_item_call>
<menu_item_call
label="Add Friend"
+ layout="topleft"
name="add_friend">
<menu_item_call.on_click
function="InspectAvatar.AddFriend"/>
</menu_item_call>
<menu_item_call
label="IM"
+ layout="topleft"
name="im">
<menu_item_call.on_click
function="InspectAvatar.IM"/>
</menu_item_call>
<menu_item_call
label="Call"
+ layout="topleft"
enabled="true"
name="call">
</menu_item_call>
<menu_item_call
label="Teleport"
+ layout="topleft"
name="teleport">
<menu_item_call.on_click
function="InspectAvatar.Teleport"/>
</menu_item_call>
<menu_item_call
label="Invite to Group"
+ layout="topleft"
name="invite_to_group">
<menu_item_call.on_click
function="InspectAvatar.InviteToGroup"/>
</menu_item_call>
- <menu_item_separator />
+ <menu_item_separator layout="topleft" />
<menu_item_call
label="Block"
+ layout="topleft"
name="block">
<menu_item_call.on_click
function="InspectAvatar.Block"/>
</menu_item_call>
<menu_item_call
label="Report"
+ layout="topleft"
name="report">
<menu_item_call.on_click
function="InspectAvatar.Report"/>
@@ -80,6 +88,7 @@
</menu_item_call>
<menu_item_call
label="Find On Map"
+ layout="topleft"
name="find_on_map">
<menu_item_call.on_click
function="InspectAvatar.FindOnMap"/>
@@ -88,14 +97,16 @@
</menu_item_call>
<menu_item_call
label="Zoom In"
+ layout="topleft"
name="zoom_in">
<menu_item_call.on_click
function="InspectAvatar.ZoomIn"/>
</menu_item_call>
<menu_item_call
label="Pay"
+ layout="topleft"
name="pay">
<menu_item_call.on_click
function="InspectAvatar.Pay"/>
</menu_item_call>
-</menu>
+</menu> \ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml
index ce5ee83f55..19c2bf3496 100644
--- a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml
@@ -7,6 +7,7 @@
name="Gear Menu">
<menu_item_call
label="Stand Up"
+ layout="topleft"
enabled="true"
name="stand_up">
<menu_item_call.on_click
@@ -17,6 +18,7 @@
</menu_item_call>
<menu_item_call
label="My Appearance"
+ layout="topleft"
name="my_appearance">
<menu_item_call.on_click
function="ShowFloater"
@@ -26,6 +28,7 @@
</menu_item_call>
<menu_item_call
label="My Profile"
+ layout="topleft"
enabled="true"
name="my_profile">
<menu_item_call.on_click
@@ -34,6 +37,7 @@
</menu_item_call>
<menu_item_call
label="My Friends"
+ layout="topleft"
name="my_friends">
<menu_item_call.on_click
function="Self.Friends"
@@ -41,8 +45,9 @@
</menu_item_call>
<menu_item_call
label="My Groups"
+ layout="topleft"
name="my_groups">
<menu_item_call.on_click
function="Self.Groups" />
</menu_item_call>
-</menu>
+</menu> \ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml
index 87c4e2787f..f50acc224f 100644
--- a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml
+++ b/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
name="panel_im_control_panel"
- width="180"
+ width="146"
height="215"
border="false">
<avatar_list
@@ -16,11 +16,10 @@
show_info_btn="false"
show_profile_btn="false"
top="10"
- width="180" />
+ width="140" />
<button
name="call_btn"
label="Call"
- left_delta="27"
width="125"
height="20" />
<button
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index b5051523e5..61bd1d186e 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -60,7 +60,7 @@
min_width="96"
name="speak_panel"
user_resize="false">
- <talk_button
+ <chiclet_talk
follows="right"
height="23"
speak_button.tab_stop="true"
@@ -93,7 +93,7 @@
min_width="76"
name="gesture_panel"
user_resize="false">
- <gesture_combo_box
+ <button
follows="right"
height="23"
label="Gesture"
diff --git a/indra/newview/skins/default/xui/en/panel_group_control_panel.xml b/indra/newview/skins/default/xui/en/panel_group_control_panel.xml
index 3358015335..9ed510dff3 100644
--- a/indra/newview/skins/default/xui/en/panel_group_control_panel.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_control_panel.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
name="panel_im_control_panel"
- width="180"
+ width="146"
height="238"
border="false">
<avatar_list
@@ -16,11 +16,11 @@
show_info_btn="false"
show_profile_btn="false"
top="10"
- width="180" />
+ width="140" />
<button
name="group_info_btn"
label="Group Info"
- left_delta="27"
+ left_delta="3"
width="125"
height="20" />
<button
diff --git a/indra/newview/skins/default/xui/en/panel_group_general.xml b/indra/newview/skins/default/xui/en/panel_group_general.xml
index 4f24c7a745..a85c55f9b2 100644
--- a/indra/newview/skins/default/xui/en/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_general.xml
@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
follows="all"
- height="380"
+ height="412"
label="General"
class="panel_group_general"
layout="topleft"
left="0"
top="0"
name="general_tab"
- width="303">
+ width="313">
<panel.string
name="help_text">
The General tab contains general information about this group, a list of members, general Group Preferences and member options.
@@ -41,7 +41,7 @@ Hover your mouse over the options for more help.
draw_heading="true"
follows="left|top"
heading_height="16"
- height="130"
+ height="160"
layout="topleft"
left_delta="0"
name="visible_members"
diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
index ab0f956da0..d8d47c4008 100644
--- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
@@ -5,7 +5,7 @@ background_visible="true"
height="570"
label="Group Info"
layout="topleft"
- min_height="425"
+ min_height="350"
left="0"
top="20"
name="GroupInfo"
@@ -47,7 +47,7 @@ background_visible="true"
text_color="white"
top="0"
value="(Loading...)"
- use_ellipses="true"
+ use_elipsis="true"
width="300" />
<line_editor
follows="left|top"
@@ -60,7 +60,7 @@ background_visible="true"
top_delta="5"
width="250"
height="20"
- visible="false" />
+ visible="true" />
<texture_picker
follows="left|top"
height="113"
@@ -112,46 +112,33 @@ background_visible="true"
left_delta="0"
top_pad="6"
height="23"
- label="JOIN NOW!"
+ label="Join now!"
+ label_selected="Join now!"
name="btn_join"
visible="true"
width="120" />
<accordion
follows="all"
- height="425"
+ height="405"
layout="topleft"
left="0"
- multiple_expansion="false"
name="groups_accordion"
- top_pad="15"
- width="336">
+ top_pad="20"
+ width="333">
<accordion_tab
can_resize="false"
- expanded="true"
layout="topleft"
name="tab_general"
title="General">
- <scroll_container
- color="DkGray2"
- opaque="true"
- height="323"
- follows="all"
+ <panel
+ border="false"
+ filename="panel_group_general.xml"
layout="topleft"
left="0"
+ help_topic="group_general_tab"
+ name="general_tab"
top="0"
- name="general_scroll"
- reserve_scroll_corner="false"
- width="333">
- <panel
- border="false"
- filename="panel_group_general.xml"
- layout="topleft"
- left="0"
- help_topic="group_general_tab"
- name="general_tab"
- top="0"
- width="303" />
- </scroll_container>
+ width="333" />
</accordion_tab>
<accordion_tab
can_resize="false"
@@ -159,27 +146,15 @@ background_visible="true"
layout="topleft"
name="tab_roles"
title="Roles">
- <scroll_container
- color="DkGray2"
- opaque="true"
- height="323"
- follows="all"
- layout="topleft"
- left="0"
- top="0"
- name="roles_scroll"
- reserve_scroll_corner="false"
- width="333">
- <panel
- border="false"
- filename="panel_group_roles.xml"
- layout="topleft"
- left="0"
- help_topic="group_roles_tab"
- name="roles_tab"
- top="0"
- width="303" />
- </scroll_container>
+ <panel
+ border="false"
+ filename="panel_group_roles.xml"
+ layout="topleft"
+ left="0"
+ help_topic="group_roles_tab"
+ name="roles_tab"
+ top="0"
+ width="333" />
</accordion_tab>
<accordion_tab
can_resize="false"
@@ -187,45 +162,21 @@ background_visible="true"
layout="topleft"
name="tab_notices"
title="Notices">
- <scroll_container
- color="DkGray2"
- opaque="true"
- height="323"
- follows="all"
- layout="topleft"
- left="0"
- top="0"
- name="notices_scroll"
- reserve_scroll_corner="false"
- width="333">
<panel
- border="false"
filename="panel_group_notices.xml"
layout="topleft"
left="0"
help_topic="group_notices_tab"
name="notices_tab"
top="0"
- width="303" />
- </scroll_container>
+ width="333" />
</accordion_tab>
- <accordion_tab
+ <accordion_tab
can_resize="false"
expanded="false"
layout="topleft"
name="tab_notices"
title="Land/Assets">
- <scroll_container
- color="DkGray2"
- opaque="true"
- height="323"
- follows="all"
- layout="topleft"
- left="0"
- top="0"
- name="land_scroll"
- reserve_scroll_corner="false"
- width="333">
<panel
border="false"
filename="panel_group_land_money.xml"
@@ -234,43 +185,41 @@ background_visible="true"
help_topic="group_land_money_tab"
name="land_money_tab"
top="0"
- width="313" />
- </scroll_container>
+ width="333" />
</accordion_tab>
</accordion>
- <button
+ <button
follows="top|left"
- height="22"
+ height="20"
image_overlay="Refresh_Off"
layout="topleft"
- left="5"
name="btn_refresh"
picture_style="true"
- top_pad="-15"
- width="23" />
- <button
+ left="5"
+ width="20" />
+ <button
+ height="20"
+ font="SansSerifSmall"
+ label="Save"
+ label_selected="Save"
+ name="btn_apply"
+ left_pad="5"
+ width="65" />
+ <button
height="20"
label="Create"
- label_selected="New group"
+ label_selected="Create"
name="btn_create"
- left_pad="10"
+ left_pad="5"
visible="false"
- width="100" />
- <!-- <button
- left_pad="10"
+ width="65" />
+ <button
+ left_pad="5"
height="20"
label="Cancel"
label_selected="Cancel"
name="btn_cancel"
visible="false"
- width="65" />-->
- <button
- height="20"
- font="SansSerifSmall"
- label="Save"
- label_selected="Save"
- name="btn_apply"
- left_pad="10"
- right="-10"
width="65" />
+
</panel> \ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/panel_group_land_money.xml b/indra/newview/skins/default/xui/en/panel_group_land_money.xml
index 99fc39c466..c81c7113ae 100644
--- a/indra/newview/skins/default/xui/en/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_land_money.xml
@@ -1,25 +1,25 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
- border="false"
+ border="true"
follows="all"
height="510"
label="Land &amp; L$"
layout="topleft"
left="1"
name="land_money_tab"
- top="0"
- width="313">
+ top="490"
+ width="280">
<panel.string
name="help_text">
- Parcels owned by a group are listed along with contribution details. A warning appears until the Total Land in Use is less than or = to the Total Contribution.
+ Parcels owned by the group are listed along with contribution details. A warning appears until the Total Land in Use is less than or equal to the Total Contribution. The Planning, Details, and Sales tabs provide information about the group&apos;s finances.
</panel.string>
<panel.string
name="cant_view_group_land_text">
- You don&apos;t have permission to view group owned land
+ You do not have permission to view group owned land.
</panel.string>
<panel.string
name="cant_view_group_accounting_text">
- You don&apos;t have permission to view the group&apos;s accounting information.
+ You do not have permission to view the group&apos;s accounting information.
</panel.string>
<panel.string
name="loading_txt">
@@ -27,7 +27,7 @@
</panel.string>
<panel.string
name="land_contrib_error">
- Unable to set your land contribution
+ Unable to set your land contribution.
</panel.string>
<!-- <text
type="string"
@@ -44,29 +44,29 @@
<scroll_list
draw_heading="true"
follows="top"
- heading_height="20"
- height="150"
+ heading_height="14"
+ height="100"
layout="topleft"
- left="0"
+ left="5"
name="group_parcel_list"
- top_pad="0"
- width="313">
+ top_pad="10"
+ width="265">
<scroll_list.columns
label="Parcel"
name="name"
- width="78" />
+ width="67" />
<scroll_list.columns
label="Region"
name="location"
- width="78" />
+ width="72" />
<scroll_list.columns
label="Type"
name="type"
- width="70" />
+ width="60" />
<scroll_list.columns
label="Area"
name="area"
- width="50" />
+ width="20" />
<scroll_list.columns
label=""
name="hidden"
@@ -74,14 +74,14 @@
</scroll_list>
<button
follows="top"
- height="23"
+ height="20"
label="Map"
label_selected="Map"
layout="topleft"
+ left="150"
name="map_button"
- right="-10"
- top_pad="5"
- width="95"
+ top_pad="10"
+ width="125"
enabled="false" />
<text
type="string"
@@ -91,12 +91,11 @@
layout="topleft"
left="5"
name="total_contributed_land_label"
- top_pad="0"
+ top_pad="10"
width="130">
Total Contribution:
</text>
<text
- text_color="EmphasisColor"
type="string"
follows="left|top"
height="16"
@@ -120,7 +119,6 @@
Total Land In Use:
</text>
<text
- text_color="EmphasisColor"
type="string"
follows="left|top"
height="16"
@@ -144,7 +142,6 @@
Land Available:
</text>
<text
- text_color="EmphasisColor"
type="string"
follows="left|top"
height="16"
@@ -171,19 +168,19 @@
border_style="line"
border_thickness="1"
follows="left|top"
- height="19"
+ height="16"
layout="topleft"
left_pad="5"
max_length="10"
name="your_contribution_line_editor"
- top_delta="0"
+ top_delta="-2"
width="95" />
<text
type="string"
follows="left|top"
height="16"
layout="topleft"
- left_pad="3"
+ left_pad="5"
name="your_contribution_units"
top_delta="2">
m²
@@ -196,13 +193,13 @@
layout="topleft"
left="140"
name="your_contribution_max_value"
- top_pad="2"
+ top_pad="0"
width="95">
([AMOUNT] max)
</text>
<icon
height="16"
- image_name="notify_next"
+ image_name="smicon_warn.tga"
layout="topleft"
left="9"
name="group_over_limit_icon"
@@ -214,14 +211,14 @@
type="string"
word_wrap="true"
font="SansSerifSmall"
- height="35"
+ height="40"
layout="topleft"
- left_pad="0"
+ left_pad="5"
name="group_over_limit_text"
- text_color="EmphasisColor"
+ text_color="GroupOverTierColor"
top_delta="0"
- width="290">
- Group members must contribute more land credits to support land in use
+ width="250">
+ Group members must contribute more land credits to support land in use.
</text>
<text
type="string"
@@ -245,126 +242,128 @@
name="group_money_tab_container"
tab_position="top"
tab_height="20"
- top_pad="2"
- tab_min_width="70"
- width="300">
+ top_pad="10"
+ width="265">
<panel
- border="false"
+ border="true"
follows="all"
height="180"
- label="PLANNING"
+ label="Planning"
layout="topleft"
- left="0"
+ left="1"
help_topic="group_money_planning_tab"
name="group_money_planning_tab"
top="5"
- width="300">
+ width="265">
<text_editor
type="string"
+ bg_readonly_color="0.784314 0.819608 0.8 1"
follows="all"
- font="SansSerif"
- height="140"
+ font="Monospace"
+ height="168"
layout="topleft"
- left="0"
+ left="8"
max_length="4096"
name="group_money_planning_text"
- top="0"
- width="300"
+ top="5"
+ width="250"
word_wrap="true">
- Loading...
+ Computing...
</text_editor>
</panel>
<panel
- border="false"
- follows="all"
+ border="true"
+ follows="left|top|right|bottom"
height="180"
- label="DETAILS"
+ label="Details"
layout="topleft"
- left="0"
+ left_delta="0"
help_topic="group_money_details_tab"
name="group_money_details_tab"
- top="5"
- width="300">
+ top_delta="0"
+ width="265">
<text_editor
type="string"
+ bg_readonly_color="0.784314 0.819608 0.8 1"
follows="all"
+ font="Monospace"
height="140"
layout="topleft"
- left="0"
+ left="8"
max_length="4096"
name="group_money_details_text"
- top="0"
- width="300"
+ top="7"
+ width="250"
word_wrap="true">
- Loading...
+ Computing...
</text_editor>
+ <button
+ height="20"
+ label="&lt; Earlier"
+ label_selected="&lt; Earlier"
+ layout="topleft"
+ left="5"
+ name="earlier_details_button"
+ tool_tip="Go back in time"
+ top_pad="10"
+ width="125" />
<button
- follows="left|top"
- height="23"
- image_overlay="Arrow_Left_Off"
- layout="topleft"
- name="earlier_details_button"
- picture_style="true"
- tool_tip="Back"
- top_pad="3"
- right="-35"
- width="31" />
- <button
- follows="left|top"
- height="23"
- image_overlay="Arrow_Right_Off"
- layout="topleft"
- left_pad="10"
+ height="20"
+ label="Later &gt;"
+ label_selected="Later &gt;"
+ layout="topleft"
+ left_pad="5"
name="later_details_button"
- picture_style="true"
- tool_tip="Next"
- width="31" />
+ tool_tip="Go forward in time"
+ top_delta="0"
+ width="125" />
</panel>
<panel
- border="false"
- follows="all"
+ border="true"
+ follows="left|top|right|bottom"
height="180"
- label="SALES"
+ label="Sales"
layout="topleft"
left_delta="0"
help_topic="group_money_sales_tab"
name="group_money_sales_tab"
top_delta="-1"
- width="300">
+ width="265">
<text_editor
type="string"
+ bg_readonly_color="0.784314 0.819608 0.8 1"
follows="all"
+ font="Monospace"
height="140"
layout="topleft"
- left="0"
+ left="8"
max_length="4096"
name="group_money_sales_text"
- top="0"
- width="300"
+ top="7"
+ width="250"
word_wrap="true">
- Loading...
+ Computing...
</text_editor>
- <button
- follows="left|top"
- height="23"
- image_overlay="Arrow_Left_Off"
- layout="topleft"
- name="earlier_sales_button"
- picture_style="true"
- tool_tip="Back"
- top_pad="3"
- right="-35"
- width="31" />
- <button
- follows="left|top"
- height="23"
- image_overlay="Arrow_Right_Off"
- layout="topleft"
- left_pad="10"
+ <button
+ height="20"
+ label="&lt; Earlier"
+ label_selected="&lt; Earlier"
+ layout="topleft"
+ left="5"
+ name="earlier_sales_button"
+ tool_tip="Go back in time"
+ top_pad="10"
+ width="125" />
+ <button
+ height="20"
+ label="Later &gt;"
+ label_selected="Later &gt;"
+ layout="topleft"
+ left_pad="5"
name="later_sales_button"
- picture_style="true"
- tool_tip="Next"
- width="31" />
+ tool_tip="Go forward in time"
+ top_delta="0"
+ width="125" />
</panel>
</tab_container>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_group_notices.xml b/indra/newview/skins/default/xui/en/panel_group_notices.xml
index bfb49a60c2..0e4d490369 100644
--- a/indra/newview/skins/default/xui/en/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_notices.xml
@@ -1,13 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
+ border="true"
follows="all"
height="485"
label="Notices"
layout="topleft"
- left="0"
+ left="1"
name="notices_tab"
- top="0"
- width="313">
+ top="485"
+ width="280">
<panel.string
name="help_text">
Notices are a quick way to communicate across a
@@ -19,48 +20,60 @@ the General tab.
</panel.string>
<panel.string
name="no_notices_text">
- There are no past notices
+ There are no past notices.
</panel.string>
+ <!--<text
+ follows="left|top"
+ type="string"
+ font="SansSerifBig"
+ height="16"
+ layout="topleft"
+ left="10"
+ name="lbl"
+ top_pad="10"
+ width="269">
+ Group Notices Archive
+ </text> -->
<text
follows="left|top"
type="string"
word_wrap="true"
- height="30"
+ height="40"
layout="topleft"
- left="10"
+ left_delta="10"
name="lbl2"
- top="5"
- width="300">
- Notices are kept for 14 days
-Groups are limited to 200 notices/group daily
+ text_color="EmphasisColor"
+ top_pad="10"
+ width="270">
+ Notices are kept for 14 days. Notice lists are limited to 200 notices per group on a daily basis.
</text>
<scroll_list
follows="left|top"
column_padding="0"
draw_heading="true"
- heading_height="16"
- height="125"
+ heading_height="14"
+ height="109"
layout="topleft"
- left="0"
+ left_delta="0"
name="notice_list"
top_pad="0"
- width="303">
+ width="265">
<scroll_list.columns
label=""
name="icon"
- width="20" />
+ width="16" />
<scroll_list.columns
label="Subject"
name="subject"
- width="125" />
+ width="100" />
<scroll_list.columns
label="From"
name="from"
- width="90" />
+ width="83" />
<scroll_list.columns
label="Date"
name="date"
- width="30" />
+ width="50" />
<scroll_list.columns
name="sort"
width="-1" />
@@ -71,42 +84,39 @@ Groups are limited to 200 notices/group daily
layout="topleft"
name="notice_list_none_found"
visible="false">
- None found
+ None found.
</text>
- <button
- follows="bottom|left"
- height="18"
- image_selected="AddItem_Press"
- image_unselected="AddItem_Off"
- image_disabled="AddItem_Disabled"
- layout="topleft"
- label="Create a new notice"
- left="15"
- name="create_new_notice"
- picture_style="true"
- tool_tip="Create a new notice"
- top_delta="-5"
- width="18" />
- <button
- follows="top|left"
- height="22"
- image_overlay="Refresh_Off"
+ <button
+ follows="left|top"
+ height="20"
+ font="SansSerifSmall"
+ label="New Notice"
+ label_selected="Create New Notice"
+ layout="topleft"
+ left_delta="0"
+ name="create_new_notice"
+ top_delta="4"
+ width="125" />
+ <button
+ follows="left|top"
+ height="20"
+ font="SansSerifSmall"
+ label="Refresh"
+ label_selected="Refresh List"
layout="topleft"
+ left_pad="12"
name="refresh_notices"
- picture_style="true"
- right="-5"
- top_delta="5"
- width="23" />
+ top_delta="0"
+ width="125" />
<panel
follows="left|top"
- height="300"
+ height="268"
label="Create New Notice"
layout="topleft"
left="0"
- top_pad="10"
- visible="false"
name="panel_create_new_notice"
- width="303">
+ top_pad="10"
+ width="265">
<text
follows="left|top"
type="string"
@@ -117,16 +127,30 @@ Groups are limited to 200 notices/group daily
mouse_opaque="false"
name="lbl"
text_color="EmphasisColor"
- top="0"
- width="200">
+ top_pad="0"
+ width="265">
Create a Notice
</text>
<text
follows="left|top"
type="string"
+ word_wrap="true"
+ height="90"
+ layout="topleft"
+ left_delta="0"
+ name="lbl2"
+ text_color="EmphasisColor"
+ top_pad="4"
+ width="195">
+ You can add a single item to a notice by dragging it from your inventory to this panel. Attached items must be copiable and transferrable, and you can&apos;t send a folder.
+ </text>
+ <text
+ follows="left|top"
+ type="string"
halign="left"
height="16"
layout="topleft"
+ left_delta="0"
name="lbl3"
top_pad="10"
width="60">
@@ -140,7 +164,8 @@ Groups are limited to 200 notices/group daily
left_pad="3"
max_length="63"
name="create_subject"
- width="220" />
+ top_delta="-1"
+ width="200" />
<text
follows="left|top"
type="string"
@@ -149,100 +174,106 @@ Groups are limited to 200 notices/group daily
layout="topleft"
left="10"
name="lbl4"
- top_pad="5"
+ top_pad="10"
width="60">
Message:
</text>
<text_editor
- height="90"
+ height="75"
layout="topleft"
left_pad="3"
max_length="511"
name="create_message"
top_delta="0"
- width="220"
+ width="200"
word_wrap="true" />
<text
follows="left|top"
type="string"
halign="left"
- height="14"
+ height="16"
layout="topleft"
left="10"
name="lbl5"
- width="200">
+ top_pad="10"
+ width="60">
Attach:
</text>
<line_editor
enabled="false"
- height="19"
+ height="16"
layout="topleft"
- max_length="90"
+ left_pad="3"
+ max_length="63"
mouse_opaque="false"
name="create_inventory_name"
- top_pad="2"
- width="285" />
- <text
- text_color="EmphasisColor"
- follows="left|top"
- type="string"
- halign="right"
- height="34"
- layout="topleft"
- left="10"
- name="string"
- top_pad="15"
- word_wrap="true"
- width="150">
- Drag here to attach something -- >
- </text>
+ top_delta="0"
+ width="200" />
<icon
- height="72"
- image_name="DropTarget"
+ height="16"
layout="topleft"
- left_pad="10"
- mouse_opaque="true"
- name="drop_icon"
- top_delta="-10"
- width="72" />
+ left_delta="0"
+ name="create_inv_icon"
+ top_delta="0"
+ width="16" />
<button
follows="left|top"
- height="23"
- label="Remove"
+ height="20"
+ font="SansSerifSmall"
+ label="Remove Attachment"
+ label_selected="Remove Attachment"
layout="topleft"
- left="70"
+ left="10"
name="remove_attachment"
- top_delta="45"
- width="90" />
+ top_pad="10"
+ width="135" />
<button
follows="left|top"
- height="23"
+ height="20"
+ font="SansSerifSmall"
label="Send"
label_selected="Send Notice"
layout="topleft"
- right="-10"
- top_pad="20"
+ left_delta="138"
name="send_notice"
- width="100" />
- <group_drop_target
+ top_delta="0"
+ width="125" />
+ <panel
+ bevel_style="in"
+ border="true"
+ height="71"
+ layout="topleft"
+ left="200"
+ name="drop_target2"
+ top="20"
+ width="71" />
+ <icon
+ height="59"
+ image_name="icon_groupnoticeinventory.tga"
+ layout="topleft"
+ left_delta="6"
+ mouse_opaque="true"
+ name="drop_icon"
+ top="26"
+ width="59" />
+ <group_drop_target
height="466"
- top="0"
- left="0"
layout="topleft"
+ left="0"
name="drop_target"
tool_tip="Drag an inventory item onto the message box to send it with the notice. You must have permission to copy and transfer the object to send it with the notice."
- width="295" />
+ top="-198"
+ width="280" />
</panel>
<panel
follows="left|top"
- height="300"
+ height="268"
label="View Past Notice"
layout="topleft"
left="0"
- visible="true"
name="panel_view_past_notice"
- top="180"
- width="303">
+ top="197"
+ width="265">
<text
type="string"
font="SansSerifBig"
@@ -263,9 +294,9 @@ Groups are limited to 200 notices/group daily
layout="topleft"
left_delta="0"
name="lbl2"
- top_pad="2"
+ top_pad="4"
width="265">
- To send a new notice, click the + button
+ To send a new notice, click the &apos;New Notice&apos; button above.
</text>
<text
type="string"
@@ -274,7 +305,7 @@ Groups are limited to 200 notices/group daily
layout="topleft"
left_delta="0"
name="lbl3"
- top_pad="15"
+ top_pad="24"
visible="false"
width="60">
Subject:
@@ -305,13 +336,13 @@ Groups are limited to 200 notices/group daily
</text>
<text_editor
enabled="false"
- height="205"
+ height="150"
layout="topleft"
left="10"
max_length="511"
name="view_message"
top_delta="-35"
- width="285"
+ width="260"
word_wrap="true" />
<line_editor
enabled="false"
@@ -322,7 +353,7 @@ Groups are limited to 200 notices/group daily
mouse_opaque="false"
name="view_inventory_name"
top_pad="10"
- width="285" />
+ width="260" />
<icon
height="16"
layout="topleft"
@@ -332,12 +363,14 @@ Groups are limited to 200 notices/group daily
width="16" />
<button
follows="left|top"
- height="23"
- label="Open attachment"
+ height="20"
+ font="SansSerifSmall"
+ label="Open Attachment"
+ label_selected="Open Attachment"
layout="topleft"
- right="-10"
+ left_delta="0"
name="open_attachment"
- top_pad="5"
+ top_pad="10"
width="135" />
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml
index 5ed464bcec..e87859f788 100644
--- a/indra/newview/skins/default/xui/en/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
border="false"
- height="552"
+ height="412"
label="Members &amp; Roles"
layout="topleft"
left="0"
@@ -18,28 +18,158 @@
</panel.string>
<panel.string
name="help_text" />
+ <!--<panel
+ follows="left|top"
+ height="80"
+ layout="topleft"
+ left="10"
+ name="members_header"
+ top_pad="10"
+ width="270">
+ <text
+ type="string"
+ font="SansSerifBig"
+ height="16"
+ layout="topleft"
+ left="0"
+ name="static"
+ top="0"
+ width="270">
+ Members &amp; Roles
+ </text>
+ <text
+ type="string"
+ word_wrap="true"
+ height="40"
+ layout="topleft"
+ left_delta="0"
+ name="static2"
+ top_pad="4"
+ width="270">
+ Group Members are assigned Roles with Abilities. These settings can easily be customized, allowing for greater organization and flexibility.
+ </text>
+ </panel>
+ <panel
+ follows="left|top"
+ height="24"
+ layout="topleft"
+ left_delta="0"
+ name="roles_header"
+ top_delta="0"
+ visible="false"
+ width="270">
+ <text
+ type="string"
+ font="SansSerifBig"
+ height="16"
+ layout="topleft"
+ left="0"
+ name="static"
+ top="0"
+ width="270">
+ Roles
+ </text>
+ <text
+ type="string"
+ word_wrap="true"
+ height="40"
+ layout="topleft"
+ left_delta="0"
+ name="role_properties_modifiable"
+ top_pad="4"
+ visible="false"
+ width="270">
+ Select a Role below. You can modify its Name, Description and Member Title.
+ </text>
+ <text
+ type="string"
+ word_wrap="true"
+ height="40"
+ layout="topleft"
+ left_delta="0"
+ name="role_properties_not_modifiable"
+ top_delta="0"
+ width="270">
+ Select a Role below to see its properties, Members and allowed Abilities.
+ </text>
+ <text
+ type="string"
+ word_wrap="true"
+ height="16"
+ layout="topleft"
+ left_delta="0"
+ name="role_actions_modifiable"
+ top_delta="24"
+ visible="false"
+ width="270">
+ You can also assign Abilities to the Role.
+ </text>
+ <text
+ type="string"
+ word_wrap="true"
+ height="16"
+ layout="topleft"
+ left_delta="0"
+ name="role_actions_not_modifiable"
+ top_delta="0"
+ width="270">
+ You may view, but not modify, assigned Abilities.
+ </text>
+ </panel>
+ <panel
+ follows="left|top"
+ height="24"
+ layout="topleft"
+ left_delta="0"
+ name="actions_header"
+ top_delta="0"
+ visible="false"
+ width="270">
+ <text
+ type="string"
+ font="SansSerifBig"
+ height="16"
+ layout="topleft"
+ left="0"
+ name="static"
+ top="0"
+ width="270">
+ Abilities
+ </text>
+ <text
+ type="string"
+ word_wrap="true"
+ height="40"
+ layout="topleft"
+ left_delta="0"
+ name="static2"
+ top_pad="4"
+ width="270">
+ You can view an Ability&apos;s Description and which Roles and Members can execute the Ability.
+ </text>
+ </panel> -->
<tab_container
- border="false"
+ border="true"
follows="left|top"
- height="245"
+ height="260"
halign="center"
layout="topleft"
left="5"
name="roles_tab_container"
tab_position="top"
tab_height="20"
- tab_min_width="96"
- top="3"
+ top="0"
width="303">
<panel
border="false"
- height="220"
- label="MEMBERS"
+ height="260"
+ label="Members"
layout="topleft"
- left="0"
+ left="1"
help_topic="roles_members_tab"
name="members_sub_tab"
tool_tip="Members"
+ top="17"
class="panel_group_members_subtab"
width="300">
<panel.string
@@ -57,7 +187,8 @@ clicking on their names.
follows="left|top|right"
max_length="250"
label="Filter Members"
- name="filter_input" />
+ name="filter_input"
+ font="SansSerif" />
<!-- <button
enabled="false"
font="SansSerifSmall"
@@ -98,7 +229,6 @@ clicking on their names.
font="SansSerifSmall"
label="Invite"
layout="topleft"
- left="5"
name="member_invite"
top_pad="3"
width="100" />
@@ -108,10 +238,8 @@ clicking on their names.
label="Eject"
layout="topleft"
left_pad="5"
- right="-5"
name="member_eject"
width="100" />
- <!--What is this?-->
<icon
height="16"
image_name="Inv_FolderClosed"
@@ -122,14 +250,15 @@ clicking on their names.
</panel>
<panel
border="false"
- height="220"
- label="ROLES"
+ height="164"
+ label="Roles"
layout="topleft"
- left="0"
+ left_delta="0"
help_topic="roles_roles_tab"
name="roles_sub_tab"
class="panel_group_roles_subtab"
- width="300">
+ top="17"
+ width="265">
<panel.string
name="help_text">
Roles have a title and an allowed list of Abilities
@@ -153,19 +282,40 @@ including the Everyone and Owner Roles.
name="power_partial_icon">
checkbox_enabled_false.tga
</panel.string>
- <filter_editor
- layout="topleft"
- top="10"
- left="4"
- width="280"
- height="20"
- follows="left|top|right"
- max_length="250"
- label="Filter Roles"
- name="filter_input" />
- <!--
+ <filter_editor
+ layout="topleft"
+ top="10"
+ left="4"
+ width="260"
+ height="20"
+ follows="left|top|right"
+ max_length="250"
+ label="Filter Roles"
+ name="filter_input"
+ font="SansSerif" />
+ <!--<line_editor
+ border_style="line"
+ border_thickness="1"
+ follows="left|top"
+ height="16"
+ layout="topleft"
+ left="4"
+ max_length="63"
+ name="search_text"
+ top="10"
+ width="90" />
+ <button
+ font="SansSerifSmall"
+ height="20"
+ label="Search"
+ layout="topleft"
+ left_pad="5"
+ name="search_button"
+ top_delta="-2"
+ width="80" />
<button
enabled="false"
+ font="SansSerifSmall"
height="20"
label="Show All"
layout="topleft"
@@ -176,13 +326,11 @@ including the Everyone and Owner Roles.
<scroll_list
column_padding="0"
draw_heading="true"
- draw_stripes="false"
follows="left|top"
heading_height="20"
height="150"
layout="topleft"
- search_column="1"
- left="0"
+ left="4"
name="role_list"
top_pad="4"
width="300">
@@ -204,7 +352,7 @@ including the Everyone and Owner Roles.
font="SansSerifSmall"
label="Add Role"
layout="topleft"
- left="5"
+ left_delta="0"
name="role_create"
top_pad="6"
width="125" />
@@ -214,20 +362,20 @@ including the Everyone and Owner Roles.
label="Delete Role"
layout="topleft"
left_pad="5"
- right="-5"
name="role_delete"
top_delta="0"
width="125" />
</panel>
<panel
border="false"
- height="220"
- label="ABILITIES"
+ height="164"
+ label="Abilities"
layout="topleft"
- left="0"
+ left_delta="0"
help_topic="roles_actions_tab"
name="actions_sub_tab"
class="panel_group_actions_subtab"
+ top="17"
tool_tip="You can view an Ability&apos;s Description and which Roles and Members can execute the Ability."
width="300">
<panel.string
@@ -235,17 +383,37 @@ including the Everyone and Owner Roles.
Abilities allow Members in Roles to do specific
things in this group. There&apos;s a broad variety of Abilities.
</panel.string>
- <filter_editor
- layout="topleft"
- top="10"
- left="4"
- width="280"
- height="20"
- follows="left|top|right"
- max_length="250"
- label="Filter Abilities"
- name="filter_input" />
- <!--
+ <filter_editor
+ layout="topleft"
+ top="10"
+ left="4"
+ width="255"
+ height="20"
+ follows="left|top|right"
+ max_length="250"
+ label="Filter Abilities"
+ name="filter_input"
+ font="SansSerif" />
+ <!--<line_editor
+ border_style="line"
+ border_thickness="1"
+ follows="left|top"
+ height="16"
+ layout="topleft"
+ left="4"
+ max_length="63"
+ name="search_text"
+ top="10"
+ width="90" />
+ <button
+ font="SansSerifSmall"
+ height="20"
+ label="Search"
+ layout="topleft"
+ left_pad="5"
+ name="search_button"
+ top_delta="-2"
+ width="80" />
<button
enabled="false"
font="SansSerifSmall"
@@ -260,19 +428,19 @@ things in this group. There&apos;s a broad variety of Abilities.
column_padding="0"
draw_stripes="false"
follows="left|top"
- height="160"
+ height="100"
layout="topleft"
- left="0"
+ left="6"
multi_select="true"
name="action_list"
search_column="1"
tool_tip="Select an Ability to view more details"
top_pad="6"
- width="300">
+ width="255">
<scroll_list.columns
label=""
name="icon"
- width="16" />
+ width="18" />
<scroll_list.columns
label=""
name="action"
@@ -280,7 +448,7 @@ things in this group. There&apos;s a broad variety of Abilities.
</scroll_list>
<icon
height="16"
- image_name="Inv_FolderClosed"
+ image_name="inv_folder_plain_closed.tga"
layout="topleft"
name="power_folder_icon"
visible="false"
@@ -288,93 +456,105 @@ things in this group. There&apos;s a broad variety of Abilities.
</panel>
</tab_container>
<panel
- height="252"
+ height="150"
layout="topleft"
follows="left|top"
left="10"
name="members_footer"
- top_pad="10"
- top_delta="0"
+ top_pad="2"
width="300">
<text
type="string"
+ font="SansSerif"
height="16"
layout="topleft"
follows="left|top"
left="0"
name="static"
- top_pad="5"
- width="295">
+ top_pad="0"
+ width="100">
Assigned Roles
</text>
+ <text
+ type="string"
+ font="SansSerif"
+ height="16"
+ layout="topleft"
+ follows="left|top"
+ left_pad="35"
+ name="static2"
+ top_delta="0"
+ width="100">
+ Allowed Abilities
+ </text>
<scroll_list
draw_stripes="false"
follows="left|top"
- height="80"
+ height="150"
layout="topleft"
left="0"
name="member_assigned_roles"
- top_pad="0"
- width="295">
+ top_pad="5"
+ width="130">
<scroll_list.columns
label=""
name="checkbox"
- width="30" />
+ width="18" />
<scroll_list.columns
label=""
name="role"
- width="265" />
+ width="107" />
</scroll_list>
- <text
- type="string"
- height="16"
- layout="topleft"
- follows="left|top"
- left="0"
- name="static2"
- top_pad="5"
- width="295">
- Allowed Abilities
- </text>
- <scroll_list
+ <scroll_list
draw_stripes="false"
- height="80"
+ height="150"
layout="topleft"
- left="0"
+ follows="left|top"
+ left_pad="5"
name="member_allowed_actions"
- search_column="2"
tool_tip="For details of each allowed ability see the abilities tab"
- top_pad="0"
- width="295">
+ top_delta="0"
+ width="130">
<scroll_list.columns
label=""
name="icon"
- width="20" />
+ width="14" />
<scroll_list.columns
label=""
name="action"
- width="275" />
+ width="126" />
</scroll_list>
</panel>
<panel
- height="297"
+ height="252"
layout="topleft"
- left="10"
+ left_delta="0"
name="roles_footer"
top_delta="0"
- top="245"
visible="false"
- width="300">
+ width="270">
<text
type="string"
+ font="SansSerif"
height="16"
layout="topleft"
left="0"
name="static"
top="0"
- width="140">
+ width="100">
Name
</text>
+ <text
+ type="string"
+ font="SansSerif"
+ height="16"
+ layout="topleft"
+ left_pad="35"
+ name="static2"
+ top_delta="0"
+ width="100">
+ Description
+ </text>
<line_editor
type="string"
border_style="line"
@@ -383,19 +563,21 @@ things in this group. There&apos;s a broad variety of Abilities.
height="20"
layout="topleft"
left="0"
- max_length="295"
+ max_length="20"
name="role_name"
top_pad="0"
- width="295">
+ width="130">
Employees
</line_editor>
<text
type="string"
+ font="SansSerif"
height="16"
layout="topleft"
+ left_delta="0"
name="static3"
- top_pad="5"
- width="295">
+ top_pad="10"
+ width="100">
Title
</text>
<line_editor
@@ -405,159 +587,158 @@ things in this group. There&apos;s a broad variety of Abilities.
follows="left|top"
height="20"
layout="topleft"
- max_length="295"
+ left_delta="0"
+ max_length="20"
name="role_title"
top_pad="0"
- width="295">
- (waiting)
+ width="130">
+ (waiting)
</line_editor>
- <text
- type="string"
- height="16"
- layout="topleft"
- left="0"
- name="static2"
- top_pad="5"
- width="100">
- Description
- </text>
<text_editor
type="string"
halign="left"
- height="35"
+ height="48"
layout="topleft"
- left="0"
- max_length="295"
+ left="135"
+ max_length="254"
name="role_description"
- top_pad="0"
- width="295"
+ top="16"
+ width="130"
word_wrap="true">
- (waiting)
+ (waiting)
</text_editor>
<text
type="string"
+ font="SansSerif"
height="16"
layout="topleft"
- follows="left|top"
left="0"
- name="static"
- top_pad="5"
- width="295">
- Assigned Roles
+ name="static4"
+ top="85"
+ width="120">
+ Assigned Members
+ </text>
+ <text
+ type="string"
+ font="SansSerif"
+ height="16"
+ layout="topleft"
+ left_pad="15"
+ name="static5"
+ tool_tip="A list of abilities the currently selected role can perform"
+ top_delta="0"
+ width="100">
+ Allowed Abilities
</text>
<name_list
draw_stripes="false"
- height="50"
+ height="150"
layout="topleft"
left="0"
name="role_assigned_members"
top_pad="0"
- width="295" />
+ width="130" />
<check_box
- height="15"
- label="Reveal members"
+ height="16"
+ label="Members are visible"
layout="topleft"
+ left_delta="0"
name="role_visible_in_list"
tool_tip="Sets whether members of this role are visible in the General tab to people outside of the group."
- top_pad="3"
- width="290" />
- <text
- type="string"
- height="16"
- layout="topleft"
- follows="left|top"
- left="0"
- name="static2"
- top_pad="5"
- width="295">
- Allowed Abilities
- </text>
+ top_pad="10"
+ width="130" />
<scroll_list
draw_stripes="false"
- height="50"
+ height="150"
layout="topleft"
- left="0"
+ left="135"
name="role_allowed_actions"
search_column="2"
tool_tip="For details of each allowed ability see the abilities tab"
- top_pad="0"
- width="295">
+ top="101"
+ width="130">
<scroll_list.columns
label=""
name="icon"
- width="20" />
+ width="2" />
<scroll_list.columns
label=""
name="checkbox"
- width="20" />
+ width="16" />
<scroll_list.columns
label=""
name="action"
- width="250" />
+ width="220" />
</scroll_list>
</panel>
<panel
- height="303"
+ height="215"
layout="topleft"
- left="10"
+ left_delta="0"
name="actions_footer"
top_delta="0"
- top="245"
visible="false"
- width="300">
+ width="265">
<text
type="string"
+ font="SansSerif"
height="16"
layout="topleft"
+ left="0"
name="static"
+ top="0"
width="200">
- Ability description
+ Description
</text>
<text_editor
type="string"
enabled="false"
halign="left"
- height="80"
+ height="48"
layout="topleft"
left_delta="0"
max_length="512"
name="action_description"
top_pad="0"
- width="295"
+ width="265"
word_wrap="true">
This Ability is &apos;Eject Members from this Group&apos;. Only an Owner can eject another Owner.
</text_editor>
<text
type="string"
+ font="SansSerif"
height="16"
layout="topleft"
left_delta="0"
name="static2"
- top_pad="5"
- width="295">
- Roles with this ability
+ top_pad="10"
+ width="125">
+ Roles with Ability
</text>
- <scroll_list
- height="60"
- layout="topleft"
- left="0"
- name="action_roles"
- top_pad="0"
- width="295" />
- <text
+ <text
type="string"
+ font="SansSerif"
height="16"
layout="topleft"
+ left_pad="10"
name="static3"
- top_pad="5"
- width="295">
- Members with this ability
+ top_delta="0"
+ width="125">
+ Members with Ability
</text>
+ <scroll_list
+ height="150"
+ layout="topleft"
+ left="0"
+ name="action_roles"
+ top="90"
+ width="130" />
<name_list
- height="100"
+ height="150"
layout="topleft"
+ left_pad="5"
name="action_members"
- top_pad="0"
- width="295" />
+ top_delta="0"
+ width="130" />
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
index 0dd3878426..c4cdaa41f9 100644
--- a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
+++ b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
@@ -1,35 +1,30 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel name="panel_im_control_panel"
- width="128"
- height="327"
+ width="125"
+ height="248"
border="false">
<avatar_icon name="avatar_icon"
- follows="left|top"
- left_delta="3"
- width="125"
- height="125" />
+ width="96"
+ height="96" />
<button name="view_profile_btn"
- follows="left|bottom"
label="View Profile"
+ left_delta="3"
width="125"
height="20" />
<button name="add_friend_btn"
- follows="left|bottom"
label="Add Friend"
width="125"
height="20" />
<button name="call_btn"
- follows="left|bottom"
label="Call"
width="125"
height="20" />
<button
- follows="left|bottom"
height="20"
label="End Call"
name="end_call_btn"
@@ -38,27 +33,15 @@
<button
enabled="false"
- follows="left|bottom"
name="voice_ctrls_btn"
label="Open Voice Controls"
width="125"
height="20"
visible="false"/>
- <button name="teleport_btn"
- follows="left|bottom"
- label="Teleport"
- width="125"
- height="20" />
<button name="share_btn"
- follows="left|bottom"
label="Share"
width="125"
height="20" />
- <button name="pay_btn"
- follows="left|bottom"
- label="Pay"
- width="125"
- height="20" />
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_landmark_info.xml b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
deleted file mode 100644
index 03ba7f7c81..0000000000
--- a/indra/newview/skins/default/xui/en/panel_landmark_info.xml
+++ /dev/null
@@ -1,257 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_visible="true"
- follows="all"
- height="570"
- layout="topleft"
- left="0"
- min_height="350"
- name="landmark_info"
- top="20"
- width="330">
- <string
- name="title_create_landmark"
- value="Create Landmark" />
- <string
- name="title_edit_landmark"
- value="Edit Landmark" />
- <string
- name="title_landmark"
- value="Landmark" />
- <string
- name="not_available"
- value="(N\A)" />
- <string
- name="unknown"
- value="(unknown)" />
- <string
- name="public"
- value="(public)" />
- <string
- name="server_update_text">
- Place information not available without server update.
- </string>
- <string
- name="server_error_text">
- Information about this location is unavailable at this time, please try again later.
- </string>
- <string
- name="server_forbidden_text">
- Information about this location is unavailable due to access restrictions. Please check your permissions with the parcel owner.
- </string>
- <string
- name="acquired_date">
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
- </string>
- <button
- follows="top|right"
- height="23"
- image_overlay="BackArrow_Off"
- layout="topleft"
- left="10"
- name="back_btn"
- picture_style="true"
- tab_stop="false"
- top="0"
- width="23" />
- <text
- follows="top|left|right"
- font="SansSerifHugeBold"
- height="26"
- layout="topleft"
- left_pad="10"
- name="title"
- text_color="white"
- top="0"
- use_ellipses="true"
- value="Place Profile"
- width="275" />
- <scroll_container
- color="DkGray2"
- follows="all"
- height="533"
- layout="topleft"
- left="10"
- name="place_scroll"
- opaque="true"
- top_pad="5"
- width="313">
- <panel
- bg_alpha_color="DkGray2"
- follows="all"
- height="533"
- layout="topleft"
- left="0"
- min_height="300"
- name="scrolling_panel"
- top="0"
- width="313">
- <texture_picker
- enabled="false"
- follows="top|left"
- height="190"
- layout="topleft"
- left="10"
- name="logo"
- top="10"
- width="290" />
- <text
- follows="left|top|right"
- font="SansSerifLarge"
- height="14"
- layout="topleft"
- left="10"
- name="region_title"
- text_color="white"
- top_pad="5"
- use_ellipses="true"
- value="SampleRegion"
- width="290" />
- <text
- follows="left|top|right"
- height="14"
- layout="topleft"
- left="10"
- name="parcel_title"
- top_pad="4"
- use_ellipses="true"
- value="SampleParcel, Name Long (145, 228, 26)"
- width="285" />
- <expandable_text
- follows="left|top|right"
- height="50"
- layout="topleft"
- left="5"
- name="description"
- top_pad="10"
- value="Du waltz die spritz"
- width="300" />
- <panel
- follows="left|top|right"
- height="55"
- layout="topleft"
- left="10"
- name="landmark_info_panel"
- top_pad="10"
- width="290">
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="0"
- name="owner_label"
- top_pad="10"
- value="Owner:"
- width="90" />
- <text
- follows="left|top|right"
- height="15"
- layout="topleft"
- left="70"
- name="owner"
- top_delta="0"
- width="200" />
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="0"
- name="creator_label"
- value="Creator:"
- width="90" />
- <text
- follows="left|top|right"
- height="15"
- layout="topleft"
- left="70"
- name="creator"
- top_delta="0"
- width="200" />
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="0"
- name="created_label"
- value="Created:"
- width="50" />
- <text
- follows="left|top|right"
- height="15"
- layout="topleft"
- left="70"
- name="created"
- top_delta="0"
- width="200" />
- </panel>
- <panel
- follows="left|top|right"
- height="210"
- layout="topleft"
- left="10"
- name="landmark_edit_panel"
- width="290">
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="0"
- name="title_label"
- top_pad="10"
- value="Title:"
- width="290" />
- <line_editor
- background_image_disabled="task_panel_background.png"
- follows="left|top|right"
- height="22"
- layout="topleft"
- left="0"
- max_length="63"
- name="title_editor"
- prevalidate_callback="ascii"
- text_readonly_color="white"
- top_pad="5"
- width="290" />
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="0"
- name="notes_label"
- top_pad="10"
- value="My notes:"
- width="290" />
- <text_editor
- bg_readonly_color="DkGray2"
- follows="all"
- height="70"
- layout="topleft"
- left="0"
- max_length="127"
- name="notes_editor"
- read_only="true"
- text_readonly_color="white"
- top_pad="5"
- width="290"
- wrap="true" />
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="0"
- name="folder_label"
- top_pad="15"
- value="Landmark location:"
- width="290" />
- <combo_box
- follows="bottom|left|right"
- height="20"
- layout="topleft"
- left="0"
- name="folder_combo"
- top_pad="5"
- width="200" />
- </panel>
- </panel>
- </scroll_container>
-</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_landmarks.xml b/indra/newview/skins/default/xui/en/panel_landmarks.xml
index 91fcf4b5f2..5293043ba7 100644
--- a/indra/newview/skins/default/xui/en/panel_landmarks.xml
+++ b/indra/newview/skins/default/xui/en/panel_landmarks.xml
@@ -31,7 +31,7 @@
left="0"
mouse_opaque="true"
name="favorites_list"
- start_folder="Favorite"
+ start_folder="favorite"
width="380"/>
</accordion_tab>
<accordion_tab
@@ -47,7 +47,7 @@
left="0"
mouse_opaque="true"
name="landmarks_list"
- start_folder="Landmarks"
+ start_folder="landmark"
width="380"/>
</accordion_tab>
<accordion_tab
@@ -63,13 +63,13 @@
left="0"
mouse_opaque="true"
name="my_inventory_list"
- start_folder="INVENTORY"
+ start_folder="inventory"
width="380"/>
- </accordion_tab>
- <accordion_tab
- layout="topleft"
- name="tab_library"
- title="Library">
+ </accordion_tab>
+ <accordion_tab
+ layout="topleft"
+ name="tab_library"
+ title="Library">
<inventory_subtree_panel
allow_multi_select="true"
border="true"
@@ -79,7 +79,7 @@
left="0"
mouse_opaque="true"
name="library_list"
- start_folder="LIBRARY"
+ start_folder="library"
width="380"/>
</accordion_tab>
</accordion>
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
index 555fedb1ff..2182163da5 100644
--- a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
@@ -42,17 +42,13 @@
width="20" />
<button
follows="right"
- is_toggle="true"
width="45"
top="0"
layout="topleft"
left_pad="8"
label="Log"
height="23"
- name="show_nearby_chat"
tool_tip="Show/hide nearby chat log">
- <button.init_callback
- function="Button.SetDockableFloaterToggle"
- parameter="nearby_chat" />
+ <button.commit_callback function="Floater.Toggle" parameter="nearby_chat"/>
</button>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_pick_info.xml b/indra/newview/skins/default/xui/en/panel_pick_info.xml
index 3cc9c3f38a..a67ae59b4a 100644
--- a/indra/newview/skins/default/xui/en/panel_pick_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml
@@ -30,7 +30,7 @@
text_color="white"
top="0"
value="Pick Info"
- use_ellipses="true"
+ use_elipsis="true"
width="275" />
<scroll_container
color="DkGray2"
diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml
deleted file mode 100644
index 7e073f064d..0000000000
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ /dev/null
@@ -1,979 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_visible="true"
- follows="all"
- height="570"
- layout="topleft"
- left="0"
- min_height="350"
- name="place_profile"
- top="20"
- width="330">
- <string
- name="on"
- value="On" />
- <string
- name="off"
- value="Off" />
- <string
- name="anyone"
- value="Anyone" />
- <string
- name="available"
- value="available" />
- <string
- name="allocated"
- value="allocated" />
- <string
- name="title_place"
- value="Place Profile" />
- <string
- name="title_teleport_history"
- value="Teleport History Location" />
- <string
- name="not_available"
- value="(N\A)" />
- <string
- name="unknown"
- value="(unknown)" />
- <string
- name="public"
- value="(public)" />
- <string
- name="none_text"
- value="(none)" />
- <string
- name="sale_pending_text"
- value="(Sale Pending)" />
- <string
- name="group_owned_text"
- value="(Group Owned)" />
- <string
- name="price_text"
- value="L$" />
- <string
- name="area_text"
- value="m²" />
- <string
- name="all_residents_text"
- value="All Residents" />
- <string
- name="group_text"
- value="Group" />
- <string
- name="can_resell">
- Purchased land in this region may be resold.
- </string>
- <string
- name="can_not_resell">
- Purchased land in this region may not be resold.
- </string>
- <string
- name="can_change">
- Purchased land in this region may be joined or subdivided.
- </string>
- <string
- name="can_not_change">
- Purchased land in this region may not be joined or subdivided.
- </string>
- <string
- name="server_update_text">
- Place information not available without server update.
- </string>
- <string
- name="server_error_text">
- Information about this location is unavailable at this time, please try again later.
- </string>
- <string
- name="server_forbidden_text">
- Information about this location is unavailable due to access restrictions. Please check your permissions with the parcel owner.
- </string>
- <string
- name="acquired_date">
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
- </string>
- <button
- follows="top|right"
- height="23"
- image_overlay="BackArrow_Off"
- layout="topleft"
- left="10"
- name="back_btn"
- picture_style="true"
- tab_stop="false"
- top="0"
- width="23" />
- <text
- follows="top|left|right"
- font="SansSerifHugeBold"
- height="26"
- layout="topleft"
- left_pad="10"
- name="title"
- text_color="white"
- top="0"
- use_ellipses="true"
- value="Place Profile"
- width="275" />
- <scroll_container
- color="DkGray2"
- follows="all"
- height="533"
- layout="topleft"
- left="10"
- name="place_scroll"
- opaque="true"
- top_pad="5"
- width="313">
- <panel
- bg_alpha_color="DkGray2"
- follows="all"
- height="533"
- layout="topleft"
- left="0"
- min_height="300"
- name="scrolling_panel"
- top="0"
- value="&gt;"
- width="313">
- <texture_picker
- enabled="false"
- follows="top|left"
- height="190"
- layout="topleft"
- left="10"
- name="logo"
- top="10"
- width="290" />
- <layout_stack
- border_size="0"
- clip="false"
- follows="all"
- height="50"
- layout="topleft"
- mouse_opaque="false"
- name="panel_stack"
- orientation="horizontal"
- top_pad="-65"
- width="100">
- <layout_panel
- follows="left|right"
- height="50"
- layout="topleft"
- left="0"
- min_height="50"
- min_width="50"
- mouse_opaque="false"
- name="here_panel"
- top="0"
- user_resize="false"
- width="60">
- <icon
- follows="top|left"
- height="50"
- image_name="YouAreHere_Badge"
- layout="topleft"
- left="0"
- name="icon_you_are_here"
- top="0"
- width="50" />
- </layout_panel>
- <layout_panel
- follows="left|right"
- height="60"
- layout="topleft"
- min_height="50"
- min_width="60"
- mouse_opaque="false"
- name="for_sale_panel"
- top="0"
- user_resize="false"
- width="60">
- <icon
- follows="top|left"
- height="50"
- image_name="ForSale_Badge"
- layout="topleft"
- left="10"
- name="icon_for_sale"
- top="0"
- width="50" />
- </layout_panel>
- </layout_stack>
- <text
- follows="left|top|right"
- font="SansSerifLarge"
- height="14"
- layout="topleft"
- left="10"
- name="region_title"
- text_color="white"
- top_pad="5"
- use_ellipses="true"
- value="SampleRegion"
- width="290" />
- <!-- <icon
- follows="top|right"
- height="16"
- image_name="Icon_For_Sale"
- layout="topleft"
- left="3"
- mouse_opaque="true"
- name="icon_for_sale"
- width="16" />-->
- <text
- follows="left|top|right"
- height="14"
- layout="topleft"
- left="10"
- name="parcel_title"
- top_pad="4"
- use_ellipses="true"
- value="SampleParcel, Name Long (145, 228, 26)"
- width="285" />
- <expandable_text
- follows="left|top|right"
- height="50"
- layout="topleft"
- left="5"
- name="description"
- top_pad="10"
- value="Du waltz die spritz"
- width="300" />
- <text
- follows="left|top"
- height="14"
- layout="topleft"
- left="10"
- name="owner_label"
- text_color="White"
- top_pad="0"
- value="Owner:"
- width="90" />
- <!--TODO: HOOK THIS NAME UP WITH AN INSPECTOR -->
- <text
- follows="left|top|right"
- height="14"
- layout="topleft"
- left_pad="1"
- name="owner_value"
- top_delta="0"
- value="Alex Superduperlongenamenton"
- width="205" />
- <accordion
- follows="all"
- height="230"
- layout="topleft"
- left="0"
- name="advanced_info_accordion"
- top_pad="10"
- width="313">
- <accordion_tab
- layout="topleft"
- name="parcel_characteristics_tab"
- title="Parcel">
- <scroll_container
- color="DkGray2"
- follows="all"
- height="132"
- layout="topleft"
- left="0"
- name="parcel_scroll"
- opaque="true"
- top="0"
- width="290">
- <panel
- follows="all"
- height="165"
- layout="topleft"
- left="0"
- top="0"
- width="275">
- <icon
- follows="top|left"
- height="16"
- image_name="parcel_drk_M"
- layout="topleft"
- left="20"
- name="icon_M"
- top="0"
- width="18" />
- <icon
- follows="top|left"
- height="16"
- image_name="parcel_drk_R"
- layout="topleft"
- left="20"
- name="icon_R"
- top="0"
- width="18" />
- <icon
- follows="top|left"
- height="16"
- image_name="parcel_drk_PG"
- layout="topleft"
- left="20"
- name="icon_PG"
- top="0"
- visible="false"
- width="18" />
- <text
- follows="left|top"
- height="16"
- layout="topleft"
- left_pad="8"
- name="rating_label"
- value="Rating:"
- width="80" />
- <text
- follows="right|top"
- height="16"
- layout="topleft"
- left_pad="0"
- name="rating_value"
- top_delta="0"
- value="Mature"
- width="120" />
- <icon
- follows="top|left"
- height="18"
- image_name="parcel_drk_Voice"
- layout="topleft"
- left="20"
- name="icon_Voice"
- top_pad="5"
- width="22" />
- <icon
- follows="top|left"
- height="18"
- image_name="parcel_drk_VoiceNo"
- layout="topleft"
- left="20"
- name="icon_VoiceNo"
- top_delta="0"
- visible="false"
- width="22" />
- <text
- follows="left|top"
- height="18"
- layout="topleft"
- left_pad="8"
- name="voice_label"
- top_delta="0"
- value="Voice:"
- width="76" />
- <text
- follows="right|top"
- height="18"
- layout="topleft"
- left_pad="0"
- name="voice_value"
- top_delta="0"
- value="On"
- width="60" />
- <icon
- follows="top|left"
- height="18"
- image_name="parcel_drk_Fly"
- layout="topleft"
- left="20"
- name="icon_Fly"
- top_pad="3"
- width="22" />
- <icon
- follows="top|left"
- height="18"
- image_name="parcel_drk_FlyNo"
- layout="topleft"
- left="20"
- name="icon_FlyNo"
- top_delta="0"
- visible="false"
- width="22" />
- <text
- follows="left|top"
- height="16"
- layout="topleft"
- left_pad="8"
- name="fly_label"
- value="Fly:"
- width="76" />
- <text
- follows="right|top"
- height="16"
- layout="topleft"
- left_pad="0"
- name="fly_value"
- top_delta="0"
- value="On"
- width="60" />
- <icon
- follows="top|left"
- height="18"
- image_name="parcel_drk_Push"
- layout="topleft"
- left="20"
- name="icon_Push"
- top_pad="3"
- visible="false"
- width="22" />
- <icon
- follows="top|left"
- height="18"
- image_name="parcel_drk_PushNo"
- layout="topleft"
- left="20"
- name="icon_PushNo"
- top_delta="0"
- width="22" />
- <text
- follows="left|top"
- height="14"
- layout="topleft"
- left_pad="8"
- name="push_label"
- value="Push:"
- width="76" />
- <text
- follows="right|top"
- height="14"
- layout="topleft"
- left_pad="0"
- name="push_value"
- top_delta="0"
- value="Off"
- width="60" />
- <icon
- follows="top|left"
- height="18"
- image_name="parcel_drk_Build"
- layout="topleft"
- left="20"
- name="icon_Build"
- top_pad="3"
- width="22" />
- <icon
- follows="top|left"
- height="18"
- image_name="parcel_drk_BuildNo"
- layout="topleft"
- left="20"
- name="icon_BuildNo"
- top_delta="0"
- visible="false" />
- <text
- follows="left|top"
- height="14"
- layout="topleft"
- left_pad="8"
- name="build_label"
- value="Build:"
- width="76" />
- <text
- follows="right|top"
- height="15"
- layout="topleft"
- left_pad="0"
- name="build_value"
- top_delta="0"
- value="On"
- width="60" />
- <icon
- follows="top|left"
- height="18"
- image_name="parcel_drk_Scripts"
- layout="topleft"
- left="20"
- name="icon_Scripts"
- top_pad="3"
- width="22" />
- <icon
- follows="top|left"
- height="18"
- image_name="parcel_drk_ScriptsNo"
- layout="topleft"
- left="20"
- name="icon_ScriptsNo"
- top_delta="0"
- visible="false" />
- <text
- follows="left|top"
- height="14"
- layout="topleft"
- left_pad="8"
- name="scripts_label"
- value="Scripts:"
- width="76" />
- <text
- follows="right|top"
- height="14"
- layout="topleft"
- left_pad="0"
- name="scripts_value"
- top_delta="0"
- value="On"
- width="60" />
- <icon
- follows="top|left"
- height="18"
- image_name="parcel_drk_Damage"
- layout="topleft"
- left="20"
- name="icon_Damage"
- top_pad="7"
- visible="false"
- width="22" />
- <icon
- follows="top|left"
- height="18"
- image_name="parcel_drk_DamageNo"
- layout="topleft"
- left="20"
- name="icon_DamageNo"
- top_delta="0" />
- <text
- follows="left|top"
- height="14"
- layout="topleft"
- left_pad="8"
- name="damage_label"
- value="Damage:"
- width="76" />
- <text
- follows="right|top"
- height="14"
- layout="topleft"
- left_pad="0"
- name="damage_value"
- top_delta="0"
- value="Off"
- width="60" />
- <button
- follows="bottom|right"
- height="19"
- label="About Land"
- layout="topleft"
- name="about_land_btn"
- right="-5"
- tab_stop="false"
- top="138"
- width="90">
- <click_callback
- function="ShowFloater"
- parameter="about_land" />
- </button>
- </panel>
- </scroll_container>
- </accordion_tab>
- <accordion_tab
- expanded="false"
- layout="topleft"
- name="region_information_tab"
- title="Region">
- <panel
- follows="all"
- height="125"
- layout="topleft"
- left="0"
- top="0"
- width="290">
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="10"
- name="region_name_label"
- top_pad="5"
- value="Region:"
- width="80" />
- <text
- follows="left|top|right"
- height="15"
- layout="topleft"
- left_pad="0"
- name="region_name"
- top_delta="0"
- value="Mooseland"
- width="195" />
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="10"
- name="region_type_label"
- top_pad="5"
- value="Type:"
- width="80" />
- <text
- follows="left|top|right"
- height="15"
- layout="topleft"
- left_pad="0"
- name="region_type"
- top_delta="0"
- value="Moose"
- width="195" />
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="10"
- name="region_rating_label"
- top_pad="7"
- value="Rating:"
- width="80" />
- <icon
- follows="top|left"
- height="16"
- image_name="parcel_drk_M"
- layout="topleft"
- left_pad="0"
- name="icon_M"
- width="18" />
- <icon
- follows="top|left"
- height="16"
- image_name="parcel_drk_R"
- layout="topleft"
- left_delta="0"
- name="icon_R"
- top_delta="0"
- visible="false"
- width="18" />
- <icon
- follows="top|left"
- height="16"
- image_name="parcel_drk_PG"
- layout="topleft"
- left_delta="0"
- name="icon_PG"
- top_delta="0"
- visible="false"
- width="18" />
- <text
- follows="left|top|right"
- height="15"
- layout="topleft"
- left_pad="10"
- name="region_rating"
- value="Explicit"
- width="100" />
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="10"
- name="region_owner_label"
- top_pad="5"
- value="Owner:"
- width="80" />
- <text
- follows="left|top|right"
- height="15"
- layout="topleft"
- left_pad="0"
- name="region_owner"
- top_delta="0"
- value="moose Van Moose"
- width="195" />
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="10"
- name="region_group_label"
- top_pad="5"
- value="Group:"
- width="80" />
- <text
- follows="left|top|right"
- height="15"
- layout="topleft"
- left_pad="0"
- name="region_group"
- top_delta="0"
- use_ellipses="true"
- width="195">
- The Mighty Moose of mooseville soundvillemoose
- </text>
- <button
- follows="bottom|right"
- height="19"
- label="Region/Estate"
- layout="topleft"
- name="region_info_btn"
- right="-5"
- tab_stop="false"
- width="105">
- <click_callback
- function="ShowFloater"
- parameter="region_info" />
- </button>
- </panel>
- </accordion_tab>
- <accordion_tab
- expanded="false"
- layout="topleft"
- name="estate_information_tab"
- title="Estate">
- <panel
- follows="all"
- height="189"
- layout="topleft"
- left="0"
- top="0"
- width="290">
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="10"
- name="estate_name_label"
- top_pad="5"
- value="Estate:"
- width="80" />
- <text
- follows="left|top|right"
- height="15"
- layout="topleft"
- left="90"
- name="estate_name"
- top_delta="0"
- width="160" />
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="10"
- name="estate_rating_label"
- top_pad="5"
- value="Rating:"
- width="80" />
- <text
- follows="left|top|right"
- height="15"
- layout="topleft"
- left="90"
- name="estate_rating"
- top_delta="0"
- width="160" />
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="10"
- name="estate_owner_label"
- top_pad="5"
- value="Owner:"
- width="80" />
- <text
- follows="left|top|right"
- height="15"
- layout="topleft"
- left="90"
- name="estate_owner"
- top_delta="0"
- width="160" />
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="10"
- name="covenant_label"
- top_pad="5"
- value="Covenant:"
- width="220" />
- <text_editor
- bg_focus_color="DkGray2"
- bg_readonly_color="DkGray2"
- follows="left|top|right"
- handle_edit_keys_directly="true"
- height="90"
- layout="topleft"
- left="10"
- max_length="65535"
- name="covenant"
- read_only="true"
- top_pad="0"
- width="280" />
- </panel>
- </accordion_tab>
- <accordion_tab
- expanded="false"
- layout="topleft"
- name="sales_tab"
- title="For Sale">
- <panel
- follows="all"
- height="300"
- layout="topleft"
- left="0"
- top="0"
- width="290">
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="10"
- name="sales_price_label"
- top_pad="5"
- value="Price:"
- width="100" />
- <text
- follows="left|top|right"
- height="15"
- layout="topleft"
- left="110"
- name="sales_price"
- top_delta="0"
- width="140" />
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="10"
- name="area_label"
- top_pad="5"
- value="Area:"
- width="100" />
- <text
- follows="left|top|right"
- height="15"
- layout="topleft"
- left="110"
- name="area"
- top_delta="0"
- width="140" />
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="10"
- name="traffic_label"
- top_pad="5"
- value="Traffic:"
- width="100" />
- <text
- follows="left|top|right"
- height="15"
- layout="topleft"
- left="110"
- name="traffic"
- top_delta="0"
- width="140" />
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="10"
- name="primitives_label"
- top_pad="5"
- value="Primitives:"
- width="100" />
- <text
- follows="left|top|right"
- height="15"
- layout="topleft"
- left="110"
- name="primitives"
- top_delta="0"
- width="140" />
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="10"
- name="parcel_scripts_label"
- top_pad="5"
- value="Scripts:"
- width="100" />
- <text
- follows="left|top|right"
- height="15"
- layout="topleft"
- left="110"
- name="parcel_scripts"
- top_delta="0"
- width="140" />
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="10"
- name="terraform_limits_label"
- top_pad="5"
- value="Terraform limits:"
- width="100" />
- <text
- follows="left|top|right"
- height="15"
- layout="topleft"
- left="110"
- name="terraform_limits"
- top_delta="0"
- width="140" />
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="10"
- name="subdivide_label"
- top_pad="5"
- value="Subdivide/Join ability:"
- width="220" />
- <text_editor
- bg_focus_color="DkGray2"
- bg_readonly_color="DkGray2"
- follows="left|top|right"
- height="45"
- layout="topleft"
- left="10"
- max_length="65535"
- name="subdivide"
- read_only="true"
- top_pad="5"
- width="245" />
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="10"
- name="resale_label"
- top_pad="5"
- value="ReSale ability:"
- width="80" />
- <text_editor
- bg_focus_color="DkGray2"
- bg_readonly_color="DkGray2"
- follows="left|top|right"
- height="45"
- layout="topleft"
- left="10"
- max_length="65535"
- name="resale"
- read_only="true"
- top_pad="5"
- width="245" />
- <text
- follows="left|top"
- height="15"
- layout="topleft"
- left="10"
- name="sale_to_label"
- top_pad="5"
- value="For sale to:"
- width="80" />
- <text
- follows="left|top|right"
- height="15"
- layout="topleft"
- left="90"
- name="sale_to"
- top_delta="0"
- width="160" />
- </panel>
- </accordion_tab>
- </accordion>
- </panel>
- </scroll_container>
-</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml
index 87ac5be74a..5aa53ab46b 100644
--- a/indra/newview/skins/default/xui/en/panel_places.xml
+++ b/indra/newview/skins/default/xui/en/panel_places.xml
@@ -40,26 +40,14 @@ background_visible="true"
top_pad="10"
width="313" />
<panel
- class="panel_place_profile"
- filename="panel_place_profile.xml"
+ class="panel_place_info"
+ filename="panel_place_info.xml"
follows="all"
height="533"
layout="topleft"
left="0"
help_topic="places_info_tab"
- name="panel_place_profile"
- top="5"
- visible="false"
- width="313" />
- <panel
- class="panel_landmark_info"
- filename="panel_landmark_info.xml"
- follows="all"
- height="533"
- layout="topleft"
- left="0"
- help_topic="places_info_tab"
- name="panel_landmark_info"
+ name="panel_place_info"
top="5"
visible="false"
width="313" />
diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml
index c3a92f9d9a..5af7d7d674 100644
--- a/indra/newview/skins/default/xui/en/panel_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile.xml
@@ -157,7 +157,7 @@
value="http://librarianavengers.org"
width="280"
word_wrap="false"
- use_ellipses="true"
+ use_elipsis="true"
/>
<text
follows="left|top"
diff --git a/indra/newview/skins/default/xui/en/panel_profile_view.xml b/indra/newview/skins/default/xui/en/panel_profile_view.xml
index 4b2e901718..195b731531 100644
--- a/indra/newview/skins/default/xui/en/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile_view.xml
@@ -36,7 +36,7 @@
text_color="white"
top="0"
value="(Loading...)"
- use_ellipses="true"
+ use_elipsis="true"
width="275" />
<text
follows="top|left"
diff --git a/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml b/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml
index 6171be034f..ab4ad94089 100644
--- a/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml
+++ b/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml
@@ -15,14 +15,14 @@
image_disabled_selected="ComboButton_Disabled_Selected" />
<gesture_combo_box.drop_down_button name="Drop Down Button"
label=""
- halign="center"
hover_glow_amount="0.15"
font="SansSerif"
scale_image="true"
- image_unselected="PushButton_Off"
- image_selected="PushButton_Selected"
- image_disabled="PushButton_Disabled"
- image_disabled_selected="PushButton_Selected_Disabled" />
+ pad_right="24"
+ image_unselected="DropDown_Off"
+ image_selected="DropDown_Selected"
+ image_disabled="DropDown_Disabled"
+ image_disabled_selected="DropDown_Disabled_Selected" />
<gesture_combo_box.combo_list bg_writeable_color="MenuDefaultBgColor"
scroll_bar_bg_visible="true" />
<gesture_combo_box.combo_editor name="Combo Text Entry"
diff --git a/indra/newview/skins/default/xui/en/widgets/talk_button.xml b/indra/newview/skins/default/xui/en/widgets/talk_button.xml
deleted file mode 100644
index 725492052c..0000000000
--- a/indra/newview/skins/default/xui/en/widgets/talk_button.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!-- Derives from LLUICtrl -->
-<talk_button>
- <!-- To make speak button look green when selected set:
- image_selected="SegmentedBtn_Left_Selected"
- image_unselected="SegmentedBtn_Left_Off"
- -->
- <speak_button
- name="left"
- label="Speak"
- label_selected="Speak"
- font="SansSerifSmall"
- tab_stop="false"
- is_toggle="true"
- picture_style="true"
- />
- <show_button
- name="right"
- label=""
- left="0"
- top="0"
- right="20"
- bottom="0"
- tab_stop="false"
- is_toggle="true"
- picture_style="true"
- image_selected="ComboButton_Selected"
- image_unselected="ComboButton_Off"
- />
- <monitor
- name="monitor"
- left="0"
- top="18"
- right="18"
- bottom="0"
- />
-</talk_button>