Reverted changeset 2bb10eae42bf

master
Dessie Linden 2010-07-15 12:31:08 -07:00
parent 4339600d43
commit 5d85dad85f
292 changed files with 1080 additions and 2999 deletions

View File

@ -517,7 +517,6 @@ Ringo Tuxing
Robin Cornelius
SNOW-108
SNOW-204
SNOW-484
VWR-2488
VWR-9557
VWR-11128

View File

@ -1248,12 +1248,6 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
return FALSE;
}
if(mJointMotionList->mEmoteName==mID.asString())
{
llwarns << "Malformed animation mEmoteName==mID" << llendl;
return FALSE;
}
//-------------------------------------------------------------------------
// get loop
//-------------------------------------------------------------------------

View File

@ -428,11 +428,9 @@ S32 LLQueuedThread::processNextRequest()
llassert_always(req->getStatus() == STATUS_QUEUED);
break;
}
U32 start_priority = 0 ;
if (req)
{
req->setStatus(STATUS_INPROGRESS);
start_priority = req->getPriority();
}
unlockData();
@ -441,7 +439,8 @@ S32 LLQueuedThread::processNextRequest()
// safe to access req.
if (req)
{
// process request
// process request
U32 start_priority = req->getPriority();
bool complete = req->processRequest();
if (complete)

View File

@ -40,6 +40,8 @@
#include "llfocusmgr.h"
#include "lllocalcliprect.h"
#include "lltrans.h"
#include "boost/bind.hpp"
static const S32 DRAGGER_BAR_MARGIN = 4;
@ -72,6 +74,7 @@ LLAccordionCtrl::LLAccordionCtrl(const Params& params):LLPanel(params)
{
initNoTabsWidget(params.no_matched_tabs_text);
mNoVisibleTabsOrigString = LLTrans::getString(params.no_visible_tabs_text.initial_value().asString());
mSingleExpansion = params.single_expansion;
if(mFitParent && !mSingleExpansion)
{
@ -386,7 +389,7 @@ void LLAccordionCtrl::initNoTabsWidget(const LLTextBox::Params& tb_params)
{
LLTextBox::Params tp = tb_params;
tp.rect(getLocalRect());
mNoMatchedTabsOrigString = tp.initial_value().asString();
mNoMatchedTabsOrigString = LLTrans::getString(tp.initial_value().asString());
mNoVisibleTabsHelpText = LLUICtrlFactory::create<LLTextBox>(tp, this);
}

View File

@ -1,4 +1,3 @@
/**
* @file llbutton.cpp
* @brief LLButton base class

View File

@ -157,7 +157,7 @@ bool LLFlatListView::insertItemAfter(LLPanel* after_item, LLPanel* item_to_add,
}
bool LLFlatListView::removeItem(LLPanel* item, bool rearrange)
bool LLFlatListView::removeItem(LLPanel* item)
{
if (!item) return false;
if (item->getParent() != mItemsPanel) return false;
@ -165,22 +165,22 @@ bool LLFlatListView::removeItem(LLPanel* item, bool rearrange)
item_pair_t* item_pair = getItemPair(item);
if (!item_pair) return false;
return removeItemPair(item_pair, rearrange);
return removeItemPair(item_pair);
}
bool LLFlatListView::removeItemByValue(const LLSD& value, bool rearrange)
bool LLFlatListView::removeItemByValue(const LLSD& value)
{
if (value.isUndefined()) return false;
item_pair_t* item_pair = getItemPair(value);
if (!item_pair) return false;
return removeItemPair(item_pair, rearrange);
return removeItemPair(item_pair);
}
bool LLFlatListView::removeItemByUUID(const LLUUID& uuid, bool rearrange)
bool LLFlatListView::removeItemByUUID(const LLUUID& uuid)
{
return removeItemByValue(LLSD(uuid), rearrange);
return removeItemByValue(LLSD(uuid));
}
LLPanel* LLFlatListView::getItemByValue(const LLSD& value) const
@ -327,9 +327,6 @@ U32 LLFlatListView::size(const bool only_visible_items) const
void LLFlatListView::clear()
{
// This will clear mSelectedItemPairs, calling all appropriate callbacks.
resetSelection();
// do not use LLView::deleteAllChildren to avoid removing nonvisible items. drag-n-drop for ex.
for (pairs_iterator_t it = mItemPairs.begin(); it != mItemPairs.end(); ++it)
{
@ -338,6 +335,7 @@ void LLFlatListView::clear()
delete *it;
}
mItemPairs.clear();
mSelectedItemPairs.clear();
// also set items panel height to zero. Reshape it to allow reshaping of non-item children
LLRect rc = mItemsPanel->getRect();
@ -972,12 +970,11 @@ bool LLFlatListView::isSelected(item_pair_t* item_pair) const
return std::find(mSelectedItemPairs.begin(), it_end, item_pair) != it_end;
}
bool LLFlatListView::removeItemPair(item_pair_t* item_pair, bool rearrange)
bool LLFlatListView::removeItemPair(item_pair_t* item_pair)
{
llassert(item_pair);
bool deleted = false;
bool selection_changed = false;
for (pairs_iterator_t it = mItemPairs.begin(); it != mItemPairs.end(); ++it)
{
item_pair_t* _item_pair = *it;
@ -997,7 +994,6 @@ bool LLFlatListView::removeItemPair(item_pair_t* item_pair, bool rearrange)
if (selected_item_pair == item_pair)
{
it = mSelectedItemPairs.erase(it);
selection_changed = true;
break;
}
}
@ -1006,16 +1002,8 @@ bool LLFlatListView::removeItemPair(item_pair_t* item_pair, bool rearrange)
item_pair->first->die();
delete item_pair;
if (rearrange)
{
rearrangeItems();
notifyParentItemsRectChanged();
}
if (selection_changed && mCommitOnSelectionChange)
{
onCommit();
}
return true;
}
@ -1111,7 +1099,7 @@ void LLFlatListView::onFocusReceived()
{
if (size())
{
mSelectedItemsBorder->setVisible(TRUE);
mSelectedItemsBorder->setVisible(TRUE);
}
gEditMenuHandler = this;
}

View File

@ -117,9 +117,6 @@ public:
Params();
};
// disable traversal when finding widget to hand focus off to
/*virtual*/ BOOL canFocusChildren() const { return FALSE; }
/**
* Connects callback to signal called when Return key is pressed.
*/
@ -152,19 +149,19 @@ public:
* Remove specified item
* @return true if the item was removed, false otherwise
*/
virtual bool removeItem(LLPanel* item, bool rearrange = true);
virtual bool removeItem(LLPanel* item);
/**
* Remove an item specified by value
* @return true if the item was removed, false otherwise
*/
virtual bool removeItemByValue(const LLSD& value, bool rearrange = true);
virtual bool removeItemByValue(const LLSD& value);
/**
* Remove an item specified by uuid
* @return true if the item was removed, false otherwise
*/
virtual bool removeItemByUUID(const LLUUID& uuid, bool rearrange = true);
virtual bool removeItemByUUID(const LLUUID& uuid);
/**
* Get an item by value
@ -265,7 +262,6 @@ public:
void setAllowSelection(bool can_select) { mAllowSelection = can_select; }
/** Sets flag whether onCommit should be fired if selection was changed */
// FIXME: this should really be a separate signal, since "Commit" implies explicit user action, and selection changes can happen more indirectly.
void setCommitOnSelectionChange(bool b) { mCommitOnSelectionChange = b; }
/** Get number of selected items in the list */
@ -353,7 +349,7 @@ protected:
virtual bool isSelected(item_pair_t* item_pair) const;
virtual bool removeItemPair(item_pair_t* item_pair, bool rearrange);
virtual bool removeItemPair(item_pair_t* item_pair);
/**
* Notify parent about changed size of internal controls with "size_changes" action

View File

@ -34,7 +34,6 @@
#include "llnotifications.h"
#include "llinstantmessage.h"
#include "llxmlnode.h"
#include "lluictrl.h"
#include "lluictrlfactory.h"
@ -42,7 +41,6 @@
#include "llsdserialize.h"
#include "lltrans.h"
#include "llnotificationslistener.h"
#include "llstring.h"
#include <algorithm>
#include <boost/regex.hpp>
@ -1489,14 +1487,7 @@ std::ostream& operator<<(std::ostream& s, const LLNotification& notification)
void LLPostponedNotification::onCachedNameReceived(const LLUUID& id, const std::string& first,
const std::string& last, bool is_group)
{
mName = first + " " + last;
LLStringUtil::trim(mName);
if (mName.empty())
{
llwarns << "Empty name received for Id: " << id << llendl;
mName = SYSTEM_FROM;
}
gCacheName->getFullName(id, mName);
modifyNotificationParams();
LLNotifications::instance().add(mParams);
cleanup();

View File

@ -66,10 +66,7 @@ bool LLTextBase::compare_segment_end::operator()(const LLTextSegmentPtr& a, cons
{
return a->getStart() < b->getStart();
}
else
{
return a->getEnd() < b->getEnd();
}
return a->getEnd() < b->getEnd();
}
@ -177,7 +174,7 @@ LLTextBase::Params::Params()
LLTextBase::LLTextBase(const LLTextBase::Params &p)
: LLUICtrl(p, LLTextViewModelPtr(new LLTextViewModel)),
mURLClickSignal(NULL),
mURLClickSignal(),
mMaxTextByteLength( p.max_text_length ),
mDefaultFont(p.font),
mFontShadow(p.font_shadow),
@ -212,8 +209,7 @@ LLTextBase::LLTextBase(const LLTextBase::Params &p)
mParseHTML(p.allow_html),
mParseHighlights(p.parse_highlights),
mBGVisible(p.bg_visible),
mScroller(NULL),
mStyleDirty(true)
mScroller(NULL)
{
if(p.allow_scroll)
{
@ -252,8 +248,9 @@ LLTextBase::LLTextBase(const LLTextBase::Params &p)
LLTextBase::~LLTextBase()
{
// Menu, like any other LLUICtrl, is deleted by its parent - gMenuHolder
mSegments.clear();
delete mURLClickSignal;
}
void LLTextBase::initFromParams(const LLTextBase::Params& p)
@ -299,18 +296,13 @@ bool LLTextBase::truncate()
return did_truncate;
}
const LLStyle::Params& LLTextBase::getDefaultStyleParams()
LLStyle::Params LLTextBase::getDefaultStyleParams()
{
if (mStyleDirty)
{
mDefaultStyle
.color(LLUIColor(&mFgColor))
.readonly_color(LLUIColor(&mReadOnlyFgColor))
.font(mDefaultFont)
.drop_shadow(mFontShadow);
mStyleDirty = false;
}
return mDefaultStyle;
return LLStyle::Params()
.color(LLUIColor(&mFgColor))
.readonly_color(LLUIColor(&mReadOnlyFgColor))
.font(mDefaultFont)
.drop_shadow(mFontShadow);
}
void LLTextBase::onValueChange(S32 start, S32 end)
@ -869,12 +861,11 @@ BOOL LLTextBase::handleMouseUp(S32 x, S32 y, MASK mask)
if (cur_segment && cur_segment->handleMouseUp(x, y, mask))
{
// Did we just click on a link?
if (mURLClickSignal
&& cur_segment->getStyle()
if (cur_segment->getStyle()
&& cur_segment->getStyle()->isLink())
{
// *TODO: send URL here?
(*mURLClickSignal)(this, LLSD() );
mURLClickSignal(this, LLSD() );
}
return TRUE;
}
@ -1048,14 +1039,12 @@ void LLTextBase::draw()
void LLTextBase::setColor( const LLColor4& c )
{
mFgColor = c;
mStyleDirty = true;
}
//virtual
void LLTextBase::setReadOnlyColor(const LLColor4 &c)
{
mReadOnlyFgColor = c;
mStyleDirty = true;
}
//virtual
@ -1499,22 +1488,12 @@ void LLTextBase::getSegmentAndOffset( S32 startpos, segment_set_t::iterator* seg
LLTextBase::segment_set_t::iterator LLTextBase::getSegIterContaining(S32 index)
{
if (index > getLength()) { return mSegments.end(); }
// when there are no segments, we return the end iterator, which must be checked by caller
if (mSegments.size() <= 1) { return mSegments.begin(); }
segment_set_t::iterator it = mSegments.upper_bound(new LLIndexSegment(index));
return it;
}
LLTextBase::segment_set_t::const_iterator LLTextBase::getSegIterContaining(S32 index) const
{
if (index > getLength()) { return mSegments.end(); }
// when there are no segments, we return the end iterator, which must be checked by caller
if (mSegments.size() <= 1) { return mSegments.begin(); }
LLTextBase::segment_set_t::const_iterator it = mSegments.upper_bound(new LLIndexSegment(index));
return it;
}
@ -2345,15 +2324,6 @@ LLRect LLTextBase::getVisibleDocumentRect() const
}
}
boost::signals2::connection LLTextBase::setURLClickedCallback(const commit_signal_t::slot_type& cb)
{
if (!mURLClickSignal)
{
mURLClickSignal = new commit_signal_t();
}
return mURLClickSignal->connect(cb);
}
//
// LLTextSegment
//

View File

@ -361,7 +361,10 @@ public:
virtual void appendLineBreakSegment(const LLStyle::Params& style_params);
virtual void appendImageSegment(const LLStyle::Params& style_params);
virtual void appendWidget(const LLInlineViewSegment::Params& params, const std::string& text, bool allow_undo);
boost::signals2::connection setURLClickedCallback(const commit_signal_t::slot_type& cb);
public:
// Fired when a URL link is clicked
commit_signal_t mURLClickSignal;
protected:
// helper structs
@ -454,7 +457,7 @@ protected:
void createDefaultSegment();
virtual void updateSegments();
void insertSegment(LLTextSegmentPtr segment_to_insert);
const LLStyle::Params& getDefaultStyleParams();
LLStyle::Params getDefaultStyleParams();
// manage lines
S32 getLineStart( S32 line ) const;
@ -494,12 +497,6 @@ protected:
LLRect mVisibleTextRect; // The rect in which text is drawn. Excludes borders.
LLRect mTextBoundingRect;
// default text style
LLStyle::Params mDefaultStyle;
bool mStyleDirty;
const LLFontGL* const mDefaultFont; // font that is used when none specified, can only be set by constructor
const LLFontGL::ShadowType mFontShadow; // shadow style, can only be set by constructor
// colors
LLUIColor mCursorColor;
LLUIColor mFgColor;
@ -526,6 +523,8 @@ protected:
LLFontGL::VAlign mVAlign;
F32 mLineSpacingMult; // multiple of line height used as space for a single line of text (e.g. 1.5 to get 50% padding)
S32 mLineSpacingPixels; // padding between lines
const LLFontGL* mDefaultFont; // font that is used when none specified
LLFontGL::ShadowType mFontShadow;
bool mBorderVisible;
bool mParseHTML; // make URLs interactive
bool mParseHighlights; // highlight user-defined keywords
@ -548,9 +547,6 @@ protected:
bool mScrollNeeded; // need to change scroll region because of change to cursor position
S32 mScrollIndex; // index of first character to keep visible in scroll region
// Fired when a URL link is clicked
commit_signal_t* mURLClickSignal;
};
#endif

View File

@ -264,6 +264,8 @@ LLTextEditor::LLTextEditor(const LLTextEditor::Params& p) :
mContextMenu(NULL),
mShowContextMenu(p.show_context_menu)
{
mDefaultFont = p.font;
mSourceID.generate();
//FIXME: use image?

View File

@ -675,7 +675,7 @@ BOOL LLUICtrl::getIsChrome() const
class CompareByDefaultTabGroup: public LLCompareByTabOrder
{
public:
CompareByDefaultTabGroup(const LLView::child_tab_order_t& order, S32 default_tab_group):
CompareByDefaultTabGroup(LLView::child_tab_order_t order, S32 default_tab_group):
LLCompareByTabOrder(order),
mDefaultTabGroup(default_tab_group) {}
private:
@ -699,16 +699,13 @@ class LLUICtrl::DefaultTabGroupFirstSorter : public LLQuerySorter, public LLSing
{
public:
/*virtual*/ void operator() (LLView * parent, viewList_t &children) const
{
{
children.sort(CompareByDefaultTabGroup(parent->getCtrlOrder(), parent->getDefaultTabGroup()));
}
};
LLFastTimer::DeclareTimer FTM_FOCUS_FIRST_ITEM("Focus First Item");
BOOL LLUICtrl::focusFirstItem(BOOL prefer_text_fields, BOOL focus_flash)
{
LLFastTimer _(FTM_FOCUS_FIRST_ITEM);
// try to select default tab group child
LLCtrlQuery query = getTabOrderQuery();
// sort things such that the default tab group is at the front

View File

@ -182,7 +182,7 @@ public:
void popFactoryFunctions();
template<typename T>
static T* createWidget(const typename T::Params& params, LLView* parent = NULL)
static T* createWidget(typename T::Params& params, LLView* parent = NULL)
{
T* widget = NULL;

View File

@ -135,16 +135,9 @@ void LLUIString::updateResult() const
mResult = mOrig;
// get the defailt args + local args
if (mArgs.empty())
{
LLStringUtil::format(mResult, LLTrans::getDefaultArgs());
}
else
{
LLStringUtil::format_map_t combined_args = LLTrans::getDefaultArgs();
combined_args.insert(mArgs.begin(), mArgs.end());
LLStringUtil::format(mResult, combined_args);
}
LLStringUtil::format_map_t combined_args = LLTrans::getDefaultArgs();
combined_args.insert(mArgs.begin(), mArgs.end());
LLStringUtil::format(mResult, combined_args);
}
void LLUIString::updateWResult() const

View File

@ -265,7 +265,7 @@ public:
virtual BOOL postBuild() { return TRUE; }
const child_tab_order_t& getCtrlOrder() const { return mCtrlOrder; }
child_tab_order_t getCtrlOrder() const { return mCtrlOrder; }
ctrl_list_t getCtrlList() const;
ctrl_list_t getCtrlListSorted() const;
@ -620,13 +620,12 @@ public:
class LLCompareByTabOrder
{
public:
LLCompareByTabOrder(const LLView::child_tab_order_t& order) : mTabOrder(order) {}
LLCompareByTabOrder(LLView::child_tab_order_t order) : mTabOrder(order) {}
virtual ~LLCompareByTabOrder() {}
bool operator() (const LLView* const a, const LLView* const b) const;
private:
virtual bool compareTabOrders(const LLView::tab_order_t & a, const LLView::tab_order_t & b) const { return a < b; }
// ok to store a reference, as this should only be allocated on stack during view query operations
const LLView::child_tab_order_t& mTabOrder;
LLView::child_tab_order_t mTabOrder;
};
template <class T> T* LLView::getChild(const std::string& name, BOOL recurse) const

View File

@ -95,8 +95,8 @@ viewList_t LLViewQuery::run(LLView* view) const
if (pre.first)
{
post = runFilters(view, filtered_children, mPostFilters);
}
}
}
if(pre.first && post.first)
{
@ -119,12 +119,12 @@ void LLViewQuery::filterChildren(LLView * view, viewList_t & filtered_children)
(*mSorterp)(view, views); // sort the children per the sorter
}
for(LLView::child_list_iter_t iter = views.begin();
iter != views.end();
iter++)
{
viewList_t indiv_children = this->run(*iter);
filtered_children.splice(filtered_children.end(), indiv_children);
}
iter != views.end();
iter++)
{
viewList_t indiv_children = this->run(*iter);
filtered_children.insert(filtered_children.end(), indiv_children.begin(), indiv_children.end());
}
}
filterResult_t LLViewQuery::runFilters(LLView * view, const viewList_t children, const filterList_t filters) const

