summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rw-r--r--indra/cmake/CARes.cmake1
-rw-r--r--indra/llmessage/llares.cpp2
-rw-r--r--indra/llui/llaccordionctrl.cpp4
-rw-r--r--indra/llui/lltextbase.cpp2
-rw-r--r--indra/newview/llappearancemgr.cpp12
-rw-r--r--indra/newview/llchathistory.cpp2
-rw-r--r--indra/newview/llfolderview.cpp7
-rw-r--r--indra/newview/llinventoryfunctions.h26
-rw-r--r--indra/newview/llinventoryitemslist.cpp60
-rw-r--r--indra/newview/llinventoryitemslist.h10
-rw-r--r--indra/newview/llinventorypanel.cpp2
-rw-r--r--indra/newview/llnearbychathandler.cpp8
-rw-r--r--indra/newview/lloutfitslist.cpp30
-rw-r--r--indra/newview/llpaneloutfitedit.cpp145
-rw-r--r--indra/newview/llpaneloutfitedit.h73
-rw-r--r--indra/newview/llpaneloutfitsinventory.cpp76
-rw-r--r--indra/newview/llpanelplaceprofile.cpp4
-rw-r--r--indra/newview/llparticipantlist.cpp33
-rw-r--r--indra/newview/llwearableitemslist.cpp49
-rw-r--r--indra/newview/llwearableitemslist.h32
-rw-r--r--indra/newview/skins/default/xui/en/menu_outfit_gear.xml16
-rw-r--r--indra/newview/skins/default/xui/en/menu_outfit_tab.xml20
-rw-r--r--indra/newview/skins/default/xui/en/outfit_accordion_tab.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_classified_info.xml4
-rw-r--r--indra/newview/skins/default/xui/en/panel_clothing_list_item.xml9
-rw-r--r--indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml3
-rw-r--r--indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml3
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_classified.xml4
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_pick.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_wearable.xml5
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml4
-rw-r--r--indra/newview/skins/default/xui/en/panel_landmark_info.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_outfit_edit.xml26
-rw-r--r--indra/newview/skins/default/xui/en/panel_outfits_inventory.xml24
-rw-r--r--indra/newview/skins/default/xui/en/panel_pick_info.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_place_profile.xml4
-rw-r--r--indra/newview/skins/default/xui/en/panel_places.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_profile_view.xml6
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_appearance.xml3
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_item_info.xml4
-rw-r--r--indra/newview/skins/default/xui/it/floater_about.xml4
-rw-r--r--indra/newview/skins/default/xui/it/floater_about_land.xml3
-rw-r--r--indra/newview/skins/default/xui/it/floater_avatar_textures.xml73
-rw-r--r--indra/newview/skins/default/xui/it/floater_buy_currency_html.xml2
-rw-r--r--indra/newview/skins/default/xui/it/floater_map.xml2
-rw-r--r--indra/newview/skins/default/xui/it/floater_moveview.xml36
-rw-r--r--indra/newview/skins/default/xui/it/floater_preview_notecard.xml4
-rw-r--r--indra/newview/skins/default/xui/it/floater_tools.xml10
-rw-r--r--indra/newview/skins/default/xui/it/menu_attachment_self.xml2
-rw-r--r--indra/newview/skins/default/xui/it/menu_avatar_self.xml4
-rw-r--r--indra/newview/skins/default/xui/it/menu_bottomtray.xml5
-rw-r--r--indra/newview/skins/default/xui/it/menu_inspect_self_gear.xml2
-rw-r--r--indra/newview/skins/default/xui/it/menu_inventory.xml1
-rw-r--r--indra/newview/skins/default/xui/it/menu_login.xml2
-rw-r--r--indra/newview/skins/default/xui/it/menu_participant_list.xml4
-rw-r--r--indra/newview/skins/default/xui/it/menu_viewer.xml4
-rw-r--r--indra/newview/skins/default/xui/it/notifications.xml107
-rw-r--r--indra/newview/skins/default/xui/it/panel_body_parts_list_item.xml4
-rw-r--r--indra/newview/skins/default/xui/it/panel_bodyparts_list_button_bar.xml5
-rw-r--r--indra/newview/skins/default/xui/it/panel_bottomtray.xml23
-rw-r--r--indra/newview/skins/default/xui/it/panel_clothing_list_button_bar.xml5
-rw-r--r--indra/newview/skins/default/xui/it/panel_clothing_list_item.xml4
-rw-r--r--indra/newview/skins/default/xui/it/panel_cof_wearables.xml8
-rw-r--r--indra/newview/skins/default/xui/it/panel_deletable_wearable_list_item.xml4
-rw-r--r--indra/newview/skins/default/xui/it/panel_dummy_clothing_list_item.xml4
-rw-r--r--indra/newview/skins/default/xui/it/panel_edit_shape.xml12
-rw-r--r--indra/newview/skins/default/xui/it/panel_edit_tattoo.xml1
-rw-r--r--indra/newview/skins/default/xui/it/panel_edit_wearable.xml6
-rw-r--r--indra/newview/skins/default/xui/it/panel_group_land_money.xml3
-rw-r--r--indra/newview/skins/default/xui/it/panel_group_notices.xml1
-rw-r--r--indra/newview/skins/default/xui/it/panel_login.xml12
-rw-r--r--indra/newview/skins/default/xui/it/panel_main_inventory.xml66
-rw-r--r--indra/newview/skins/default/xui/it/panel_outfit_edit.xml15
-rw-r--r--indra/newview/skins/default/xui/it/panel_people.xml10
-rw-r--r--indra/newview/skins/default/xui/it/panel_preferences_advanced.xml1
-rw-r--r--indra/newview/skins/default/xui/it/panel_preferences_chat.xml1
-rw-r--r--indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml7
-rw-r--r--indra/newview/skins/default/xui/it/sidepanel_appearance.xml8
-rw-r--r--indra/newview/skins/default/xui/it/sidepanel_inventory.xml1
-rw-r--r--indra/newview/skins/default/xui/it/strings.xml164
81 files changed, 984 insertions, 386 deletions
diff --git a/indra/cmake/CARes.cmake b/indra/cmake/CARes.cmake
index 8a2dc01561..1850b706ac 100644
--- a/indra/cmake/CARes.cmake
+++ b/indra/cmake/CARes.cmake
@@ -9,6 +9,7 @@ if (STANDALONE)
include(FindCARes)
else (STANDALONE)
use_prebuilt_binary(ares)
+ add_definitions("-DCARES_STATICLIB")
if (WINDOWS)
set(CARES_LIBRARIES areslib)
elseif (DARWIN)
diff --git a/indra/llmessage/llares.cpp b/indra/llmessage/llares.cpp
index 00e77d20e9..78561b37aa 100644
--- a/indra/llmessage/llares.cpp
+++ b/indra/llmessage/llares.cpp
@@ -473,7 +473,7 @@ bool LLAres::process(U64 timeout)
ll_init_apr();
}
- int socks[ARES_GETSOCK_MAXNUM];
+ ares_socket_t socks[ARES_GETSOCK_MAXNUM];
apr_pollfd_t aprFds[ARES_GETSOCK_MAXNUM];
apr_int32_t nsds = 0;
int nactive = 0;
diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp
index cd23d5cd33..fc93793ed8 100644
--- a/indra/llui/llaccordionctrl.cpp
+++ b/indra/llui/llaccordionctrl.cpp
@@ -523,6 +523,8 @@ void LLAccordionCtrl::arrangeMultiple()
void LLAccordionCtrl::arrange()
{
+ updateNoTabsHelpTextVisibility();
+
if( mAccordionTabs.size() == 0)
{
//We do not arrange if we do not have what should be arranged
@@ -818,7 +820,7 @@ void LLAccordionCtrl::setFilterSubString(const std::string& filter_string)
{
LLStringUtil::format_map_t args;
args["[SEARCH_TERM]"] = LLURI::escape(filter_string);
- std::string text = mNoVisibleTabsOrigString;
+ std::string text = filter_string.empty() ? LLStringUtil::null : mNoVisibleTabsOrigString;
LLStringUtil::format(text, args);
mNoVisibleTabsHelpText->setValue(text);
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 72f3a14822..1a4b804ce4 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -2791,7 +2791,7 @@ bool LLImageTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& width
height = llceil(mStyle->getFont()->getLineHeight());;
LLUIImagePtr image = mStyle->getImage();
- if( image.notNull())
+ if( num_chars>0 && image.notNull())
{
width += image->getWidth() + IMAGE_HPAD;
height = llmax(height, image->getHeight() + IMAGE_HPAD );
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 12d2752180..3691d731ed 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -965,18 +965,10 @@ bool LLAppearanceMgr::getCanRemoveOutfit(const LLUUID& outfit_cat_id)
return false;
}
- // Check if the folder contains worn items.
- LLInventoryModel::cat_array_t cats;
- LLInventoryModel::item_array_t items;
- LLFindWorn filter_worn;
- gInventory.collectDescendentsIf(outfit_cat_id, cats, items, false, filter_worn);
- if (!items.empty())
- {
- return false;
- }
-
// Check for the folder's non-removable descendants.
LLFindNonRemovableObjects filter_non_removable;
+ LLInventoryModel::cat_array_t cats;
+ LLInventoryModel::item_array_t items;
LLInventoryModel::item_array_t::const_iterator it;
gInventory.collectDescendentsIf(outfit_cat_id, cats, items, false, filter_non_removable);
if (!cats.empty() || !items.empty())
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 961969a5c5..18c69b5130 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -243,7 +243,7 @@ public:
gCacheName->get(mAvatarID, FALSE, boost::bind(&LLChatHistoryHeader::nameUpdatedCallback, this, _1, _2, _3, _4));
//*TODO overly defensive thing, source type should be maintained out there
- if((chat.mFromID.isNull() && chat.mFromName.empty()) || chat.mFromName == SYSTEM_FROM)
+ if((chat.mFromID.isNull() && chat.mFromName.empty()) || chat.mFromName == SYSTEM_FROM && chat.mFromID.isNull())
{
mSourceType = CHAT_SOURCE_SYSTEM;
}
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index 010033fcd3..74034cfbf7 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -88,6 +88,10 @@ const S32 MIN_ITEM_WIDTH_VISIBLE = LLFolderViewItem::ICON_WIDTH
+ /*first few characters*/ 40;
const S32 MINIMUM_RENAMER_WIDTH = 80;
+// *TODO: move in params in xml if necessary. Requires modification of LLFolderView & LLInventoryPanel Params.
+const S32 STATUS_TEXT_HPAD = 6;
+const S32 STATUS_TEXT_VPAD = 8;
+
enum {
SIGNAL_NO_KEYBOARD_FOCUS = 1,
SIGNAL_KEYBOARD_FOCUS = 2
@@ -247,6 +251,9 @@ LLFolderView::LLFolderView(const Params& p)
text_p.visible(false);
text_p.allow_html(true);
text_p.wrap(true); // allow multiline text. See EXT-7564, EXT-7047
+ // set text padding the same as in People panel. EXT-7047, EXT-4837
+ text_p.h_pad(STATUS_TEXT_HPAD);
+ text_p.v_pad(STATUS_TEXT_VPAD);
mStatusTextBox = LLUICtrlFactory::create<LLTextBox> (text_p);
mStatusTextBox->setFollowsLeft();
mStatusTextBox->setFollowsTop();
diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h
index c82ebd1439..93c56e1b8a 100644
--- a/indra/newview/llinventoryfunctions.h
+++ b/indra/newview/llinventoryfunctions.h
@@ -271,6 +271,32 @@ public:
//
//
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+class LLFindByMask : public LLInventoryCollectFunctor
+{
+public:
+ LLFindByMask(U64 mask)
+ : mFilterMask(mask)
+ {}
+
+ virtual bool operator()(LLInventoryCategory* cat, LLInventoryItem* item)
+ {
+ if(item && (mFilterMask & (1LL << item->getInventoryType())) )
+ {
+ return true;
+ }
+
+ return false;
+ }
+
+private:
+ U64 mFilterMask;
+};
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLFindNonLinksByMask
+//
+//
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class LLFindNonLinksByMask : public LLInventoryCollectFunctor
{
public:
diff --git a/indra/newview/llinventoryitemslist.cpp b/indra/newview/llinventoryitemslist.cpp
index 55cb2619cf..23ea786484 100644
--- a/indra/newview/llinventoryitemslist.cpp
+++ b/indra/newview/llinventoryitemslist.cpp
@@ -70,23 +70,19 @@ void LLPanelInventoryListItemBase::draw()
{
if (getNeedsRefresh())
{
- updateItem();
+ if (mItem)
+ {
+ updateItem(mItem->getName());
+ }
setNeedsRefresh(false);
}
LLPanel::draw();
}
-void LLPanelInventoryListItemBase::updateItem()
+// virtual
+void LLPanelInventoryListItemBase::updateItem(const std::string& name)
{
setIconImage(mIconImage);
-
- std::string name = mItem->getName();
-
- if (get_is_item_worn(mItem->getUUID()))
- {
- name += LLTrans::getString("worn");
- }
-
setTitle(name, mHighlightedText);
}
@@ -140,7 +136,11 @@ BOOL LLPanelInventoryListItemBase::postBuild()
setIconCtrl(getChild<LLIconCtrl>("item_icon"));
setTitleCtrl(getChild<LLTextBox>("item_name"));
- mIconImage = LLInventoryIcon::getIcon(mItem->getType(), mItem->getInventoryType(), mItem->getFlags(), FALSE);
+ if (mItem)
+ {
+ mIconImage = LLInventoryIcon::getIcon(mItem->getType(), mItem->getInventoryType(), mItem->getFlags(), FALSE);
+ updateItem(mItem->getName());
+ }
setNeedsRefresh(true);
@@ -169,6 +169,42 @@ void LLPanelInventoryListItemBase::onMouseLeave(S32 x, S32 y, MASK mask)
LLPanel::onMouseLeave(x, y, mask);
}
+const std::string& LLPanelInventoryListItemBase::getItemName() const
+{
+ if (!mItem)
+ {
+ return LLStringUtil::null;
+ }
+ return mItem->getName();
+}
+
+LLAssetType::EType LLPanelInventoryListItemBase::getType() const
+{
+ if (!mItem)
+ {
+ return LLAssetType::AT_NONE;
+ }
+ return mItem->getType();
+}
+
+LLWearableType::EType LLPanelInventoryListItemBase::getWearableType() const
+{
+ if (!mItem)
+ {
+ return LLWearableType::WT_NONE;
+ }
+ return mItem->getWearableType();
+}
+
+const std::string& LLPanelInventoryListItemBase::getDescription() const
+{
+ if (!mItem)
+ {
+ return LLStringUtil::null;
+ }
+ return mItem->getDescription();
+}
+
S32 LLPanelInventoryListItemBase::notify(const LLSD& info)
{
S32 rv = 0;
@@ -176,7 +212,7 @@ S32 LLPanelInventoryListItemBase::notify(const LLSD& info)
{
mHighlightedText = info["match_filter"].asString();
- std::string test(mItem->getName());
+ std::string test(mTitleCtrl->getText());
LLStringUtil::toUpper(test);
if(mHighlightedText.empty() || std::string::npos != test.find(mHighlightedText))
diff --git a/indra/newview/llinventoryitemslist.h b/indra/newview/llinventoryitemslist.h
index c1b1a6f281..d6132717e8 100644
--- a/indra/newview/llinventoryitemslist.h
+++ b/indra/newview/llinventoryitemslist.h
@@ -122,16 +122,16 @@ public:
/*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
/** Get the name of a corresponding inventory item */
- const std::string& getItemName() const { return mItem->getName(); }
+ const std::string& getItemName() const;
/** Get the asset type of a corresponding inventory item */
- LLAssetType::EType getType() const { return mItem->getType(); }
+ LLAssetType::EType getType() const;
/** Get the wearable type of a corresponding inventory item */
- LLWearableType::EType getWearableType() const { return mItem->getWearableType(); }
+ LLWearableType::EType getWearableType() const;
/** Get the description of a corresponding inventory item */
- const std::string& getDescription() const { return mItem->getDescription(); }
+ const std::string& getDescription() const;
/** Get the associated inventory item */
LLViewerInventoryItem* getItem() const { return mItem; }
@@ -152,7 +152,7 @@ protected:
/**
* Called after inventory item was updated, update panel widgets to reflect inventory changes.
*/
- virtual void updateItem();
+ virtual void updateItem(const std::string& name);
/** setter for mIconCtrl */
void setIconCtrl(LLIconCtrl* icon) { mIconCtrl = icon; }
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 7d81cf18aa..6b0103e0de 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -189,6 +189,8 @@ LLInventoryPanel::~LLInventoryPanel()
}
}
+ gIdleCallbacks.deleteFunction(onIdle, this);
+
// LLView destructor will take care of the sub-views.
mInventory->removeObserver(mInventoryObserver);
delete mInventoryObserver;
diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp
index 4b5e765c4f..1fadb126e4 100644
--- a/indra/newview/llnearbychathandler.cpp
+++ b/indra/newview/llnearbychathandler.cpp
@@ -32,6 +32,7 @@
#include "llviewerprecompiledheaders.h"
+#include "llagentdata.h" // for gAgentID
#include "llnearbychathandler.h"
#include "llbottomtray.h"
@@ -367,6 +368,13 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args)
{
if(gSavedSettings.getBOOL("ShowScriptErrors") == FALSE)
return;
+
+ // don't process debug messages from not owned objects, see EXT-7762
+ if (gAgentID != chat_msg.mOwnerID)
+ {
+ return;
+ }
+
if (gSavedSettings.getS32("ShowScriptErrorsLocation")== 1)// show error in window //("ScriptErrorsAsChat"))
{
diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp
index bca292fa4a..03df2d2b20 100644
--- a/indra/newview/lloutfitslist.cpp
+++ b/indra/newview/lloutfitslist.cpp
@@ -90,17 +90,33 @@ protected:
registrar.add("Outfit.Delete", boost::bind(deleteOutfit, selected_id));
enable_registrar.add("Outfit.OnEnable", boost::bind(&OutfitContextMenu::onEnable, this, _2));
+ enable_registrar.add("Outfit.OnVisible", boost::bind(&OutfitContextMenu::onVisible, this, _2));
return createFromFile("menu_outfit_tab.xml");
}
- bool onEnable(const LLSD& data)
+ bool onEnable(LLSD::String param)
+ {
+ LLUUID outfit_cat_id = mUUIDs.back();
+
+ if ("rename" == param)
+ {
+ return get_is_category_renameable(&gInventory, outfit_cat_id);
+ }
+
+ return true;
+ }
+
+ bool onVisible(LLSD::String param)
{
- std::string param = data.asString();
LLUUID outfit_cat_id = mUUIDs.back();
bool is_worn = LLAppearanceMgr::instance().getBaseOutfitUUID() == outfit_cat_id;
- if ("wear_replace" == param)
+ if ("edit" == param)
+ {
+ return is_worn;
+ }
+ else if ("wear_replace" == param)
{
return !is_worn;
}
@@ -112,14 +128,6 @@ protected:
{
return is_worn;
}
- else if ("edit" == param)
- {
- return is_worn;
- }
- else if ("rename" == param)
- {
- return get_is_category_renameable(&gInventory, outfit_cat_id);
- }
else if ("delete" == param)
{
return LLAppearanceMgr::instance().getCanRemoveOutfit(outfit_cat_id);
diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp
index 32b209dd0d..1454a2f6af 100644
--- a/indra/newview/llpaneloutfitedit.cpp
+++ b/indra/newview/llpaneloutfitedit.cpp
@@ -65,6 +65,7 @@
#include "llsaveoutfitcombobtn.h"
#include "llscrolllistctrl.h"
#include "lltextbox.h"
+#include "lltrans.h"
#include "lluictrlfactory.h"
#include "llsdutil.h"
#include "llsidepanelappearance.h"
@@ -188,9 +189,8 @@ LLPanelOutfitEdit::LLPanelOutfitEdit()
mCOFDragAndDropObserver(NULL),
mInitialized(false),
mAddWearablesPanel(NULL),
- mWearableListMaskCollector(NULL),
- mWearableListTypeCollector(NULL),
- mFilterComboBox(NULL)
+ mFolderViewFilterCmbBox(NULL),
+ mListViewFilterCmbBox(NULL)
{
mSavedFolderState = new LLSaveFolderState();
mSavedFolderState->setApply(FALSE);
@@ -202,12 +202,11 @@ LLPanelOutfitEdit::LLPanelOutfitEdit()
observer.addOutfitLockChangedCallback(boost::bind(&LLPanelOutfitEdit::updateVerbs, this));
observer.addCOFChangedCallback(boost::bind(&LLPanelOutfitEdit::update, this));
- mLookItemTypes.reserve(NUM_LOOK_ITEM_TYPES);
- for (U32 i = 0; i < NUM_LOOK_ITEM_TYPES; i++)
+ mFolderViewItemTypes.reserve(NUM_FOLDER_VIEW_ITEM_TYPES);
+ for (U32 i = 0; i < NUM_FOLDER_VIEW_ITEM_TYPES; i++)
{
- mLookItemTypes.push_back(LLLookItemType());
+ mFolderViewItemTypes.push_back(LLLookItemType());
}
-
}
@@ -217,17 +216,40 @@ LLPanelOutfitEdit::~LLPanelOutfitEdit()
delete mCOFDragAndDropObserver;
- delete mWearableListMaskCollector;
- delete mWearableListTypeCollector;
+ while (!mListViewItemTypes.empty()) {
+ delete mListViewItemTypes.back();
+ mListViewItemTypes.pop_back();
+ }
}
BOOL LLPanelOutfitEdit::postBuild()
{
// gInventory.isInventoryUsable() no longer needs to be tested per Richard's fix for race conditions between inventory and panels
-
- mLookItemTypes[LIT_ALL] = LLLookItemType(getString("Filter.All"), ALL_ITEMS_MASK);
- mLookItemTypes[LIT_WEARABLE] = LLLookItemType(getString("Filter.Clothes/Body"), WEARABLE_MASK);
- mLookItemTypes[LIT_ATTACHMENT] = LLLookItemType(getString("Filter.Objects"), ATTACHMENT_MASK);
+
+ mFolderViewItemTypes[FVIT_ALL] = LLLookItemType(getString("Filter.All"), ALL_ITEMS_MASK);
+ mFolderViewItemTypes[FVIT_WEARABLE] = LLLookItemType(getString("Filter.Clothes/Body"), WEARABLE_MASK);
+ mFolderViewItemTypes[FVIT_ATTACHMENT] = LLLookItemType(getString("Filter.Objects"), ATTACHMENT_MASK);
+
+ //order is important, see EListViewItemType for order information
+ mListViewItemTypes.push_back(new LLFilterItem(getString("Filter.All"), new LLFindByMask(ALL_ITEMS_MASK)));
+ mListViewItemTypes.push_back(new LLFilterItem(getString("Filter.Clothing"), new LLIsType(LLAssetType::AT_CLOTHING)));
+ mListViewItemTypes.push_back(new LLFilterItem(getString("Filter.Bodyparts"), new LLIsType(LLAssetType::AT_BODYPART)));
+ mListViewItemTypes.push_back(new LLFilterItem(getString("Filter.Objects"), new LLFindByMask(ATTACHMENT_MASK)));;
+ mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("shape"), new LLFindActualWearablesOfType(LLWearableType::WT_SHAPE)));
+ mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("skin"), new LLFindActualWearablesOfType(LLWearableType::WT_SKIN)));
+ mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("hair"), new LLFindActualWearablesOfType(LLWearableType::WT_HAIR)));
+ mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("eyes"), new LLFindActualWearablesOfType(LLWearableType::WT_EYES)));
+ mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("shirt"), new LLFindActualWearablesOfType(LLWearableType::WT_SHIRT)));
+ mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("pants"), new LLFindActualWearablesOfType(LLWearableType::WT_PANTS)));
+ mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("shoes"), new LLFindActualWearablesOfType(LLWearableType::WT_SHOES)));
+ mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("socks"), new LLFindActualWearablesOfType(LLWearableType::WT_SOCKS)));
+ mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("jacket"), new LLFindActualWearablesOfType(LLWearableType::WT_JACKET)));
+ mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("gloves"), new LLFindActualWearablesOfType(LLWearableType::WT_GLOVES)));
+ mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("undershirt"), new LLFindActualWearablesOfType(LLWearableType::WT_UNDERSHIRT)));
+ mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("underpants"), new LLFindActualWearablesOfType(LLWearableType::WT_UNDERPANTS)));
+ mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("skirt"), new LLFindActualWearablesOfType(LLWearableType::WT_SKIRT)));
+ mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("alpha"), new LLFindActualWearablesOfType(LLWearableType::WT_ALPHA)));
+ mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("tattoo"), new LLFindActualWearablesOfType(LLWearableType::WT_TATTOO)));
mCurrentOutfitName = getChild<LLTextBox>("curr_outfit_name");
mStatus = getChild<LLTextBox>("status");
@@ -252,7 +274,7 @@ BOOL LLPanelOutfitEdit::postBuild()
mAddWearablesPanel = getChild<LLPanel>("add_wearables_panel");
- mInventoryItemsPanel = getChild<LLInventoryPanel>("inventory_items");
+ mInventoryItemsPanel = getChild<LLInventoryPanel>("folder_view");
mInventoryItemsPanel->setFilterTypes(ALL_ITEMS_MASK);
mInventoryItemsPanel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
mInventoryItemsPanel->setSelectCallback(boost::bind(&LLPanelOutfitEdit::onInventorySelectionChange, this, _1, _2));
@@ -260,15 +282,24 @@ BOOL LLPanelOutfitEdit::postBuild()
mCOFDragAndDropObserver = new LLCOFDragAndDropObserver(mInventoryItemsPanel->getModel());
- mFilterComboBox = getChild<LLComboBox>("filter_wearables_combobox");
- mFilterComboBox->setCommitCallback(boost::bind(&LLPanelOutfitEdit::onTypeFilterChanged, this, _1));
- mFilterComboBox->removeall();
- for (U32 i = 0; i < mLookItemTypes.size(); ++i)
+ mFolderViewFilterCmbBox = getChild<LLComboBox>("folder_view_filter_combobox");
+ mFolderViewFilterCmbBox->setCommitCallback(boost::bind(&LLPanelOutfitEdit::onFolderViewFilterCommitted, this, _1));
+ mFolderViewFilterCmbBox->removeall();
+ for (U32 i = 0; i < mFolderViewItemTypes.size(); ++i)
{
- mFilterComboBox->add(mLookItemTypes[i].displayName);
+ mFolderViewFilterCmbBox->add(mFolderViewItemTypes[i].displayName);
}
- mFilterComboBox->setCurrentByIndex(LIT_ALL);
+ mFolderViewFilterCmbBox->setCurrentByIndex(FVIT_ALL);
+ mListViewFilterCmbBox = getChild<LLComboBox>("list_view_filter_combobox");
+ mListViewFilterCmbBox->setCommitCallback(boost::bind(&LLPanelOutfitEdit::onListViewFilterCommitted, this, _1));
+ mListViewFilterCmbBox->removeall();
+ for (U32 i = 0; i < mListViewItemTypes.size(); ++i)
+ {
+ mListViewFilterCmbBox->add(mListViewItemTypes[i]->displayName);
+ }
+ mListViewFilterCmbBox->setCurrentByIndex(LVIT_ALL);
+
mSearchFilter = getChild<LLFilterEditor>("look_item_filter");
mSearchFilter->setCommitCallback(boost::bind(&LLPanelOutfitEdit::onSearchEdit, this, _2));
@@ -283,11 +314,8 @@ BOOL LLPanelOutfitEdit::postBuild()
childSetAction(REVERT_BTN, boost::bind(&LLAppearanceMgr::wearBaseOutfit, LLAppearanceMgr::getInstance()));
- mWearableListMaskCollector = new LLFindNonLinksByMask(ALL_ITEMS_MASK);
- mWearableListTypeCollector = new LLFindActualWearablesOfType(LLWearableType::WT_NONE);
-
- mWearableItemsPanel = getChild<LLPanel>("filtered_wearables_panel");
- mWearableItemsList = getChild<LLInventoryItemsList>("filtered_wearables_list");
+ mWearablesListViewPanel = getChild<LLPanel>("filtered_wearables_panel");
+ mWearableItemsList = getChild<LLInventoryItemsList>("list_view");
mSaveComboBtn.reset(new LLSaveOutfitComboBtn(this));
return TRUE;
@@ -300,7 +328,7 @@ void LLPanelOutfitEdit::onOpen(const LLSD& key)
{
// *TODO: this method is called even panel is not visible to user because its parent layout panel is hidden.
// So, we can defer initializing a bit.
- mWearableListManager = new LLFilteredWearableListManager(mWearableItemsList, mWearableListMaskCollector);
+ mWearableListManager = new LLFilteredWearableListManager(mWearableItemsList, mListViewItemTypes[LVIT_ALL]->collector);
mWearableListManager->populateList();
displayCurrentOutfit();
mInitialized = true;
@@ -328,13 +356,17 @@ void LLPanelOutfitEdit::showAddWearablesPanel(bool show_add_wearables)
childSetValue("show_add_wearables_btn", show_add_wearables);
- childSetVisible("filter_wearables_combobox", show_add_wearables);
+ updateFiltersVisibility();
childSetVisible("filter_button", show_add_wearables);
//search filter should be disabled
if (!show_add_wearables)
{
childSetValue("filter_button", false);
+
+ mFolderViewFilterCmbBox->setVisible(false);
+ mListViewFilterCmbBox->setVisible(false);
+
showWearablesFilter();
}
@@ -358,33 +390,40 @@ void LLPanelOutfitEdit::showWearablesFilter()
void LLPanelOutfitEdit::showWearablesListView()
{
- if(switchPanels(mInventoryItemsPanel, mWearableItemsPanel))
+ if(switchPanels(mInventoryItemsPanel, mWearablesListViewPanel))
{
mFolderViewBtn->setToggleState(FALSE);
mFolderViewBtn->setImageOverlay(getString("folder_view_off"), mFolderViewBtn->getImageOverlayHAlign());
mListViewBtn->setImageOverlay(getString("list_view_on"), mListViewBtn->getImageOverlayHAlign());
+ updateFiltersVisibility();
}
mListViewBtn->setToggleState(TRUE);
}
void LLPanelOutfitEdit::showWearablesFolderView()
{
- if(switchPanels(mWearableItemsPanel, mInventoryItemsPanel))
+ if(switchPanels(mWearablesListViewPanel, mInventoryItemsPanel))
{
mListViewBtn->setToggleState(FALSE);
mListViewBtn->setImageOverlay(getString("list_view_off"), mListViewBtn->getImageOverlayHAlign());
mFolderViewBtn->setImageOverlay(getString("folder_view_on"), mFolderViewBtn->getImageOverlayHAlign());
+ updateFiltersVisibility();
}
mFolderViewBtn->setToggleState(TRUE);
}
-void LLPanelOutfitEdit::onTypeFilterChanged(LLUICtrl* ctrl)
+void LLPanelOutfitEdit::updateFiltersVisibility()
{
- U32 curr_filter_type = mFilterComboBox->getCurrentIndex();
- mInventoryItemsPanel->setFilterTypes(mLookItemTypes[curr_filter_type].inventoryMask);
+ mListViewFilterCmbBox->setVisible(mWearablesListViewPanel->getVisible());
+ mFolderViewFilterCmbBox->setVisible(mInventoryItemsPanel->getVisible());
+}
- mWearableListMaskCollector->setFilterMask(mLookItemTypes[curr_filter_type].inventoryMask);
- mWearableListManager->setFilterCollector(mWearableListMaskCollector);
+void LLPanelOutfitEdit::onFolderViewFilterCommitted(LLUICtrl* ctrl)
+{
+ S32 curr_filter_type = mFolderViewFilterCmbBox->getCurrentIndex();
+ if (curr_filter_type < 0) return;
+
+ mInventoryItemsPanel->setFilterTypes(mFolderViewItemTypes[curr_filter_type].inventoryMask);
mSavedFolderState->setApply(TRUE);
mInventoryItemsPanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
@@ -396,6 +435,14 @@ void LLPanelOutfitEdit::onTypeFilterChanged(LLUICtrl* ctrl)
LLInventoryModelBackgroundFetch::instance().start();
}
+void LLPanelOutfitEdit::onListViewFilterCommitted(LLUICtrl* ctrl)
+{
+ S32 curr_filter_type = mListViewFilterCmbBox->getCurrentIndex();
+ if (curr_filter_type < 0) return;
+
+ mWearableListManager->setFilterCollector(mListViewItemTypes[curr_filter_type]->collector);
+}
+
void LLPanelOutfitEdit::onSearchEdit(const std::string& string)
{
if (mSearchString != string)
@@ -453,7 +500,7 @@ void LLPanelOutfitEdit::onAddToOutfitClicked(void)
selected_id = listenerp->getUUID();
}
- else if (mWearableItemsPanel->getVisible())
+ else if (mWearablesListViewPanel->getVisible())
{
selected_id = mWearableItemsList->getSelectedUUID();
}
@@ -537,10 +584,16 @@ void LLPanelOutfitEdit::onInventorySelectionChange(const std::deque<LLFolderView
}
-void LLPanelOutfitEdit::applyFilter(e_look_item_type type)
+void LLPanelOutfitEdit::applyFolderViewFilter(EFolderViewItemType type)
{
- mFilterComboBox->setCurrentByIndex(type);
- mFilterComboBox->onCommit();
+ mFolderViewFilterCmbBox->setCurrentByIndex(type);
+ mFolderViewFilterCmbBox->onCommit();
+}
+
+void LLPanelOutfitEdit::applyListViewFilter(EListViewItemType type)
+{
+ mListViewFilterCmbBox->setCurrentByIndex(type);
+ mListViewFilterCmbBox->onCommit();
}
void LLPanelOutfitEdit::filterWearablesBySelectedItem(void)
@@ -561,14 +614,15 @@ void LLPanelOutfitEdit::filterWearablesBySelectedItem(void)
if (nothing_selected)
{
showWearablesFolderView();
+ applyFolderViewFilter(FVIT_ALL);
}
if (more_than_one_selected)
{
showWearablesListView();
+ applyListViewFilter(LVIT_ALL);
}
-
- applyFilter(LIT_ALL);
+
return;
}
@@ -585,7 +639,7 @@ void LLPanelOutfitEdit::filterWearablesBySelectedItem(void)
{
//Inventory misses an item with non-zero id
showWearablesListView();
- applyFilter(LIT_ALL);
+ applyListViewFilter(LVIT_ALL);
return;
}
@@ -595,14 +649,13 @@ void LLPanelOutfitEdit::filterWearablesBySelectedItem(void)
{
//single clothing or bodypart item is selected
showFilteredWearablesListView(item->getWearableType());
- mFilterComboBox->setLabel(getString("Filter.Custom"));
return;
}
else
{
//attachment is selected
showWearablesListView();
- applyFilter(LIT_ATTACHMENT);
+ applyListViewFilter(LVIT_ATTACHMENT);
return;
}
}
@@ -740,11 +793,11 @@ void LLPanelOutfitEdit::onAddMoreButtonClicked()
void LLPanelOutfitEdit::showFilteredWearablesListView(LLWearableType::EType type)
{
- mFilterComboBox->setLabel(getString("Filter.Custom"));
- mWearableListTypeCollector->setType(type);
- mWearableListManager->setFilterCollector(mWearableListTypeCollector);
showAddWearablesPanel(true);
showWearablesListView();
+
+ //e_list_view_item_type implicitly contains LLWearableType::EType starting from LVIT_SHAPE
+ applyListViewFilter((EListViewItemType) (LVIT_SHAPE + type));
}
diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h
index d19ede04f1..56c6c6d680 100644
--- a/indra/newview/llpaneloutfitedit.h
+++ b/indra/newview/llpaneloutfitedit.h
@@ -42,6 +42,7 @@
#include "llremoteparcelrequest.h"
#include "llinventory.h"
+#include "llinventoryfunctions.h"
#include "llinventoryitemslist.h"
#include "llinventorymodel.h"
@@ -69,21 +70,59 @@ class LLPanelOutfitEdit : public LLPanel
LOG_CLASS(LLPanelOutfitEdit);
public:
- // NOTE: initialize mLookItemTypes at the index of any new enum you add in the LLPanelOutfitEdit() constructor
- typedef enum e_look_item_type
+ // NOTE: initialize mFolderViewItemTypes at the index of any new enum you add in the LLPanelOutfitEdit() constructor
+ typedef enum e_folder_view_item_type
{
- LIT_ALL = 0,
- LIT_WEARABLE, // clothing or shape
- LIT_ATTACHMENT,
- NUM_LOOK_ITEM_TYPES
- } ELookItemType;
+ FVIT_ALL = 0,
+ FVIT_WEARABLE, // clothing or shape
+ FVIT_ATTACHMENT,
+ NUM_FOLDER_VIEW_ITEM_TYPES
+ } EFolderViewItemType;
+ //should reflect order from LLWearableType::EType
+ typedef enum e_list_view_item_type
+ {
+ LVIT_ALL = 0,
+ LVIT_CLOTHING,
+ LVIT_BODYPART,
+ LVIT_ATTACHMENT,
+ LVIT_SHAPE,
+ LVIT_SKIN,
+ LVIT_HAIR,
+ LVIT_EYES,
+ LVIT_SHIRT,
+ LVIT_PANTS,
+ LVIT_SHOES,
+ LVIT_SOCKS,
+ LVIT_JACKET,
+ LVIT_GLOVES,
+ LVIT_UNDERSHIRT,
+ LVIT_UNDERPANTS,
+ LVIT_SKIRT,
+ LVIT_ALPHA,
+ LVIT_TATTOO,
+ NUM_LIST_VIEW_ITEM_TYPES
+ } EListViewItemType;
+
struct LLLookItemType {
std::string displayName;
U64 inventoryMask;
LLLookItemType() : displayName("NONE"), inventoryMask(0) {}
LLLookItemType(std::string name, U64 mask) : displayName(name), inventoryMask(mask) {}
};
+
+ struct LLFilterItem {
+ std::string displayName;
+ LLInventoryCollectFunctor* collector;
+ LLFilterItem() : displayName("NONE"), collector(NULL) {}
+ LLFilterItem(std::string name, LLInventoryCollectFunctor* _collector) : displayName(name), collector(_collector) {}
+ ~LLFilterItem() { delete collector; }
+
+ //the struct is not supposed to by copied, either way the destructor kills collector
+ //LLPointer is not used as it requires LLInventoryCollectFunctor to extend LLRefCount what it doesn't do
+ private:
+ LLFilterItem(const LLFilterItem& filter_item) {};
+ };
LLPanelOutfitEdit();
/*virtual*/ ~LLPanelOutfitEdit();
@@ -101,12 +140,16 @@ public:
void showWearablesListView();
void showWearablesFolderView();
- void onTypeFilterChanged(LLUICtrl* ctrl);
+ void updateFiltersVisibility();
+
+ void onFolderViewFilterCommitted(LLUICtrl* ctrl);
+ void onListViewFilterCommitted(LLUICtrl* ctrl);
void onSearchEdit(const std::string& string);
void onInventorySelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action);
void onAddToOutfitClicked(void);
- void applyFilter(e_look_item_type type);
+ void applyFolderViewFilter(EFolderViewItemType type);
+ void applyListViewFilter(EListViewItemType type);
/**
* Filter items in views of Add Wearables Panel and show appropriate view depending on currently selected COF item(s)
@@ -159,18 +202,18 @@ private:
LLButton* mFolderViewBtn;
LLButton* mListViewBtn;
LLPanel* mAddWearablesPanel;
- LLComboBox* mFilterComboBox;
-
- LLFindNonLinksByMask* mWearableListMaskCollector;
- LLFindWearablesOfType* mWearableListTypeCollector;
+
+ LLComboBox* mFolderViewFilterCmbBox;
+ LLComboBox* mListViewFilterCmbBox;
LLFilteredWearableListManager* mWearableListManager;
LLInventoryItemsList* mWearableItemsList;
- LLPanel* mWearableItemsPanel;
+ LLPanel* mWearablesListViewPanel;
LLCOFDragAndDropObserver* mCOFDragAndDropObserver;
- std::vector<LLLookItemType> mLookItemTypes;
+ std::vector<LLLookItemType> mFolderViewItemTypes;
+ std::vector<LLFilterItem*> mListViewItemTypes;
LLCOFWearables* mCOFWearables;
LLMenuGL* mGearMenu;
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index 1286642897..1157c40b39 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -91,6 +91,7 @@ public:
registrar.add("Gear.Create", boost::bind(&LLOutfitListGearMenu::onCreate, this, _2));
enable_registrar.add("Gear.OnEnable", boost::bind(&LLOutfitListGearMenu::onEnable, this, _2));
+ enable_registrar.add("Gear.OnVisible", boost::bind(&LLOutfitListGearMenu::onVisible, this, _2));
mMenu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>(
"menu_outfit_gear.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
@@ -99,6 +100,28 @@ public:
LLMenuGL* getMenu() { return mMenu; }
+ void show(LLView* spawning_view)
+ {
+ if (!mMenu) return;
+
+ updateItemsVisibility();
+ mMenu->buildDrawLabels();
+ mMenu->updateParent(LLMenuGL::sMenuContainer);
+ S32 menu_x = 0;
+ S32 menu_y = spawning_view->getRect().getHeight() + mMenu->getRect().getHeight();
+ LLMenuGL::showPopup(spawning_view, mMenu, menu_x, menu_y);
+ }
+
+ void updateItemsVisibility()
+ {
+ if (!mMenu) return;
+
+ bool have_selection = getSelectedOutfitID().notNull();
+ mMenu->setItemVisible("sepatator1", have_selection);
+ mMenu->setItemVisible("sepatator2", have_selection);
+ mMenu->arrangeAndClear(); // update menu height
+ }
+
private:
const LLUUID& getSelectedOutfitID()
{
@@ -174,6 +197,26 @@ private:
return false;
}
+ if ("rename" == param)
+ {
+ return get_is_category_renameable(&gInventory, selected_outfit_id);
+ }
+ else if ("delete" == param)
+ {
+ return LLAppearanceMgr::instance().getCanRemoveOutfit(selected_outfit_id);
+ }
+
+ return true;
+ }
+
+ bool onVisible(LLSD::String param)
+ {
+ const LLUUID& selected_outfit_id = getSelectedOutfitID();
+ if (selected_outfit_id.isNull()) // no selection or invalid outfit selected
+ {
+ return false;
+ }
+
bool is_worn = LLAppearanceMgr::instance().getBaseOutfitUUID() == selected_outfit_id;
if ("wear" == param)
@@ -184,14 +227,6 @@ private:
{
return is_worn;
}
- else if ("rename" == param)
- {
- return get_is_category_renameable(&gInventory, selected_outfit_id);
- }
- else if ("delete" == param)
- {
- return LLAppearanceMgr::instance().getCanRemoveOutfit(selected_outfit_id);
- }
return true;
}
@@ -528,28 +563,21 @@ void LLPanelOutfitsInventory::updateListCommands()
{
bool trash_enabled = isActionEnabled("delete");
bool wear_enabled = isActionEnabled("wear");
+ bool wear_visible = !isCOFPanelActive();
bool make_outfit_enabled = isActionEnabled("save_outfit");
mListCommands->childSetEnabled("trash_btn", trash_enabled);
mListCommands->childSetEnabled("wear_btn", wear_enabled);
- mListCommands->childSetVisible("wear_btn", wear_enabled);
+ mListCommands->childSetVisible("wear_btn", wear_visible);
mSaveComboBtn->setMenuItemEnabled("save_outfit", make_outfit_enabled);
}
void LLPanelOutfitsInventory::showGearMenu()
{
- LLMenuGL* menu = mGearMenu ? mGearMenu->getMenu() : NULL;
- if (menu)
- {
- menu->buildDrawLabels();
- menu->updateParent(LLMenuGL::sMenuContainer);
- LLView* spawning_view = getChild<LLView>("options_gear_btn");
- S32 menu_x, menu_y;
- //show menu in co-ordinates of panel
- spawning_view->localPointToOtherView(0, spawning_view->getRect().getHeight(), &menu_x, &menu_y, this);
- menu_y += menu->getRect().getHeight();
- LLMenuGL::showPopup(this, menu, menu_x, menu_y);
- }
+ if (!mGearMenu) return;
+
+ LLView* spawning_view = getChild<LLView>("options_gear_btn");
+ mGearMenu->show(spawning_view);
}
void LLPanelOutfitsInventory::onTrashButtonClick()
@@ -691,6 +719,7 @@ BOOL LLPanelOutfitsInventory::isActionEnabled(const LLSD& userdata)
{
return FALSE;
}
+ return hasItemsSelected();
}
if (command_name == "save_outfit")
{
@@ -713,7 +742,6 @@ bool LLPanelOutfitsInventory::hasItemsSelected()
{
bool has_items_selected = false;
- // TODO: add handling "My Outfits" tab.
if (isCOFPanelActive())
{
LLFolderView* root = getActivePanel()->getRootFolder();
@@ -723,6 +751,10 @@ bool LLPanelOutfitsInventory::hasItemsSelected()
has_items_selected = (selection_set.size() > 0);
}
}
+ else // My Outfits Tab is active
+ {
+ has_items_selected = mMyOutfitsPanel->getSelectedOutfitUUID().notNull();
+ }
return has_items_selected;
}
diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp
index c8abcc83c4..1f979b0ef1 100644
--- a/indra/newview/llpanelplaceprofile.cpp
+++ b/indra/newview/llpanelplaceprofile.cpp
@@ -84,7 +84,9 @@ LLPanelPlaceProfile::LLPanelPlaceProfile()
// virtual
LLPanelPlaceProfile::~LLPanelPlaceProfile()
-{}
+{
+ gIdleCallbacks.deleteFunction(&LLPanelPlaceProfile::updateYouAreHereBanner, this);
+}
// virtual
BOOL LLPanelPlaceProfile::postBuild()
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index a27afeab7c..8fe78a0f81 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -52,6 +52,18 @@
static const LLAvatarItemAgentOnTopComparator AGENT_ON_TOP_NAME_COMPARATOR;
+// helper function to update AvatarList Item's indicator in the voice participant list
+static void update_speaker_indicator(const LLAvatarList* const avatar_list, const LLUUID& avatar_uuid, bool is_muted)
+{
+ LLAvatarListItem* item = dynamic_cast<LLAvatarListItem*>(avatar_list->getItemByValue(avatar_uuid));
+ if (item)
+ {
+ LLOutputMonitorCtrl* indicator = item->getChild<LLOutputMonitorCtrl>("speaking_indicator");
+ indicator->setIsMuted(is_muted);
+ }
+}
+
+
// See EXT-4301.
/**
* class LLAvalineUpdater - observe the list of voice participants in session and check
@@ -354,6 +366,20 @@ void LLParticipantList::onAvatarListRefreshed(LLUICtrl* ctrl, const LLSD& param)
}
}
}
+
+ // update voice mute state of all items. See EXT-7235
+ LLSpeakerMgr::speaker_list_t speaker_list;
+
+ // Use also participants which are not in voice session now (the second arg is TRUE).
+ // They can already have mModeratorMutedVoice set from the previous voice session
+ // and LLSpeakerVoiceModerationEvent will not be sent when speaker manager is updated next time.
+ mSpeakerMgr->getSpeakerList(&speaker_list, TRUE);
+ for(LLSpeakerMgr::speaker_list_t::iterator it = speaker_list.begin(); it != speaker_list.end(); it++)
+ {
+ const LLPointer<LLSpeaker>& speakerp = *it;
+
+ update_speaker_indicator(list, speakerp->mID, speakerp->mModeratorMutedVoice);
+ }
}
}
@@ -506,12 +532,7 @@ bool LLParticipantList::onSpeakerMuteEvent(LLPointer<LLOldEvents::LLEvent> event
// update UI on confirmation of moderator mutes
if (event->getValue().asString() == "voice")
{
- LLAvatarListItem* item = dynamic_cast<LLAvatarListItem*>(mAvatarList->getItemByValue(speakerp->mID));
- if (item)
- {
- LLOutputMonitorCtrl* indicator = item->getChild<LLOutputMonitorCtrl>("speaking_indicator");
- indicator->setIsMuted(speakerp->mModeratorMutedVoice);
- }
+ update_speaker_indicator(mAvatarList, speakerp->mID, speakerp->mModeratorMutedVoice);
}
return true;
}
diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp
index 54695e9d40..f86838194e 100644
--- a/indra/newview/llwearableitemslist.cpp
+++ b/indra/newview/llwearableitemslist.cpp
@@ -126,6 +126,19 @@ BOOL LLPanelWearableOutfitItem::handleDoubleClick(S32 x, S32 y, MASK mask)
return LLUICtrl::handleDoubleClick(x, y, mask);
}
+// virtual
+void LLPanelWearableOutfitItem::updateItem(const std::string& name)
+{
+ std::string search_label = name;
+
+ if (mItem && get_is_item_worn(mItem->getUUID()))
+ {
+ search_label += LLTrans::getString("worn");
+ }
+
+ LLPanelInventoryListItemBase::updateItem(search_label);
+}
+
LLPanelWearableOutfitItem::LLPanelWearableOutfitItem(LLViewerInventoryItem* item)
: LLPanelInventoryListItemBase(item)
{
@@ -292,12 +305,6 @@ LLPanelDummyClothingListItem* LLPanelDummyClothingListItem::create(LLWearableTyp
return list_item;
}
-void LLPanelDummyClothingListItem::updateItem()
-{
- std::string title = wearableTypeToString(mWearableType);
- setTitle(title, LLStringUtil::null);
-}
-
BOOL LLPanelDummyClothingListItem::postBuild()
{
LLIconCtrl* icon = getChild<LLIconCtrl>("item_icon");
@@ -307,7 +314,7 @@ BOOL LLPanelDummyClothingListItem::postBuild()
addWidgetToRightSide("btn_add_panel");
setIconImage(LLInventoryIcon::getIcon(LLAssetType::AT_CLOTHING, LLInventoryType::IT_NONE, mWearableType, FALSE));
- updateItem();
+ updateItem(wearableTypeToString(mWearableType));
// Make it look loke clothing item - reserve space for 'delete' button
setLeftWidgetsWidth(icon->getRect().mLeft);
@@ -452,15 +459,17 @@ static const LLWearableItemTypeNameComparator WEARABLE_TYPE_NAME_COMPARATOR;
static const LLDefaultChildRegistry::Register<LLWearableItemsList> r("wearable_items_list");
LLWearableItemsList::Params::Params()
-: use_internal_context_menu("use_internal_context_menu", true)
+: standalone("standalone", true)
{}
LLWearableItemsList::LLWearableItemsList(const LLWearableItemsList::Params& p)
: LLInventoryItemsList(p)
{
setComparator(&WEARABLE_TYPE_NAME_COMPARATOR);
- if (p.use_internal_context_menu)
+ mIsStandalone = p.standalone;
+ if (mIsStandalone)
{
+ // Use built-in context menu.
setRightMouseDownCallback(boost::bind(&LLWearableItemsList::onRightClick, this, _2, _3));
}
}
@@ -555,6 +564,18 @@ void LLWearableItemsList::onRightClick(S32 x, S32 y)
/// ContextMenu
//////////////////////////////////////////////////////////////////////////
+LLWearableItemsList::ContextMenu::ContextMenu()
+: mParent(NULL)
+{
+}
+
+void LLWearableItemsList::ContextMenu::show(LLView* spawning_view, const uuid_vec_t& uuids, S32 x, S32 y)
+{
+ mParent = dynamic_cast<LLWearableItemsList*>(spawning_view);
+ LLListContextMenu::show(spawning_view, uuids, x, y);
+ mParent = NULL; // to avoid dereferencing an invalid pointer
+}
+
// virtual
LLContextMenu* LLWearableItemsList::ContextMenu::createMenu()
{
@@ -642,17 +663,21 @@ void LLWearableItemsList::ContextMenu::updateItemsVisibility(LLContextMenu* menu
}
} // for
+ bool standalone = mParent ? mParent->isStandalone() : false;
+
// *TODO: eliminate multiple traversals over the menu items
+ setMenuItemVisible(menu, "wear_add", mask == MASK_CLOTHING && n_worn == 0);
setMenuItemVisible(menu, "wear", n_worn == 0);
- setMenuItemVisible(menu, "edit", mask & (MASK_CLOTHING|MASK_BODYPART) && n_items == 1);
- setMenuItemEnabled(menu, "edit", n_editable == 1 && n_worn == 1);
+ setMenuItemVisible(menu, "edit", !standalone && mask & (MASK_CLOTHING|MASK_BODYPART));
+ setMenuItemEnabled(menu, "edit", n_editable == 1 && n_worn == 1 && n_items == 1);
setMenuItemVisible(menu, "create_new", mask & (MASK_CLOTHING|MASK_BODYPART) && n_items == 1);
+ setMenuItemVisible(menu, "show_original", !standalone);
setMenuItemEnabled(menu, "show_original", n_items == 1 && n_links == n_items);
setMenuItemVisible(menu, "take_off", mask == MASK_CLOTHING && n_worn == n_items);
setMenuItemVisible(menu, "detach", mask == MASK_ATTACHMENT && n_worn == n_items);
setMenuItemVisible(menu, "take_off_or_detach", mask == (MASK_ATTACHMENT|MASK_CLOTHING));
setMenuItemEnabled(menu, "take_off_or_detach", n_worn == n_items);
- setMenuItemVisible(menu, "object_profile", mask & (MASK_ATTACHMENT|MASK_CLOTHING));
+ setMenuItemVisible(menu, "object_profile", !standalone);
setMenuItemEnabled(menu, "object_profile", n_items == 1);
// Populate or hide the "Attach to..." / "Attach to HUD..." submenus.
diff --git a/indra/newview/llwearableitemslist.h b/indra/newview/llwearableitemslist.h
index dd0ceb99e4..2f95c733aa 100644
--- a/indra/newview/llwearableitemslist.h
+++ b/indra/newview/llwearableitemslist.h
@@ -56,13 +56,13 @@ class LLPanelWearableListItem : public LLPanelInventoryListItemBase
public:
/**
- * Shows buttons when mouse is over
- */
+ * Shows buttons when mouse is over
+ */
/*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask);
/**
- * Hides buttons when mouse is out
- */
+ * Hides buttons when mouse is out
+ */
/*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
protected:
@@ -84,11 +84,16 @@ public:
static LLPanelWearableOutfitItem* create(LLViewerInventoryItem* item);
/**
- * Puts item on if it is not worn by agent
- * otherwise takes it off on double click.
- */
+ * Puts item on if it is not worn by agent
+ * otherwise takes it off on double click.
+ */
/*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
+ /**
+ * Updates item name and (worn) suffix.
+ */
+ /*virtual*/ void updateItem(const std::string& name);
+
protected:
LLPanelWearableOutfitItem(LLViewerInventoryItem* item);
@@ -198,7 +203,6 @@ class LLPanelDummyClothingListItem : public LLPanelWearableListItem
public:
static LLPanelDummyClothingListItem* create(LLWearableType::EType w_type);
- /*virtual*/ void updateItem();
/*virtual*/ BOOL postBuild();
LLWearableType::EType getWearableType() const;
@@ -325,6 +329,10 @@ public:
*/
class ContextMenu : public LLListContextMenu, public LLSingleton<ContextMenu>
{
+ public:
+ ContextMenu();
+ /*virtual*/ void show(LLView* spawning_view, const uuid_vec_t& uuids, S32 x, S32 y);
+
protected:
enum {
MASK_CLOTHING = 0x01,
@@ -340,11 +348,13 @@ public:
static void setMenuItemEnabled(LLContextMenu* menu, const std::string& name, bool val);
static void updateMask(U32& mask, LLAssetType::EType at);
static void createNewWearable(const LLUUID& item_id);
+
+ LLWearableItemsList* mParent;
};
struct Params : public LLInitParam::Block<Params, LLInventoryItemsList::Params>
{
- Optional<bool> use_internal_context_menu;
+ Optional<bool> standalone;
Params();
};
@@ -361,11 +371,15 @@ public:
*/
void updateChangedItems(const LLInventoryModel::changed_items_t& changed_items_uuids);
+ bool isStandalone() const { return mIsStandalone; }
+
protected:
friend class LLUICtrlFactory;
LLWearableItemsList(const LLWearableItemsList::Params& p);
void onRightClick(S32 x, S32 y);
+
+ bool mIsStandalone;
};
#endif //LL_LLWEARABLEITEMSLIST_H
diff --git a/indra/newview/skins/default/xui/en/menu_outfit_gear.xml b/indra/newview/skins/default/xui/en/menu_outfit_gear.xml
index c4e31ed180..8e7ef7f0b5 100644
--- a/indra/newview/skins/default/xui/en/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_outfit_gear.xml
@@ -11,6 +11,9 @@
<on_enable
function="Gear.OnEnable"
parameter="wear" />
+ <on_visible
+ function="Gear.OnVisible"
+ parameter="wear" />
</menu_item_call>
<menu_item_call
label="Take Off - Remove from Current Outfit"
@@ -21,9 +24,12 @@
<on_enable
function="Gear.OnEnable"
parameter="take_off" />
+ <on_visible
+ function="Gear.OnVisible"
+ parameter="take_off" />
</menu_item_call>
- <menu_item_separator />
+ <menu_item_separator name="sepatator1" />
<!-- copied (with minor modifications) from menu_inventory_add.xml -->
<!-- *TODO: generate dynamically? -->
<menu
@@ -168,7 +174,7 @@
</menu>
<!-- copied from menu_inventory_add.xml -->
- <menu_item_separator />
+ <menu_item_separator name="sepatator2" />
<menu_item_call
label="Rename Outfit"
layout="topleft"
@@ -178,6 +184,9 @@
<on_enable
function="Gear.OnEnable"
parameter="rename" />
+ <on_visible
+ function="Gear.OnVisible"
+ parameter="rename" />
</menu_item_call>
<menu_item_call
label="Delete Outfit"
@@ -188,5 +197,8 @@
<on_enable
function="Gear.OnEnable"
parameter="delete" />
+ <on_visible
+ function="Gear.OnVisible"
+ parameter="delete" />
</menu_item_call>
</menu>
diff --git a/indra/newview/skins/default/xui/en/menu_outfit_tab.xml b/indra/newview/skins/default/xui/en/menu_outfit_tab.xml
index 67559638d9..e084216a69 100644
--- a/indra/newview/skins/default/xui/en/menu_outfit_tab.xml
+++ b/indra/newview/skins/default/xui/en/menu_outfit_tab.xml
@@ -8,8 +8,8 @@
name="wear_replace">
<on_click
function="Outfit.WearReplace" />
- <on_enable
- function="Outfit.OnEnable"
+ <on_visible
+ function="Outfit.OnVisible"
parameter="wear_replace" />
</menu_item_call>
<menu_item_call
@@ -18,8 +18,8 @@
name="wear_add">
<on_click
function="Outfit.WearAdd" />
- <on_enable
- function="Outfit.OnEnable"
+ <on_visible
+ function="Outfit.OnVisible"
parameter="wear_add" />
</menu_item_call>
<menu_item_call
@@ -28,8 +28,8 @@
name="take_off">
<on_click
function="Outfit.TakeOff" />
- <on_enable
- function="Outfit.OnEnable"
+ <on_visible
+ function="Outfit.OnVisible"
parameter="take_off" />
</menu_item_call>
<menu_item_call
@@ -38,8 +38,8 @@
name="edit">
<on_click
function="Outfit.Edit" />
- <on_enable
- function="Outfit.OnEnable"
+ <on_visible
+ function="Outfit.OnVisible"
parameter="edit" />
</menu_item_call>
<menu_item_separator />
@@ -59,8 +59,8 @@
name="delete">
<on_click
function="Outfit.Delete" />
- <on_enable
- function="Outfit.OnEnable"
+ <on_visible
+ function="Outfit.OnVisible"
parameter="delete" />
</menu_item_call>
</context_menu>
diff --git a/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml
index 44437d01eb..bdfa928b1d 100644
--- a/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml
+++ b/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml
@@ -19,6 +19,6 @@
multi_select="true"
name="wearable_items_list"
translate="false"
- use_internal_context_menu="false"
+ standalone="false"
/>
</accordion_tab>
diff --git a/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml
index 4e5f594ffe..4f989a6f6f 100644
--- a/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml
@@ -57,7 +57,8 @@
left="0"
height="23"
width="23"
- tab_stop="false">
+ tab_stop="false"
+ tool_tip="You don't have permission to edit">
<icon
name="btn_lock1"
layout="topleft"
@@ -88,7 +89,8 @@
left="0"
height="23"
width="23"
- tab_stop="false" />
+ tab_stop="false"
+ tool_tip="Edit this shape"/>
</panel>
<icon
follows="left|right|top"
diff --git a/indra/newview/skins/default/xui/en/panel_classified_info.xml b/indra/newview/skins/default/xui/en/panel_classified_info.xml
index 859cc82e81..976f6d6cd0 100644
--- a/indra/newview/skins/default/xui/en/panel_classified_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_classified_info.xml
@@ -47,7 +47,7 @@
layout="topleft"
name="back_btn"
picture_style="true"
- left="9"
+ left="10"
tab_stop="false"
top="2"
width="30" />
@@ -56,7 +56,7 @@
font="SansSerifHugeBold"
height="26"
layout="topleft"
- left_pad="10"
+ left_pad="4"
name="title"
text_color="LtGray"
top="0"
diff --git a/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml
index 5d81aebbd5..93d7720c57 100644
--- a/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml
@@ -37,7 +37,8 @@
left="0"
height="18"
width="18"
- tab_stop="false" />
+ tab_stop="false"
+ tool_tip="Remove from outfit" />
<icon
height="16"
follows="top|left"
@@ -88,7 +89,8 @@
left="0"
height="23"
width="23"
- tab_stop="false">
+ tab_stop="false"
+ tool_tip="You don't have permission to edit">
<icon
name="btn_lock1"
layout="topleft"
@@ -119,7 +121,8 @@
left="0"
height="23"
width="23"
- tab_stop="false" />
+ tab_stop="false"
+ tool_tip="Edit this wearable"/>
</panel>
<icon
follows="left|right|top"
diff --git a/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml
index 45031859f1..75b5fd1532 100644
--- a/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml
@@ -37,7 +37,8 @@
left="0"
height="18"
width="18"
- tab_stop="false" />
+ tab_stop="false"
+ tool_tip="Remove from outfit"/>
<icon
height="16"
follows="top|left"
diff --git a/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml
index b1f4cbb079..a5dd34bd22 100644
--- a/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml
@@ -67,7 +67,8 @@
left="0"
height="23"
width="23"
- tab_stop="false" />
+ tab_stop="false"
+ tool_tip="Add more items of this type" />
</panel>
<icon
follows="left|right|top"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_classified.xml b/indra/newview/skins/default/xui/en/panel_edit_classified.xml
index 1b4f547f9d..6744a7b9c2 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_classified.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_classified.xml
@@ -31,7 +31,7 @@
layout="topleft"
name="back_btn"
picture_style="true"
- left="7"
+ left="10"
tab_stop="false"
top="2"
width="30" />
@@ -42,7 +42,7 @@
font="SansSerifHugeBold"
height="26"
layout="topleft"
- left_pad="10"
+ left_pad="4"
name="title"
text_color="LtGray"
top="0"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_pick.xml b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
index 589ea10e8d..dc83b334b5 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
@@ -24,7 +24,7 @@
image_unselected="BackButton_Off"
layout="topleft"
name="back_btn"
- left="7"
+ left="10"
tab_stop="false"
top="2"
width="30" />
@@ -35,10 +35,10 @@
font="SansSerifHugeBold"
height="26"
layout="topleft"
- left_pad="10"
+ left_pad="4"
name="title"
text_color="LtGray"
- top="0"
+ top="2"
width="250">
Edit Pick
</text>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
index 645ee8a435..950c4a5fdb 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
@@ -141,15 +141,16 @@ left="0"
layout="topleft"
name="back_btn"
left="11"
- top="7" />
+ top="3" />
<text
follows="top|left"
font="SansSerifHugeBold"
height="22"
layout="topleft"
- left_pad="15"
+ left_pad="8"
name="edit_wearable_title"
text_color="white"
+ top="3"
value="Editing Shape"
width="270" />
<panel
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 58b78cfa02..e4eb9afb29 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
@@ -57,9 +57,9 @@ background_visible="true"
font="SansSerifHugeBold"
h_pad="0"
height="26"
- left_pad="10"
+ left_pad="8"
text_color="LtGray"
- top="0"
+ top="1"
use_ellipses="true"
width="275"
follows="top|left|right"
diff --git a/indra/newview/skins/default/xui/en/panel_landmark_info.xml b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
index bb73360e0b..55fef5aaf7 100644
--- a/indra/newview/skins/default/xui/en/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
@@ -63,7 +63,7 @@
image_pressed="BackButton_Press"
image_unselected="BackButton_Off"
layout="topleft"
- left="8"
+ left="9"
name="back_btn"
tool_tip="Back"
tab_stop="false"
@@ -74,10 +74,10 @@
font="SansSerifHugeBold"
height="26"
layout="topleft"
- left_pad="10"
+ left_pad="7"
name="title"
text_color="LtGray"
- top="2"
+ top="3"
use_ellipses="true"
value="Place Profile"
width="280" />
diff --git a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
index 741f60669a..ed3b176267 100644
--- a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
@@ -51,7 +51,8 @@
<string name="Filter.All" value="All"/>
<string name="Filter.Clothes/Body" value="Clothes/Body"/>
<string name="Filter.Objects" value="Objects"/>
- <string name="Filter.Custom" value="Custom filter"/>
+ <string name="Filter.Clothing" value="Clothing"/>
+ <string name="Filter.Bodyparts" value="Body parts"/>
<button
@@ -64,14 +65,14 @@
name="back_btn"
left="5"
tab_stop="false"
- top="2"
+ top="1"
width="30" />
<text
follows="top|right"
font="SansSerifHugeBold"
height="26"
layout="topleft"
- left_pad="20"
+ left_pad="10"
name="title"
text_color="LtGray"
top="0"
@@ -211,6 +212,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap
left="2"
name="show_add_wearables_btn"
top_pad="2"
+ tool_tip="Open/Close"
width="125" />
<combo_box
@@ -218,11 +220,20 @@ It is calculated as border_size + 2*UIResizeBarOverlap
height="22"
layout="topleft"
left_pad="5"
- name="filter_wearables_combobox"
+ name="list_view_filter_combobox"
top_delta="0"
visible="false"
width="152"/>
-
+ <combo_box
+ follows="left|right|bottom"
+ height="22"
+ layout="topleft"
+ left_delta="0"
+ name="folder_view_filter_combobox"
+ top_delta="0"
+ visible="false"
+ width="152"/>
+
<button
follows="bottom|right"
height="22"
@@ -300,7 +311,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap
layout="topleft"
left="0"
mouse_opaque="false"
- name="inventory_items"
+ name="folder_view"
top_pad="5"
width="310"
visible="false"/>
@@ -319,7 +330,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap
visible="true">
<wearable_items_list
color="0.107 0.107 0.107 1"
- name="filtered_wearables_list"
+ name="list_view"
allow_select="true"
layout="topleft"
follows="all"
@@ -483,6 +494,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap
layout="topleft"
name="revert_btn"
top="0"
+ tool_tip="Revert to last saved version"
width="147" />
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
index de1f2cf31b..37eb5eaa98 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
@@ -83,18 +83,18 @@
width="241"
/>
- <dnd_button
- follows="bottom|right"
- height="25"
- image_hover_unselected="Toolbar_Right_Over"
- image_overlay="TrashItem_Off"
- image_selected="Toolbar_Right_Selected"
- image_unselected="Toolbar_Right_Off"
- layout="topleft"
- left_pad="1"
- name="trash_btn"
- tool_tip="Remove selected item"
- width="31"/>
+ <dnd_button
+ follows="bottom|right"
+ height="25"
+ image_hover_unselected="Toolbar_Right_Over"
+ image_overlay="TrashItem_Off"
+ image_selected="Toolbar_Right_Selected"
+ image_unselected="Toolbar_Right_Off"
+ layout="topleft"
+ left_pad="1"
+ name="trash_btn"
+ tool_tip="Delete selected outfit"
+ width="31"/>
<button
follows="bottom|left"
height="23"
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 49e1d16f6a..1d01bcb8a5 100644
--- a/indra/newview/skins/default/xui/en/panel_pick_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml
@@ -18,7 +18,7 @@
image_unselected="BackButton_Off"
layout="topleft"
name="back_btn"
- left="7"
+ left="10"
tab_stop="false"
top="2"
width="30" />
@@ -27,10 +27,10 @@
font="SansSerifHugeBold"
height="26"
layout="topleft"
- left_pad="10"
+ left_pad="4"
name="title"
text_color="LtGray"
- top="0"
+ top="2"
value="Pick Info"
use_ellipses="true"
width="275" />
diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml
index 59f1f6d638..55e0184282 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -160,7 +160,7 @@
image_pressed="BackButton_Press"
image_unselected="BackButton_Off"
layout="topleft"
- left="7"
+ left="8"
name="back_btn"
tool_tip="Back"
tab_stop="false"
@@ -174,7 +174,7 @@
left_pad="10"
name="title"
text_color="LtGray"
- top="2"
+ top="4"
use_ellipses="true"
value="Place Profile"
width="280" />
diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml
index 33f895e13a..638e190e8f 100644
--- a/indra/newview/skins/default/xui/en/panel_places.xml
+++ b/indra/newview/skins/default/xui/en/panel_places.xml
@@ -37,6 +37,7 @@ background_visible="true"
left="6"
name="Places Tabs"
tab_min_width="80"
+ tab_max_width="157"
tab_height="30"
tab_group="1"
tab_position="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 cc5ba334d6..d9030fc0d6 100644
--- a/indra/newview/skins/default/xui/en/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile_view.xml
@@ -24,7 +24,7 @@
image_unselected="BackButton_Off"
layout="topleft"
name="back"
- left="9"
+ left="10"
tab_stop="false"
top="2"
width="30" />
@@ -38,10 +38,10 @@
font="SansSerifHugeBold"
height="26"
layout="topleft"
- left_pad="10"
+ left_pad="5"
name="user_name"
text_color="LtGray"
- top="0"
+ top="2"
value="(Loading...)"
use_ellipses="true"
width="275" />
diff --git a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
index ae08a13793..e189d11d35 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
@@ -92,6 +92,7 @@ width="333">
layout="topleft"
left="265"
name="edit_outfit_btn"
+ tool_tip="Edit this outfit"
top="7"
width="30" />
<loading_indicator
@@ -144,7 +145,7 @@ width="333">
left="5"
min_height="410"
name="panel_outfit_edit"
- top="5"
+ top="2"
visible="false"
width="320"/>
<panel
diff --git a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
index b736f5e29c..e2bd6f375e 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
@@ -55,10 +55,10 @@
font="SansSerifHugeBold"
height="26"
layout="topleft"
- left_pad="10"
+ left_pad="3"
name="title"
text_color="LtGray"
- top="0"
+ top="2"
use_ellipses="true"
value="Object Profile"
width="275" />
diff --git a/indra/newview/skins/default/xui/it/floater_about.xml b/indra/newview/skins/default/xui/it/floater_about.xml
index 55e699612c..026b7b7616 100644
--- a/indra/newview/skins/default/xui/it/floater_about.xml
+++ b/indra/newview/skins/default/xui/it/floater_about.xml
@@ -27,9 +27,9 @@ Scheda grafica: [GRAPHICS_CARD]
Versione libcurl: [LIBCURL_VERSION]
Versione J2C Decoder: [J2C_VERSION]
-Versione Audio Driver: [AUDIO_DRIVER_VERSION]
+Versione Driver audio: [AUDIO_DRIVER_VERSION]
Versione Qt Webkit: [QT_WEBKIT_VERSION]
-Versione Vivox: [VIVOX_VERSION]
+Versione Server voice: [VOICE_VERSION]
</floater.string>
<floater.string name="none">
(nessuno)
diff --git a/indra/newview/skins/default/xui/it/floater_about_land.xml b/indra/newview/skins/default/xui/it/floater_about_land.xml
index c55f79738e..942b79b7d3 100644
--- a/indra/newview/skins/default/xui/it/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/it/floater_about_land.xml
@@ -63,6 +63,9 @@
Nessun appezzamento selezionato.
Vai al menu Mondo &gt; Informazioni sul terreno oppure seleziona un altro appezzamento per vederne i dettagli.
</panel.string>
+ <panel.string name="time_stamp_template">
+ [wkday,datetime,local] [day,datetime,local] [mth,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ </panel.string>
<text name="Name:">
Nome:
</text>
diff --git a/indra/newview/skins/default/xui/it/floater_avatar_textures.xml b/indra/newview/skins/default/xui/it/floater_avatar_textures.xml
index 2935f0fdb6..b6376973cd 100644
--- a/indra/newview/skins/default/xui/it/floater_avatar_textures.xml
+++ b/indra/newview/skins/default/xui/it/floater_avatar_textures.xml
@@ -3,41 +3,48 @@
<floater.string name="InvalidAvatar">
AVATAR NON VALIDO
</floater.string>
- <text name="composite_label">
- Texture Composite
- </text>
- <button label="Deposito" label_selected="Deposito" name="Dump"/>
<scroll_container name="profile_scroll">
<panel name="scroll_content_panel">
- <texture_picker label="Capigliature" name="hair-baked"/>
- <texture_picker label="Capigliature" name="hair_grain"/>
- <texture_picker label="Alpha dei capelli" name="hair_alpha"/>
- <texture_picker label="Testa" name="head-baked"/>
- <texture_picker label="Makeup" name="head_bodypaint"/>
- <texture_picker label="Alpha della testa" name="head_alpha"/>
- <texture_picker label="Tatuaggio della testa" name="head_tattoo"/>
- <texture_picker label="Occhi" name="eyes-baked"/>
- <texture_picker label="Occhio" name="eyes_iris"/>
- <texture_picker label="Alpha degli occhi" name="eyes_alpha"/>
- <texture_picker label="Parte superiore del corpo" name="upper-baked"/>
- <texture_picker label="Bodypaint parte superiore del corpo" name="upper_bodypaint"/>
- <texture_picker label="Maglietta intima" name="upper_undershirt"/>
- <texture_picker label="Guanti" name="upper_gloves"/>
- <texture_picker label="Camicia" name="upper_shirt"/>
- <texture_picker label="Parte superiore della giacca" name="upper_jacket"/>
- <texture_picker label="Alpha superiore" name="upper_alpha"/>
- <texture_picker label="Tatuaggio superiore" name="upper_tattoo"/>
- <texture_picker label="Parte inferiore del corpo" name="lower-baked"/>
- <texture_picker label="Bodypaint parte inferiore del corpo" name="lower_bodypaint"/>
- <texture_picker label="Slip" name="lower_underpants"/>
- <texture_picker label="Calzini" name="lower_socks"/>
- <texture_picker label="Scarpe" name="lower_shoes"/>
- <texture_picker label="Pantaloni" name="lower_pants"/>
- <texture_picker label="Giacca" name="lower_jacket"/>
- <texture_picker label="Alpha inferiore" name="lower_alpha"/>
- <texture_picker label="Tattuaggio inferiore" name="lower_tattoo"/>
- <texture_picker label="Gonna" name="skirt-baked"/>
- <texture_picker label="Gonna" name="skirt"/>
+ <text name="label">
+ Baking delle
+texture
+ </text>
+ <text name="composite_label">
+ Composito
+Texture
+ </text>
+ <button label="Memorizza gli ID sulla console" label_selected="Dump" name="Dump"/>
+ <panel name="scroll_content_panel">
+ <texture_picker label="Capigliature" name="hair-baked"/>
+ <texture_picker label="Capigliature" name="hair_grain"/>
+ <texture_picker label="Alpha dei capelli" name="hair_alpha"/>
+ <texture_picker label="Testa" name="head-baked"/>
+ <texture_picker label="Makeup" name="head_bodypaint"/>
+ <texture_picker label="Alpha della testa" name="head_alpha"/>
+ <texture_picker label="Tatuaggio della testa" name="head_tattoo"/>
+ <texture_picker label="Occhi" name="eyes-baked"/>
+ <texture_picker label="Occhio" name="eyes_iris"/>
+ <texture_picker label="Alpha degli occhi" name="eyes_alpha"/>
+ <texture_picker label="Parte superiore del corpo" name="upper-baked"/>
+ <texture_picker label="Bodypaint parte superiore del corpo" name="upper_bodypaint"/>
+ <texture_picker label="Maglietta intima" name="upper_undershirt"/>
+ <texture_picker label="Guanti" name="upper_gloves"/>
+ <texture_picker label="Camicia" name="upper_shirt"/>
+ <texture_picker label="Parte superiore della giacca" name="upper_jacket"/>
+ <texture_picker label="Alpha superiore" name="upper_alpha"/>
+ <texture_picker label="Tatuaggio superiore" name="upper_tattoo"/>
+ <texture_picker label="Parte inferiore del corpo" name="lower-baked"/>
+ <texture_picker label="BodyPaint parte inferiore del corpo" name="lower_bodypaint"/>
+ <texture_picker label="Slip" name="lower_underpants"/>
+ <texture_picker label="Calzini" name="lower_socks"/>
+ <texture_picker label="Scarpe" name="lower_shoes"/>
+ <texture_picker label="Pantaloni" name="lower_pants"/>
+ <texture_picker label="Giacca" name="lower_jacket"/>
+ <texture_picker label="Alpha inferiore" name="lower_alpha"/>
+ <texture_picker label="Tattuaggio inferiore" name="lower_tattoo"/>
+ <texture_picker label="Gonna" name="skirt-baked"/>
+ <texture_picker label="Gonna" name="skirt"/>
+ </panel>
</panel>
</scroll_container>
</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/it/floater_buy_currency_html.xml
new file mode 100644
index 0000000000..4a1bf33403
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_buy_currency_html.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_buy_currency_html" title="ACQUISTA VALUTA"/>
diff --git a/indra/newview/skins/default/xui/it/floater_map.xml b/indra/newview/skins/default/xui/it/floater_map.xml
index 70ab8dcb5a..d1e9c98e79 100644
--- a/indra/newview/skins/default/xui/it/floater_map.xml
+++ b/indra/newview/skins/default/xui/it/floater_map.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map" title="Mini mappa">
+<floater name="Map" title="">
<floater.string name="mini_map_north">
N
</floater.string>
diff --git a/indra/newview/skins/default/xui/it/floater_moveview.xml b/indra/newview/skins/default/xui/it/floater_moveview.xml
index 26d861c566..cdafdb0089 100644
--- a/indra/newview/skins/default/xui/it/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/it/floater_moveview.xml
@@ -6,18 +6,48 @@
<string name="walk_back_tooltip">
Cammina indietro (premi freccia giù o S)
</string>
+ <string name="walk_left_tooltip">
+ Cammina a sinistra (premi Maiusc + freccia sinistra o A)
+ </string>
+ <string name="walk_right_tooltip">
+ Cammina a destra (premi Maiusc + freccia destra o D)
+ </string>
<string name="run_forward_tooltip">
Corri in avanti (premi freccia su o W)
</string>
<string name="run_back_tooltip">
Corri indietro (premi freccia giù o S)
</string>
+ <string name="run_left_tooltip">
+ Corri a sinistra (premi Maiusc + freccia sinistra o A)
+ </string>
+ <string name="run_right_tooltip">
+ Corri a destra (premi Maiusc + freccia destra o D)
+ </string>
<string name="fly_forward_tooltip">
Vola in avanti (premi freccia su o W)
</string>
<string name="fly_back_tooltip">
Vola indietro (premi freccia giù o S)
</string>
+ <string name="fly_left_tooltip">
+ Vola a sinistra (premi Maiusc + freccia sinistra o A)
+ </string>
+ <string name="fly_right_tooltip">
+ Vola a destra (premi Maiusc + freccia destra o D)
+ </string>
+ <string name="fly_up_tooltip">
+ Vola in alto (premi E)
+ </string>
+ <string name="fly_down_tooltip">
+ Vola in basso (premi C)
+ </string>
+ <string name="jump_tooltip">
+ Salta (premi E)
+ </string>
+ <string name="crouch_tooltip">
+ Accovacciarsi (premi C)
+ </string>
<string name="walk_title">
Cammina
</string>
@@ -28,10 +58,12 @@
Vola
</string>
<panel name="panel_actions">
+ <button label="" label_selected="" name="move up btn" tool_tip="Vola in alto (premi E)"/>
<button label="" label_selected="" name="turn left btn" tool_tip="Gira a sinistra (premi freccia sinistra o A)"/>
+ <joystick_slide name="move left btn" tool_tip="Cammina a sinistra (premi Maiusc + freccia sinistra o A)"/>
+ <button label="" label_selected="" name="move down btn" tool_tip="Vola in basso (premi C)"/>
<button label="" label_selected="" name="turn right btn" tool_tip="Gira a destra (premi freccia destra o D)"/>
- <button label="" label_selected="" name="move up btn" tool_tip="Vola in alto, premi E"/>
- <button label="" label_selected="" name="move down btn" tool_tip="Vola in basso, premi C"/>
+ <joystick_slide name="move right btn" tool_tip="Cammina a destra (premi Maiusc + freccia destra o D)"/>
<joystick_turn name="forward btn" tool_tip="Cammina in avanti (premi freccia su o W)"/>
<joystick_turn name="backward btn" tool_tip="Cammina indietro (premi freccia giù o S)"/>
</panel>
diff --git a/indra/newview/skins/default/xui/it/floater_preview_notecard.xml b/indra/newview/skins/default/xui/it/floater_preview_notecard.xml
index 70e28dde35..7ec229f9d3 100644
--- a/indra/newview/skins/default/xui/it/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/it/floater_preview_notecard.xml
@@ -9,9 +9,6 @@
<floater.string name="Title">
Biglietto: [NAME]
</floater.string>
- <floater.string label="Salva" label_selected="Salva" name="Save">
- Salva
- </floater.string>
<text name="desc txt">
Descrizione:
</text>
@@ -19,4 +16,5 @@
In caricamento...
</text_editor>
<button label="Salva" label_selected="Salva" name="Save"/>
+ <button label="Elimina" label_selected="Elimina" name="Delete"/>
</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_tools.xml b/indra/newview/skins/default/xui/it/floater_tools.xml
index 04d61b97ff..68d193ff33 100644
--- a/indra/newview/skins/default/xui/it/floater_tools.xml
+++ b/indra/newview/skins/default/xui/it/floater_tools.xml
@@ -67,9 +67,9 @@
<text name="RenderingCost" tool_tip="Mostra il costo di rendering calcolato per questo oggetto">
þ: [COUNT]
</text>
- <check_box name="checkbox uniform"/>
- <text name="checkbox uniform label">
- Ridimens. simmetricamente
+ <check_box label="" name="checkbox uniform"/>
+ <text label="Allunga entrambi i lati" name="checkbox uniform label">
+ Allunga entrambi i lati
</text>
<check_box initial_value="true" label="Ridimensiona le texture" name="checkbox stretch textures"/>
<check_box initial_value="true" label="Posiziona nella griglia" name="checkbox snap to grid"/>
@@ -445,8 +445,8 @@
<check_box label="Inverti" name="checkbox flip s"/>
<spinner label="Verticale (V)" name="TexScaleV"/>
<check_box label="Inverti" name="checkbox flip t"/>
- <spinner label="Rotazione˚" name="TexRot" />
- <spinner label="Ripetizioni / Metro" name="rptctrl" />
+ <spinner label="Rotazione˚" name="TexRot"/>
+ <spinner label="Ripetizioni / Metro" name="rptctrl"/>
<button label="Applica" label_selected="Applica" name="button apply"/>
<text name="tex offset">
Bilanciamento della texture
diff --git a/indra/newview/skins/default/xui/it/menu_attachment_self.xml b/indra/newview/skins/default/xui/it/menu_attachment_self.xml
index 054f4802e6..c480a2fe0e 100644
--- a/indra/newview/skins/default/xui/it/menu_attachment_self.xml
+++ b/indra/newview/skins/default/xui/it/menu_attachment_self.xml
@@ -5,7 +5,7 @@
<menu_item_call label="Stacca" name="Detach"/>
<menu_item_call label="Lascia" name="Drop"/>
<menu_item_call label="Alzati" name="Stand Up"/>
- <menu_item_call label="Il mio aspetto" name="Appearance..."/>
+ <menu_item_call label="Cambia vestiario" name="Change Outfit"/>
<menu_item_call label="I miei amici..." name="Friends..."/>
<menu_item_call label="I miei gruppi" name="Groups..."/>
<menu_item_call label="Il mio profilo" name="Profile..."/>
diff --git a/indra/newview/skins/default/xui/it/menu_avatar_self.xml b/indra/newview/skins/default/xui/it/menu_avatar_self.xml
index d73d97d499..7796d41286 100644
--- a/indra/newview/skins/default/xui/it/menu_avatar_self.xml
+++ b/indra/newview/skins/default/xui/it/menu_avatar_self.xml
@@ -20,7 +20,9 @@
<context_menu label="Stacca ▶" name="Object Detach"/>
<menu_item_call label="Stacca tutto" name="Detach All"/>
</context_menu>
- <menu_item_call label="Il mio aspetto" name="Appearance..."/>
+ <menu_item_call label="Cambia vestiario" name="Chenge Outfit"/>
+ <menu_item_call label="Modifica il mio vestiario" name="Edit Outfit"/>
+ <menu_item_call label="Modifica la figura corporea" name="Edit My Shape"/>
<menu_item_call label="I miei amici..." name="Friends..."/>
<menu_item_call label="I miei gruppi" name="Groups..."/>
<menu_item_call label="Il mio profilo" name="Profile..."/>
diff --git a/indra/newview/skins/default/xui/it/menu_bottomtray.xml b/indra/newview/skins/default/xui/it/menu_bottomtray.xml
index 7203d002d2..8ca5b24b48 100644
--- a/indra/newview/skins/default/xui/it/menu_bottomtray.xml
+++ b/indra/newview/skins/default/xui/it/menu_bottomtray.xml
@@ -4,6 +4,11 @@
<menu_item_check label="Tasto Movimento" name="ShowMoveButton"/>
<menu_item_check label="Tasto Visuale" name="ShowCameraButton"/>
<menu_item_check label="Tasto Foto" name="ShowSnapshotButton"/>
+ <menu_item_check label="Pulsante barra laterale" name="ShowSidebarButton"/>
+ <menu_item_check label="Pulsante Costruisci" name="ShowBuildButton"/>
+ <menu_item_check label="Pulsante Cerca" name="ShowSearchButton"/>
+ <menu_item_check label="Pulsante Mappa" name="ShowWorldMapButton"/>
+ <menu_item_check label="Pulsante Mini mappa" name="ShowMiniMapButton"/>
<menu_item_call label="Taglia" name="NearbyChatBar_Cut"/>
<menu_item_call label="Copia" name="NearbyChatBar_Copy"/>
<menu_item_call label="Incolla" name="NearbyChatBar_Paste"/>
diff --git a/indra/newview/skins/default/xui/it/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/it/menu_inspect_self_gear.xml
index 33229bb7c0..80edae8a2b 100644
--- a/indra/newview/skins/default/xui/it/menu_inspect_self_gear.xml
+++ b/indra/newview/skins/default/xui/it/menu_inspect_self_gear.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<menu name="Gear Menu">
<menu_item_call label="Alzati" name="stand_up"/>
- <menu_item_call label="Il mio aspetto" name="my_appearance"/>
+ <menu_item_call label="Cambia vestiario" name="change_outfit"/>
<menu_item_call label="Il mio profilo" name="my_profile"/>
<menu_item_call label="I miei amici..." name="my_friends"/>
<menu_item_call label="I miei gruppi" name="my_groups"/>
diff --git a/indra/newview/skins/default/xui/it/menu_inventory.xml b/indra/newview/skins/default/xui/it/menu_inventory.xml
index 3b36198774..b127f8b816 100644
--- a/indra/newview/skins/default/xui/it/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/it/menu_inventory.xml
@@ -54,6 +54,7 @@
<menu_item_call label="Elimina oggetto" name="Purge Item"/>
<menu_item_call label="Ripristina oggetto" name="Restore Item"/>
<menu_item_call label="Apri" name="Open"/>
+ <menu_item_call label="Apri originale" name="Open Original"/>
<menu_item_call label="Proprietà" name="Properties"/>
<menu_item_call label="Rinomina" name="Rename"/>
<menu_item_call label="Copia UUID dell&apos;oggetto" name="Copy Asset UUID"/>
diff --git a/indra/newview/skins/default/xui/it/menu_login.xml b/indra/newview/skins/default/xui/it/menu_login.xml
index 904b819198..0a6d803058 100644
--- a/indra/newview/skins/default/xui/it/menu_login.xml
+++ b/indra/newview/skins/default/xui/it/menu_login.xml
@@ -2,7 +2,7 @@
<menu_bar name="Login Menu">
<menu label="Io" name="File">
<menu_item_call label="Preferenze" name="Preferences..."/>
- <menu_item_call label="Chiudi" name="Quit"/>
+ <menu_item_call label="Esci da [APP_NAME]" name="Quit"/>
</menu>
<menu label="Aiuto" name="Help">
<menu_item_call label="Aiuto di [SECOND_LIFE]" name="Second Life Help"/>
diff --git a/indra/newview/skins/default/xui/it/menu_participant_list.xml b/indra/newview/skins/default/xui/it/menu_participant_list.xml
index 71f1a9a0da..f70b886a1e 100644
--- a/indra/newview/skins/default/xui/it/menu_participant_list.xml
+++ b/indra/newview/skins/default/xui/it/menu_participant_list.xml
@@ -14,8 +14,8 @@
<context_menu label="Opzioni moderatore &gt;" name="Moderator Options">
<menu_item_check label="Consenti chat di testo" name="AllowTextChat"/>
<menu_item_call label="Disattiva audio di questo participante" name="ModerateVoiceMuteSelected"/>
- <menu_item_call label="Disattiva audio di tutti gli altri" name="ModerateVoiceMuteOthers"/>
<menu_item_call label="Riattiva audio di questo participante" name="ModerateVoiceUnMuteSelected"/>
- <menu_item_call label="Riattiva audio di tutti gli altri" name="ModerateVoiceUnMuteOthers"/>
+ <menu_item_call label="Disattiva audio di tutti" name="ModerateVoiceMute"/>
+ <menu_item_call label="Riattiva audio di tutti" name="ModerateVoiceUnmute"/>
</context_menu>
</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml
index a5923ac42b..999f89a80d 100644
--- a/indra/newview/skins/default/xui/it/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/it/menu_viewer.xml
@@ -7,7 +7,7 @@
</menu_item_call>
<menu_item_call label="Compra L$" name="Buy and Sell L$"/>
<menu_item_call label="Il mio profilo" name="Profile"/>
- <menu_item_call label="Il mio aspetto" name="Appearance"/>
+ <menu_item_call label="Cambia vestiario" name="ChangeOutfit"/>
<menu_item_check label="Il mio inventario" name="Inventory"/>
<menu_item_check label="Il mio inventario" name="ShowSidetrayInventory"/>
<menu_item_check label="Le mie gesture" name="Gestures"/>
@@ -162,6 +162,7 @@
<menu_item_check label="Oggetti flessibili" name="Flexible Objects"/>
</menu>
<menu_item_check label="Esegui thread multipli" name="Run Multiple Threads"/>
+ <menu_item_check label="Usa thread lettura plugin" name="Use Plugin Read Thread"/>
<menu_item_call label="Pulisci cache di gruppo" name="ClearGroupCache"/>
<menu_item_check label="Fluidità mouse" name="Mouse Smoothing"/>
<menu label="Scorciatoie" name="Shortcuts">
@@ -188,7 +189,6 @@
<menu_item_call label="Zoom avanti" name="Zoom In"/>
<menu_item_call label="Zoom predefinito" name="Zoom Default"/>
<menu_item_call label="Zoom indietro" name="Zoom Out"/>
- <menu_item_call label="Alterna schermo intero" name="Toggle Fullscreen"/>
</menu>
<menu_item_call label="Mostra impostazioni di debug" name="Debug Settings"/>
<menu_item_check label="Mostra menu sviluppo" name="Debug Mode"/>
diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml
index 4739e5cce9..058353da38 100644
--- a/indra/newview/skins/default/xui/it/notifications.xml
+++ b/indra/newview/skins/default/xui/it/notifications.xml
@@ -326,6 +326,9 @@ Hai bisogno di un account per entrare in [SECOND_LIFE]. Ne vuoi creare uno adess
</url>
<usetemplate name="okcancelbuttons" notext="Riprova" yestext="Crea un nuovo account"/>
</notification>
+ <notification name="InvalidCredentialFormat">
+ Immetti sia il nome che il cognome del tuo avatar nel campo del nome utente, quindi effettua l&apos;accesso.
+ </notification>
<notification name="AddClassified">
L&apos;inserzione comparirà nella sezione &apos;Annunci&apos; della Ricerca e su [http://secondlife.com/community/classifieds secondlife.com] per una settimana.
Compila la tua inserzione, quindi clicca &apos;Pubblica...&apos; per aggiungerla all&apos;elenco degli annunci.
@@ -608,6 +611,11 @@ Attese [VALIDS]
<notification name="CannotEncodeFile">
Impossibile codificare il file: [FILE]
</notification>
+ <notification name="CorruptedProtectedDataStore">
+ Poiché non è possibile leggere i dati protetti, ora verranno ripristinati.
+ Ciò può succedere alla modifica delle impostazioni di rete.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
<notification name="CorruptResourceFile">
File risorsa corrotto: [FILE]
</notification>
@@ -968,6 +976,12 @@ su TUTTI I TERRENI di questa sim?
Introduci un prezzo più alto.
</notification>
+ <notification name="ConfirmItemDeleteHasLinks">
+ Almeno uno degli oggetti selezionati è collegato tramite link ad altri oggetti. Se elimini l&apos;oggetto, i relativi link non funzioneranno più. Pertanto si consiglia vivamente di eliminare prima i link.
+
+Sei sicuro di volere eliminare gli oggetti?
+ <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
+ </notification>
<notification name="ConfirmObjectDeleteLock">
Almeno uno degli elementi selezionati è bloccato.
@@ -1117,6 +1131,42 @@ Premi F1 in qualunque momento per la guida o per apprendere altre cose di [SECON
Scegli un avatar maschile o femminile. Puoi sempre cambiare idea più tardi.
<usetemplate name="okcancelbuttons" notext="Femminile" yestext="Maschile"/>
</notification>
+ <notification name="CantTeleportToGrid">
+ Impossibile effettuare il teleport su [SLURL], in quanto si trova su una griglia ([GRID]) diversa da quella attuale ([CURRENT_GRID]). Chiudi il viewer e prova nuovamente.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="GeneralCertificateError">
+ Impossibile collegarsi al server.
+[REASON]
+
+Nome oggetto: [SUBJECT_NAME_STRING]
+Nome emittente: [ISSUER_NAME_STRING]
+Valido da: [VALID_FROM]
+Valido fino a: [VALID_TO]
+Impronta MD5: [SHA1_DIGEST]
+Impronta SHA1: [MD5_DIGEST]
+Uso chiave: [KEYUSAGE]
+Uso chiave estesa: [EXTENDEDKEYUSAGE]
+Identificatore chiave oggetto: [SUBJECTKEYIDENTIFIER]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="TrustCertificateError">
+ Autorità di certificazione di questo server sconosciuta.
+
+Informazioni sul certificato:
+Nome oggetto: [SUBJECT_NAME_STRING]
+Nome emittente: [ISSUER_NAME_STRING]
+Valido da: [VALID_FROM]
+Valido fino a: [VALID_TO]
+Impronta MD5: [SHA1_DIGEST]
+Impronta SHA1: [MD5_DIGEST]
+Uso chiave: [KEYUSAGE]
+Uso chiave estesa: [EXTENDEDKEYUSAGE]
+Identificatore chiave oggetto: [SUBJECTKEYIDENTIFIER]
+
+Accettare questa autorità?
+ <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Accetta"/>
+ </notification>
<notification name="NotEnoughCurrency">
[NAME] [PRICE]L$ Non hai abbastanza L$ per farlo.
</notification>
@@ -1512,7 +1562,7 @@ Vuoi andare alla Knowledge Base per ulteriori informazioni sulle categorie di ac
<notification name="RegionEntryAccessBlocked_Change">
Non ti è consentito entrare in quella regione a causa della tua categoria di accesso impostata nelle preferenze.
-Puoi cliccare su Cambia preferenze per modificare la categoria di accesso e quindi riuscire ad entrare. Da adesso potrai accedere ai contenuti [REGIONMATURITY] ed effettuare ricerche in questa categoria. Se in seguito tu volessi cambiare di nuovo le tue impostazioni, apri la finestra di dialogo da Io &gt; Preferenze &gt; Generale.
+Clicca su Cambia preferenze per modificare la categoria di accesso e potere entrare subito. Ciò ti consentirà di effettuare ricerche di contenuti di categoria [REGIONMATURITY]. Potrai modificare queste impostazioni in un secondo momento da Io &gt; Preferenze &gt; Generali.
<form name="form">
<button name="OK" text="Cambia preferenza"/>
<button default="true" name="Cancel" text="Chiudi"/>
@@ -2283,15 +2333,6 @@ Riprova tra qualche istante.
<button name="Mute" text="Blocca"/>
</form>
</notification>
- <notification name="ObjectGiveItemUnknownUser">
- Un oggetto chiamato [OBJECTFROMNAME] di proprietà di (residente sconosciuto) ti ha dato questo [OBJECTTYPE]:
-[ITEM_SLURL]
- <form name="form">
- <button name="Keep" text="Prendi"/>
- <button name="Discard" text="Rifiuta"/>
- <button name="Mute" text="Blocca"/>
- </form>
- </notification>
<notification name="UserGiveItem">
[NAME_SLURL] ti ha dato questo [OBJECTTYPE]:
[ITEM_SLURL]
@@ -2604,8 +2645,52 @@ Il pulsante verrà visualizzato quando lo spazio sarà sufficiente.
<notification name="ShareNotification">
Trascina articoli dell&apos;inventario su una persona nel selettore residenti
</notification>
+ <notification name="DeedToGroupFail">
+ Cessione al gruppo non riuscita.
+ </notification>
<notification name="AvatarRezNotification">
- Avatar &apos;[NAME]&apos; rezzato in [TIME] secondi.
+ ( presente da [EXISTENCE] secondi )
+Nuvola avatar &apos;[NAME]&apos; risolta in [TIME] secondi.
+ </notification>
+ <notification name="AvatarRezSelfNotification">
+ ( presente da [EXISTENCE] secondi )
+Baking dei vestiti eseguito in [TIME] secondi.
+ </notification>
+ <notification name="AvatarRezCloudNotification">
+ ( presente da [EXISTENCE] secondi )
+Avatar &apos;[NAME]&apos; trasformato in nuvola.
+ </notification>
+ <notification name="AvatarRezArrivedNotification">
+ ( presente da [EXISTENCE] secondi )
+È comparso l&apos;avatar &apos;[NAME]&apos;.
+ </notification>
+ <notification name="AvatarRezLeftCloudNotification">
+ ( presente da [EXISTENCE] secondi )
+Avatar &apos;[NAME]&apos; partito dopo [TIME] secondi sotto forma di nuvola.
+ </notification>
+ <notification name="AvatarRezEnteredAppearanceNotification">
+ ( presente da [EXISTENCE] secondi )
+Avatar &apos;[NAME]&apos; è entrato nella modalità aspetto.
+ </notification>
+ <notification name="AvatarRezLeftAppearanceNotification">
+ ( presente da [EXISTENCE] secondi )
+Avatar &apos;[NAME]&apos; ha lasciato la modalità aspetto.
+ </notification>
+ <notification name="AvatarRezLeftNotification">
+ ( presente da [EXISTENCE] secondi )
+Avatar &apos;[NAME]&apos; è partito completamente caricato.
+ </notification>
+ <notification name="ConfirmLeaveCall">
+ Sei sicuro di volere uscire dalla chiamata?
+ <usetemplate ignoretext="Conferma prima di uscire dalla chiamata" name="okcancelignore" notext="No" yestext="Sì"/>
+ </notification>
+ <notification name="ConfirmMuteAll">
+ Hai scelto di disattivare l&apos;audio di tutti i partecipanti alla chiamata di gruppo.
+In questo modo verrà disattivato l&apos;audio anche di tutti i residenti che si
+uniscono alla chiamata in un secondo momento, anche dopo che tu ti fossi scollegato.
+
+Disattiva audio di tutti?
+ <usetemplate ignoretext="Conferma prima di disattivare l&apos;audio di tutti i partecipanti alla chiamata di gruppo" name="okcancelignore" notext="Ok" yestext="Annulla"/>
</notification>
<global name="UnsupportedCPU">
- La velocità della tua CPU non soddisfa i requisiti minimi.
diff --git a/indra/newview/skins/default/xui/it/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/it/panel_body_parts_list_item.xml
new file mode 100644
index 0000000000..de764d8025
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_body_parts_list_item.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="wearable_item">
+ <text name="item_name" value="..."/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/it/panel_bodyparts_list_button_bar.xml
new file mode 100644
index 0000000000..8fc23d34f1
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_bodyparts_list_button_bar.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="clothing_list_button_bar_panel">
+ <button label="Cambia" name="switch_btn"/>
+ <button label="Acquista &gt;" name="bodyparts_shop_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_bottomtray.xml b/indra/newview/skins/default/xui/it/panel_bottomtray.xml
index c0218fad5e..e4d99cc402 100644
--- a/indra/newview/skins/default/xui/it/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/it/panel_bottomtray.xml
@@ -1,11 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="bottom_tray">
- <string name="SpeakBtnToolTip">
- Accende o spegne il microfono
- </string>
- <string name="VoiceControlBtnToolTip">
- Mostra o nasconde il pannello di regolazione voce
- </string>
+ <string name="SpeakBtnToolTip" value="Accende o spegne il microfono"/>
+ <string name="VoiceControlBtnToolTip" value="Mostra o nasconde il pannello di regolazione voce"/>
<layout_stack name="toolbar_stack">
<layout_panel name="speak_panel">
<talk_button name="talk">
@@ -24,6 +20,21 @@
<layout_panel name="snapshot_panel">
<button label="" name="snapshots" tool_tip="Scatta una foto"/>
</layout_panel>
+ <layout_panel name="sidebar_btn_panel">
+ <button label="Barra laterale" name="sidebar_btn" tool_tip="Mostra o nasconde la barra laterale"/>
+ </layout_panel>
+ <layout_panel name="build_btn_panel">
+ <button label="Costruisci" name="build_btn" tool_tip="Mostra o nasconde gli strumenti di costruzione"/>
+ </layout_panel>
+ <layout_panel name="search_btn_panel">
+ <button label="Cerca" name="search_btn" tool_tip="Mostra o nasconde la ricerca"/>
+ </layout_panel>
+ <layout_panel name="world_map_btn_panel">
+ <button label="Mappa" name="world_map_btn" tool_tip="Mostra o nasconde la mappa del mondo"/>
+ </layout_panel>
+ <layout_panel name="mini_map_btn_panel">
+ <button label="Mini mappa" name="mini_map_btn" tool_tip="Mostra o nasconde la mini mappa"/>
+ </layout_panel>
<layout_panel name="im_well_panel">
<chiclet_im_well name="im_well">
<button name="Unread IM messages" tool_tip="Conversazioni"/>
diff --git a/indra/newview/skins/default/xui/it/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/it/panel_clothing_list_button_bar.xml
new file mode 100644
index 0000000000..e9d9795b3a
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_clothing_list_button_bar.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="clothing_list_button_bar_panel">
+ <button label="Aggiungi +" name="add_btn"/>
+ <button label="Acquista &gt;" name="clothing_shop_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/it/panel_clothing_list_item.xml
new file mode 100644
index 0000000000..de764d8025
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_clothing_list_item.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="wearable_item">
+ <text name="item_name" value="..."/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_cof_wearables.xml b/indra/newview/skins/default/xui/it/panel_cof_wearables.xml
new file mode 100644
index 0000000000..d914a5740f
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_cof_wearables.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="cof_wearables">
+ <accordion name="cof_wearables_accordion">
+ <accordion_tab name="tab_attachments" title="Allegati"/>
+ <accordion_tab name="tab_clothing" title="Vestiario"/>
+ <accordion_tab name="tab_body_parts" title="Parti del corpo"/>
+ </accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/it/panel_deletable_wearable_list_item.xml
new file mode 100644
index 0000000000..91d90a5660
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_deletable_wearable_list_item.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="deletable_wearable_item">
+ <text name="item_name" value="..."/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/it/panel_dummy_clothing_list_item.xml
new file mode 100644
index 0000000000..6af84de0c7
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_dummy_clothing_list_item.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="dummy_clothing_item">
+ <text name="item_name" value="..."/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_shape.xml b/indra/newview/skins/default/xui/it/panel_edit_shape.xml
index 7e1ba43756..ab77548f26 100644
--- a/indra/newview/skins/default/xui/it/panel_edit_shape.xml
+++ b/indra/newview/skins/default/xui/it/panel_edit_shape.xml
@@ -1,14 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="edit_shape_panel">
- <panel name="avatar_sex_panel">
- <text name="gender_text">
- Sesso:
- </text>
- <radio_group name="sex_radio">
- <radio_item label="Femmina" name="radio"/>
- <radio_item label="Maschio" name="radio2"/>
- </radio_group>
- </panel>
+ <text name="avatar_height">
+ Statura: [HEIGHT] metri
+ </text>
<panel label="Camicia" name="accordion_panel">
<accordion name="wearable_accordion">
<accordion_tab name="shape_body_tab" title="Corpo"/>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/it/panel_edit_tattoo.xml
index d8cfa15b25..d76fb62c53 100644
--- a/indra/newview/skins/default/xui/it/panel_edit_tattoo.xml
+++ b/indra/newview/skins/default/xui/it/panel_edit_tattoo.xml
@@ -4,5 +4,6 @@
<texture_picker label="Tatuaggio della testa" name="Head Tattoo" tool_tip="Clicca per scegliere una fotografia"/>
<texture_picker label="Tatuaggio superiore" name="Upper Tattoo" tool_tip="Clicca per scegliere una fotografia"/>
<texture_picker label="Tattuaggio inferiore" name="Lower Tattoo" tool_tip="Clicca per scegliere una fotografia"/>
+ <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_wearable.xml b/indra/newview/skins/default/xui/it/panel_edit_wearable.xml
index 1135a582f5..3d8aa858db 100644
--- a/indra/newview/skins/default/xui/it/panel_edit_wearable.xml
+++ b/indra/newview/skins/default/xui/it/panel_edit_wearable.xml
@@ -93,6 +93,12 @@
<text name="edit_wearable_title" value="Modifica della figura corporea"/>
<panel label="Camicia" name="wearable_type_panel">
<text name="description_text" value="Figura corporea:"/>
+ <radio_group name="sex_radio">
+ <radio_item label="" name="sex_male" tool_tip="Maschio" value="1"/>
+ <radio_item label="" name="sex_female" tool_tip="Femmina" value="0"/>
+ </radio_group>
+ <icon name="male_icon" tool_tip="Maschio"/>
+ <icon name="female_icon" tool_tip="Femmina"/>
</panel>
<panel label="gear_buttom_panel" name="gear_buttom_panel">
<button name="friends_viewsort_btn" tool_tip="Opzioni"/>
diff --git a/indra/newview/skins/default/xui/it/panel_group_land_money.xml b/indra/newview/skins/default/xui/it/panel_group_land_money.xml
index 1e3ef5e657..16cc91cd9d 100644
--- a/indra/newview/skins/default/xui/it/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/it/panel_group_land_money.xml
@@ -6,6 +6,9 @@
<panel.string name="cant_view_group_land_text">
Non sei autorizzato a vedere quali terreni appartengono al gruppo.
</panel.string>
+ <panel.string name="epmty_view_group_land_text">
+ Nessuna voce
+ </panel.string>
<panel.string name="cant_view_group_accounting_text">
Non sei autorizzato a visionare le informazioni finanziarie del gruppo.
</panel.string>
diff --git a/indra/newview/skins/default/xui/it/panel_group_notices.xml b/indra/newview/skins/default/xui/it/panel_group_notices.xml
index 9dac282de9..8dd945830e 100644
--- a/indra/newview/skins/default/xui/it/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/it/panel_group_notices.xml
@@ -40,6 +40,7 @@ Massimo 200 per gruppo al giorno
<text name="string">
Trascina e rilascia qui l&apos;oggetto da allegare:
</text>
+ <button label="Inventario" name="open_inventory" tool_tip="Apri l&apos;inventario"/>
<button label="Rimuovi" label_selected="Rimuovi allegato" name="remove_attachment" tool_tip="Rimuovi allegato dal tuo avviso"/>
<button label="Invia" label_selected="Invia" name="send_notice"/>
<group_drop_target name="drop_target" tool_tip="Trascina un oggetto dall&apos;inventario ín questa casella per spedirlo con questo avviso. Devi avere i diritti per la copia e il trasferimento per poter allegare l&apos;oggetto."/>
diff --git a/indra/newview/skins/default/xui/it/panel_login.xml b/indra/newview/skins/default/xui/it/panel_login.xml
index 287e938d57..473bcfa88d 100644
--- a/indra/newview/skins/default/xui/it/panel_login.xml
+++ b/indra/newview/skins/default/xui/it/panel_login.xml
@@ -8,18 +8,15 @@
</panel.string>
<layout_stack name="login_widgets">
<layout_panel name="login">
- <text name="first_name_text">
- Nome:
+ <text name="username_text">
+ Nome utente:
</text>
- <line_editor label="Nome" name="first_name_edit" tool_tip="[SECOND_LIFE] First Name"/>
- <text name="last_name_text">
- Cognome:
- </text>
- <line_editor label="Cognome" name="last_name_edit" tool_tip="[SECOND_LIFE] Last Name"/>
+ <line_editor label="Nome utente" name="username_edit" tool_tip="Nome utente [SECOND_LIFE]"/>
<text name="password_text">
Password:
</text>
<check_box label="Ricorda password" name="remember_check"/>
+ <button label="Accedi" name="connect_btn"/>
<text name="start_location_text">
Inizia da:
</text>
@@ -28,7 +25,6 @@
<combo_box.item label="Casa mia" name="MyHome"/>
<combo_box.item label="&lt;Scrivi nome regione&gt;" name="Typeregionname"/>
</combo_box>
- <button label="Accedi" name="connect_btn"/>
</layout_panel>
<layout_panel name="links">
<text name="create_new_account_text">
diff --git a/indra/newview/skins/default/xui/it/panel_main_inventory.xml b/indra/newview/skins/default/xui/it/panel_main_inventory.xml
index 878daf1e6b..446b51ffa3 100644
--- a/indra/newview/skins/default/xui/it/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/it/panel_main_inventory.xml
@@ -9,62 +9,20 @@
<text name="ItemcountText">
Oggetti:
</text>
- <menu_bar name="Inventory Menu">
- <menu label="File" name="File">
- <menu_item_call label="Apri" name="Open"/>
- <menu label="Carica nel server" name="upload">
- <menu_item_call label="Immagine ([COST]L$)..." name="Upload Image"/>
- <menu_item_call label="Suono ([COST]L$)..." name="Upload Sound"/>
- <menu_item_call label="Animazione ([COST]L$)..." name="Upload Animation"/>
- <menu_item_call label="In blocco ([COST]L$ per file)..." name="Bulk Upload"/>
- </menu>
- <menu_item_call label="Nuova finestra" name="New Window"/>
- <menu_item_call label="Mostra filtri" name="Show Filters"/>
- <menu_item_call label="Ripristina filtri" name="Reset Current"/>
- <menu_item_call label="Chiudi tutte le cartelle" name="Close All Folders"/>
- <menu_item_call label="Svuota cestino" name="Empty Trash"/>
- <menu_item_call label="Svuota oggetti smarriti" name="Empty Lost And Found"/>
- </menu>
- <menu label="Crea" name="Create">
- <menu_item_call label="Nuova cartella" name="New Folder"/>
- <menu_item_call label="Nuovo script" name="New Script"/>
- <menu_item_call label="Nuovo biglietto" name="New Note"/>
- <menu_item_call label="Nuova gesture" name="New Gesture"/>
- <menu label="Maglietta intima" name="New Clothes">
- <menu_item_call label="Nuova camicia" name="New Shirt"/>
- <menu_item_call label="Nuovi pantaloni" name="New Pants"/>
- <menu_item_call label="Nuove scarpe" name="New Shoes"/>
- <menu_item_call label="Nuove calze" name="New Socks"/>
- <menu_item_call label="Nuova giacca" name="New Jacket"/>
- <menu_item_call label="Nuova gonna" name="New Skirt"/>
- <menu_item_call label="Nuovi guanti" name="New Gloves"/>
- <menu_item_call label="Nuova maglietta intima" name="New Undershirt"/>
- <menu_item_call label="Nuovi slip" name="New Underpants"/>
- <menu_item_call label="Nuovo Alfa (trasparenza)" name="New Alpha"/>
- <menu_item_call label="Nuovo tatuaggio" name="New Tattoo"/>
- </menu>
- <menu label="Nuove parti del corpo" name="New Body Parts">
- <menu_item_call label="Nuova figura corporea" name="New Shape"/>
- <menu_item_call label="Nuova pelle" name="New Skin"/>
- <menu_item_call label="Nuovi capelli" name="New Hair"/>
- <menu_item_call label="Nuovi occhi" name="New Eyes"/>
- </menu>
- </menu>
- <menu label="Ordina" name="Sort">
- <menu_item_check label="In base al nome" name="By Name"/>
- <menu_item_check label="In base alla data" name="By Date"/>
- <menu_item_check label="Cartelle sempre in base al nome" name="Folders Always By Name"/>
- <menu_item_check label="Cartelle di sistema all&apos;inizio" name="System Folders To Top"/>
- </menu>
- </menu_bar>
<filter_editor label="Filtro" name="inventory search editor"/>
<tab_container name="inventory filter tabs">
<inventory_panel label="Tutti gli elementi" name="All Items"/>
- <inventory_panel label="Elementi recenti" name="Recent Items"/>
+ <recent_inventory_panel label="Elementi recenti" name="Recent Items"/>
</tab_container>
- <panel name="bottom_panel">
- <button name="options_gear_btn" tool_tip="Mostra opzioni addizionali"/>
- <button name="add_btn" tool_tip="Aggiungi nuovo elemento"/>
- <dnd_button name="trash_btn" tool_tip="Rimuovi l&apos;articolo selezionato"/>
- </panel>
+ <layout_stack name="bottom_panel">
+ <layout_panel name="options_gear_btn_panel">
+ <button name="options_gear_btn" tool_tip="Mostra opzioni addizionali"/>
+ </layout_panel>
+ <layout_panel name="add_btn_panel">
+ <button name="add_btn" tool_tip="Aggiungi nuovo elemento"/>
+ </layout_panel>
+ <layout_panel name="trash_btn_panel">
+ <dnd_button name="trash_btn" tool_tip="Rimuovi l&apos;articolo selezionato"/>
+ </layout_panel>
+ </layout_stack>
</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_outfit_edit.xml b/indra/newview/skins/default/xui/it/panel_outfit_edit.xml
index 516181e0e9..bd2202b60e 100644
--- a/indra/newview/skins/default/xui/it/panel_outfit_edit.xml
+++ b/indra/newview/skins/default/xui/it/panel_outfit_edit.xml
@@ -2,6 +2,8 @@
<!-- Side tray Outfit Edit panel -->
<panel label="Modifica del vestiario" name="outfit_edit">
<string name="No Outfit" value="Nessun vestiario"/>
+ <string name="unsaved_changes" value="Modifiche non salvate"/>
+ <string name="now_editing" value="Modifica di"/>
<panel.string name="not_available">
(non pert.)
</panel.string>
@@ -15,24 +17,19 @@
<text name="title" value="Modifica vestiario"/>
<panel label="bottom_panel" name="header_panel">
<panel label="bottom_panel" name="outfit_name_and_status">
- <text name="status" value="Modifica..."/>
+ <text name="status" value="Modifica di..."/>
<text name="curr_outfit_name" value="[Current Outfit]"/>
</panel>
</panel>
<layout_stack name="im_panels">
<layout_panel label="Pannello di controllo IM" name="outfit_wearables_panel">
- <scroll_list name="look_items_list">
- <scroll_list.columns label="Articolo look" name="look_item"/>
- <scroll_list.columns label="Ordina in base agli articoli del vestiario" name="look_item_sort"/>
- </scroll_list>
<panel label="bottom_panel" name="edit_panel"/>
</layout_panel>
<layout_panel name="add_wearables_panel">
- <filter_editor label="Filtro" name="look_item_filter"/>
+ <text name="add_to_outfit_label" value="Aggiungi al vestiario:"/>
<layout_stack name="filter_panels">
- <layout_panel label="Pannello di controllo IM" name="filter_button_panel">
- <text name="add_to_outfit_label" value="Aggiungi al vestiario:"/>
- <button label="V" name="filter_button"/>
+ <layout_panel label="Pannello di controllo IM" name="filter_panel">
+ <filter_editor label="Filtro" name="look_item_filter"/>
</layout_panel>
</layout_stack>
<panel label="add_wearables_button_bar" name="add_wearables_button_bar">
diff --git a/indra/newview/skins/default/xui/it/panel_people.xml b/indra/newview/skins/default/xui/it/panel_people.xml
index c469da014a..056e424436 100644
--- a/indra/newview/skins/default/xui/it/panel_people.xml
+++ b/indra/newview/skins/default/xui/it/panel_people.xml
@@ -2,9 +2,9 @@
<!-- Side tray panel -->
<panel label="Persone" name="people_panel">
<string name="no_recent_people" value="Nessuna persona recente. Stai cercando persone da frequentare? Prova la [secondlife:///app/search/people Ricerca] o la [secondlife:///app/worldmap Mappa del mondo]."/>
- <string name="no_filtered_recent_people" value="Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/people Cerca]."/>
+ <string name="no_filtered_recent_people" value="Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/people/[SEARCH_TERM] Cerca]."/>
<string name="no_one_near" value="Nessuno vicino. Stai cercando persone da frequentare? Try la [secondlife:///app/search/people Ricerca] o la [secondlife:///app/worldmap Mappa del mondo]."/>
- <string name="no_one_filtered_near" value="Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/people Cerca]."/>
+ <string name="no_one_filtered_near" value="Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/people/[SEARCH_TERM] Cerca]."/>
<string name="no_friends_online" value="Nessun amico online"/>
<string name="no_friends" value="Nessun amico"/>
<string name="no_friends_msg">
@@ -12,11 +12,11 @@
Stai cercando persone da frequentare? Prova la [secondlife:///app/worldmap Mappa del mondo].
</string>
<string name="no_filtered_friends_msg">
- Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/people Cerca].
+ Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/people/[SEARCH_TERM] Cerca].
</string>
<string name="people_filter_label" value="Filtro persone"/>
<string name="groups_filter_label" value="Filtro gruppi"/>
- <string name="no_filtered_groups_msg" value="Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/groups Cerca]."/>
+ <string name="no_filtered_groups_msg" value="Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/groups/[SEARCH_TERM] Cerca]."/>
<string name="no_groups_msg" value="Stai cercando gruppi di cui far parte? Prova [secondlife:///app/search/groups Cerca]."/>
<filter_editor label="Filtro" name="filter_input"/>
<tab_container name="tabs">
@@ -55,7 +55,7 @@ Stai cercando persone da frequentare? Prova la [secondlife:///app/worldmap Mappa
<button label="Profilo" name="view_profile_btn" tool_tip="Mostra immagine, gruppi e altre informazioni del residente"/>
<button label="IM" name="im_btn" tool_tip="Apri una sessione messaggio istantaneo"/>
<button label="Chiama" name="call_btn" tool_tip="Chiama questo residente"/>
- <button label="Condividi" name="share_btn"/>
+ <button label="Condividi" name="share_btn" tool_tip="Condividi un oggetto dell&apos;inventario"/>
<button label="Teleport" name="teleport_btn" tool_tip="Offri teleport"/>
<button label="Profilo del gruppo" name="group_info_btn" tool_tip="Mostra informazioni gruppo"/>
<button label="Chat di gruppo" name="chat_btn" tool_tip="Apri sessione chat"/>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml
index 09e19f4bc0..7c3f32ad7b 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml
@@ -13,6 +13,7 @@
</text>
<check_box label="Costruire/Modificare" name="edit_camera_movement" tool_tip="Utilizza il posizionamento automatico della fotocamera entrando o uscendo dalla modalità modifica"/>
<check_box label="Aspetto fisico" name="appearance_camera_movement" tool_tip="Utilizza il posizionamento automatico della camera in modalità modifica"/>
+ <check_box initial_value="1" label="Barra laterale" name="appearance_sidebar_positioning" tool_tip="Utilizza il posizionamento automatico della fotocamera per la barra laterale"/>
<check_box label="Visualizzami in modalità soggettiva" name="first_person_avatar_visible"/>
<check_box label="Le frecce di direzione mi fanno sempre spostare" name="arrow_keys_move_avatar_check"/>
<check_box label="Doppio click e tieni premuto per correre" name="tap_tap_hold_to_run"/>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_chat.xml b/indra/newview/skins/default/xui/it/panel_preferences_chat.xml
index 28df9d2e43..fb8ddf607d 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_chat.xml
@@ -45,6 +45,7 @@
</text>
<check_box initial_value="true" label="Simula la battitura tasti quando scrivi" name="play_typing_animation"/>
<check_box label="Quando sono OFF-LINE, spediscimi gli IM in una e-mail" name="send_im_to_email"/>
+ <check_box label="Attiva IM in testo semplice e cronologia chat" name="plain_text_chat_history"/>
<text name="show_ims_in_label">
Mostra gli IM in:
</text>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
index 5bd0cfb106..37857473aa 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
@@ -1,8 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Grafica" name="Display panel">
- <text name="UI Size:">
- Dimensioni UI:
- </text>
<text name="QualitySpeed">
Qualità e velocità:
</text>
@@ -52,6 +49,10 @@
m
</text>
<slider label="Conteggio massimo particelle:" name="MaxParticleCount"/>
+ <slider label="Distanza visual. max avatar:" name="MaxAvatarDrawDistance"/>
+ <text name="DrawDistanceMeterText3">
+ m
+ </text>
<slider label="Qualità in post-produzione:" name="RenderPostProcess"/>
<text name="MeshDetailText">
Dettagli reticolo:
diff --git a/indra/newview/skins/default/xui/it/sidepanel_appearance.xml b/indra/newview/skins/default/xui/it/sidepanel_appearance.xml
index c2e99b5573..df25772ffb 100644
--- a/indra/newview/skins/default/xui/it/sidepanel_appearance.xml
+++ b/indra/newview/skins/default/xui/it/sidepanel_appearance.xml
@@ -1,9 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Vestiario" name="appearance panel">
<string name="No Outfit" value="Nessun vestiario"/>
+ <string name="Unsaved Changes" value="Modifiche non salvate"/>
+ <string name="Now Wearing" value="Abbigliamento attuale..."/>
<panel name="panel_currentlook">
- <text name="currentlook_title">
- (non salvato)
+ <button label="M" name="editappearance_btn"/>
+ <button label="A" name="openoutfit_btn"/>
+ <text name="currentlook_status">
+ (Stato)
</text>
</panel>
<filter_editor label="Filtri per il vestiario" name="Filter"/>
diff --git a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml
index 8a391c882c..0d862a0ff7 100644
--- a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml
@@ -4,6 +4,7 @@
<panel name="button_panel">
<button label="Profilo" name="info_btn"/>
<button label="Condividi" name="share_btn"/>
+ <button label="Acquisti" name="shop_btn"/>
<button label="Indossa" name="wear_btn"/>
<button label="Riproduci" name="play_btn"/>
<button label="Teleport" name="teleport_btn"/>
diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml
index 9a6c648c8e..67cd4c35b2 100644
--- a/indra/newview/skins/default/xui/it/strings.xml
+++ b/indra/newview/skins/default/xui/it/strings.xml
@@ -94,6 +94,24 @@
<string name="LoginDownloadingClothing">
Sto caricando i vestiti...
</string>
+ <string name="InvalidCertificate">
+ Il server ha inviato un certificato non valido o errato. Rivolgiti all&apos;amministratore della griglia.
+ </string>
+ <string name="CertInvalidHostname">
+ Per accedere al server è stato utilizzato un nome host non valido; controlla lo SLURL o il nome host della griglia.
+ </string>
+ <string name="CertExpired">
+ Il certificato inviato dalla griglia sembra essere scaduto. Controlla l&apos;orologio del sistema o rivolgiti all&apos;amministratore della griglia.
+ </string>
+ <string name="CertKeyUsage">
+ Impossibile utilizzare per SSl il certificato inviato dal server. Rivolgiti all&apos;amministratore della griglia.
+ </string>
+ <string name="CertBasicConstraints">
+ Nella catena dei certificati del server erano presenti troppi certificati. Rivolgiti all&apos;amministratore della griglia.
+ </string>
+ <string name="CertInvalidSignature">
+ Impossibile verificare la firma del certificato inviato dal server della griglia. Rivolgiti all&apos;amministratore della griglia.
+ </string>
<string name="LoginFailedNoNetwork">
Errore di rete: Non è stato possibile stabilire un collegamento, controlla la tua connessione.
</string>
@@ -825,6 +843,42 @@
<string name="invalid">
non valido
</string>
+ <string name="shirt_not_worn">
+ Camicia non indossata
+ </string>
+ <string name="pants_not_worn">
+ Pantaloni non indossati
+ </string>
+ <string name="shoes_not_worn">
+ Scarpe non indossate
+ </string>
+ <string name="socks_not_worn">
+ Calzini non indossati
+ </string>
+ <string name="jacket_not_worn">
+ Giacca non indossata
+ </string>
+ <string name="gloves_not_worn">
+ Guanti non indossati
+ </string>
+ <string name="undershirt_not_worn">
+ Maglietta intima non indossata
+ </string>
+ <string name="underpants_not_worn">
+ Slip non indossati
+ </string>
+ <string name="skirt_not_worn">
+ Gonna non indossata
+ </string>
+ <string name="alpha_not_worn">
+ Alpha non portato
+ </string>
+ <string name="tattoo_not_worn">
+ Tatuaggio non portato
+ </string>
+ <string name="invalid_not_worn">
+ non valido
+ </string>
<string name="NewWearable">
Nuovo [WEARABLE_ITEM]
</string>
@@ -895,7 +949,10 @@
Premi ESC per tornare in visualizzazione normale
</string>
<string name="InventoryNoMatchingItems">
- Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/all Cerca].
+ Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/all/[SEARCH_TERM] Cerca].
+ </string>
+ <string name="PlacesNoMatchingItems">
+ Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/places/[SEARCH_TERM] Cerca].
</string>
<string name="FavoritesNoMatchingItems">
Trascina qui un punto di riferimento per aggiungerlo ai Preferiti.
@@ -925,6 +982,7 @@
<string name="Wave" value="Saluta con la mano"/>
<string name="HelloAvatar" value="Ciao, avatar!"/>
<string name="ViewAllGestures" value="Visualizza tutto &gt;&gt;"/>
+ <string name="GetMoreGestures" value="Altre &gt;&gt;"/>
<string name="Animations" value="Animazioni,"/>
<string name="Calling Cards" value="Biglietti da visita,"/>
<string name="Clothing" value="Vestiti,"/>
@@ -1537,16 +1595,19 @@
Il residente al quale hai inviato un messaggio è in modalità &apos;occupato&apos;, ovvero ha chiesto di non essere disturbato. Il tuo messaggio comparirà nel suo pannello IM, dove potrà essere letto in un secondo momento.
</string>
<string name="MuteByName">
- (in base al nome)
+ (In base al nome)
</string>
<string name="MuteAgent">
(Residente)
</string>
<string name="MuteObject">
- (oggetto)
+ (Oggetto)
</string>
<string name="MuteGroup">
- (gruppo)
+ (Gruppo)
+ </string>
+ <string name="MuteExternal">
+ (esterno)
</string>
<string name="RegionNoCovenant">
Non esiste alcun regolamento per questa proprietà.
@@ -3306,11 +3367,14 @@ Se il messaggio persiste, contatta [SUPPORT_SITE].
<string name="answered_call">
Risposto alla chiamata
</string>
- <string name="started_call">
- Chiamata vocale iniziata
+ <string name="you_started_call">
+ Hai iniziato una chiamata vocale
+ </string>
+ <string name="you_joined_call">
+ Ti sei collegato alla chiamata in voce
</string>
- <string name="joined_call">
- Si è collegato alla chiamata in voce
+ <string name="name_started_call">
+ [NAME] ha iniziato una chiamata vocale
</string>
<string name="ringing-im">
Collegamento alla chiamata vocale...
@@ -3509,6 +3573,90 @@ Segnala abuso
<string name="Contents">
Contenuto
</string>
+ <string name="Gesture">
+ Gesture
+ </string>
+ <string name="Male Gestures">
+ Gesture maschili
+ </string>
+ <string name="Female Gestures">
+ Gesture femminili
+ </string>
+ <string name="Other Gestures">
+ Altre gesture
+ </string>
+ <string name="Speech Gestures">
+ Gesture del parlato
+ </string>
+ <string name="Common Gestures">
+ Gesture comuni
+ </string>
+ <string name="Male - Excuse me">
+ Maschio - Chiedere scusa
+ </string>
+ <string name="Male - Get lost">
+ Maschio - Levati dai piedi!
+ </string>
+ <string name="Male - Blow kiss">
+ Maschio - Butta un bacio
+ </string>
+ <string name="Male - Boo">
+ Maschio - Bu
+ </string>
+ <string name="Male - Bored">
+ Maschio - Annoiato
+ </string>
+ <string name="Male - Hey">
+ Maschio - Ehi
+ </string>
+ <string name="Male - Laugh">
+ Maschio - Ridere
+ </string>
+ <string name="Male - Repulsed">
+ Maschio - Disgustato
+ </string>
+ <string name="Male - Shrug">
+ Maschio - Spallucce
+ </string>
+ <string name="Male - Stick tougue out">
+ Maschio - Tira fuori la lingua
+ </string>
+ <string name="Male - Wow">
+ Maschio - Accipicchia
+ </string>
+ <string name="FeMale - Excuse me">
+ Femmina - Chiedere scusa
+ </string>
+ <string name="FeMale - Get lost">
+ Femmina - Levati dai piedi!
+ </string>
+ <string name="FeMale - Blow kiss">
+ Femmina - Butta un bacio
+ </string>
+ <string name="FeMale - Boo">
+ Femmina - Bu
+ </string>
+ <string name="Female - Bored">
+ Femmina - Annoiata
+ </string>
+ <string name="Female - Hey">
+ Femmina - Ehi
+ </string>
+ <string name="Female - Laugh">
+ Femmina - Ridere
+ </string>
+ <string name="Female - Repulsed">
+ Femmina - Disgustata
+ </string>
+ <string name="Female - Shrug">
+ Femmina - Spallucce
+ </string>
+ <string name="Female - Stick tougue out">
+ Femmina - Tira fuori la lingua
+ </string>
+ <string name="Female - Wow">
+ Femmina - Accipicchia
+ </string>
<string name="AvatarBirthDateFormat">
[day,datetime,slt]/[mthnum,datetime,slt]/[year,datetime,slt]
</string>