View File

@ -122,7 +122,7 @@ public:
viewList_t operator () (LLView * view) const { return run(view); }
// override this method to provide iteration over other types of children
virtual void filterChildren(LLView * view, viewList_t& filtered_children) const;
virtual void filterChildren(LLView * view, viewList_t & filtered_children) const;
private:

View File

@ -4666,7 +4666,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
<string>http://marketplace.secondlife.com/</string>
<string>https://www.xstreetsl.com/modules.php?name=Marketplace</string>
</map>
<key>MarketplaceURL_objectFemale</key>
<map>
@ -4721,7 +4721,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
<string>http://marketplace.secondlife.com</string>
<string>https://www.xstreetsl.com/modules.php?name=Marketplace</string>
</map>
<key>MarketplaceURL_bodypartMale</key>
<map>
@ -4732,7 +4732,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
<string>http://marketplace.secondlife.com/</string>
<string>https://www.xstreetsl.com/modules.php?name=Marketplace</string>
</map>
<key>MarketplaceURL_glovesMale</key>
<map>
@ -11857,16 +11857,5 @@
<key>Value</key>
<integer>1</integer>
</map>
<key>TipToastMessageLineCount</key>
<map>
<key>Comment</key>
<string>Max line count of text message on tip toast.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>S32</string>
<key>Value</key>
<integer>10</integer>
</map>
</map>
</llsd>

View File

@ -3406,9 +3406,6 @@ void LLAgent::setTeleportState(ETeleportState state)
}
else if(mTeleportState == TELEPORT_ARRIVING)
{
// First two position updates after a teleport tend to be weird
LLViewerStats::getInstance()->mAgentPositionSnaps.mCountOfNextUpdatesToIgnore = 2;
// Let the interested parties know we've teleported.
LLViewerParcelMgr::getInstance()->onTeleportFinished(false, getPositionGlobal());
}

View File

@ -48,7 +48,7 @@ public:
virtual ~LLOrderMyOutfitsOnDestroy()
{
if (!LLApp::isRunning())
if (LLApp::isExiting())
{
llwarns << "called during shutdown, skipping" << llendl;
return;

View File

@ -995,7 +995,7 @@ bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_up
{
removeCOFItemLinks(gAgentWearables.getWearableItemID(item_to_wear->getWearableType(), wearable_count-1), false);
}
addCOFItemLink(item_to_wear, do_update, cb);
addCOFItemLink(item_to_wear, do_update);
}
break;
case LLAssetType::AT_BODYPART:
@ -2179,19 +2179,17 @@ void LLAppearanceMgr::updateIsDirty()
}
else
{
LLIsOfAssetType collector = LLIsOfAssetType(LLAssetType::AT_LINK);
LLInventoryModel::cat_array_t cof_cats;
LLInventoryModel::item_array_t cof_items;
gInventory.collectDescendentsIf(cof, cof_cats, cof_items,
LLInventoryModel::EXCLUDE_TRASH, collector);
gInventory.collectDescendents(cof, cof_cats, cof_items,
LLInventoryModel::EXCLUDE_TRASH);
LLInventoryModel::cat_array_t outfit_cats;
LLInventoryModel::item_array_t outfit_items;
gInventory.collectDescendentsIf(base_outfit, outfit_cats, outfit_items,
LLInventoryModel::EXCLUDE_TRASH, collector);
gInventory.collectDescendents(base_outfit, outfit_cats, outfit_items,
LLInventoryModel::EXCLUDE_TRASH);
if(outfit_items.count() != cof_items.count())
if(outfit_items.count() != cof_items.count() -1)
{
// Current outfit folder should have one more item than the outfit folder.
// this one item is the link back to the outfit folder itself.
@ -2199,6 +2197,16 @@ void LLAppearanceMgr::updateIsDirty()
return;
}
//getting rid of base outfit folder link to simplify comparison
for (LLInventoryModel::item_array_t::iterator it = cof_items.begin(); it != cof_items.end(); ++it)
{
if (*it == base_outfit_item)
{
cof_items.erase(it);
break;
}
}
//"dirty" - also means a difference in linked UUIDs and/or a difference in wearables order (links' descriptions)
std::sort(cof_items.begin(), cof_items.end(), sort_by_linked_uuid);
std::sort(outfit_items.begin(), outfit_items.end(), sort_by_linked_uuid);

View File

@ -211,7 +211,7 @@ void LLAvatarList::setDirty(bool val /*= true*/, bool force_refresh /*= false*/)
void LLAvatarList::addAvalineItem(const LLUUID& item_id, const LLUUID& session_id, const std::string& item_name)
{
LL_DEBUGS("Avaline") << "Adding avaline item into the list: " << item_name << "|" << item_id << ", session: " << session_id << LL_ENDL;
LLAvalineListItem* item = new LLAvalineListItem(/*hide_number=*/false);
LLAvalineListItem* item = new LLAvalineListItem;
item->setAvatarId(item_id, session_id, true, false);
item->setName(item_name);

View File

@ -1886,7 +1886,7 @@ void LLScriptChiclet::onMenuItemClicked(const LLSD& user_data)
if("end" == action)
{
LLScriptFloaterManager::instance().removeNotification(getSessionId());
LLScriptFloaterManager::instance().onRemoveNotification(getSessionId());
}
}
@ -1969,7 +1969,7 @@ void LLInvOfferChiclet::onMenuItemClicked(const LLSD& user_data)
if("end" == action)
{
LLScriptFloaterManager::instance().removeNotification(getSessionId());
LLScriptFloaterManager::instance().onRemoveNotification(getSessionId());
}
}

View File

@ -283,8 +283,7 @@ LLCOFWearables::LLCOFWearables() : LLPanel(),
mClothingTab(NULL),
mAttachmentsTab(NULL),
mBodyPartsTab(NULL),
mLastSelectedTab(NULL),
mCOFVersion(-1)
mLastSelectedTab(NULL)
{
mClothingMenu = new CofClothingContextMenu(this);
mAttachmentMenu = new CofAttachmentContextMenu(this);
@ -379,23 +378,6 @@ void LLCOFWearables::onAccordionTabStateChanged(LLUICtrl* ctrl, const LLSD& expa
void LLCOFWearables::refresh()
{
const LLUUID cof_id = LLAppearanceMgr::instance().getCOF();
if (cof_id.isNull())
{
llwarns << "COF ID cannot be NULL" << llendl;
return;
}
LLViewerInventoryCategory* catp = gInventory.getCategory(cof_id);
if (!catp)
{
llwarns << "COF category cannot be NULL" << llendl;
return;
}
if (mCOFVersion == catp->getVersion()) return;
mCOFVersion = catp->getVersion();
typedef std::vector<LLSD> values_vector_t;
typedef std::map<LLFlatListView*, values_vector_t> selection_map_t;
@ -411,7 +393,7 @@ void LLCOFWearables::refresh()
LLInventoryModel::cat_array_t cats;
LLInventoryModel::item_array_t cof_items;
gInventory.collectDescendents(cof_id, cats, cof_items, LLInventoryModel::EXCLUDE_TRASH);
gInventory.collectDescendents(LLAppearanceMgr::getInstance()->getCOF(), cats, cof_items, LLInventoryModel::EXCLUDE_TRASH);
populateAttachmentsAndBodypartsLists(cof_items);
@ -519,7 +501,7 @@ LLPanelClothingListItem* LLCOFWearables::buildClothingListItem(LLViewerInventory
item_panel->childSetAction("btn_edit", mCOFCallbacks.mEditWearable);
//turning on gray separator line for the last item in the items group of the same wearable type
item_panel->setSeparatorVisible(last);
item_panel->childSetVisible("wearable_type_separator_icon", last);
return item_panel;
}
@ -655,10 +637,10 @@ LLAssetType::EType LLCOFWearables::getExpandedAccordionAssetType()
const LLAccordionCtrlTab* expanded_tab = accordion_ctrl->getExpandedTab();
return get_if_there(mTab2AssetType, expanded_tab, LLAssetType::AT_NONE);
}
}
LLAssetType::EType LLCOFWearables::getSelectedAccordionAssetType()
{
{
static LLAccordionCtrl* accordion_ctrl = getChild<LLAccordionCtrl>("cof_wearables_accordion");
const LLAccordionCtrlTab* selected_tab = accordion_ctrl->getSelectedTab();

View File

@ -81,7 +81,6 @@ public:
LLPanel* getSelectedItem();
void getSelectedItems(std::vector<LLPanel*>& selected_items) const;
/* Repopulate the COF wearables list if the COF category has been changed since the last refresh */
void refresh();
void clear();
@ -124,9 +123,6 @@ protected:
LLListContextMenu* mClothingMenu;
LLListContextMenu* mAttachmentMenu;
LLListContextMenu* mBodyPartMenu;
/* COF category version since last refresh */
S32 mCOFVersion;
};

View File

@ -42,7 +42,7 @@ LLDragAndDropButton::Params::Params()
}
LLDragAndDropButton::LLDragAndDropButton(const Params& params)
LLDragAndDropButton::LLDragAndDropButton(Params& params)
: LLButton(params)
{

View File

@ -54,7 +54,7 @@ public:
Params();
};
LLDragAndDropButton(const Params& params);
LLDragAndDropButton(Params& params);
typedef boost::function<bool (
S32 /*x*/, S32 /*y*/, MASK /*mask*/, BOOL /*drop*/,

View File

@ -140,13 +140,7 @@ void LLExpandableTextBox::LLTextBoxEx::setText(const LLStringExplicit& text,cons
// LLTextBox::setText will obliterate the expander segment, so make sure
// we generate it again by clearing mExpanderVisible
mExpanderVisible = false;
// Workaround for EXT-8259: trim text before rendering it.
{
std::string trimmed_text(text);
LLStringUtil::trim(trimmed_text);
LLTextEditor::setText(trimmed_text, input_params);
}
LLTextEditor::setText(text, input_params);
// text contents have changed, segments are cleared out
// so hide the expander and determine if we need it

View File

@ -262,7 +262,6 @@ public:
BOOL needsAutoSelect() { return mNeedsAutoSelect && !mAutoSelectOverride; }
BOOL needsAutoRename() { return mNeedsAutoRename; }
void setNeedsAutoRename(BOOL val) { mNeedsAutoRename = val; }
void setAutoSelectOverride(BOOL val) { mAutoSelectOverride = val; }
void setCallbackRegistrar(LLUICtrl::CommitCallbackRegistry::ScopedRegistrar* registrar) { mCallbackRegistrar = registrar; }

View File

@ -1022,14 +1022,6 @@ void LLIMModel::sendMessage(const std::string& utf8_text,
}
else
{
// IM_SESSION_INVITE means that this is an Ad-hoc incoming chat
// (it can be also Group chat but it is checked above)
// In this case mInitialTargetIDs contains Ad-hoc session ID and it should not be added
// to Recent People to prevent showing of an item with (???)(???). See EXT-8246.
// Concrete participants will be added into this list once they sent message in chat.
if (IM_SESSION_INVITE == dialog) return;
// implemented adding of all participants of an outgoing to Recent People List. See EXT-5694.
for(uuid_vec_t::iterator it = session->mInitialTargetIDs.begin();
it!=session->mInitialTargetIDs.end();++it)
{

View File

@ -161,7 +161,8 @@ BOOL LLInspectObject::postBuild(void)
// Hide floater when name links clicked
LLTextBox* textbox = getChild<LLTextBox>("object_creator");
textbox->setURLClickedCallback(boost::bind(&LLInspectObject::closeFloater, this, false) );
textbox->mURLClickSignal.connect(
boost::bind(&LLInspectObject::closeFloater, this, false) );
// Hook up functionality
getChild<LLUICtrl>("buy_btn")->setCommitCallback(

View File

@ -507,19 +507,6 @@ bool LLIsNotType::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
return TRUE;
}
bool LLIsOfAssetType::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
{
if(mType == LLAssetType::AT_CATEGORY)
{
if(cat) return TRUE;
}
if(item)
{
if(item->getActualType() == mType) return TRUE;
}
return FALSE;
}
bool LLIsTypeWithPermissions::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
{
if(mType == LLAssetType::AT_CATEGORY)

View File

@ -174,25 +174,6 @@ protected:
LLAssetType::EType mType;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class LLIsOfAssetType
//
// Implementation of a LLInventoryCollectFunctor which returns TRUE if
// the item or category is of asset type passed in during construction.
// Link types are treated as links, not as the types they point to.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class LLIsOfAssetType : public LLInventoryCollectFunctor
{
public:
LLIsOfAssetType(LLAssetType::EType type) : mType(type) {}
virtual ~LLIsOfAssetType() {}
virtual bool operator()(LLInventoryCategory* cat,
LLInventoryItem* item);
protected:
LLAssetType::EType mType;
};
class LLIsTypeWithPermissions : public LLInventoryCollectFunctor
{
public:
@ -290,7 +271,9 @@ public:
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class LLFindByMask
// Class LLFindNonLinksByMask
//
//
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class LLFindByMask : public LLInventoryCollectFunctor
{
@ -399,19 +382,6 @@ public:
}
};
/* Filters out items of a particular asset type */
class LLIsTypeActual : public LLIsType
{
public:
LLIsTypeActual(LLAssetType::EType type) : LLIsType(type) {}
virtual ~LLIsTypeActual() {}
virtual bool operator()(LLInventoryCategory* cat, LLInventoryItem* item)
{
if (item && item->getIsLinkType()) return false;
return LLIsType::operator()(cat, item);
}
};
// Collect non-removable folders and items.
class LLFindNonRemovableObjects : public LLInventoryCollectFunctor
{

View File

@ -107,12 +107,9 @@ void LLInventoryItemsList::idle(void* user_data)
}
}
LLFastTimer::DeclareTimer FTM_INVENTORY_ITEMS_REFRESH("Inventory List Refresh");
void LLInventoryItemsList::refresh()
{
LLFastTimer _(FTM_INVENTORY_ITEMS_REFRESH);
static const unsigned ADD_LIMIT = 20;
static const unsigned ADD_LIMIT = 50;
uuid_vec_t added_items;
uuid_vec_t removed_items;
@ -143,8 +140,7 @@ void LLInventoryItemsList::refresh()
it = removed_items.begin();
for( ; removed_items.end() != it; ++it)
{
// don't filter items right away
removeItemByUUID(*it, false);
removeItemByUUID(*it);
}
// Filter, rearrange and notify parent about shape changes

View File

@ -51,12 +51,7 @@ static const S32 WIDGET_SPACING = 3;
LLPanelInventoryListItemBase::Params::Params()
: default_style("default_style"),
worn_style("worn_style"),
hover_image("hover_image"),
selected_image("selected_image"),
separator_image("separator_image"),
item_icon("item_icon"),
item_name("item_name")
worn_style("worn_style")
{};
LLPanelInventoryListItemBase* LLPanelInventoryListItemBase::create(LLViewerInventoryItem* item)
@ -64,10 +59,8 @@ LLPanelInventoryListItemBase* LLPanelInventoryListItemBase::create(LLViewerInven
LLPanelInventoryListItemBase* list_item = NULL;
if (item)
{
const LLPanelInventoryListItemBase::Params& params = LLUICtrlFactory::getDefaultParams<LLPanelInventoryListItemBase>();
list_item = new LLPanelInventoryListItemBase(item, params);
list_item->initFromParams(params);
list_item->postBuild();
list_item = new LLPanelInventoryListItemBase(item);
list_item->init();
}
return list_item;
}
@ -83,25 +76,6 @@ void LLPanelInventoryListItemBase::draw()
}
setNeedsRefresh(false);
}
if (mHovered && mHoverImage)
{
mHoverImage->draw(getLocalRect());
}
if (mSelected && mSelectedImage)
{
mSelectedImage->draw(getLocalRect());
}
if (mSeparatorVisible && mSeparatorImage)
{
// stretch along bottom of listitem, using image height
LLRect separator_rect = getLocalRect();
separator_rect.mTop = mSeparatorImage->getHeight();
mSeparatorImage->draw(separator_rect);
}
LLPanel::draw();
}
@ -160,6 +134,9 @@ void LLPanelInventoryListItemBase::setShowWidget(LLUICtrl* ctrl, bool show)
BOOL LLPanelInventoryListItemBase::postBuild()
{
setIconCtrl(getChild<LLIconCtrl>("item_icon"));
setTitleCtrl(getChild<LLTextBox>("item_name"));
LLViewerInventoryItem* inv_item = getItem();
if (inv_item)
{
@ -179,18 +156,18 @@ void LLPanelInventoryListItemBase::setValue(const LLSD& value)
{
if (!value.isMap()) return;
if (!value.has("selected")) return;
mSelected = value["selected"];
childSetVisible("selected_icon", value["selected"]);
}
void LLPanelInventoryListItemBase::onMouseEnter(S32 x, S32 y, MASK mask)
{
mHovered = true;
childSetVisible("hovered_icon", true);
LLPanel::onMouseEnter(x, y, mask);
}
void LLPanelInventoryListItemBase::onMouseLeave(S32 x, S32 y, MASK mask)
{
mHovered = false;
childSetVisible("hovered_icon", false);
LLPanel::onMouseLeave(x, y, mask);
}
@ -267,47 +244,21 @@ S32 LLPanelInventoryListItemBase::notify(const LLSD& info)
return rv;
}
LLPanelInventoryListItemBase::LLPanelInventoryListItemBase(LLViewerInventoryItem* item, const LLPanelInventoryListItemBase::Params& params)
: LLPanel(params),
mInventoryItemUUID(item ? item->getUUID() : LLUUID::null),
mIconCtrl(NULL),
mTitleCtrl(NULL),
mWidgetSpacing(WIDGET_SPACING),
mLeftWidgetsWidth(0),
mRightWidgetsWidth(0),
mNeedsRefresh(false),
mHovered(false),
mSelected(false),
mSeparatorVisible(false),
mHoverImage(params.hover_image),
mSelectedImage(params.selected_image),
mSeparatorImage(params.separator_image)
LLPanelInventoryListItemBase::LLPanelInventoryListItemBase(LLViewerInventoryItem* item)
: LLPanel()
, mInventoryItemUUID(item ? item->getUUID() : LLUUID::null)
, mIconCtrl(NULL)
, mTitleCtrl(NULL)
, mWidgetSpacing(WIDGET_SPACING)
, mLeftWidgetsWidth(0)
, mRightWidgetsWidth(0)
, mNeedsRefresh(false)
{
LLIconCtrl::Params icon_params(params.item_icon);
applyXUILayout(icon_params, this);
}
mIconCtrl = LLUICtrlFactory::create<LLIconCtrl>(icon_params);
if (mIconCtrl)
{
addChild(mIconCtrl);
}
else
{
mIconCtrl = dynamic_cast<LLIconCtrl*>(LLUICtrlFactory::createDefaultWidget<LLIconCtrl>("item_icon"));
}
LLTextBox::Params text_params(params.item_name);
applyXUILayout(text_params, this);
mTitleCtrl = LLUICtrlFactory::create<LLTextBox>(text_params);
if (mTitleCtrl)
{
addChild(mTitleCtrl);
}
else
{
mTitleCtrl = dynamic_cast<LLTextBox*>(LLUICtrlFactory::createDefaultWidget<LLTextBox>("item_title"));
}
void LLPanelInventoryListItemBase::init()
{
LLUICtrlFactory::getInstance()->buildPanel(this, "panel_inventory_item.xml");
}
class WidgetVisibilityChanger

View File

@ -41,12 +41,12 @@
// llui
#include "llpanel.h"
#include "llstyle.h"
#include "lliconctrl.h"
#include "lltextbox.h"
// newview
#include "llwearabletype.h"
class LLIconCtrl;
class LLTextBox;
class LLViewerInventoryItem;
/**
@ -70,11 +70,6 @@ public:
{
Optional<LLStyle::Params> default_style,
worn_style;
Optional<LLUIImage*> hover_image,
selected_image,
separator_image;
Optional<LLIconCtrl::Params> item_icon;
Optional<LLTextBox::Params> item_name;
Params();
};
@ -154,22 +149,30 @@ public:
/** Get the associated inventory item */
LLViewerInventoryItem* getItem() const;
void setSeparatorVisible(bool visible) { mSeparatorVisible = visible; }
virtual ~LLPanelInventoryListItemBase(){}
protected:
LLPanelInventoryListItemBase(LLViewerInventoryItem* item, const Params& params);
LLPanelInventoryListItemBase(LLViewerInventoryItem* item);
typedef std::vector<LLUICtrl*> widget_array_t;
/**
* Use it from a factory function to build panel, do not build panel in constructor
*/
virtual void init();
/**
* Called after inventory item was updated, update panel widgets to reflect inventory changes.
*/
virtual void updateItem(const std::string& name,
EItemState item_state = IS_DEFAULT);
/** setter for mIconCtrl */
void setIconCtrl(LLIconCtrl* icon) { mIconCtrl = icon; }
/** setter for MTitleCtrl */
void setTitleCtrl(LLTextBox* tb) { mTitleCtrl = tb; }
void setLeftWidgetsWidth(S32 width) { mLeftWidgetsWidth = width; }
void setRightWidgetsWidth(S32 width) { mRightWidgetsWidth = width; }
@ -218,14 +221,6 @@ private:
LLTextBox* mTitleCtrl;
LLUIImagePtr mIconImage;
LLUIImagePtr mHoverImage;
LLUIImagePtr mSelectedImage;
LLUIImagePtr mSeparatorImage;
bool mHovered;
bool mSelected;
bool mSeparatorVisible;
std::string mHighlightedText;
widget_array_t mLeftSideWidgets;

View File

@ -1052,7 +1052,7 @@ void LLLocationInputCtrl::changeLocationPresentation()
//needs unescaped one
LLSLURL slurl;
LLAgentUI::buildSLURL(slurl, false);
mTextEntry->setText(LLURI::unescape(slurl.getSLURLString()));
mTextEntry->setText(slurl.getSLURLString());
mTextEntry->selectAll();
mMaturityButton->setVisible(FALSE);

View File

@ -35,7 +35,6 @@
#include "llpanelgenerictip.h"
#include "llnotifications.h"
#include "llviewercontrol.h" // for gSavedSettings
LLPanelGenericTip::LLPanelGenericTip(
@ -46,8 +45,7 @@ LLPanelGenericTip::LLPanelGenericTip(
childSetValue("message", notification->getMessage());
S32 max_line_count = gSavedSettings.getS32("TipToastMessageLineCount");
snapToMessageHeight(getChild<LLTextBox> ("message"), max_line_count);
// set line max count to 3 in case of a very long name
snapToMessageHeight(getChild<LLTextBox> ("message"), 3);
}

View File

@ -197,15 +197,14 @@ BOOL LLPanelMainInventory::postBuild()
mFilterEditor->setCommitCallback(boost::bind(&LLPanelMainInventory::onFilterEdit, this, _2));
}
initListCommandsHandlers();
// *TODO:Get the cost info from the server
const std::string upload_cost("10");
mMenuAdd->getChild<LLMenuItemGL>("Upload Image")->setLabelArg("[COST]", upload_cost);
mMenuAdd->getChild<LLMenuItemGL>("Upload Sound")->setLabelArg("[COST]", upload_cost);
mMenuAdd->getChild<LLMenuItemGL>("Upload Animation")->setLabelArg("[COST]", upload_cost);
mMenuAdd->getChild<LLMenuItemGL>("Bulk Upload")->setLabelArg("[COST]", upload_cost);
childSetLabelArg("Upload Image", "[COST]", upload_cost);
childSetLabelArg("Upload Sound", "[COST]", upload_cost);
childSetLabelArg("Upload Animation", "[COST]", upload_cost);
childSetLabelArg("Bulk Upload", "[COST]", upload_cost);
initListCommandsHandlers();
return TRUE;
}

View File

@ -34,7 +34,6 @@
#include "llnotifications.h"
#include "llpanelonlinestatus.h"
#include "llviewercontrol.h" // for gSavedSettings
LLPanelOnlineStatus::LLPanelOnlineStatus(
const LLNotificationPtr& notification) :
@ -55,7 +54,7 @@ LLPanelOnlineStatus::LLPanelOnlineStatus(
notification, notification->getResponseTemplate()));
}
S32 max_line_count = gSavedSettings.getS32("TipToastMessageLineCount");
snapToMessageHeight(getChild<LLTextBox> ("message"), max_line_count);
// set line max count to 3 in case of a very long name
snapToMessageHeight(getChild<LLTextBox> ("message"), 3);
}

View File

@ -71,7 +71,6 @@
#include "llsdutil.h"
#include "llsidepanelappearance.h"
#include "lltoggleablemenu.h"
#include "llvoavatarself.h"
#include "llwearablelist.h"
#include "llwearableitemslist.h"
#include "llwearabletype.h"
@ -264,7 +263,7 @@ LLPanelOutfitEdit::LLPanelOutfitEdit()
observer.addBOFReplacedCallback(boost::bind(&LLPanelOutfitEdit::updateCurrentOutfitName, this));
observer.addBOFChangedCallback(boost::bind(&LLPanelOutfitEdit::updateVerbs, this));
observer.addOutfitLockChangedCallback(boost::bind(&LLPanelOutfitEdit::updateVerbs, this));
observer.addCOFChangedCallback(boost::bind(&LLPanelOutfitEdit::onCOFChanged, this));
observer.addCOFChangedCallback(boost::bind(&LLPanelOutfitEdit::update, this));
gAgentWearables.addLoadingStartedCallback(boost::bind(&LLPanelOutfitEdit::onOutfitChanging, this, true));
gAgentWearables.addLoadedCallback(boost::bind(&LLPanelOutfitEdit::onOutfitChanging, this, false));
@ -298,9 +297,9 @@ BOOL LLPanelOutfitEdit::postBuild()
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 LLFindNonLinksByMask(ALL_ITEMS_MASK)));
mListViewItemTypes.push_back(new LLFilterItem(getString("Filter.Clothing"), new LLIsTypeActual(LLAssetType::AT_CLOTHING)));
mListViewItemTypes.push_back(new LLFilterItem(getString("Filter.Bodyparts"), new LLIsTypeActual(LLAssetType::AT_BODYPART)));
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)));
@ -332,7 +331,7 @@ BOOL LLPanelOutfitEdit::postBuild()
childSetCommitCallback("shop_btn_1", boost::bind(&LLPanelOutfitEdit::onShopButtonClicked, this), NULL);
childSetCommitCallback("shop_btn_2", boost::bind(&LLPanelOutfitEdit::onShopButtonClicked, this), NULL);
setVisibleCallback(boost::bind(&LLPanelOutfitEdit::onVisibilityChange, this, _2));
setVisibleCallback(boost::bind(&LLPanelOutfitEdit::onVisibilityChange, this));
mCOFWearables = getChild<LLCOFWearables>("cof_wearables_list");
mCOFWearables->setCommitCallback(boost::bind(&LLPanelOutfitEdit::filterWearablesBySelectedItem, this));
@ -348,8 +347,8 @@ BOOL LLPanelOutfitEdit::postBuild()
mInventoryItemsPanel = getChild<LLInventoryPanel>("folder_view");
mInventoryItemsPanel->setFilterTypes(ALL_ITEMS_MASK);
mInventoryItemsPanel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
mInventoryItemsPanel->setSelectCallback(boost::bind(&LLPanelOutfitEdit::updatePlusButton, this));
mInventoryItemsPanel->getRootFolder()->setReshapeCallback(boost::bind(&LLPanelOutfitEdit::updatePlusButton, this));
mInventoryItemsPanel->setSelectCallback(boost::bind(&LLPanelOutfitEdit::onInventorySelectionChange, this));
mInventoryItemsPanel->getRootFolder()->setReshapeCallback(boost::bind(&LLPanelOutfitEdit::onInventorySelectionChange, this));
mCOFDragAndDropObserver = new LLCOFDragAndDropObserver(mInventoryItemsPanel->getModel());
@ -389,7 +388,7 @@ BOOL LLPanelOutfitEdit::postBuild()
mWearablesListViewPanel = getChild<LLPanel>("filtered_wearables_panel");
mWearableItemsList = getChild<LLInventoryItemsList>("list_view");
mWearableItemsList->setCommitOnSelectionChange(true);
mWearableItemsList->setCommitCallback(boost::bind(&LLPanelOutfitEdit::updatePlusButton, this));
mWearableItemsList->setCommitCallback(boost::bind(&LLPanelOutfitEdit::onInventorySelectionChange, this));
mWearableItemsList->setDoubleClickCallback(boost::bind(&LLPanelOutfitEdit::onPlusBtnClicked, this));
mSaveComboBtn.reset(new LLSaveOutfitComboBtn(this));
@ -443,9 +442,6 @@ void LLPanelOutfitEdit::showAddWearablesPanel(bool show_add_wearables)
mListViewFilterCmbBox->setVisible(false);
showWearablesFilter();
// Reset mWearableItemsList position to top. See EXT-8180.
mWearableItemsList->goToTop();
}
//switching button bars
@ -587,16 +583,11 @@ void LLPanelOutfitEdit::onPlusBtnClicked(void)
}
}
void LLPanelOutfitEdit::onVisibilityChange(const LLSD &in_visible_chain)
void LLPanelOutfitEdit::onVisibilityChange()
{
showAddWearablesPanel(false);
mWearableItemsList->resetSelection();
mInventoryItemsPanel->clearSelection();
if (in_visible_chain.asBoolean())
{
update();
}
}
void LLPanelOutfitEdit::onAddWearableClicked(void)
@ -623,52 +614,15 @@ void LLPanelOutfitEdit::onShopButtonClicked()
{
static LLShopURLDispatcher url_resolver;
// will contain the resultant URL
std::string url;
if (isAgentAvatarValid())
{
// try to get wearable type from 'Add More' panel first (EXT-7639)
LLWearableType::EType type = getAddMorePanelSelectionType();
if (type == LLWearableType::WT_NONE)
{
type = getCOFWearablesSelectionType();
}
ESex sex = gAgentAvatarp->getSex();
// WT_INVALID comes for attachments
if (type != LLWearableType::WT_INVALID && type != LLWearableType::WT_NONE)
{
url = url_resolver.resolveURL(type, sex);
}
if (url.empty())
{
url = url_resolver.resolveURL(mCOFWearables->getExpandedAccordionAssetType(), sex);
}
}
else
{
llwarns << "Agent avatar is invalid" << llendl;
// the second argument is not important in this case: generic market place will be opened
url = url_resolver.resolveURL(LLWearableType::WT_NONE, SEX_FEMALE);
}
LLWeb::loadURLExternal(url);
}
LLWearableType::EType LLPanelOutfitEdit::getCOFWearablesSelectionType() const
{
std::vector<LLPanel*> selected_items;
LLWearableType::EType type = LLWearableType::WT_NONE;
mCOFWearables->getSelectedItems(selected_items);
ESex sex = gSavedSettings.getU32("AvatarSex") ? SEX_MALE : SEX_FEMALE;
if (selected_items.size() == 1)
{
LLWearableType::EType type = LLWearableType::WT_NONE;
LLPanel* item = selected_items.front();
// LLPanelDummyClothingListItem is lower then LLPanelInventoryListItemBase in hierarchy tree
@ -680,45 +634,20 @@ LLWearableType::EType LLPanelOutfitEdit::getCOFWearablesSelectionType() const
{
type = real_item->getWearableType();
}
// WT_INVALID comes for attachments
if (type != LLWearableType::WT_INVALID)
{
url = url_resolver.resolveURL(type, sex);
}
}
return type;
}
LLWearableType::EType LLPanelOutfitEdit::getAddMorePanelSelectionType() const
{
LLWearableType::EType type = LLWearableType::WT_NONE;
if (mAddWearablesPanel != NULL && mAddWearablesPanel->getVisible())
if (url.empty())
{
if (mInventoryItemsPanel != NULL && mInventoryItemsPanel->getVisible())
{
std::set<LLUUID> selected_uuids = mInventoryItemsPanel->getRootFolder()->getSelectionList();
if (selected_uuids.size() == 1)
{
type = getWearableTypeByItemUUID(*(selected_uuids.begin()));
}
}
else if (mWearableItemsList != NULL && mWearableItemsList->getVisible())
{
std::vector<LLUUID> selected_uuids;
mWearableItemsList->getSelectedUUIDs(selected_uuids);
if (selected_uuids.size() == 1)
{
type = getWearableTypeByItemUUID(selected_uuids.front());
}
}
url = url_resolver.resolveURL(mCOFWearables->getExpandedAccordionAssetType(), sex);
}
return type;
}
LLWearableType::EType LLPanelOutfitEdit::getWearableTypeByItemUUID(const LLUUID& item_uuid) const
{
LLViewerInventoryItem* item = gInventory.getLinkedItem(item_uuid);
return (item != NULL) ? item->getWearableType() : LLWearableType::WT_NONE;
LLWeb::loadURLExternal(url);
}
void LLPanelOutfitEdit::onRemoveFromOutfitClicked(void)
@ -738,7 +667,7 @@ void LLPanelOutfitEdit::onEditWearableClicked(void)
}
}
void LLPanelOutfitEdit::updatePlusButton()
void LLPanelOutfitEdit::onInventorySelectionChange()
{
uuid_vec_t selected_items;
getSelectedItemsUUID(selected_items);
@ -981,9 +910,6 @@ void LLPanelOutfitEdit::updateVerbs()
mStatus->setText(outfit_is_dirty ? getString("unsaved_changes") : getString("now_editing"));
updateCurrentOutfitName();
//updating state of "Wear Item" button previously known as "Plus" button
updatePlusButton();
}
bool LLPanelOutfitEdit::switchPanels(LLPanel* switch_from_panel, LLPanel* switch_to_panel)
@ -1019,6 +945,9 @@ void LLPanelOutfitEdit::showFilteredWearablesListView(LLWearableType::EType type
showAddWearablesPanel(true);
showWearablesListView();
// Reset mWearableItemsList position to top. See EXT-8180.
mWearableItemsList->goToTop();
//e_list_view_item_type implicitly contains LLWearableType::EType starting from LVIT_SHAPE
applyListViewFilter((EListViewItemType) (LVIT_SHAPE + type));
}
@ -1085,13 +1014,5 @@ void LLPanelOutfitEdit::getSelectedItemsUUID(uuid_vec_t& uuid_list)
// return selected_id;
}
void LLPanelOutfitEdit::onCOFChanged()
{
//the panel is only updated when is visible to a user
if (!isInVisibleChain()) return;
update();
}
// EOF

View File

@ -145,10 +145,10 @@ public:
void onFolderViewFilterCommitted(LLUICtrl* ctrl);
void onListViewFilterCommitted(LLUICtrl* ctrl);
void onSearchEdit(const std::string& string);
void updatePlusButton();
void onInventorySelectionChange();
void onPlusBtnClicked(void);
void onVisibilityChange(const LLSD &in_visible_chain);
void onVisibilityChange();
void applyFolderViewFilter(EFolderViewItemType type);
void applyListViewFilter(EListViewItemType type);
@ -196,11 +196,6 @@ private:
void onOutfitChanging(bool started);
void getSelectedItemsUUID(uuid_vec_t& uuid_list);
void getCurrentItemUUID(LLUUID& selected_id);
void onCOFChanged();
LLWearableType::EType getCOFWearablesSelectionType() const;
LLWearableType::EType getAddMorePanelSelectionType() const;
LLWearableType::EType getWearableTypeByItemUUID(const LLUUID& item_uuid) const;
LLTextBox* mCurrentOutfitName;
LLTextBox* mStatus;

View File

@ -582,7 +582,7 @@ void LLParticipantList::addAvatarIDExceptAgent(const LLUUID& avatar_id)
else
{
std::string display_name = LLVoiceClient::getInstance()->getDisplayName(avatar_id);
mAvatarList->addAvalineItem(avatar_id, mSpeakerMgr->getSessionID(), display_name.empty() ? LLTrans::getString("AvatarNameWaiting") : display_name);
mAvatarList->addAvalineItem(avatar_id, mSpeakerMgr->getSessionID(), display_name.empty() ? display_name : LLTrans::getString("AvatarNameWaiting"));
mAvalineUpdater->watchAvalineCaller(avatar_id);
}
adjustParticipant(avatar_id);

View File

@ -75,8 +75,7 @@ LLPreviewTexture::LLPreviewTexture(const LLSD& key)
mLastWidth(0),
mAspectRatio(0.f),
mPreviewToSave(FALSE),
mImage(NULL),
mImageOldBoostLevel(LLViewerTexture::BOOST_NONE)
mImage(NULL)
{
updateImageID();
if (key.has("save_as"))
@ -94,7 +93,7 @@ LLPreviewTexture::~LLPreviewTexture()
{
getWindow()->decBusyCount();
}
mImage->setBoostLevel(mImageOldBoostLevel);
mImage = NULL;
}
@ -544,7 +543,6 @@ void LLPreviewTexture::onAspectRatioCommit(LLUICtrl* ctrl, void* userdata)
void LLPreviewTexture::loadAsset()
{
mImage = LLViewerTextureManager::getFetchedTexture(mImageID, MIPMAP_TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
mImageOldBoostLevel = mImage->getBoostLevel();
mImage->setBoostLevel(LLViewerTexture::BOOST_PREVIEW);
mImage->forceToSaveRawImage(0) ;
mAssetStatus = PREVIEW_ASSET_LOADING;

View File

@ -82,10 +82,9 @@ private:
void updateDimensions();
LLUUID mImageID;
LLPointer<LLViewerFetchedTexture> mImage;
S32 mImageOldBoostLevel;
BOOL mLoadingFullImage;
std::string mSaveFileName;
LLFrameTimer mSavedFileTimer;
BOOL mLoadingFullImage;
BOOL mShowKeepDiscard;
BOOL mCopyToInv;
@ -95,10 +94,11 @@ private:
// This is stored off in a member variable, because the save-as
// button and drag and drop functionality need to know.
BOOL mIsCopyable;
BOOL mUpdateDimensions;
S32 mLastHeight;
S32 mLastWidth;
F32 mAspectRatio;
F32 mAspectRatio;
BOOL mUpdateDimensions;
LLLoadedCallbackEntry::source_callback_list_t mCallbackTextureList ;
};

View File

@ -176,15 +176,7 @@ void LLScriptFloater::onClose(bool app_quitting)
if(getNotificationId().notNull())
{
// we shouldn't kill notification on exit since it may be used as persistent.
if (app_quitting)
{
LLScriptFloaterManager::getInstance()->onRemoveNotification(getNotificationId());
}
else
{
LLScriptFloaterManager::getInstance()->removeNotification(getNotificationId());
}
LLScriptFloaterManager::getInstance()->onRemoveNotification(getNotificationId());
}
}
@ -360,7 +352,7 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
set_new_message |= !floater->hasFocus();
}
removeNotification(it->first);
onRemoveNotification(it->first);
}
}
@ -387,17 +379,6 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
toggleScriptFloater(notification_id, set_new_message);
}
void LLScriptFloaterManager::removeNotification(const LLUUID& notification_id)
{
LLNotificationPtr notification = LLNotifications::instance().find(notification_id);
if (notification != NULL && !notification->isCancelled())
{
LLNotificationsUtil::cancel(notification);
}
onRemoveNotification(notification_id);
}
void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id)
{
if(notification_id.isNull())
@ -411,8 +392,6 @@ void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id)
LLIMWellWindow::getInstance()->removeObjectRow(notification_id);
mNotifications.erase(notification_id);
// close floater
LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", notification_id);
if(floater)
@ -421,6 +400,8 @@ void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id)
floater->setNotificationId(LLUUID::null);
floater->closeFloater();
}
mNotifications.erase(notification_id);
}
void LLScriptFloaterManager::toggleScriptFloater(const LLUUID& notification_id, bool set_new_message)

View File

@ -64,11 +64,6 @@ public:
*/
void onAddNotification(const LLUUID& notification_id);
/**
* Removes notification.
*/
void removeNotification(const LLUUID& notification_id);
/**
* Handles notification removal.
* Removes script notification toast, removes script chiclet, closes script floater

View File

@ -230,15 +230,15 @@ LLSideTrayTab* LLSideTrayTab::createInstance ()
LLSideTray::Params::Params()
: collapsed("collapsed",false),
tab_btn_image_normal("tab_btn_image",LLUI::getUIImage("sidebar_tab_left.tga")),
tab_btn_image_selected("tab_btn_image_selected",LLUI::getUIImage("button_enabled_selected_32x128.tga")),
tab_btn_image_normal("tab_btn_image","sidebar_tab_left.tga"),
tab_btn_image_selected("tab_btn_image_selected","button_enabled_selected_32x128.tga"),
default_button_width("tab_btn_width",32),
default_button_height("tab_btn_height",32),
default_button_margin("tab_btn_margin",0)
{}
//virtual
LLSideTray::LLSideTray(const Params& params)
LLSideTray::LLSideTray(Params& params)
: LLPanel(params)
,mActiveTab(0)
,mCollapsed(false)
@ -373,10 +373,10 @@ LLButton* LLSideTray::createButton (const std::string& name,const std::string& i
bparams.follows.flags (FOLLOWS_LEFT | FOLLOWS_TOP);
bparams.rect (rect);
bparams.tab_stop(false);
bparams.image_unselected(sidetray_params.tab_btn_image_normal);
bparams.image_selected(sidetray_params.tab_btn_image_selected);
bparams.image_disabled(sidetray_params.tab_btn_image_normal);
bparams.image_disabled_selected(sidetray_params.tab_btn_image_selected);
bparams.image_unselected.name(sidetray_params.tab_btn_image_normal);
bparams.image_selected.name(sidetray_params.tab_btn_image_selected);
bparams.image_disabled.name(sidetray_params.tab_btn_image_normal);
bparams.image_disabled_selected.name(sidetray_params.tab_btn_image_selected);
LLButton* button = LLUICtrlFactory::create<LLButton> (bparams);
button->setLabel(name);

View File

@ -54,13 +54,13 @@ public:
: public LLInitParam::Block<Params, LLPanel::Params>
{
// initial state
Optional<bool> collapsed;
Optional<LLUIImage*> tab_btn_image_normal,
tab_btn_image_selected;
Optional<bool> collapsed;
Optional<std::string> tab_btn_image_normal;
Optional<std::string> tab_btn_image_selected;
Optional<S32> default_button_width,
default_button_height,
default_button_margin;
Optional<S32> default_button_width;
Optional<S32> default_button_height;
Optional<S32> default_button_margin;
Params();
};
@ -68,7 +68,7 @@ public:
static LLSideTray* getInstance ();
static bool instanceCreated ();
protected:
LLSideTray(const Params& params);
LLSideTray(Params& params);
typedef std::vector<LLSideTrayTab*> child_vector_t;
typedef child_vector_t::iterator child_vector_iter_t;
typedef child_vector_t::const_iterator child_vector_const_iter_t;

View File

@ -371,7 +371,7 @@ LLIMWellWindow::ObjectRowPanel::~ObjectRowPanel()
//---------------------------------------------------------------------------------
void LLIMWellWindow::ObjectRowPanel::onClosePanel()
{
LLScriptFloaterManager::getInstance()->removeNotification(mChiclet->getSessionId());
LLScriptFloaterManager::getInstance()->onRemoveNotification(mChiclet->getSessionId());
}
void LLIMWellWindow::ObjectRowPanel::initChiclet(const LLUUID& notification_id, bool new_message/* = false*/)
@ -832,7 +832,7 @@ void LLIMWellWindow::closeAllImpl()
ObjectRowPanel* obj_panel = dynamic_cast <ObjectRowPanel*> (panel);
if (obj_panel)
{
LLScriptFloaterManager::instance().removeNotification(*iter);
LLScriptFloaterManager::instance().onRemoveNotification(*iter);
}
}
}

View File

@ -423,10 +423,6 @@ BOOL LLFloaterTexturePicker::postBuild()
mInventoryPanel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
mInventoryPanel->setAllowMultiSelect(FALSE);
// Disable auto selecting first filtered item because it takes away
// selection from the item set by LLTextureCtrl owning this floater.
mInventoryPanel->getRootFolder()->setAutoSelectOverride(TRUE);
// Commented out to scroll to currently selected texture. See EXT-5403.
// // store this filter as the default one
// mInventoryPanel->getRootFolder()->getFilter()->markDefault();

View File

@ -89,10 +89,9 @@ void LLURLLineEditor::copyEscapedURLToClipboard()
const std::string unescaped_text = wstring_to_utf8str(mText.getWString().substr(left_pos, length));
LLWString text_to_copy;
// *HACK: Because LLSLURL is currently broken we cannot use it to check if unescaped_text is a valid SLURL (see EXT-8335).
if (LLStringUtil::startsWith(unescaped_text, "http://")) // SLURL
if (LLSLURL(unescaped_text).isValid())
text_to_copy = utf8str_to_wstring(LLWeb::escapeURL(unescaped_text));
else // human-readable location
else
text_to_copy = utf8str_to_wstring(unescaped_text);
gClipboard.copyFromString( text_to_copy );

View File

@ -847,21 +847,6 @@ LLInventoryCallbackManager::~LLInventoryCallbackManager()
sInstance = NULL;
}
//static
void LLInventoryCallbackManager::destroyClass()
{
if (sInstance)
{
for (callback_map_t::iterator it = sInstance->mMap.begin(), end_it = sInstance->mMap.end(); it != end_it; ++it)
{
// drop LLPointer reference to callback
it->second = NULL;
}
sInstance->mMap.clear();
}
}
U32 LLInventoryCallbackManager::registerCB(LLPointer<LLInventoryCallback> cb)
{
if (cb.isNull())

View File

@ -36,7 +36,6 @@
#include "llinventory.h"
#include "llframetimer.h"
#include "llwearable.h"
#include "llui.h" //for LLDestroyClass
#include <boost/signals2.hpp> // boost::signals2::trackable
@ -300,9 +299,8 @@ private:
// misc functions
//void inventory_reliable_callback(void**, S32 status);
class LLInventoryCallbackManager : public LLDestroyClass<LLInventoryCallbackManager>
class LLInventoryCallbackManager
{
friend class LLDestroyClass<LLInventoryCallbackManager>;
public:
LLInventoryCallbackManager();
~LLInventoryCallbackManager();
@ -310,12 +308,9 @@ public:
void fire(U32 callback_id, const LLUUID& item_id);
U32 registerCB(LLPointer<LLInventoryCallback> cb);
private:
typedef std::map<U32, LLPointer<LLInventoryCallback> > callback_map_t;
callback_map_t mMap;
std::map<U32, LLPointer<LLInventoryCallback> > mMap;
U32 mLastCallback;
static LLInventoryCallbackManager *sInstance;
static void destroyClass();
public:
static bool is_instantiated() { return sInstance != NULL; }
};

View File

@ -2585,7 +2585,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
params.substitutions = substitutions;
params.payload = payload;
LLPostponedNotification::add<LLPostponedServerObjectNotification>(params, from_id, from_group);
LLPostponedNotification::add<LLPostponedServerObjectNotification>(params, from_id, false);
}
break;
case IM_FROM_TASK_AS_ALERT:

View File

@ -79,7 +79,6 @@
#include "llviewerparceloverlay.h"
#include "llviewerpartsource.h"
#include "llviewerregion.h"
#include "llviewerstats.h"
#include "llviewertextureanim.h"
#include "llviewerwindow.h" // For getSpinAxis
#include "llvoavatar.h"
@ -1917,12 +1916,6 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,
avatar->clampAttachmentPositions();
}
// If we're snapping the position by more than 0.5m, update LLViewerStats::mAgentPositionSnaps
if ( asAvatar() && asAvatar()->isSelf() && (mag_sqr > 0.25f) )
{
LLViewerStats::getInstance()->mAgentPositionSnaps.push( diff.length() );
}
}
if (new_rot != mLastRot

View File

@ -280,8 +280,6 @@ LLViewerStats::LLViewerStats() :
{
mStats[ST_HAS_BAD_TIMER] = 1.0;
}
mAgentPositionSnaps.reset();
}
LLViewerStats::~LLViewerStats()
@ -301,8 +299,6 @@ void LLViewerStats::resetStats()
LLViewerStats::getInstance()->mPacketsOutStat.reset();
LLViewerStats::getInstance()->mFPSStat.reset();
LLViewerStats::getInstance()->mTexturePacketsStat.reset();
LLViewerStats::getInstance()->mAgentPositionSnaps.reset();
}
@ -397,10 +393,6 @@ void LLViewerStats::addToMessage(LLSD &body) const
<< llendl;
}
}
body["AgentPositionSnaps"] = mAgentPositionSnaps.getData();
llinfos << "STAT: AgentPositionSnaps: Mean = " << mAgentPositionSnaps.getMean() << "; StdDev = " << mAgentPositionSnaps.getStdDev()
<< "; Count = " << mAgentPositionSnaps.getCount() << llendl;
}
// static

View File

@ -197,61 +197,6 @@ public:
void addToMessage(LLSD &body) const;
struct StatsAccumulator
{
S32 mCount;
F32 mSum;
F32 mSumOfSquares;
U32 mCountOfNextUpdatesToIgnore;
inline void push( F32 val )
{
if ( mCountOfNextUpdatesToIgnore > 0 )
{
mCountOfNextUpdatesToIgnore--;
return;
}
mCount++;
mSum += val;
mSumOfSquares += val * val;
}
inline F32 getMean() const
{
return (mCount == 0) ? 0.f : ((F32)mSum)/mCount;
}
inline F32 getStdDev() const
{
const F32 mean = getMean();
return (mCount == 0) ? 0.f : sqrt( mSumOfSquares/mCount - (mean * mean) );
}
inline U32 getCount() const
{
return mCount;
}
inline void reset()
{
mCount = 0;
mSum = mSumOfSquares = 0.f;
mCountOfNextUpdatesToIgnore = 0;
}
inline LLSD getData() const
{
LLSD data;
data["mean"] = getMean();
data["std_dev"] = getStdDev();
data["count"] = (S32)mCount;
return data;
}
};
StatsAccumulator mAgentPositionSnaps;
private:
F64 mStats[ST_COUNT];

View File

@ -495,7 +495,6 @@ LLViewerTexture::LLViewerTexture(const U32 width, const U32 height, const U8 com
mFullHeight = height ;
mUseMipMaps = usemipmaps ;
mComponents = components ;
setTexelsPerImage();
mID.generate();
sImageCount++;
@ -523,7 +522,6 @@ void LLViewerTexture::init(bool firstinit)
mFullWidth = 0;
mFullHeight = 0;
mTexelsPerImage = 0 ;
mUseMipMaps = FALSE ;
mComponents = 0 ;
@ -532,7 +530,7 @@ void LLViewerTexture::init(bool firstinit)
mMaxVirtualSize = 0.f;
mNeedsGLTexture = FALSE ;
mMaxVirtualSizeResetInterval = 1;
mMaxVirtualSizeResetCounter = mMaxVirtualSizeResetInterval ;
mMaxVirtualSizeResetCounter = 1 ;
mAdditionalDecodePriority = 0.f ;
mParcelMedia = NULL ;
mNumFaces = 0 ;
@ -840,8 +838,7 @@ BOOL LLViewerTexture::createGLTexture(S32 discard_level, const LLImageRaw* image
{
mFullWidth = mGLTexturep->getCurrentWidth() ;
mFullHeight = mGLTexturep->getCurrentHeight() ;
mComponents = mGLTexturep->getComponents() ;
setTexelsPerImage();
mComponents = mGLTexturep->getComponents() ;
}
return ret ;
@ -1059,16 +1056,9 @@ void LLViewerTexture::destroyGLTexture()
}
}
void LLViewerTexture::setTexelsPerImage()
{
S32 fullwidth = llmin(mFullWidth,(S32)MAX_IMAGE_SIZE_DEFAULT);
S32 fullheight = llmin(mFullHeight,(S32)MAX_IMAGE_SIZE_DEFAULT);
mTexelsPerImage = (F32)fullwidth * fullheight;
}
BOOL LLViewerTexture::isLargeImage()
{
return (S32)mTexelsPerImage > LLViewerTexture::sMinLargeImageSize ;
return mFullWidth * mFullHeight > LLViewerTexture::sMinLargeImageSize ;
}
//virtual
@ -1425,7 +1415,6 @@ BOOL LLViewerFetchedTexture::createTexture(S32 usename/*= 0*/)
mFullWidth = mRawImage->getWidth();
mFullHeight = mRawImage->getHeight();
setTexelsPerImage();
}
else
{
@ -1630,7 +1619,11 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
{
// priority range = 100,000 - 500,000
S32 desired_discard = mDesiredDiscardLevel;
if (!isJustBound() && mCachedRawImageReady)
if (getDontDiscard())
{
desired_discard -= 2;
}
else if (!isJustBound() && mCachedRawImageReady)
{
if(mBoostLevel < BOOST_HIGH)
{
@ -1646,7 +1639,7 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
S32 ddiscard = cur_discard - desired_discard;
ddiscard = llclamp(ddiscard, -1, MAX_DELTA_DISCARD_LEVEL_FOR_PRIORITY);
priority = (ddiscard + 1) * PRIORITY_DELTA_DISCARD_LEVEL_FACTOR;
priority = (ddiscard + 1) * PRIORITY_DELTA_DISCARD_LEVEL_FACTOR;
}
// Priority Formula:
@ -1654,51 +1647,19 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
// [10,000,000] + [1,000,000-9,000,000] + [100,000-500,000] + [1-20,000] + [0-999]
if (priority > 0.0f)
{
bool large_enough = mCachedRawImageReady && ((S32)mTexelsPerImage > sMinLargeImageSize) ;
if(large_enough)
{
//Note:
//to give small, low-priority textures some chance to be fetched,
//cut the priority in half if the texture size is larger than 256 * 256 and has a 64*64 ready.
priority *= 0.5f ;
}
pixel_priority = llclamp(pixel_priority, 0.0f, MAX_PRIORITY_PIXEL);
priority += pixel_priority + PRIORITY_BOOST_LEVEL_FACTOR * mBoostLevel;
if ( mBoostLevel > BOOST_HIGH)
{
if(mBoostLevel > BOOST_SUPER_HIGH)
{
//for very important textures, always grant the highest priority.
priority += PRIORITY_BOOST_HIGH_FACTOR;
}
else if(mCachedRawImageReady)
{
//Note:
//to give small, low-priority textures some chance to be fetched,
//if high priority texture has a 64*64 ready, lower its fetching priority.
setAdditionalDecodePriority(0.5f) ;
}
else
{
priority += PRIORITY_BOOST_HIGH_FACTOR;
}
priority += PRIORITY_BOOST_HIGH_FACTOR;
}
if(mAdditionalDecodePriority > 0.0f)
{
// priority range += 1,000,000.f-9,000,000.f
F32 additional = PRIORITY_ADDITIONAL_FACTOR * (1.0 + mAdditionalDecodePriority * MAX_ADDITIONAL_LEVEL_FOR_PRIORITY);
if(large_enough)
{
//Note:
//to give small, low-priority textures some chance to be fetched,
//cut the additional priority to a quarter if the texture size is larger than 256 * 256 and has a 64*64 ready.
additional *= 0.25f ;
}
priority += additional;
priority += PRIORITY_ADDITIONAL_FACTOR * (1.0 + mAdditionalDecodePriority * MAX_ADDITIONAL_LEVEL_FOR_PRIORITY);
}
}
return priority;
@ -1741,6 +1702,11 @@ void LLViewerFetchedTexture::updateVirtualSize()
addTextureStats(0.f, FALSE) ;//reset
}
if(mForceToSaveRawImage)
{
setAdditionalDecodePriority(0.75f) ; //boost the fetching priority
}
for(U32 i = 0 ; i < mNumFaces ; i++)
{
LLFace* facep = mFaceList[i] ;
@ -1853,7 +1819,6 @@ bool LLViewerFetchedTexture::updateFetch()
{
mFullWidth = mRawImage->getWidth() << mRawDiscardLevel;
mFullHeight = mRawImage->getHeight() << mRawDiscardLevel;
setTexelsPerImage();
if(mFullWidth > MAX_IMAGE_SIZE || mFullHeight > MAX_IMAGE_SIZE)
{
@ -2922,6 +2887,10 @@ void LLViewerLODTexture::processTextureStats()
//static const F64 log_2 = log(2.0);
static const F64 log_4 = log(4.0);
S32 fullwidth = llmin(mFullWidth,(S32)MAX_IMAGE_SIZE_DEFAULT);
S32 fullheight = llmin(mFullHeight,(S32)MAX_IMAGE_SIZE_DEFAULT);
mTexelsPerImage = (F32)fullwidth * fullheight;
F32 discard_level = 0.f;
// If we know the output width and height, we can force the discard

View File

@ -126,16 +126,15 @@ public:
BOOST_HIGH = 10,
BOOST_BUMP ,
BOOST_TERRAIN , // has to be high priority for minimap / low detail
BOOST_SELECTED ,
BOOST_AVATAR_BAKED_SELF ,
BOOST_AVATAR_SELF , // needed for baking avatar
BOOST_SUPER_HIGH , //textures higher than this need to be downloaded at the required resolution without delay.
BOOST_SELECTED ,
BOOST_HUD ,
BOOST_AVATAR_BAKED_SELF ,
BOOST_ICON ,
BOOST_UI ,
BOOST_PREVIEW ,
BOOST_MAP ,
BOOST_MAP_VISIBLE ,
BOOST_MAP_VISIBLE ,
BOOST_AVATAR_SELF , // needed for baking avatar
BOOST_MAX_LEVEL,
//other texture Categories
@ -269,7 +268,6 @@ protected:
void init(bool firstinit) ;
void reorganizeFaceList() ;
void reorganizeVolumeList() ;
void setTexelsPerImage();
private:
//note: do not make this function public.
/*virtual*/ LLImageGL* getGLTexture() const ;
@ -282,7 +280,6 @@ protected:
S32 mFullHeight;
BOOL mUseMipMaps ;
S8 mComponents;
F32 mTexelsPerImage; // Texels per image.
mutable S8 mNeedsGLTexture;
mutable F32 mMaxVirtualSize; // The largest virtual size of the image, in pixels - how much data to we need?
mutable S32 mMaxVirtualSizeResetCounter ;
@ -601,6 +598,8 @@ private:
void scaleDown() ;
private:
F32 mTexelsPerImage; // Texels per image.
F32 mDiscardVirtualSize; // Virtual size used to calculate desired discard
F32 mCalculatedDiscardLevel; // Last calculated discard level
};

View File

@ -3189,26 +3189,29 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
{ // muted avatars update at 16 hz
mUpdatePeriod = 16;
}
else if (mVisibilityRank <= LLVOAvatar::sMaxVisible)
else if (visible && mVisibilityRank <= LLVOAvatar::sMaxVisible)
{ //first 25% of max visible avatars are not impostored
mUpdatePeriod = 1;
}
else if (mVisibilityRank > LLVOAvatar::sMaxVisible * 4)
else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible * 4)
{ //background avatars are REALLY slow updating impostors
mUpdatePeriod = 16;
}
else if (mVisibilityRank > LLVOAvatar::sMaxVisible * 3)
else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible * 3)
{ //back 25% of max visible avatars are slow updating impostors
mUpdatePeriod = 8;
}
else if (mImpostorPixelArea <= impostor_area)
else if (visible && mImpostorPixelArea <= impostor_area)
{ // stuff in between gets an update period based on pixel area
mUpdatePeriod = llclamp((S32) sqrtf(impostor_area*4.f/mImpostorPixelArea), 2, 8);
}
else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible)
{ // force nearby impostors in ultra crowded areas
mUpdatePeriod = 2;
}
else
{
//nearby avatars, update the impostors more frequently.
mUpdatePeriod = 4;
{ // not impostored
mUpdatePeriod = 1;
}
visible = (LLDrawable::getCurrentFrame()+mID.mData[0])%mUpdatePeriod == 0 ? TRUE : FALSE;
@ -4271,12 +4274,10 @@ void LLVOAvatar::checkTextureLoading()
return ;
}
const F32 SELF_ADDITIONAL_PRI = 0.75f ;
const F32 ADDITIONAL_PRI = 0.5f;
void LLVOAvatar::addBakedTextureStats( LLViewerFetchedTexture* imagep, F32 pixel_area, F32 texel_area_ratio, S32 boost_level)
{
//if this function is not called for the last 512 frames, the texture pipeline will stop fetching this texture.
static const S32 MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL = 512 ; //frames
static const S32 MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL = 512 ; //frames
imagep->resetTextureStats();
imagep->setCanUseHTTP(false) ; //turn off http fetching for baked textures.
@ -4286,14 +4287,9 @@ void LLVOAvatar::addBakedTextureStats( LLViewerFetchedTexture* imagep, F32 pixel
mMinPixelArea = llmin(pixel_area, mMinPixelArea);
imagep->addTextureStats(pixel_area / texel_area_ratio);
imagep->setBoostLevel(boost_level);
if(boost_level != LLViewerTexture::BOOST_AVATAR_BAKED_SELF)
if(boost_level == LLViewerTexture::BOOST_AVATAR_BAKED_SELF)
{
imagep->setAdditionalDecodePriority(ADDITIONAL_PRI) ;
}
else
{
imagep->setAdditionalDecodePriority(SELF_ADDITIONAL_PRI) ;
imagep->setAdditionalDecodePriority(1.0f) ;
}
}
@ -7304,7 +7300,7 @@ void LLVOAvatar::cullAvatarsByPixelArea()
std::sort(LLCharacter::sInstances.begin(), LLCharacter::sInstances.end(), CompareScreenAreaGreater());
// Update the avatars that have changed status
U32 rank = 2; //1 is reserved for self.
U32 rank = 0;
for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin();
iter != LLCharacter::sInstances.end(); ++iter)
{
@ -7328,7 +7324,7 @@ void LLVOAvatar::cullAvatarsByPixelArea()
if (inst->isSelf())
{
inst->setVisibilityRank(1);
inst->setVisibilityRank(0);
}
else if (inst->mDrawable.notNull() && inst->mDrawable->isVisible())
{

View File

@ -868,7 +868,7 @@ private:
public:
// Responsible for detecting the user's voice signal (and when the
// user speaks, it puts a voice symbol over the avatar's head) and gesticulations
LLPointer<LLVoiceVisualizer> mVoiceVisualizer;
LLVoiceVisualizer* mVoiceVisualizer;
int mCurrentGesticulationLevel;
//--------------------------------------------------------------------
@ -1048,6 +1048,5 @@ protected: // Shared with LLVOAvatarSelf
*******************************************************************************/
}; // LLVOAvatar
extern const F32 SELF_ADDITIONAL_PRI;
#endif // LL_VO_AVATAR_H

View File

@ -2034,7 +2034,7 @@ void LLVOAvatarSelf::addLocalTextureStats( ETextureIndex type, LLViewerFetchedTe
imagep->resetTextureStats();
imagep->setMaxVirtualSizeResetInterval(16);
imagep->addTextureStats( desired_pixels / texel_area_ratio );
imagep->setAdditionalDecodePriority(SELF_ADDITIONAL_PRI) ;
imagep->setAdditionalDecodePriority(1.0f) ;
imagep->forceUpdateBindStats() ;
if (imagep->getDiscardLevel() < 0)
{

View File

@ -85,8 +85,8 @@ void LLPanelWearableListItem::onMouseLeave(S32 x, S32 y, MASK mask)
reshapeWidgets();
}
LLPanelWearableListItem::LLPanelWearableListItem(LLViewerInventoryItem* item, const LLPanelWearableListItem::Params& params)
: LLPanelInventoryListItemBase(item, params)
LLPanelWearableListItem::LLPanelWearableListItem(LLViewerInventoryItem* item)
: LLPanelInventoryListItemBase(item)
{
}
@ -101,19 +101,15 @@ LLPanelWearableOutfitItem* LLPanelWearableOutfitItem::create(LLViewerInventoryIt
LLPanelWearableOutfitItem* list_item = NULL;
if (item)
{
const LLPanelInventoryListItemBase::Params& params = LLUICtrlFactory::getDefaultParams<LLPanelInventoryListItemBase>();
list_item = new LLPanelWearableOutfitItem(item, worn_indication_enabled, params);
list_item->initFromParams(params);
list_item->postBuild();
list_item = new LLPanelWearableOutfitItem(item, worn_indication_enabled);
list_item->init();
}
return list_item;
}
LLPanelWearableOutfitItem::LLPanelWearableOutfitItem(LLViewerInventoryItem* item,
bool worn_indication_enabled,
const LLPanelWearableOutfitItem::Params& params)
: LLPanelInventoryListItemBase(item, params)
bool worn_indication_enabled)
: LLPanelInventoryListItemBase(item)
, mWornIndicationEnabled(worn_indication_enabled)
{
}
@ -136,17 +132,6 @@ void LLPanelWearableOutfitItem::updateItem(const std::string& name,
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
static LLWidgetNameRegistry::StaticRegistrar sRegisterPanelClothingListItem(&typeid(LLPanelClothingListItem::Params), "clothing_list_item");
LLPanelClothingListItem::Params::Params()
: up_btn("up_btn"),
down_btn("down_btn"),
edit_btn("edit_btn"),
lock_panel("lock_panel"),
edit_panel("edit_panel"),
lock_icon("lock_icon")
{}
// static
LLPanelClothingListItem* LLPanelClothingListItem::create(LLViewerInventoryItem* item)
@ -154,56 +139,26 @@ LLPanelClothingListItem* LLPanelClothingListItem::create(LLViewerInventoryItem*
LLPanelClothingListItem* list_item = NULL;
if(item)
{
const LLPanelClothingListItem::Params& params = LLUICtrlFactory::getDefaultParams<LLPanelClothingListItem>();
list_item = new LLPanelClothingListItem(item, params);
list_item->initFromParams(params);
list_item->postBuild();
list_item = new LLPanelClothingListItem(item);
list_item->init();
}
return list_item;
}
LLPanelClothingListItem::LLPanelClothingListItem(LLViewerInventoryItem* item, const LLPanelClothingListItem::Params& params)
: LLPanelDeletableWearableListItem(item, params)
LLPanelClothingListItem::LLPanelClothingListItem(LLViewerInventoryItem* item)
: LLPanelDeletableWearableListItem(item)
{
LLButton::Params button_params = params.up_btn;
applyXUILayout(button_params, this);
addChild(LLUICtrlFactory::create<LLButton>(button_params));
button_params = params.down_btn;
applyXUILayout(button_params, this);
addChild(LLUICtrlFactory::create<LLButton>(button_params));
LLPanel::Params panel_params = params.lock_panel;
applyXUILayout(panel_params, this);
LLPanel* lock_panelp = LLUICtrlFactory::create<LLPanel>(panel_params);
addChild(lock_panelp);
panel_params = params.edit_panel;
applyXUILayout(panel_params, this);
LLPanel* edit_panelp = LLUICtrlFactory::create<LLPanel>(panel_params);
addChild(edit_panelp);
if (lock_panelp)
{
LLIconCtrl::Params icon_params = params.lock_icon;
applyXUILayout(icon_params, this);
lock_panelp->addChild(LLUICtrlFactory::create<LLIconCtrl>(icon_params));
}
if (edit_panelp)
{
button_params = params.edit_btn;
applyXUILayout(button_params, this);
edit_panelp->addChild(LLUICtrlFactory::create<LLButton>(button_params));
}
setSeparatorVisible(false);
}
LLPanelClothingListItem::~LLPanelClothingListItem()
{
}
void LLPanelClothingListItem::init()
{
LLUICtrlFactory::getInstance()->buildPanel(this, "panel_clothing_list_item.xml");
}
BOOL LLPanelClothingListItem::postBuild()
{
LLPanelDeletableWearableListItem::postBuild();
@ -223,64 +178,32 @@ BOOL LLPanelClothingListItem::postBuild()
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
static LLWidgetNameRegistry::StaticRegistrar sRegisterPanelBodyPartsListItem(&typeid(LLPanelBodyPartsListItem::Params), "bodyparts_list_item");
LLPanelBodyPartsListItem::Params::Params()
: edit_btn("edit_btn"),
edit_panel("edit_panel"),
lock_panel("lock_panel"),
lock_icon("lock_icon")
{}
// static
LLPanelBodyPartsListItem* LLPanelBodyPartsListItem::create(LLViewerInventoryItem* item)
{
LLPanelBodyPartsListItem* list_item = NULL;
if(item)
{
const Params& params = LLUICtrlFactory::getDefaultParams<LLPanelBodyPartsListItem>();
list_item = new LLPanelBodyPartsListItem(item, params);
list_item->initFromParams(params);
list_item->postBuild();
list_item = new LLPanelBodyPartsListItem(item);
list_item->init();
}
return list_item;
}
LLPanelBodyPartsListItem::LLPanelBodyPartsListItem(LLViewerInventoryItem* item, const LLPanelBodyPartsListItem::Params& params)
: LLPanelWearableListItem(item, params)
LLPanelBodyPartsListItem::LLPanelBodyPartsListItem(LLViewerInventoryItem* item)
: LLPanelWearableListItem(item)
{
LLPanel::Params panel_params = params.edit_panel;
applyXUILayout(panel_params, this);
LLPanel* edit_panelp = LLUICtrlFactory::create<LLPanel>(panel_params);
addChild(edit_panelp);
panel_params = params.lock_panel;
applyXUILayout(panel_params, this);
LLPanel* lock_panelp = LLUICtrlFactory::create<LLPanel>(panel_params);
addChild(lock_panelp);
if (edit_panelp)
{
LLButton::Params btn_params = params.edit_btn;
applyXUILayout(btn_params, this);
edit_panelp->addChild(LLUICtrlFactory::create<LLButton>(btn_params));
}
if (lock_panelp)
{
LLIconCtrl::Params icon_params = params.lock_icon;
applyXUILayout(icon_params, this);
lock_panelp->addChild(LLUICtrlFactory::create<LLIconCtrl>(icon_params));
}
setSeparatorVisible(true);
}
LLPanelBodyPartsListItem::~LLPanelBodyPartsListItem()
{
}
void LLPanelBodyPartsListItem::init()
{
LLUICtrlFactory::getInstance()->buildPanel(this, "panel_body_parts_list_item.xml");
}
BOOL LLPanelBodyPartsListItem::postBuild()
{
LLPanelInventoryListItemBase::postBuild();
@ -291,11 +214,6 @@ BOOL LLPanelBodyPartsListItem::postBuild()
return TRUE;
}
static LLWidgetNameRegistry::StaticRegistrar sRegisterPanelDeletableWearableListItem(&typeid(LLPanelDeletableWearableListItem::Params), "deletable_wearable_list_item");
LLPanelDeletableWearableListItem::Params::Params()
: delete_btn("delete_btn")
{}
// static
LLPanelDeletableWearableListItem* LLPanelDeletableWearableListItem::create(LLViewerInventoryItem* item)
@ -303,22 +221,20 @@ LLPanelDeletableWearableListItem* LLPanelDeletableWearableListItem::create(LLVie
LLPanelDeletableWearableListItem* list_item = NULL;
if(item)
{
const Params& params = LLUICtrlFactory::getDefaultParams<LLPanelDeletableWearableListItem>();
list_item = new LLPanelDeletableWearableListItem(item, params);
list_item->initFromParams(params);
list_item->postBuild();
list_item = new LLPanelDeletableWearableListItem(item);
list_item->init();
}
return list_item;
}
LLPanelDeletableWearableListItem::LLPanelDeletableWearableListItem(LLViewerInventoryItem* item, const LLPanelDeletableWearableListItem::Params& params)
: LLPanelWearableListItem(item, params)
LLPanelDeletableWearableListItem::LLPanelDeletableWearableListItem(LLViewerInventoryItem* item)
: LLPanelWearableListItem(item)
{
LLButton::Params button_params = params.delete_btn;
applyXUILayout(button_params, this);
addChild(LLUICtrlFactory::create<LLButton>(button_params));
}
setSeparatorVisible(true);
void LLPanelDeletableWearableListItem::init()
{
LLUICtrlFactory::getInstance()->buildPanel(this, "panel_deletable_wearable_list_item.xml");
}
BOOL LLPanelDeletableWearableListItem::postBuild()
@ -344,11 +260,8 @@ LLPanelAttachmentListItem* LLPanelAttachmentListItem::create(LLViewerInventoryIt
LLPanelAttachmentListItem* list_item = NULL;
if(item)
{
const Params& params = LLUICtrlFactory::getDefaultParams<LLPanelDeletableWearableListItem>();
list_item = new LLPanelAttachmentListItem(item, params);
list_item->initFromParams(params);
list_item->postBuild();
list_item = new LLPanelAttachmentListItem(item);
list_item->init();
}
return list_item;
}
@ -371,32 +284,27 @@ void LLPanelAttachmentListItem::updateItem(const std::string& name,
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
static LLWidgetNameRegistry::StaticRegistrar sRegisterPanelDummyClothingListItem(&typeid(LLPanelDummyClothingListItem::Params), "dummy_clothing_list_item");
LLPanelDummyClothingListItem::Params::Params()
: add_panel("add_panel"),
add_btn("add_btn")
{}
LLPanelDummyClothingListItem* LLPanelDummyClothingListItem::create(LLWearableType::EType w_type)
{
const Params& params = LLUICtrlFactory::getDefaultParams<LLPanelDummyClothingListItem>();
LLPanelDummyClothingListItem* list_item = new LLPanelDummyClothingListItem(w_type, params);
list_item->initFromParams(params);
list_item->postBuild();
LLPanelDummyClothingListItem* list_item = new LLPanelDummyClothingListItem(w_type);
list_item->init();
return list_item;
}
BOOL LLPanelDummyClothingListItem::postBuild()
{
LLIconCtrl* icon = getChild<LLIconCtrl>("item_icon");
setIconCtrl(icon);
setTitleCtrl(getChild<LLTextBox>("item_name"));
addWidgetToRightSide("btn_add_panel");
setIconImage(LLInventoryIcon::getIcon(LLAssetType::AT_CLOTHING, LLInventoryType::IT_NONE, mWearableType, FALSE));
updateItem(wearableTypeToString(mWearableType));
// Make it look loke clothing item - reserve space for 'delete' button
setLeftWidgetsWidth(getChildView("item_icon")->getRect().mLeft);
setLeftWidgetsWidth(icon->getRect().mLeft);
setWidgetsVisible(false);
reshapeWidgets();
@ -409,23 +317,15 @@ LLWearableType::EType LLPanelDummyClothingListItem::getWearableType() const
return mWearableType;
}
LLPanelDummyClothingListItem::LLPanelDummyClothingListItem(LLWearableType::EType w_type, const LLPanelDummyClothingListItem::Params& params)
: LLPanelWearableListItem(NULL, params),
mWearableType(w_type)
LLPanelDummyClothingListItem::LLPanelDummyClothingListItem(LLWearableType::EType w_type)
: LLPanelWearableListItem(NULL)
, mWearableType(w_type)
{
LLPanel::Params panel_params(params.add_panel);
applyXUILayout(panel_params, this);
LLPanel* add_panelp = LLUICtrlFactory::create<LLPanel>(panel_params);
addChild(add_panelp);
if (add_panelp)
{
LLButton::Params button_params(params.add_btn);
applyXUILayout(button_params, this);
add_panelp->addChild(LLUICtrlFactory::create<LLButton>(button_params));
}
setSeparatorVisible(true);
void LLPanelDummyClothingListItem::init()
{
LLUICtrlFactory::getInstance()->buildPanel(this, "panel_dummy_clothing_list_item.xml");
}
typedef std::map<LLWearableType::EType, std::string> clothing_to_string_map_t;

View File

@ -68,7 +68,7 @@ public:
protected:
LLPanelWearableListItem(LLViewerInventoryItem* item, const Params& params);
LLPanelWearableListItem(LLViewerInventoryItem* item);
};
/**
@ -93,7 +93,7 @@ public:
protected:
LLPanelWearableOutfitItem(LLViewerInventoryItem* item,
bool worn_indication_enabled, const Params& params);
bool worn_indication_enabled);
private:
bool mWornIndicationEnabled;
@ -103,13 +103,6 @@ class LLPanelDeletableWearableListItem : public LLPanelWearableListItem
{
LOG_CLASS(LLPanelDeletableWearableListItem);
public:
struct Params : public LLInitParam::Block<Params, LLPanelWearableListItem::Params>
{
Optional<LLButton::Params> delete_btn;
Params();
};
static LLPanelDeletableWearableListItem* create(LLViewerInventoryItem* item);
@ -123,7 +116,9 @@ public:
inline void setShowDeleteButton(bool show) { setShowWidget("btn_delete", show); }
protected:
LLPanelDeletableWearableListItem(LLViewerInventoryItem* item, const Params& params);
LLPanelDeletableWearableListItem(LLViewerInventoryItem* item);
/*virtual*/ void init();
};
/** Outfit list item for an attachment */
@ -139,7 +134,7 @@ public:
EItemState item_state = IS_DEFAULT);
protected:
LLPanelAttachmentListItem(LLViewerInventoryItem* item, const Params& params) : LLPanelDeletableWearableListItem(item, params) {};
LLPanelAttachmentListItem(LLViewerInventoryItem* item) : LLPanelDeletableWearableListItem(item) {};
};
/**
@ -152,18 +147,6 @@ class LLPanelClothingListItem : public LLPanelDeletableWearableListItem
LOG_CLASS(LLPanelClothingListItem);
public:
struct Params : public LLInitParam::Block<Params, LLPanelDeletableWearableListItem::Params>
{
Optional<LLButton::Params> up_btn,
down_btn,
edit_btn;
Optional<LLPanel::Params> lock_panel,
edit_panel;
Optional<LLIconCtrl::Params> lock_icon;
Params();
};
static LLPanelClothingListItem* create(LLViewerInventoryItem* item);
virtual ~LLPanelClothingListItem();
@ -179,25 +162,18 @@ public:
inline void setShowLockButton(bool show) { setShowWidget("btn_lock", show); }
inline void setShowEditButton(bool show) { setShowWidget("btn_edit_panel", show); }
protected:
LLPanelClothingListItem(LLViewerInventoryItem* item, const Params& params);
LLPanelClothingListItem(LLViewerInventoryItem* item);
/*virtual*/ void init();
};
class LLPanelBodyPartsListItem : public LLPanelWearableListItem
{
LOG_CLASS(LLPanelBodyPartsListItem);
public:
struct Params : public LLInitParam::Block<Params, LLPanelWearableListItem::Params>
{
Optional<LLButton::Params> edit_btn;
Optional<LLPanel::Params> lock_panel,
edit_panel;
Optional<LLIconCtrl::Params> lock_icon;
Params();
};
static LLPanelBodyPartsListItem* create(LLViewerInventoryItem* item);
@ -212,7 +188,9 @@ public:
inline void setShowEditButton(bool show) { setShowWidget("btn_edit_panel", show); }
protected:
LLPanelBodyPartsListItem(LLViewerInventoryItem* item, const Params& params);
LLPanelBodyPartsListItem(LLViewerInventoryItem* item);
/*virtual*/ void init();
};
@ -224,19 +202,15 @@ protected:
class LLPanelDummyClothingListItem : public LLPanelWearableListItem
{
public:
struct Params : public LLInitParam::Block<Params, LLPanelWearableListItem::Params>
{
Optional<LLPanel::Params> add_panel;
Optional<LLButton::Params> add_btn;
Params();
};
static LLPanelDummyClothingListItem* create(LLWearableType::EType w_type);
/*virtual*/ BOOL postBuild();
LLWearableType::EType getWearableType() const;
protected:
LLPanelDummyClothingListItem(LLWearableType::EType w_type, const Params& params);
LLPanelDummyClothingListItem(LLWearableType::EType w_type);
/*virtual*/ void init();
static std::string wearableTypeToString(LLWearableType::EType w_type);

View File

@ -97,9 +97,6 @@ void LLWinDebug::init()
// Load the dbghelp dll now, instead of waiting for the crash.
// Less potential for stack mangling
// Don't install vectored exception handler if being debugged.
if(IsDebuggerPresent()) return;
if (s_first_run)
{
// First, try loading from the directory that the app resides in.
@ -138,42 +135,36 @@ void LLWinDebug::init()
void LLWinDebug::writeDumpToFile(MINIDUMP_TYPE type, MINIDUMP_EXCEPTION_INFORMATION *ExInfop, const std::string& filename)
{
// Temporary fix to switch out the code that writes the DMP file.
// Fix coming that doesn't write a mini dump file for regular C++ exceptions.
const bool enable_write_dump_file = false;
if ( enable_write_dump_file )
if(f_mdwp == NULL || gDirUtilp == NULL)
{
if(f_mdwp == NULL || gDirUtilp == NULL)
return;
}
else
{
std::string dump_path = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, filename);
HANDLE hFile = CreateFileA(dump_path.c_str(),
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
return;
// Write the dump, ignoring the return value
f_mdwp(GetCurrentProcess(),
GetCurrentProcessId(),
hFile,
type,
ExInfop,
NULL,
NULL);
CloseHandle(hFile);
}
else
{
std::string dump_path = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, filename);
HANDLE hFile = CreateFileA(dump_path.c_str(),
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
// Write the dump, ignoring the return value
f_mdwp(GetCurrentProcess(),
GetCurrentProcessId(),
hFile,
type,
ExInfop,
NULL,
NULL);
CloseHandle(hFile);
}
}
}
}

View File

@ -7111,7 +7111,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
if (LLPipeline::sWaterReflections && assertInitialized() && LLDrawPoolWater::sNeedsReflectionUpdate)
{
BOOL skip_avatar_update = FALSE;
if (!isAgentAvatarValid() || gAgentCamera.getCameraAnimating() || gAgentCamera.getCameraMode() != CAMERA_MODE_MOUSELOOK)
if (gAgentCamera.getCameraAnimating() || gAgentCamera.getCameraMode() != CAMERA_MODE_MOUSELOOK)
{
skip_avatar_update = TRUE;
}

View File

@ -5,7 +5,7 @@
Husk, annonceomkostninger kan ikke refunderes.
</text>
<spinner label="Pris: L$" name="price_for_listing" tool_tip="Pris for optagelse af annonce." value="50"/>
<spinner label="Pris for annonce:" name="price_for_listing" tool_tip="Pris for optagelse af annonce." value="50"/>
<text name="l$_text" value="L$"/>
<text name="more_info_text">
Mere info (link til hjælp om annoncer)

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="COF Clothing">
<menu_item_call label="Tag af" name="take_off"/>
<menu_item_call label="Flyt et lag op" name="move_up"/>
<menu_item_call label="Flyt et lag ned" name="move_down"/>
<menu_item_call label="Redigér" name="edit"/>
<menu_item_call label="Erstat" name="replace"/>
</context_menu>

View File

@ -73,10 +73,11 @@
<menu_item_call label="Deaktivér" name="Deactivate"/>
<menu_item_call label="Gem som" name="Save As"/>
<menu_item_call label="Tag af dig selv" name="Detach From Yourself"/>
<menu_item_call label="Tag på" name="Wearable And Object Wear"/>
<menu_item_call label="Tag på" name="Object Wear"/>
<menu label="Vedhæft" name="Attach To"/>
<menu label="Vedhæft til HUD" name="Attach To HUD"/>
<menu_item_call label="Redigér" name="Wearable Edit"/>
<menu_item_call label="Tag på" name="Wearable Wear"/>
<menu_item_call label="Tilføj" name="Wearable Add"/>
<menu_item_call label="Tag af" name="Take Off"/>
<menu_item_call label="--ingen valg--" name="--no options--"/>

View File

@ -6,10 +6,9 @@
<menu_item_call label="Vis filtre" name="show_filters"/>
<menu_item_call label="Nulstil filtre" name="reset_filters"/>
<menu_item_call label="Luk alle mapper" name="close_folders"/>
<menu_item_call label="Tøm papirkurv" name="empty_trash"/>
<menu_item_call label="Tøm &quot;fundne genstande&quot;" name="empty_lostnfound"/>
<menu_item_call label="Gem tekstur som" name="Save Texture As"/>
<menu_item_call label="Del" name="Share"/>
<menu_item_call label="Find original" name="Find Original"/>
<menu_item_call label="Find alle links" name="Find All Links"/>
<menu_item_call label="Tøm papirkurv" name="empty_trash"/>
</menu>

View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="Gear Outfit">
<menu_item_call label="Tag på - Erstat nuværende sæt" name="wear"/>
<menu_item_call label="Tag på - Tilføj til nuværende sæt" name="wear_add"/>
<menu_item_call label="Tag af - Fjern fra nuværende sæt" name="take_off"/>
<menu label="Nyt tøj" name="New Clothes">
<menu_item_call label="Ny trøje" name="New Shirt"/>

View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Outfit Wearable Context Menu">
<menu_item_call label="Erstat" name="wear_replace"/>
<menu_item_call label="Tag på" name="wear_wear"/>
<menu_item_call label="Erstat" name="wear"/>
<menu_item_call label="Tilføj" name="wear_add"/>
<menu_item_call label="Tag af" name="take_off_or_detach"/>
<menu_item_call label="Tag af" name="detach"/>

View File

@ -230,10 +230,6 @@ Er du sikker på at du vil fortsætte?
<notification name="DeleteAvatarPick">
Slet favorit &lt;nolink&gt;[PICK]&lt;/nolink&gt;?
</notification>
<notification name="DeleteOutfits">
Slet valgte sæt?
<usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/>
</notification>
<notification name="CacheWillClear">
Cache vil blive tømt ved næste genstart af [APP_NAME].
</notification>
@ -939,6 +935,11 @@ Henvis til dette fra en hjemmeside for at give andre nem adgang til denne lokati
Uploader billeder fra verdenen og www...
(Tager omkring 5 minutter.)
</notification>
<notification name="UploadConfirmation">
Omkostninger ved at sende: L$[AMOUNT].
Ønsker du at fortsætte?
<usetemplate name="okcancelbuttons" notext="Annullér" yestext="Send"/>
</notification>
<notification name="UploadPayment">
Du betalte L$[AMOUNT] for at uploade.
</notification>
@ -1350,6 +1351,9 @@ Fra genstand: [OBJECTNAME], ejer: [NAME]?
<notification name="FailedToFindWearable">
Det lykkedes ikke at finde [TYPE] med navnet [DESC] i databasen.
</notification>
<notification name="ShareToWebFailed">
Fejl ved afsendelse af billede til web.
</notification>
<notification name="InvalidWearable">
Den genstand du prøver at tage på benytter en funktion din klient ikke kan forstå. Upgradér venligst din version af [APP_NAME] for at kunne tage denne genstand på.
</notification>

View File

@ -34,16 +34,8 @@
</layout_panel>
</layout_stack>
</layout_panel>
<layout_panel name="add_wearables_panel">
<button label="Tag genstand på" name="plus_btn"/>
</layout_panel>
<layout_panel name="add_wearables_panel"/>
</layout_stack>
<panel name="no_add_wearables_button_bar">
<button name="shop_btn_1" tool_tip="Besøg SL markedspladsen. Du kan også vælge noget du har på, og så klikke her for at se andre ting som dette"/>
</panel>
<panel name="add_wearables_button_bar">
<button name="shop_btn_2" tool_tip="Besøg SL markedspladsen. Du kan også vælge noget du har på, og så klikke her for at se andre ting som dette"/>
</panel>
<panel name="save_revert_button_bar">
<button label="Gem" name="save_btn"/>
<button label="Annullér ændringer" name="revert_btn" tool_tip="Vend tilbage til sidst gemte version"/>

View File

@ -1,16 +1,12 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Ting" name="Outfits">
<panel.string name="wear_outfit_tooltip">
Tag valgte sæt på
</panel.string>
<panel.string name="wear_items_tooltip">
Bær valgte genstande
</panel.string>
<tab_container name="appearance_tabs">
<panel label="MINE SÆT" name="outfitslist_tab"/>
<panel label="HAR PÅ" name="cof_tab"/>
<inventory_panel label="HAR PÅ" name="cof_tab"/>
</tab_container>
<panel name="bottom_panel">
<button name="options_gear_btn" tool_tip="Vis flere muligheder"/>
<dnd_button name="trash_btn" tool_tip="Slet valgte sæt"/>
<button label="Gem som" name="save_btn"/>
<button label="Tag på" name="wear_btn" tool_tip="Tag valgte sæt på"/>
</panel>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="Outfits">
<panel name="bottom_panel">
<button name="options_gear_btn" tool_tip="Vis yderligere valgmuligheder"/>
<button name="trash_btn" tool_tip="Slet valgte sæt"/>
</panel>
</panel>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="Wearing">
<panel name="bottom_panel">
<button name="options_gear_btn" tool_tip="Vis yderligere valgmuligheder"/>
</panel>
</panel>

View File

@ -15,12 +15,6 @@
<panel.string name="acquiredDate">
[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
</panel.string>
<panel.string name="origin_inventory">
(Beholdning)
</panel.string>
<panel.string name="origin_inworld">
(I Second Life)
</panel.string>
<text name="title" value="Profil for genstand"/>
<text name="origin" value="(Beholdning)"/>
<panel label="">
@ -41,7 +35,9 @@
<text name="LabelAcquiredTitle">
Erhvervet:
</text>
<text name="LabelAcquiredDate"/>
<text name="LabelAcquiredDate">
Ons Maj 24 12:50:46 2006
</text>
<panel name="perms_inv">
<text name="perm_modify">
Du kan:

View File

@ -37,7 +37,7 @@
Blandet salg
</panel.string>
<text name="title" value="Objekt profil"/>
<text name="where" value="(I Second Life)"/>
<text name="where" value="(verden)"/>
<panel label="" name="properties_panel">
<text name="Name:">
Navn:

View File

@ -1585,30 +1585,21 @@
<string name="ATTACH_HUD_BOTTOM_RIGHT">
HUD Nederst til højre
</string>
<string name="Bad attachment point">
Ugyldig fæste-punkt
</string>
<string name="CursorPos">
Linie [LINE], Kolonne [COLUMN]
</string>
<string name="PanelDirCountFound">
[COUNT] fundet
</string>
<string name="PanelContentsTooltip">
Indhold i objekt
</string>
<string name="PanelContentsNewScript">
Nyt script
</string>
<string name="PanelContentsTooltip">
Indhold i objekt
</string>
<string name="BusyModeResponseDefault">
Beboeren du sendte en besked er &apos;optaget&apos;, hvilket betyder at han/hun ikke vil forstyrres. Din besked vil blive vis i hans/hendes IM panel til senere visning.
</string>
<string name="NoOutfits">
Du har ikke nogen sæt endnu. Prøv [secondlife:///app/search/all/ Search]
</string>
<string name="NoOutfitsTabsMatched">
Fandt du ikke hvad du søgte? Prøv [secondlife:///app/search/all/[SEARCH_TERM] Search].
</string>
<string name="MuteByName">
(Efter navn)
</string>

View File

@ -60,7 +60,7 @@
<button label="Jetzt kaufen" name="buy_btn"/>
<button label="Abbrechen" name="cancel_btn"/>
<text name="info_cannot_buy">
Kaufabbruch
Kauf nicht möglich
</text>
<button label="Weiter zur Kontoseite" name="error_web"/>
</floater>

View File

@ -5,7 +5,7 @@
Anzeigengebühren werden nicht zurückerstattet.
</text>
<spinner label="Preis: L$" name="price_for_listing" tool_tip="Preis für Anzeige." value="50"/>
<spinner label="Anzeigenpreis:" name="price_for_listing" tool_tip="Preis für Anzeige." value="50"/>
<text name="l$_text" value="L$"/>
<text name="more_info_text">
Weitere Infos (Link zur Hilfe)

View File

@ -16,7 +16,7 @@
Zur Vorschau
</text>
<text name="status_text">
Stimme aufnehmen und auf einen Effekt klicken, um diesen auf Ihre Stimme anzuwenden.
Nehmen Sie Ihre Stimme auf, klicken Sie dann auf einen Effekt, um den Effekt auf Ihre Stimme anzuwenden.
</text>
<button label="Aufnehmen" name="record_btn" tool_tip="Nehmen Sie Ihre Stimme auf."/>
<button label="Stopp" name="record_stop_btn"/>

View File

@ -76,10 +76,11 @@
<menu_item_call label="Deaktivieren" name="Deactivate"/>
<menu_item_call label="Speichern unter" name="Save As"/>
<menu_item_call label="Von Körper abnehmen" name="Detach From Yourself"/>
<menu_item_call label="Anziehen" name="Wearable And Object Wear"/>
<menu_item_call label="Anziehen" name="Object Wear"/>
<menu label="Anhängen an" name="Attach To"/>
<menu label="An HUD hängen" name="Attach To HUD"/>
<menu_item_call label="Bearbeiten" name="Wearable Edit"/>
<menu_item_call label="Anziehen" name="Wearable Wear"/>
<menu_item_call label="Hinzufügen" name="Wearable Add"/>
<menu_item_call label="Ausziehen" name="Take Off"/>
<menu_item_call label="--keine Optionen--" name="--no options--"/>

View File

@ -6,10 +6,9 @@
<menu_item_call label="Filter anzeigen" name="show_filters"/>
<menu_item_call label="Filter zurücksetzen" name="reset_filters"/>
<menu_item_call label="Alle Ordner schließen" name="close_folders"/>
<menu_item_call label="Papierkorb ausleeren" name="empty_trash"/>
<menu_item_call label="Fundbüro ausleeren" name="empty_lostnfound"/>
<menu_item_call label="Textur speichern als" name="Save Texture As"/>
<menu_item_call label="Teilen" name="Share"/>
<menu_item_call label="Original suchen" name="Find Original"/>
<menu_item_call label="Alle Links suchen" name="Find All Links"/>
<menu_item_call label="Papierkorb ausleeren" name="empty_trash"/>
</menu>

View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="Gear Outfit">
<menu_item_call label="Anziehen - Aktuelles Outfit ersetzen" name="wear"/>
<menu_item_call label="Anziehen - Aktuelles Outfit hinzufügen" name="wear_add"/>
<menu_item_call label="Ausziehen - Aus aktuellem Outfit entfernen" name="take_off"/>
<menu label="Neue Kleider" name="New Clothes">
<menu_item_call label="Neues Hemd" name="New Shirt"/>

View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Outfit Wearable Context Menu">
<menu_item_call label="Ersetzen" name="wear_replace"/>
<menu_item_call label="Anziehen" name="wear_wear"/>
<menu_item_call label="Ersetzen" name="wear"/>
<menu_item_call label="Hinzufügen" name="wear_add"/>
<menu_item_call label="Ausziehen / Abnehmen" name="take_off_or_detach"/>
<menu_item_call label="Abnehmen" name="detach"/>

View File

@ -365,10 +365,6 @@ Sind Sie sicher, dass Sie fortfahren wollen?
Auswahl &lt;nolink&gt;[PICK]&lt;/nolink&gt; löschen?
<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
</notification>
<notification name="DeleteOutfits">
Das/Die ausgewählte(n) Outfit(s) löschen?
<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
</notification>
<notification name="PromptGoToEventsPage">
Zur [SECOND_LIFE] Events-Webseite?
<url name="url">
@ -2055,6 +2051,11 @@ Von einer Webseite zu diesem Formular linken, um anderen leichten Zugang zu dies
In-Welt- und Website-Fotos werden hochgeladen...
(Dauert ca. 5 Minuten.)
</notification>
<notification name="UploadConfirmation">
Kosten für Hochladen: [AMOUNT] L$.
Möchten Sie fortfahren?
<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Hochladen"/>
</notification>
<notification name="UploadPayment">
Sie haben für das Hochladen [AMOUNT] L$ bezahlt.
</notification>
@ -2477,6 +2478,9 @@ Von Objekt: [OBJECTNAME], Eigentümer: [NAME]?
<notification name="FailedToFindWearable">
[TYPE] namens [DESC] nicht in Datenbank.
</notification>
<notification name="ShareToWebFailed">
Bild aus Internet konnte nicht hochgeladen werden.
</notification>
<notification name="InvalidWearable">
Dieser Artikel verwendet eine Funktion, die Ihr Viewer nicht unterstützt. Bitte aktualisieren Sie Ihre Version von [APP_NAME], um dieses Objekt anziehen zu können.
</notification>

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="navigation_bar">
<panel name="navigation_panel">
<pull_button name="back_btn" tool_tip="Zurück zum vorherigen Standort teleportieren"/>
<pull_button name="forward_btn" tool_tip="Um einen Standort weiter teleportieren"/>
<pull_button name="back_btn" tool_tip="Zurück zum vorherigen Standort gehen"/>
<pull_button name="forward_btn" tool_tip="Um einen Standort weiter gehen"/>
<button name="home_btn" tool_tip="Zu meinem Zuhause teleportieren"/>
<location_input label="Standort" name="location_combo"/>
<search_combo_box label="Suche" name="search_combo_box" tool_tip="Suche">

View File

@ -34,16 +34,8 @@
</layout_panel>
</layout_stack>
</layout_panel>
<layout_panel name="add_wearables_panel">
<button label="Objekt anziehen" name="plus_btn"/>
</layout_panel>
<layout_panel name="add_wearables_panel"/>
</layout_stack>
<panel name="no_add_wearables_button_bar">
<button name="shop_btn_1" tool_tip="Besuchen Sie den Marktplatz. Sie können auch einen Teil Ihres Outfits auswählen, und dann hier klicken, um ähnliche Artikel anzuzeigen."/>
</panel>
<panel name="add_wearables_button_bar">
<button name="shop_btn_2" tool_tip="Besuchen Sie den Marktplatz. Sie können auch einen Teil Ihres Outfits auswählen, und dann hier klicken, um ähnliche Artikel anzuzeigen."/>
</panel>
<panel name="save_revert_button_bar">
<button label="Speichern" name="save_btn"/>
<button label="Änderungen rückgängig machen" name="revert_btn" tool_tip="Zur zuletzt gespeicherten Version zurücksetzen"/>

View File

@ -1,16 +1,12 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Sonstiges" name="Outfits">
<panel.string name="wear_outfit_tooltip">
Ausgewähltes Outfit tragen
</panel.string>
<panel.string name="wear_items_tooltip">
Ausgewählte Objekte tragen
</panel.string>
<tab_container name="appearance_tabs">
<panel label="MEINE OUTFITS" name="outfitslist_tab"/>
<panel label="AKTUELLES OUTFIT" name="cof_tab"/>
<inventory_panel label="AKTUELLES OUTFIT" name="cof_tab"/>
</tab_container>
<panel name="bottom_panel">
<button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/>
<dnd_button name="trash_btn" tool_tip="Ausgewähltes Outfit löschen"/>
<button label="Speichern unter" name="save_btn"/>
<button label="Anziehen" name="wear_btn" tool_tip="Ausgewähltes Outfit tragen"/>
</panel>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="Outfits">
<panel name="bottom_panel">
<button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/>
<button name="trash_btn" tool_tip="Ausgewähltes Outfit löschen"/>
</panel>
</panel>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="Wearing">
<panel name="bottom_panel">
<button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/>
</panel>
</panel>

View File

@ -13,7 +13,7 @@
<text name="currentlook_name">
MyOutfit With a really Long Name like MOOSE
</text>
<button label="" name="edit_outfit_btn" tool_tip="Dieses Outfit bearbeiten"/>
<button label="" name="edit_outfit_btn" tool_tip="Diese Outfit bearbeiten"/>
</panel>
<filter_editor label="Outfits filtern" name="Filter"/>
</panel>

View File

@ -15,12 +15,6 @@
<panel.string name="acquiredDate">
[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
</panel.string>
<panel.string name="origin_inventory">
(Inventar)
</panel.string>
<panel.string name="origin_inworld">
(Inworld)
</panel.string>
<text name="title" value="Objektprofil"/>
<text name="origin" value="(Inventar)"/>
<panel label="">
@ -33,17 +27,23 @@
<text name="LabelCreatorTitle">
Ersteller:
</text>
<text name="LabelCreatorName"/>
<text name="LabelCreatorName">
Nicole Linden
</text>
<button label="Profil" name="BtnCreator"/>
<text name="LabelOwnerTitle">
Eigentümer:
</text>
<text name="LabelOwnerName"/>
<text name="LabelOwnerName">
Thrax Linden
</text>
<button label="Profil" name="BtnOwner"/>
<text name="LabelAcquiredTitle">
Erworben:
</text>
<text name="LabelAcquiredDate"/>
<text name="LabelAcquiredDate">
Mittwoch, 24. Mai 2006, 12:50:46
</text>
<panel name="perms_inv">
<text name="perm_modify">
Sie können:

View File

@ -37,7 +37,7 @@
Mischverkauf
</panel.string>
<text name="title" value="Objektprofil"/>
<text name="where" value="(Inworld)"/>
<text name="where" value="(inworld)"/>
<panel label="" name="properties_panel">
<text name="Name:">
Name:

View File

@ -1615,9 +1615,6 @@
<string name="ATTACH_HUD_BOTTOM_RIGHT">
HUD unten rechts
</string>
<string name="Bad attachment point">
Ungültige Stelle für Anhang
</string>
<string name="CursorPos">
Zeile [LINE], Spalte [COLUMN]
</string>
@ -1630,21 +1627,15 @@
<string name="PanelDirEventsDateText">
[mthnum,datetime,slt]/[day,datetime,slt]
</string>
<string name="PanelContentsTooltip">
Objektinhalt
</string>
<string name="PanelContentsNewScript">
Neues Skript
</string>
<string name="PanelContentsTooltip">
Objektinhalt
</string>
<string name="BusyModeResponseDefault">
Der Einwohner/Die Einwohnerin ist „beschäftigt”, d.h. er/sie möchte im Moment nicht gestört werden. Ihre Nachricht wird dem Einwohner/der Einwohnerin als IM angezeigt, und kann später beantwortet werden.
</string>
<string name="NoOutfits">
Sie haben noch Outfits. Versuchen Sie es mit der [secondlife:///app/search/all Suche].
</string>
<string name="NoOutfitsTabsMatched">
Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/all/[SEARCH_TERM] Suche].
</string>
<string name="MuteByName">
(Nach Namen)
</string>

View File

@ -71,8 +71,7 @@
image_name="Cam_Preset_Front_Off" />
<panel_camera_item.selected_picture
image_name="Cam_Preset_Front_On" />
<panel_camera_item.text
name="front_view_text">
<panel_camera_item.text>
Front View
</panel_camera_item.text>
</panel_camera_item>
@ -86,8 +85,7 @@
image_name="Cam_Preset_Side_Off" />
<panel_camera_item.selected_picture
image_name="Cam_Preset_Side_On" />
<panel_camera_item.text
name="side_view_text">
<panel_camera_item.text>
Side View
</panel_camera_item.text>
</panel_camera_item>
@ -102,8 +100,7 @@
image_name="Cam_Preset_Back_Off" />
<panel_camera_item.selected_picture
image_name="Cam_Preset_Back_On" />
<panel_camera_item.text
name="rear_view_text">
<panel_camera_item.text>
Rear View
</panel_camera_item.text>
</panel_camera_item>
@ -125,8 +122,7 @@
<panel_camera_item.mousedown_callback
function="CameraPresets.ChangeView"
parameter="object_view" />
<panel_camera_item.text
name="object_view_text">
<panel_camera_item.text>
Object View
</panel_camera_item.text>
<panel_camera_item.picture
@ -140,8 +136,7 @@
<panel_camera_item.mousedown_callback
function="CameraPresets.ChangeView"
parameter="mouselook_view" />
<panel_camera_item.text
name="mouselook_view_text">
<panel_camera_item.text>
Mouselook View
</panel_camera_item.text>
<panel_camera_item.picture

View File

@ -50,13 +50,8 @@
function="File.UploadBulk"
parameter="" />
</menu_item_call>
<menu_item_call
label="Set Default Upload Permissions"
name="perm prefs">
<menu_item_call.on_click
function="Floater.Toggle"
parameter="perm_prefs" />
</menu_item_call>
<menu_item_separator
layout="topleft" />
</menu>
<menu_item_call

Some files were not shown because too many files have changed in this diff Show More