Merge branch 'master' of https://vcs.firestormviewer.org/phoenix-firestorm
# Conflicts: # indra/newview/llsidepanelinventory.h # indra/newview/skins/ansastorm/xui/en/sidepanel_inventory.xml # indra/newview/skins/default/xui/en/sidepanel_inventory.xmlmaster
commit
4df4d9cabf
|
|
@ -1083,11 +1083,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>eebbcd0757dd28646ebb4505e7af140e</string>
|
||||
<string>9d9f72f50cffe7443e4b58f009ffc1f4</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.02.13-darwin64-6.tar.bz2</string>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.02.15-darwin64-9.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -1097,11 +1097,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>5fee0f9587f50531211ff9e1e860692f</string>
|
||||
<string>79fb2f09d2c81ed6464e11af36566910</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.02.13-linux64-230861132.tar.bz2</string>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.02.15-linux64-231741426.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -1111,11 +1111,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>99c928b18a0d2f08b0ee33fca90c4118</string>
|
||||
<string>c1bce2b362c31345200297a4010626e9</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.02.13-windows-230860911.tar.bz2</string>
|
||||
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.02.15-windows-231741106.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -1125,18 +1125,18 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>01946a6427d126570607c02b75560f02</string>
|
||||
<string>cd0e8f58fece3eac0b5ebe21f354bf8c</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.02.13-windows64-230860913.tar.bz2</string>
|
||||
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.02.15-windows64-231741113.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>2.02.13</string>
|
||||
<string>2.02.15</string>
|
||||
</map>
|
||||
<key>fontconfig</key>
|
||||
<map>
|
||||
|
|
|
|||
|
|
@ -72,7 +72,11 @@ typedef enum e_chat_style
|
|||
CHAT_STYLE_IRC,
|
||||
CHAT_STYLE_HISTORY,
|
||||
CHAT_STYLE_TELEPORT_SEP,
|
||||
CHAT_STYLE_MODERATOR
|
||||
// <FS:Zi> Add a distinct color for server side group chat replay
|
||||
// CHAT_STYLE_MODERATOR
|
||||
CHAT_STYLE_MODERATOR,
|
||||
CHAT_STYLE_SERVER_HISTORY
|
||||
// </FS:Zi>
|
||||
}EChatStyle;
|
||||
|
||||
// A piece of chat
|
||||
|
|
|
|||
|
|
@ -53,6 +53,8 @@
|
|||
#include "llvoavatarself.h" // for gAgentAvatarp
|
||||
#include "llavatarnamecache.h"
|
||||
|
||||
#include "fsassetblacklist.h"
|
||||
|
||||
constexpr S32 MAX_ANIMATIONS = 100;
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
|
@ -157,13 +159,13 @@ BOOL AnimationExplorer::postBuild()
|
|||
{
|
||||
mAnimationScrollList = getChild<LLScrollListCtrl>("animation_list");
|
||||
mStopButton = getChild<LLButton>("stop_btn");
|
||||
mRevokeButton = getChild<LLButton>("revoke_btn");
|
||||
mBlacklistButton = getChild<LLButton>("blacklist_btn");
|
||||
mStopAndRevokeButton = getChild<LLButton>("stop_and_revoke_btn");
|
||||
mNoOwnedAnimationsCheckBox = getChild<LLCheckBoxCtrl>("no_owned_animations_check");
|
||||
|
||||
mAnimationScrollList->setCommitCallback(boost::bind(&AnimationExplorer::onSelectAnimation, this));
|
||||
mStopButton->setCommitCallback(boost::bind(&AnimationExplorer::onStopPressed, this));
|
||||
mRevokeButton->setCommitCallback(boost::bind(&AnimationExplorer::onRevokePressed, this));
|
||||
mBlacklistButton->setCommitCallback(boost::bind(&AnimationExplorer::onBlacklistPressed, this));
|
||||
mStopAndRevokeButton->setCommitCallback(boost::bind(&AnimationExplorer::onStopAndRevokePressed, this));
|
||||
mNoOwnedAnimationsCheckBox->setCommitCallback(boost::bind(&AnimationExplorer::onOwnedCheckToggled, this));
|
||||
|
||||
|
|
@ -199,7 +201,7 @@ void AnimationExplorer::onSelectAnimation()
|
|||
S32 column = mAnimationScrollList->getColumn("animation_id")->mIndex;
|
||||
mCurrentAnimationID = item->getColumn(column)->getValue().asUUID();
|
||||
|
||||
column = mAnimationScrollList->getColumn("played_by")->mIndex;
|
||||
column = mAnimationScrollList->getColumn("object_id")->mIndex;
|
||||
mCurrentObject = item->getColumn(column)->getValue().asUUID();
|
||||
|
||||
startMotion(mCurrentAnimationID);
|
||||
|
|
@ -214,23 +216,35 @@ void AnimationExplorer::onStopPressed()
|
|||
}
|
||||
}
|
||||
|
||||
void AnimationExplorer::onRevokePressed()
|
||||
void AnimationExplorer::onBlacklistPressed()
|
||||
{
|
||||
if (mCurrentObject.notNull())
|
||||
onStopPressed();
|
||||
LLScrollListItem* item = mAnimationScrollList->getFirstSelected();
|
||||
if (!item)
|
||||
{
|
||||
LLViewerObject* vo = gObjectList.findObject(mCurrentObject);
|
||||
|
||||
if (vo)
|
||||
{
|
||||
gAgentAvatarp->revokePermissionsOnObject(vo);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
S32 column = mAnimationScrollList->getColumn("played_by")->mIndex;
|
||||
std::string region_name{};
|
||||
if (gAgent.getRegion())
|
||||
{
|
||||
region_name = gAgent.getRegion()->getName();
|
||||
}
|
||||
FSAssetBlacklist::getInstance()->addNewItemToBlacklist(mCurrentAnimationID, item->getColumn(column)->getValue(), region_name, LLAssetType::AT_ANIMATION);
|
||||
}
|
||||
|
||||
void AnimationExplorer::onStopAndRevokePressed()
|
||||
{
|
||||
onStopPressed();
|
||||
onRevokePressed();
|
||||
|
||||
if (mCurrentObject.notNull())
|
||||
{
|
||||
if (LLViewerObject* vo = gObjectList.findObject(mCurrentObject); vo)
|
||||
{
|
||||
gAgentAvatarp->revokePermissionsOnObject(vo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void AnimationExplorer::onOwnedCheckToggled()
|
||||
|
|
@ -316,11 +330,10 @@ void AnimationExplorer::updateList(F64 current_timestamp)
|
|||
|
||||
// go through the list of playing animations to find out if this animation played by
|
||||
// this object is still running
|
||||
for (LLVOAvatar::AnimSourceIterator anim_iter = gAgentAvatarp->mAnimationSources.begin();
|
||||
anim_iter != gAgentAvatarp->mAnimationSources.end(); ++anim_iter)
|
||||
for (const auto& [anim_object_id, anim_anim_id] : gAgentAvatarp->mAnimationSources)
|
||||
{
|
||||
// object and animation found
|
||||
if (anim_iter->first == object_id && anim_iter->second == anim_id)
|
||||
if (anim_object_id == object_id && anim_anim_id == anim_id)
|
||||
{
|
||||
// set text to "Still playing" and break out of this loop
|
||||
played_text->setText(LLTrans::getString("animation_explorer_still_playing"));
|
||||
|
|
@ -343,8 +356,7 @@ void AnimationExplorer::updateList(F64 current_timestamp)
|
|||
}
|
||||
|
||||
std::string prio_text = LLTrans::getString("animation_explorer_unknown_priority");
|
||||
LLKeyframeMotion* motion = dynamic_cast<LLKeyframeMotion*>(gAgentAvatarp->findMotion(anim_id));
|
||||
if (motion)
|
||||
if (LLKeyframeMotion* motion = dynamic_cast<LLKeyframeMotion*>(gAgentAvatarp->findMotion(anim_id)); motion)
|
||||
{
|
||||
prio_text = llformat("%d", (S32)motion->getPriority());
|
||||
}
|
||||
|
|
@ -367,8 +379,7 @@ void AnimationExplorer::addAnimation(const LLUUID& id, const LLUUID& played_by,
|
|||
std::string playedByName = played_by.asString();
|
||||
|
||||
// find out if the object is still in reach
|
||||
LLViewerObject* vo = gObjectList.findObject(played_by);
|
||||
if (vo)
|
||||
if (LLViewerObject* vo = gObjectList.findObject(played_by); vo)
|
||||
{
|
||||
// if it was an avatar, get the name here
|
||||
if (vo->isAvatar())
|
||||
|
|
@ -450,8 +461,7 @@ void AnimationExplorer::addAnimation(const LLUUID& id, const LLUUID& played_by,
|
|||
|
||||
void AnimationExplorer::onAvatarNameCallback(const LLUUID& id, const LLAvatarName& av_name)
|
||||
{
|
||||
auto iter = mAvatarNameCacheConnections.find(id);
|
||||
if (iter != mAvatarNameCacheConnections.end())
|
||||
if (auto iter = mAvatarNameCacheConnections.find(id); iter != mAvatarNameCacheConnections.end())
|
||||
{
|
||||
if (iter->second.connected())
|
||||
{
|
||||
|
|
@ -478,10 +488,8 @@ void AnimationExplorer::requestNameCallback(LLMessageSystem* msg)
|
|||
LLUUID object_id;
|
||||
msg->getUUIDFast(_PREHASH_ObjectData, _PREHASH_ObjectID, object_id, index);
|
||||
|
||||
uuid_vec_t::iterator iter;
|
||||
iter = std::find(mRequestedIDs.begin(), mRequestedIDs.end(), object_id);
|
||||
// if this is one of the objects we were looking for, process the data
|
||||
if (iter != mRequestedIDs.end())
|
||||
if (auto iter = std::find(mRequestedIDs.begin(), mRequestedIDs.end(), object_id); iter != mRequestedIDs.end())
|
||||
{
|
||||
// get the name of the object
|
||||
std::string object_name;
|
||||
|
|
@ -502,11 +510,9 @@ void AnimationExplorer::updateListEntry(const LLUUID& id, const std::string& nam
|
|||
S32 played_by_column = mAnimationScrollList->getColumn("played_by")->mIndex;
|
||||
|
||||
// find all scroll list entries with this object UUID and update the names there
|
||||
std::vector<LLScrollListItem*> items = mAnimationScrollList->getAllData();
|
||||
for (std::vector<LLScrollListItem*>::iterator list_iter = items.begin(); list_iter != items.end(); ++list_iter)
|
||||
for (LLScrollListItem* item : mAnimationScrollList->getAllData())
|
||||
{
|
||||
LLScrollListItem* item = *list_iter;
|
||||
LLUUID list_object_id = item->getColumn(object_id_column)->getValue().asUUID();
|
||||
const LLUUID& list_object_id = item->getColumn(object_id_column)->getValue().asUUID();
|
||||
|
||||
if (id == list_object_id)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ class AnimationExplorer
|
|||
|
||||
LLScrollListCtrl* mAnimationScrollList;
|
||||
LLButton* mStopButton;
|
||||
LLButton* mRevokeButton;
|
||||
LLButton* mBlacklistButton;
|
||||
LLButton* mStopAndRevokeButton;
|
||||
LLCheckBoxCtrl* mNoOwnedAnimationsCheckBox;
|
||||
|
||||
|
|
@ -126,7 +126,7 @@ class AnimationExplorer
|
|||
|
||||
void onSelectAnimation();
|
||||
void onStopPressed();
|
||||
void onRevokePressed();
|
||||
void onBlacklistPressed();
|
||||
void onStopAndRevokePressed();
|
||||
void onOwnedCheckToggled();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -182,8 +182,8 @@ FSAreaSearch::FSAreaSearch(const LLSD& key) :
|
|||
// Register an idle update callback
|
||||
gIdleCallbacks.addFunction(idle, this);
|
||||
|
||||
mParcelChangedObserver = new FSParcelChangeObserver(this);
|
||||
LLViewerParcelMgr::getInstance()->addObserver(mParcelChangedObserver);
|
||||
mParcelChangedObserver = std::make_unique<FSParcelChangeObserver>(this);
|
||||
LLViewerParcelMgr::getInstance()->addObserver(mParcelChangedObserver.get());
|
||||
}
|
||||
|
||||
FSAreaSearch::~FSAreaSearch()
|
||||
|
|
@ -209,9 +209,8 @@ FSAreaSearch::~FSAreaSearch()
|
|||
|
||||
if (mParcelChangedObserver)
|
||||
{
|
||||
LLViewerParcelMgr::getInstance()->removeObserver(mParcelChangedObserver);
|
||||
delete mParcelChangedObserver;
|
||||
mParcelChangedObserver = NULL;
|
||||
LLViewerParcelMgr::getInstance()->removeObserver(mParcelChangedObserver.get());
|
||||
mParcelChangedObserver = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -252,9 +251,7 @@ void FSAreaSearch::draw()
|
|||
|
||||
for (const auto item : items)
|
||||
{
|
||||
LLViewerObject* objectp = gObjectList.findObject(item->getUUID());
|
||||
|
||||
if (objectp)
|
||||
if (LLViewerObject* objectp = gObjectList.findObject(item->getUUID()); objectp)
|
||||
{
|
||||
const std::string& objectName = mObjectDetails[item->getUUID()].description;
|
||||
gObjectList.addDebugBeacon(objectp->getPositionAgent(), objectName, mBeaconColor, mBeaconTextColor, beacon_line_width);
|
||||
|
|
@ -299,7 +296,7 @@ void* FSAreaSearch::createPanelFilter(void* data)
|
|||
void* FSAreaSearch::createPanelAdvanced(void* data)
|
||||
{
|
||||
FSAreaSearch* self = (FSAreaSearch*)data;
|
||||
self->mPanelAdvanced = new FSPanelAreaSearchAdvanced(self);
|
||||
self->mPanelAdvanced = new FSPanelAreaSearchAdvanced();
|
||||
return self->mPanelAdvanced;
|
||||
}
|
||||
|
||||
|
|
@ -324,8 +321,7 @@ void FSAreaSearch::checkRegion()
|
|||
if (mActive)
|
||||
{
|
||||
// Check if we changed region, and if we did, clear the object details cache.
|
||||
LLViewerRegion* region = gAgent.getRegion(); // getRegion can return NULL if disconnected.
|
||||
if (region && (region != mLastRegion))
|
||||
if (LLViewerRegion* region = gAgent.getRegion(); region && (region != mLastRegion))
|
||||
{
|
||||
if (!mExcludeNeighborRegions)
|
||||
{
|
||||
|
|
@ -459,8 +455,7 @@ void FSAreaSearch::findObjects()
|
|||
if (object_it.second.request == FSObjectProperties::NEED || object_it.second.request == FSObjectProperties::SENT)
|
||||
{
|
||||
const LLUUID& id = object_it.second.id;
|
||||
LLViewerObject* objectp = gObjectList.findObject(id);
|
||||
if (!objectp)
|
||||
if (LLViewerObject* objectp = gObjectList.findObject(id); !objectp)
|
||||
{
|
||||
object_it.second.request = FSObjectProperties::FAILED;
|
||||
mRequested--;
|
||||
|
|
@ -1035,8 +1030,7 @@ void FSAreaSearch::matchObject(FSObjectProperties& details, LLViewerObject* obje
|
|||
row_params.columns.add(cell_params);
|
||||
|
||||
cell_params.column = "land_impact";
|
||||
F32 cost = objectp->getLinksetCost();
|
||||
if (cost > F_ALMOST_ZERO)
|
||||
if (F32 cost = objectp->getLinksetCost(); cost > F_ALMOST_ZERO)
|
||||
{
|
||||
cell_params.value = cost;
|
||||
}
|
||||
|
|
@ -1098,14 +1092,11 @@ void FSAreaSearch::updateObjectCosts(const LLUUID& object_id, F32 object_cost, F
|
|||
return;
|
||||
}
|
||||
|
||||
FSScrollListCtrl* result_list = mPanelList->getResultList();
|
||||
if (result_list)
|
||||
if (FSScrollListCtrl* result_list = mPanelList->getResultList(); result_list)
|
||||
{
|
||||
LLScrollListItem* list_row = result_list->getItem(LLSD(object_id));
|
||||
if (list_row)
|
||||
if (LLScrollListItem* list_row = result_list->getItem(LLSD(object_id)); list_row)
|
||||
{
|
||||
LLScrollListColumn* list_column = result_list->getColumn("land_impact");
|
||||
if (list_column)
|
||||
if (LLScrollListColumn* list_column = result_list->getColumn("land_impact"); list_column)
|
||||
{
|
||||
LLScrollListCell* linkset_cost_cell = list_row->getColumn(list_column->mIndex);
|
||||
linkset_cost_cell->setValue(LLSD(link_cost));
|
||||
|
|
@ -1160,8 +1151,7 @@ void FSAreaSearch::avatarNameCacheCallback(const LLUUID& id, const LLAvatarName&
|
|||
|
||||
void FSAreaSearch::callbackLoadFullName(const LLUUID& id, const std::string& full_name )
|
||||
{
|
||||
auto iter = mNameCacheConnections.find(id);
|
||||
if (iter != mNameCacheConnections.end())
|
||||
if (auto iter = mNameCacheConnections.find(id); iter != mNameCacheConnections.end())
|
||||
{
|
||||
if (iter->second.connected())
|
||||
{
|
||||
|
|
@ -1444,8 +1434,7 @@ void FSPanelAreaSearchList::onDoubleClick()
|
|||
}
|
||||
|
||||
const LLUUID& object_id = item->getUUID();
|
||||
LLViewerObject* objectp = gObjectList.findObject(object_id);
|
||||
if (objectp)
|
||||
if (LLViewerObject* objectp = gObjectList.findObject(object_id); objectp)
|
||||
{
|
||||
FSObjectProperties& details = mFSAreaSearch->mObjectDetails[object_id];
|
||||
LLTracker::trackLocation(objectp->getPositionGlobal(), details.name, "", LLTracker::LOCATION_ITEM);
|
||||
|
|
@ -2060,10 +2049,6 @@ BOOL FSPanelAreaSearchFind::postBuild()
|
|||
return LLPanel::postBuild();
|
||||
}
|
||||
|
||||
// virtual
|
||||
FSPanelAreaSearchFind::~FSPanelAreaSearchFind()
|
||||
{ }
|
||||
|
||||
void FSPanelAreaSearchFind::onButtonClickedClear()
|
||||
{
|
||||
mNameLineEditor->clear();
|
||||
|
|
@ -2180,10 +2165,6 @@ BOOL FSPanelAreaSearchFilter::postBuild()
|
|||
return LLPanel::postBuild();
|
||||
}
|
||||
|
||||
// virtual
|
||||
FSPanelAreaSearchFilter::~FSPanelAreaSearchFilter()
|
||||
{ }
|
||||
|
||||
void FSPanelAreaSearchFilter::onCommitCheckbox()
|
||||
{
|
||||
mFSAreaSearch->setFilterLocked(mCheckboxLocked->get());
|
||||
|
|
@ -2280,10 +2261,6 @@ FSPanelAreaSearchOptions::FSPanelAreaSearchOptions(FSAreaSearch* pointer)
|
|||
mEnableCallbackRegistrar.add("AreaSearch.EnableColumn", boost::bind(&FSPanelAreaSearchOptions::onEnableColumnVisibilityChecked, this, _2));
|
||||
}
|
||||
|
||||
// virtual
|
||||
FSPanelAreaSearchOptions::~FSPanelAreaSearchOptions()
|
||||
{ }
|
||||
|
||||
void FSPanelAreaSearchOptions::onCommitCheckboxDisplayColumn(const LLSD& userdata)
|
||||
{
|
||||
const std::string& column_name = userdata.asStringRef();
|
||||
|
|
@ -2306,11 +2283,6 @@ bool FSPanelAreaSearchOptions::onEnableColumnVisibilityChecked(const LLSD& userd
|
|||
// Advanced tab
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
FSPanelAreaSearchAdvanced::FSPanelAreaSearchAdvanced(FSAreaSearch* pointer)
|
||||
: LLPanel()
|
||||
{
|
||||
}
|
||||
|
||||
BOOL FSPanelAreaSearchAdvanced::postBuild()
|
||||
{
|
||||
mCheckboxClickTouch = getChild<LLCheckBoxCtrl>("double_click_touch");
|
||||
|
|
@ -2319,7 +2291,3 @@ BOOL FSPanelAreaSearchAdvanced::postBuild()
|
|||
|
||||
return LLPanel::postBuild();
|
||||
}
|
||||
|
||||
// virtual
|
||||
FSPanelAreaSearchAdvanced::~FSPanelAreaSearchAdvanced()
|
||||
{ }
|
||||
|
|
|
|||
|
|
@ -217,7 +217,7 @@ private:
|
|||
|
||||
class FSParcelChangeObserver;
|
||||
friend class FSParcelChangeObserver;
|
||||
FSParcelChangeObserver* mParcelChangedObserver;
|
||||
std::unique_ptr<FSParcelChangeObserver> mParcelChangedObserver;
|
||||
|
||||
LLTabContainer* mTab;
|
||||
FSPanelAreaSearchList* mPanelList;
|
||||
|
|
@ -332,7 +332,7 @@ class FSPanelAreaSearchFind
|
|||
LOG_CLASS(FSPanelAreaSearchFind);
|
||||
public:
|
||||
FSPanelAreaSearchFind(FSAreaSearch* pointer);
|
||||
virtual ~FSPanelAreaSearchFind();
|
||||
virtual ~FSPanelAreaSearchFind() = default;
|
||||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
/*virtual*/ BOOL handleKeyHere(KEY key,MASK mask);
|
||||
|
|
@ -365,7 +365,7 @@ class FSPanelAreaSearchFilter
|
|||
LOG_CLASS(FSPanelAreaSearchFilter);
|
||||
public:
|
||||
FSPanelAreaSearchFilter(FSAreaSearch* pointer);
|
||||
virtual ~FSPanelAreaSearchFilter();
|
||||
virtual ~FSPanelAreaSearchFilter() = default;
|
||||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
|
||||
|
|
@ -410,7 +410,7 @@ class FSPanelAreaSearchOptions
|
|||
LOG_CLASS(FSPanelAreaSearchOptions);
|
||||
public:
|
||||
FSPanelAreaSearchOptions(FSAreaSearch* pointer);
|
||||
virtual ~FSPanelAreaSearchOptions();
|
||||
virtual ~FSPanelAreaSearchOptions() = default;
|
||||
|
||||
private:
|
||||
void onCommitCheckboxDisplayColumn(const LLSD& userdata);
|
||||
|
|
@ -430,8 +430,8 @@ class FSPanelAreaSearchAdvanced
|
|||
{
|
||||
LOG_CLASS(FSPanelAreaSearchAdvanced);
|
||||
public:
|
||||
FSPanelAreaSearchAdvanced(FSAreaSearch* pointer);
|
||||
virtual ~FSPanelAreaSearchAdvanced();
|
||||
FSPanelAreaSearchAdvanced() = default;
|
||||
virtual ~FSPanelAreaSearchAdvanced() = default;
|
||||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
|
||||
|
|
|
|||
|
|
@ -54,6 +54,9 @@ LLAssetType::EType S32toAssetType(S32 assetindex)
|
|||
case 6:
|
||||
type = LLAssetType::AT_OBJECT;
|
||||
break;
|
||||
case 20:
|
||||
type = LLAssetType::AT_ANIMATION;
|
||||
break;
|
||||
case 45:
|
||||
type = LLAssetType::AT_PERSON;
|
||||
break;
|
||||
|
|
@ -114,8 +117,7 @@ bool FSAssetBlacklist::removeItem(const LLUUID& id)
|
|||
{
|
||||
gObjectList.removeDerenderedItem(id);
|
||||
|
||||
blacklist_data_t::iterator it;
|
||||
it = mBlacklistData.find(id);
|
||||
blacklist_data_t::iterator it = mBlacklistData.find(id);
|
||||
|
||||
if (it == mBlacklistData.end())
|
||||
{
|
||||
|
|
@ -145,13 +147,13 @@ void FSAssetBlacklist::removeItemsFromBlacklist(const uuid_vec_t& ids)
|
|||
bool need_save = false;
|
||||
LLSD data;
|
||||
|
||||
for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it)
|
||||
for (const auto& id : ids)
|
||||
{
|
||||
if (removeItem(*it))
|
||||
if (removeItem(id))
|
||||
{
|
||||
need_save = true;
|
||||
}
|
||||
data.append((*it).asString());
|
||||
data.append(id.asString());
|
||||
}
|
||||
|
||||
if (need_save)
|
||||
|
|
|
|||
|
|
@ -803,6 +803,7 @@ public:
|
|||
}
|
||||
else if ((mSourceType == CHAT_SOURCE_AGENT || (mSourceType == CHAT_SOURCE_SYSTEM && mType == CHAT_TYPE_RADAR))
|
||||
&& !mAvatarID.isNull()
|
||||
&& chat.mChatStyle != CHAT_STYLE_SERVER_HISTORY
|
||||
&& chat.mChatStyle != CHAT_STYLE_HISTORY)
|
||||
{
|
||||
// ...from a normal user, lookup the name and fill in later.
|
||||
|
|
@ -831,6 +832,7 @@ public:
|
|||
// [/RLVa:KB]
|
||||
}
|
||||
else if (chat.mChatStyle == CHAT_STYLE_HISTORY ||
|
||||
chat.mChatStyle == CHAT_STYLE_SERVER_HISTORY ||
|
||||
(mSourceType == CHAT_SOURCE_AGENT || (mSourceType == CHAT_SOURCE_SYSTEM && mType == CHAT_TYPE_RADAR)))
|
||||
{
|
||||
//if it's an avatar name with a username add formatting
|
||||
|
|
@ -1506,12 +1508,19 @@ void FSChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
|
|||
delimiter_style = "BOLD";
|
||||
}
|
||||
|
||||
bool message_from_log = chat.mChatStyle == CHAT_STYLE_HISTORY;
|
||||
bool message_from_log = (chat.mChatStyle == CHAT_STYLE_HISTORY || chat.mChatStyle == CHAT_STYLE_SERVER_HISTORY);
|
||||
bool teleport_separator = chat.mSourceType == CHAT_SOURCE_TELEPORT;
|
||||
// We graying out chat history by graying out messages that contains full date in a time string
|
||||
if (message_from_log && !is_conversation_log)
|
||||
{
|
||||
txt_color = LLUIColorTable::instance().getColor("ChatHistoryMessageFromLog");
|
||||
if (chat.mChatStyle == CHAT_STYLE_HISTORY)
|
||||
{
|
||||
txt_color = LLUIColorTable::instance().getColor("ChatHistoryMessageFromLog");
|
||||
}
|
||||
else if (chat.mChatStyle == CHAT_STYLE_SERVER_HISTORY)
|
||||
{
|
||||
txt_color = LLUIColorTable::instance().getColor("ChatHistoryMessageFromServerLog");
|
||||
}
|
||||
body_message_params.color(txt_color);
|
||||
body_message_params.readonly_color(txt_color);
|
||||
name_params.color(txt_color);
|
||||
|
|
|
|||
|
|
@ -100,6 +100,8 @@ std::string FSFloaterAssetBlacklist::getTypeString(S32 type)
|
|||
return getString("asset_sound");
|
||||
case LLAssetType::AT_OBJECT:
|
||||
return getString("asset_object");
|
||||
case LLAssetType::AT_ANIMATION:
|
||||
return getString("asset_animation");
|
||||
case LLAssetType::AT_PERSON:
|
||||
return getString("asset_resident");
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -80,9 +80,9 @@
|
|||
|
||||
#include <boost/regex.hpp> // <FS:Zi> FIRE-24133 - Redirect chat channel messages
|
||||
|
||||
const F32 ME_TYPING_TIMEOUT = 4.0f;
|
||||
const F32 OTHER_TYPING_TIMEOUT = 9.0f;
|
||||
const F32 NAME_REFRESH_TIMEOUT = 300.0f;
|
||||
constexpr F32 ME_TYPING_TIMEOUT = 4.0f;
|
||||
constexpr F32 OTHER_TYPING_TIMEOUT = 9.0f;
|
||||
constexpr F32 NAME_REFRESH_TIMEOUT = 300.0f;
|
||||
|
||||
floater_showed_signal_t FSFloaterIM::sIMFloaterShowedSignal;
|
||||
|
||||
|
|
@ -191,7 +191,7 @@ BOOL FSFloaterIM::focusFirstItem(BOOL prefer_text_fields, BOOL focus_flash)
|
|||
{
|
||||
mInputEditor->setFocus(TRUE);
|
||||
onTabInto();
|
||||
if(focus_flash)
|
||||
if (focus_flash)
|
||||
{
|
||||
gFocusMgr.triggerFocusFlash();
|
||||
}
|
||||
|
|
@ -201,7 +201,7 @@ BOOL FSFloaterIM::focusFirstItem(BOOL prefer_text_fields, BOOL focus_flash)
|
|||
void FSFloaterIM::onFocusLost()
|
||||
{
|
||||
LLIMModel::getInstance()->resetActiveSessionID();
|
||||
|
||||
|
||||
LLChicletBar::getInstance()->getChicletPanel()->setChicletToggleState(mSessionID, false);
|
||||
}
|
||||
|
||||
|
|
@ -229,8 +229,8 @@ void FSFloaterIM::onClose(bool app_quitting)
|
|||
//
|
||||
// Last change:
|
||||
// EXT-3516 X Button should end IM session, _ button should hide
|
||||
|
||||
|
||||
|
||||
|
||||
// AO: Make sure observers are removed on close
|
||||
mVoiceChannelStateChangeConnection.disconnect();
|
||||
if(LLVoiceClient::instanceExists())
|
||||
|
|
@ -249,7 +249,7 @@ void FSFloaterIM::onSnooze()
|
|||
{
|
||||
LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(mSessionID);
|
||||
|
||||
if (session == NULL)
|
||||
if (!session)
|
||||
{
|
||||
LL_WARNS("FSFloaterIM") << "Empty session." << LL_ENDL;
|
||||
return;
|
||||
|
|
@ -260,7 +260,7 @@ void FSFloaterIM::onSnooze()
|
|||
|
||||
LLVoiceChannel* voice_channel = LLIMModel::getInstance()->getVoiceChannel(mSessionID);
|
||||
|
||||
if (is_call_with_chat && voice_channel != NULL && voice_channel->isActive())
|
||||
if (is_call_with_chat && voice_channel && voice_channel->isActive())
|
||||
{
|
||||
LLSD payload;
|
||||
payload["session_id"] = mSessionID;
|
||||
|
|
@ -288,8 +288,7 @@ void FSFloaterIM::confirmSnooze()
|
|||
|
||||
void FSFloaterIM::snoozeDurationCallback(const LLSD& notification, const LLSD& response)
|
||||
{
|
||||
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
|
||||
if (0 == option)
|
||||
if (S32 option = LLNotificationsUtil::getSelectedOption(notification, response); 0 == option)
|
||||
{
|
||||
std::istringstream duration_str(response["duration"].asString());
|
||||
S32 duration(-1);
|
||||
|
|
@ -328,7 +327,8 @@ void FSFloaterIM::newIMCallback(const LLSD& data){
|
|||
LLUUID session_id = data["session_id"].asUUID();
|
||||
|
||||
FSFloaterIM* floater = LLFloaterReg::findTypedInstance<FSFloaterIM>("fs_impanel", session_id);
|
||||
if (floater == NULL) return;
|
||||
if (!floater)
|
||||
return;
|
||||
|
||||
// update if visible or max pending messages exceeded, otherwise will be updated when opened
|
||||
static LLCachedControl<S32> fsMaxPendingIMMessages(gSavedSettings, "FSMaxPendingIMMessages");
|
||||
|
|
@ -373,9 +373,9 @@ void FSFloaterIM::sendMsgFromInputEditor(EChatType type)
|
|||
LLWString text = mInputEditor->getWText();
|
||||
LLWStringUtil::trim(text);
|
||||
LLWStringUtil::replaceChar(text,182,'\n'); // Convert paragraph symbols back into newlines.
|
||||
if(!text.empty())
|
||||
if (!text.empty())
|
||||
{
|
||||
if(type == CHAT_TYPE_OOC)
|
||||
if (type == CHAT_TYPE_OOC)
|
||||
{
|
||||
std::string tempText = wstring_to_utf8str( text );
|
||||
tempText = gSavedSettings.getString("FSOOCPrefix") + " " + tempText + " " + gSavedSettings.getString("FSOOCPostfix");
|
||||
|
|
@ -420,20 +420,20 @@ void FSFloaterIM::sendMsgFromInputEditor(EChatType type)
|
|||
skin_indicator = skin_indicator.substr(0, 1); // "FS 4.4.1f os", "FS 4.4.1v", "FS 4.4.1a", "FS 4.4.1s os", "FS 4.4.1m os" etc.
|
||||
}
|
||||
// </FS:PP>
|
||||
|
||||
|
||||
//Address size check
|
||||
#if ADDRESS_SIZE == 32
|
||||
std::string str_address_size_tag = "32";
|
||||
#else
|
||||
std::string str_address_size_tag = "";
|
||||
#endif
|
||||
|
||||
|
||||
//OpenSim check
|
||||
std::string str_opensim_tag;
|
||||
#ifdef OPENSIM
|
||||
str_opensim_tag = " os";
|
||||
#endif
|
||||
|
||||
|
||||
//Operating System check
|
||||
#if LL_WINDOWS
|
||||
std::string str_operating_system_tag = "W";
|
||||
|
|
@ -442,31 +442,29 @@ void FSFloaterIM::sendMsgFromInputEditor(EChatType type)
|
|||
#elif LL_DARWIN
|
||||
std::string str_operating_system_tag = "M";
|
||||
#endif
|
||||
|
||||
|
||||
//RLV check
|
||||
std::string str_rlv_enabled = "";
|
||||
if(RlvHandler::isEnabled())
|
||||
if (RlvHandler::isEnabled())
|
||||
str_rlv_enabled = "*";
|
||||
|
||||
|
||||
|
||||
// Text mode check
|
||||
std::string str_viewer_mode = "";
|
||||
|
||||
|
||||
// Unfortunately, we have to cheat a little here. Ideally we'd have
|
||||
// a method defined to check if the viewer is running in Text Mode.
|
||||
// For now, we will use the same method as used in llappviewer.cpp(LLAppViewer::getViewerInfo())
|
||||
static LLCachedControl<std::string> FSViewerMode(gSavedSettings, "SessionSettingsFile");
|
||||
std::string viewer_mode(FSViewerMode);
|
||||
LLStringUtil::toLower(viewer_mode);
|
||||
if(viewer_mode == "settings_text.xml")
|
||||
if (viewer_mode == "settings_text.xml")
|
||||
str_viewer_mode = "T";
|
||||
|
||||
|
||||
|
||||
//Build it up
|
||||
size_t insert_pos = is_irc_me_prefix(utf8_text) ? 4 : 0;
|
||||
|
||||
|
||||
//For testing/beta groups, we display the build version since it doesn't speed by and this might change often
|
||||
if(FSData::getInstance()->isTestingGroup(mSessionID))
|
||||
if (FSData::getInstance()->isTestingGroup(mSessionID))
|
||||
{
|
||||
if(chat_prefix_testing)
|
||||
utf8_text.insert(insert_pos, ("(" + str_address_size_tag + str_operating_system_tag + " " + LLVersionInfo::getInstance()->getBuildVersion() + skin_indicator + str_viewer_mode + str_rlv_enabled + str_opensim_tag + ") "));
|
||||
|
|
@ -478,7 +476,7 @@ void FSFloaterIM::sendMsgFromInputEditor(EChatType type)
|
|||
utf8_text.insert(insert_pos, ("(" + str_address_size_tag + str_operating_system_tag + " " + LLVersionInfo::getInstance()->getShortVersion() + skin_indicator + str_viewer_mode + str_rlv_enabled + str_opensim_tag + ") "));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// <FS:Techwolf Lupindo> Allow user to send system info.
|
||||
if (mDialog == IM_NOTHING_SPECIAL && utf8_text.find("/sysinfo") == 0)
|
||||
{
|
||||
|
|
@ -486,9 +484,9 @@ void FSFloaterIM::sendMsgFromInputEditor(EChatType type)
|
|||
utf8_text = system_info["Part1"].asString() + system_info["Part2"].asString();
|
||||
}
|
||||
// </FS:Techwolf Lupindo>
|
||||
|
||||
|
||||
sendMsg(utf8_text);
|
||||
|
||||
|
||||
mInputEditor->setText(LLStringUtil::null);
|
||||
}
|
||||
}
|
||||
|
|
@ -514,12 +512,12 @@ void FSFloaterIM::sendMsg(const std::string& msg)
|
|||
//std::string utf8_text = utf8str_truncate(msg, MAX_MSG_BUF_SIZE - 1);
|
||||
std::string utf8_text = msg;
|
||||
// </FS:CR>
|
||||
|
||||
|
||||
if ( (RlvActions::hasBehaviour(RLV_BHVR_SENDIM)) || (RlvActions::hasBehaviour(RLV_BHVR_SENDIMTO)) )
|
||||
{
|
||||
const LLIMModel::LLIMSession* pIMSession = LLIMModel::instance().findIMSession(mSessionID);
|
||||
RLV_ASSERT(pIMSession);
|
||||
|
||||
|
||||
bool fRlvFilter = !pIMSession;
|
||||
if (pIMSession)
|
||||
{
|
||||
|
|
@ -538,13 +536,11 @@ void FSFloaterIM::sendMsg(const std::string& msg)
|
|||
fRlvFilter = true;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
LLSpeakerMgr::speaker_list_t speakers;
|
||||
pIMSession->mSpeakers->getSpeakerList(&speakers, TRUE);
|
||||
for (LLSpeakerMgr::speaker_list_t::const_iterator itSpeaker = speakers.begin();
|
||||
itSpeaker != speakers.end(); ++itSpeaker)
|
||||
for (const auto& pSpeaker : speakers)
|
||||
{
|
||||
const LLSpeaker* pSpeaker = *itSpeaker;
|
||||
if ( (gAgent.getID() != pSpeaker->mID) && (!RlvActions::canSendIM(pSpeaker->mID)) )
|
||||
{
|
||||
fRlvFilter = true;
|
||||
|
|
@ -558,14 +554,14 @@ void FSFloaterIM::sendMsg(const std::string& msg)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (fRlvFilter)
|
||||
{
|
||||
utf8_text = RlvStrings::getString(RlvStringKeys::Blocked::SendIm);
|
||||
}
|
||||
}
|
||||
// [/RLVa:KB]
|
||||
|
||||
|
||||
if (mSessionInitialized)
|
||||
{
|
||||
LLIMModel::sendMessage(utf8_text, mSessionID, mOtherParticipantUUID, mDialog);
|
||||
|
|
@ -575,7 +571,7 @@ void FSFloaterIM::sendMsg(const std::string& msg)
|
|||
//queue up the message to send once the session is initialized
|
||||
mQueuedMsgsForInit.append(utf8_text);
|
||||
}
|
||||
|
||||
|
||||
updateMessages();
|
||||
}
|
||||
|
||||
|
|
@ -587,17 +583,17 @@ FSFloaterIM::~FSFloaterIM()
|
|||
|
||||
LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::IM, (LLView*)this);
|
||||
mVoiceChannelStateChangeConnection.disconnect();
|
||||
if(LLVoiceClient::instanceExists())
|
||||
if (LLVoiceClient::instanceExists())
|
||||
{
|
||||
LLVoiceClient::getInstance()->removeObserver((LLVoiceClientStatusObserver*)this);
|
||||
}
|
||||
|
||||
|
||||
LLIMModel::LLIMSession* pIMSession = LLIMModel::instance().findIMSession(mSessionID);
|
||||
if ((pIMSession) && (pIMSession->mSessionType == LLIMModel::LLIMSession::P2P_SESSION))
|
||||
{
|
||||
LLAvatarTracker::instance().removeParticularFriendObserver(mOtherParticipantUUID, this);
|
||||
}
|
||||
|
||||
|
||||
// Clean up any stray name cache connections
|
||||
if (mAvatarNameCacheConnection.connected())
|
||||
{
|
||||
|
|
@ -754,7 +750,7 @@ void FSFloaterIM::onChange(EStatusType status, const std::string &channelURI, bo
|
|||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
updateCallButton();
|
||||
}
|
||||
|
||||
|
|
@ -763,13 +759,13 @@ void FSFloaterIM::updateCallButton()
|
|||
// hide/show call button
|
||||
bool voice_enabled = LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking();
|
||||
LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(mSessionID);
|
||||
|
||||
|
||||
if (!session)
|
||||
{
|
||||
getChild<LLButton>("call_btn")->setEnabled(FALSE);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
bool session_initialized = session->mSessionInitialized;
|
||||
bool callback_enabled = session->mCallBackEnabled;
|
||||
|
||||
|
|
@ -792,7 +788,7 @@ void FSFloaterIM::updateButtons(bool is_call_started)
|
|||
void FSFloaterIM::changed(U32 mask)
|
||||
{
|
||||
LL_DEBUGS("FSFloaterIM") << "FSFloaterIM::changed(U32 mask)" << LL_ENDL;
|
||||
|
||||
|
||||
if(LLAvatarActions::isFriend(mOtherParticipantUUID))
|
||||
{
|
||||
bool is_online = LLAvatarTracker::instance().isBuddyOnline(mOtherParticipantUUID);
|
||||
|
|
@ -840,7 +836,7 @@ BOOL FSFloaterIM::postBuild()
|
|||
// support sysinfo button -Zi
|
||||
mSysinfoButton = getChild<LLButton>("send_sysinfo_btn");
|
||||
onSysinfoButtonVisibilityChanged(FALSE);
|
||||
|
||||
|
||||
// type-specfic controls
|
||||
LLIMModel::LLIMSession* pIMSession = LLIMModel::instance().findIMSession(mSessionID);
|
||||
if (pIMSession)
|
||||
|
|
@ -858,11 +854,11 @@ BOOL FSFloaterIM::postBuild()
|
|||
LL_DEBUGS("FSFloaterIM") << "adding FSFloaterIM removing/adding particularfriendobserver" << LL_ENDL;
|
||||
LLAvatarTracker::instance().removeParticularFriendObserver(mOtherParticipantUUID, this);
|
||||
LLAvatarTracker::instance().addParticularFriendObserver(mOtherParticipantUUID, this);
|
||||
|
||||
|
||||
// Disable "Add friend" button for friends.
|
||||
LL_DEBUGS("FSFloaterIM") << "add_friend_btn check start" << LL_ENDL;
|
||||
getChild<LLButton>("add_friend_btn")->setEnabled(!LLAvatarActions::isFriend(mOtherParticipantUUID));
|
||||
|
||||
|
||||
// Disable "Teleport" button if friend is offline
|
||||
if(LLAvatarActions::isFriend(mOtherParticipantUUID))
|
||||
{
|
||||
|
|
@ -930,7 +926,7 @@ BOOL FSFloaterIM::postBuild()
|
|||
LLVoiceClient::getInstance()->addObserver((LLVoiceClientStatusObserver*)this);
|
||||
|
||||
// </AO>
|
||||
|
||||
|
||||
mInputEditor = getChild<LLChatEntry>("chat_editor");
|
||||
mChatHistory = getChild<FSChatHistory>("chat_history");
|
||||
mChatLayoutPanel = getChild<LLLayoutPanel>("chat_layout_panel");
|
||||
|
|
@ -974,7 +970,7 @@ BOOL FSFloaterIM::postBuild()
|
|||
{
|
||||
// if not, give the user a choice, whether to enable the version prefix or not
|
||||
LLSD args;
|
||||
LLNotificationsUtil::add("FirstJoinSupportGroup2", args, LLSD(),boost::bind(&FSFloaterIM::enableViewerVersionCallback, this, _1, _2));
|
||||
LLNotificationsUtil::add("FirstJoinSupportGroup2", args, LLSD(), boost::bind(&FSFloaterIM::enableViewerVersionCallback, this, _1, _2));
|
||||
}
|
||||
}
|
||||
// </FS:Zi> Viewer version popup
|
||||
|
|
@ -1006,7 +1002,7 @@ BOOL FSFloaterIM::postBuild()
|
|||
std::string session_name(LLIMModel::instance().getName(mSessionID));
|
||||
updateSessionName(session_name, session_name);
|
||||
}
|
||||
|
||||
|
||||
//*TODO if session is not initialized yet, add some sort of a warning message like "starting session...blablabla"
|
||||
//see LLFloaterIMPanel for how it is done (IB)
|
||||
|
||||
|
|
@ -1174,7 +1170,8 @@ FSFloaterIM* FSFloaterIM::show(const LLUUID& session_id)
|
|||
{
|
||||
closeHiddenIMToasts();
|
||||
|
||||
if (!gIMMgr->hasSession(session_id)) return NULL;
|
||||
if (!gIMMgr->hasSession(session_id))
|
||||
return nullptr;
|
||||
|
||||
if (!isChatMultiTab())
|
||||
{
|
||||
|
|
@ -1196,7 +1193,7 @@ FSFloaterIM* FSFloaterIM::show(const LLUUID& session_id)
|
|||
FSFloaterIM* floater = getInstance(session_id);
|
||||
if (!floater)
|
||||
{
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (isChatMultiTab())
|
||||
|
|
@ -1271,7 +1268,7 @@ void FSFloaterIM::setDocked(bool docked, bool pop_on_undock)
|
|||
LLNotificationsUI::LLScreenChannel* channel = static_cast<LLNotificationsUI::LLScreenChannel*>
|
||||
(LLNotificationsUI::LLChannelManager::getInstance()->
|
||||
findChannelByID(LLUUID(gSavedSettings.getString("NotificationChannelUUID"))));
|
||||
|
||||
|
||||
if(!isChatMultiTab())
|
||||
{
|
||||
LLTransientDockableFloater::setDocked(docked, pop_on_undock);
|
||||
|
|
@ -1293,7 +1290,7 @@ void FSFloaterIM::setVisible(BOOL visible)
|
|||
LLTransientDockableFloater::setVisible(visible);
|
||||
|
||||
// update notification channel state
|
||||
if(channel)
|
||||
if (channel)
|
||||
{
|
||||
channel->updateShowToastsState();
|
||||
channel->redrawToasts();
|
||||
|
|
@ -1318,10 +1315,9 @@ void FSFloaterIM::setVisible(BOOL visible)
|
|||
}
|
||||
}
|
||||
|
||||
if(!visible)
|
||||
if (!visible)
|
||||
{
|
||||
LLIMChiclet* chiclet = LLChicletBar::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(mSessionID);
|
||||
if(chiclet)
|
||||
if (LLIMChiclet* chiclet = LLChicletBar::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(mSessionID); chiclet)
|
||||
{
|
||||
chiclet->setToggleState(false);
|
||||
}
|
||||
|
|
@ -1347,7 +1343,7 @@ void FSFloaterIM::setMinimized(BOOL b)
|
|||
|
||||
BOOL FSFloaterIM::getVisible()
|
||||
{
|
||||
if(isChatMultiTab())
|
||||
if (isChatMultiTab())
|
||||
{
|
||||
FSFloaterIMContainer* im_container = FSFloaterIMContainer::getInstance();
|
||||
|
||||
|
|
@ -1372,7 +1368,7 @@ BOOL FSFloaterIM::getVisible()
|
|||
//static
|
||||
bool FSFloaterIM::toggle(const LLUUID& session_id)
|
||||
{
|
||||
if(!isChatMultiTab())
|
||||
if (!isChatMultiTab())
|
||||
{
|
||||
FSFloaterIM* floater = LLFloaterReg::findTypedInstance<FSFloaterIM>("fs_impanel", session_id);
|
||||
if (floater && floater->getVisible() && floater->hasFocus())
|
||||
|
|
@ -1382,7 +1378,7 @@ bool FSFloaterIM::toggle(const LLUUID& session_id)
|
|||
floater->setVisible(false);
|
||||
return false;
|
||||
}
|
||||
else if(floater && (!floater->isDocked() || (floater->getVisible() && !floater->hasFocus())))
|
||||
else if (floater && (!floater->isDocked() || (floater->getVisible() && !floater->hasFocus())))
|
||||
{
|
||||
floater->setVisible(TRUE);
|
||||
floater->setFocus(TRUE);
|
||||
|
|
@ -1419,8 +1415,7 @@ void FSFloaterIM::sessionInitReplyReceived(const LLUUID& im_session_id)
|
|||
}
|
||||
|
||||
// updating "Call" button from group/ad-hoc control panel here to enable it without placing into draw() (EXT-4796)
|
||||
LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(im_session_id);
|
||||
if (session)
|
||||
if (LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(im_session_id); session)
|
||||
{
|
||||
if ((session->isGroupSessionType() && gAgent.isInGroup(im_session_id)) || session->isAdHocSessionType())
|
||||
{
|
||||
|
|
@ -1430,7 +1425,6 @@ void FSFloaterIM::sessionInitReplyReceived(const LLUUID& im_session_id)
|
|||
|
||||
//*TODO here we should remove "starting session..." warning message if we added it in postBuild() (IB)
|
||||
|
||||
|
||||
//need to send delayed messaged collected while waiting for session initialization
|
||||
if (mQueuedMsgsForInit.size())
|
||||
{
|
||||
|
|
@ -1451,7 +1445,6 @@ void FSFloaterIM::updateMessages()
|
|||
//<FS:HG> FS-1734 seperate name and text styles for moderator
|
||||
bool highlight_mods_chat = gSavedSettings.getBOOL("FSHighlightGroupMods");
|
||||
|
||||
|
||||
std::list<LLSD> messages;
|
||||
|
||||
// we shouldn't reset unread message counters if IM floater doesn't have focus
|
||||
|
|
@ -1480,7 +1473,7 @@ void FSFloaterIM::updateMessages()
|
|||
LLUUID from_id = msg["from_id"].asUUID();
|
||||
std::string from = msg["from"].asString();
|
||||
std::string message = msg["message"].asString();
|
||||
bool is_history = msg["is_history"].asBoolean();
|
||||
S32 is_history = msg["is_history"].asInteger();
|
||||
bool is_region_msg = msg["is_region_msg"].asBoolean();
|
||||
|
||||
LLChat chat;
|
||||
|
|
@ -1488,7 +1481,10 @@ void FSFloaterIM::updateMessages()
|
|||
chat.mSessionID = mSessionID;
|
||||
chat.mFromName = from;
|
||||
chat.mTimeStr = time;
|
||||
chat.mChatStyle = is_history ? CHAT_STYLE_HISTORY : chat.mChatStyle;
|
||||
if (is_history)
|
||||
{
|
||||
chat.mChatStyle = (EChatStyle) is_history;
|
||||
}
|
||||
if (is_region_msg)
|
||||
{
|
||||
chat.mSourceType = CHAT_SOURCE_REGION;
|
||||
|
|
@ -1534,7 +1530,7 @@ void FSFloaterIM::updateMessages()
|
|||
{
|
||||
chat.mText = message;
|
||||
}
|
||||
|
||||
|
||||
mChatHistory->appendMessage(chat, chat_args);
|
||||
mLastMessageIndex = msg["index"].asInteger();
|
||||
|
||||
|
|
@ -1593,8 +1589,7 @@ void FSFloaterIM::onInputEditorFocusLost()
|
|||
|
||||
void FSFloaterIM::onInputEditorKeystroke()
|
||||
{
|
||||
std::string text = mInputEditor->getText();
|
||||
if (!text.empty())
|
||||
if (!mInputEditor->getText().empty())
|
||||
{
|
||||
setTyping(true);
|
||||
}
|
||||
|
|
@ -1607,13 +1602,13 @@ void FSFloaterIM::onInputEditorKeystroke()
|
|||
|
||||
void FSFloaterIM::setTyping(bool typing)
|
||||
{
|
||||
if ( typing )
|
||||
if (typing)
|
||||
{
|
||||
// Started or proceeded typing, reset the typing timeout timer
|
||||
mTypingTimeoutTimer.reset();
|
||||
}
|
||||
|
||||
if ( mMeTyping != typing )
|
||||
if (mMeTyping != typing)
|
||||
{
|
||||
// Typing state is changed
|
||||
mMeTyping = typing;
|
||||
|
|
@ -1630,7 +1625,7 @@ void FSFloaterIM::setTyping(bool typing)
|
|||
if ( mShouldSendTypingState && mDialog == IM_NOTHING_SPECIAL && !(FSData::instance().isSupport(mOtherParticipantUUID) && FSData::instance().isAgentFlag(gAgentID, FSData::NO_SUPPORT)))
|
||||
// </FS:Techwolf Lupindo>
|
||||
{
|
||||
if ( mMeTyping )
|
||||
if (mMeTyping)
|
||||
{
|
||||
if ( mTypingTimer.getElapsedTimeF32() > 1.f )
|
||||
{
|
||||
|
|
@ -1651,12 +1646,11 @@ void FSFloaterIM::setTyping(bool typing)
|
|||
LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(mSessionID);
|
||||
if (speaker_mgr)
|
||||
speaker_mgr->setSpeakerTyping(gAgent.getID(), FALSE);
|
||||
|
||||
}
|
||||
|
||||
void FSFloaterIM::processIMTyping(const LLUUID& from_id, BOOL typing)
|
||||
{
|
||||
if ( typing )
|
||||
if (typing)
|
||||
{
|
||||
// other user started typing
|
||||
addTypingIndicator(from_id);
|
||||
|
|
@ -1678,7 +1672,7 @@ void FSFloaterIM::processAgentListUpdates(const LLSD& body)
|
|||
if (body.isMap() && body.has("agent_updates") && body["agent_updates"].isMap())
|
||||
{
|
||||
LLSD::map_const_iterator update_it;
|
||||
for(update_it = body["agent_updates"].beginMap();
|
||||
for (update_it = body["agent_updates"].beginMap();
|
||||
update_it != body["agent_updates"].endMap();
|
||||
++update_it)
|
||||
{
|
||||
|
|
@ -1721,7 +1715,7 @@ void FSFloaterIM::processAgentListUpdates(const LLSD& body)
|
|||
joined_uuids.begin(), joined_uuids.end(),
|
||||
std::back_inserter(intersection));
|
||||
|
||||
if (intersection.size() > 0)
|
||||
if (!intersection.empty())
|
||||
{
|
||||
sendParticipantsAddedNotification(intersection);
|
||||
}
|
||||
|
|
@ -1773,30 +1767,6 @@ void FSFloaterIM::processChatHistoryStyleUpdate(const LLSD& newvalue)
|
|||
}
|
||||
}
|
||||
|
||||
void FSFloaterIM::processSessionUpdate(const LLSD& session_update)
|
||||
{
|
||||
// *TODO : verify following code when moderated mode will be implemented
|
||||
if ( false && session_update.has("moderated_mode") &&
|
||||
session_update["moderated_mode"].has("voice") )
|
||||
{
|
||||
BOOL voice_moderated = session_update["moderated_mode"]["voice"];
|
||||
const std::string session_label = LLIMModel::instance().getName(mSessionID);
|
||||
|
||||
if (voice_moderated)
|
||||
{
|
||||
setTitle(session_label + std::string(" ") + LLTrans::getString("IM_moderated_chat_label"));
|
||||
}
|
||||
else
|
||||
{
|
||||
setTitle(session_label);
|
||||
}
|
||||
|
||||
// *TODO : uncomment this when/if LLPanelActiveSpeakers panel will be added
|
||||
//update the speakers dropdown too
|
||||
//mSpeakerPanel->setVoiceModerationCtrlMode(voice_moderated);
|
||||
}
|
||||
}
|
||||
|
||||
BOOL FSFloaterIM::handleDragAndDrop(S32 x, S32 y, MASK mask,
|
||||
BOOL drop, EDragAndDropType cargo_type,
|
||||
void *cargo_data, EAcceptance *accept,
|
||||
|
|
@ -1846,7 +1816,7 @@ BOOL FSFloaterIM::handleDragAndDrop(S32 x, S32 y, MASK mask,
|
|||
bool FSFloaterIM::dropCallingCard(LLInventoryItem* item, bool drop)
|
||||
{
|
||||
bool rv = true;
|
||||
if(item && item->getCreatorUUID().notNull())
|
||||
if (item && item->getCreatorUUID().notNull())
|
||||
{
|
||||
uuid_vec_t ids;
|
||||
ids.push_back(item->getCreatorUUID());
|
||||
|
|
@ -1874,7 +1844,7 @@ bool FSFloaterIM::dropCallingCard(LLInventoryItem* item, bool drop)
|
|||
bool FSFloaterIM::dropCategory(LLInventoryCategory* category, bool drop)
|
||||
{
|
||||
bool rv = true;
|
||||
if(category)
|
||||
if (category)
|
||||
{
|
||||
LLInventoryModel::cat_array_t cats;
|
||||
LLInventoryModel::item_array_t items;
|
||||
|
|
@ -1885,7 +1855,7 @@ bool FSFloaterIM::dropCategory(LLInventoryCategory* category, bool drop)
|
|||
LLInventoryModel::EXCLUDE_TRASH,
|
||||
buddies);
|
||||
S32 count = items.size();
|
||||
if(count == 0)
|
||||
if (count == 0)
|
||||
{
|
||||
rv = false;
|
||||
}
|
||||
|
|
@ -1918,13 +1888,13 @@ bool FSFloaterIM::dropCategory(LLInventoryCategory* category, bool drop)
|
|||
bool FSFloaterIM::dropPerson(LLUUID* person_id, bool drop)
|
||||
{
|
||||
bool res = person_id && person_id->notNull();
|
||||
if(res)
|
||||
if (res)
|
||||
{
|
||||
uuid_vec_t ids;
|
||||
ids.push_back(*person_id);
|
||||
|
||||
res = canAddSelectedToChat(ids);
|
||||
if(res && drop)
|
||||
if (res && drop)
|
||||
{
|
||||
// these people will be added during the next draw() call
|
||||
// (so they can be added all at once)
|
||||
|
|
@ -2064,7 +2034,7 @@ void FSFloaterIM::addTypingIndicator(const LLUUID& from_id)
|
|||
|
||||
void FSFloaterIM::removeTypingIndicator(const LLUUID& from_id)
|
||||
{
|
||||
if ( mOtherTyping )
|
||||
if (mOtherTyping)
|
||||
{
|
||||
mOtherTyping = false;
|
||||
|
||||
|
|
@ -2109,7 +2079,7 @@ void FSFloaterIM::closeHiddenIMToasts()
|
|||
};
|
||||
|
||||
LLNotificationsUI::LLScreenChannel* channel = LLNotificationsUI::LLChannelManager::getNotificationScreenChannel();
|
||||
if (channel != NULL)
|
||||
if (channel)
|
||||
{
|
||||
channel->closeHiddenToasts(IMToastMatcher());
|
||||
}
|
||||
|
|
@ -2123,7 +2093,7 @@ void FSFloaterIM::confirmLeaveCallCallback(const LLSD& notification, const LLSD&
|
|||
bool snooze = payload["snooze"].asBoolean();
|
||||
|
||||
FSFloaterIM* im_floater = LLFloaterReg::findTypedInstance<FSFloaterIM>("fs_impanel", session_id);
|
||||
if (option == 0 && im_floater != NULL)
|
||||
if (option == 0 && im_floater)
|
||||
{
|
||||
LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(session_id);
|
||||
if (session)
|
||||
|
|
@ -2162,15 +2132,19 @@ void FSFloaterIM::initIMFloater()
|
|||
void FSFloaterIM::sRemoveTypingIndicator(const LLSD& data)
|
||||
{
|
||||
LLUUID session_id = data["session_id"];
|
||||
if (session_id.isNull()) return;
|
||||
if (session_id.isNull())
|
||||
return;
|
||||
|
||||
LLUUID from_id = data["from_id"];
|
||||
if (gAgentID == from_id || LLUUID::null == from_id) return;
|
||||
if (gAgentID == from_id || LLUUID::null == from_id)
|
||||
return;
|
||||
|
||||
FSFloaterIM* floater = FSFloaterIM::findInstance(session_id);
|
||||
if (!floater) return;
|
||||
if (!floater)
|
||||
return;
|
||||
|
||||
if (IM_NOTHING_SPECIAL != floater->mDialog) return;
|
||||
if (IM_NOTHING_SPECIAL != floater->mDialog)
|
||||
return;
|
||||
|
||||
floater->removeTypingIndicator();
|
||||
}
|
||||
|
|
@ -2194,7 +2168,7 @@ void FSFloaterIM::onClickCloseBtn(bool app_quitting)
|
|||
LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(
|
||||
mSessionID);
|
||||
|
||||
if (session == NULL)
|
||||
if (!session)
|
||||
{
|
||||
LL_WARNS("FSFloaterIM") << "Empty session." << LL_ENDL;
|
||||
return;
|
||||
|
|
@ -2222,16 +2196,16 @@ void FSFloaterIM::onClickCloseBtn(bool app_quitting)
|
|||
// <FS:Zi> Viewer version popup
|
||||
BOOL FSFloaterIM::enableViewerVersionCallback(const LLSD& notification,const LLSD& response)
|
||||
{
|
||||
S32 option=LLNotificationsUtil::getSelectedOption(notification,response);
|
||||
S32 option = LLNotificationsUtil::getSelectedOption(notification,response);
|
||||
|
||||
BOOL result=FALSE;
|
||||
if(option==0) // "yes"
|
||||
BOOL result = FALSE;
|
||||
if (option == 0) // "yes"
|
||||
{
|
||||
result=TRUE;
|
||||
result = TRUE;
|
||||
}
|
||||
|
||||
gSavedSettings.setBOOL("FSSupportGroupChatPrefix3",result);
|
||||
gSavedSettings.setBOOL("FSSupportGroupChatPrefixTesting",result);
|
||||
gSavedSettings.setBOOL("FSSupportGroupChatPrefix3", result);
|
||||
gSavedSettings.setBOOL("FSSupportGroupChatPrefixTesting", result);
|
||||
return result;
|
||||
}
|
||||
// </FS:Zi>
|
||||
|
|
@ -2331,45 +2305,14 @@ bool FSFloaterIM::canAddSelectedToChat(const uuid_vec_t& uuids)
|
|||
{
|
||||
// For a P2P session just check if we are not adding the other participant.
|
||||
|
||||
for (uuid_vec_t::const_iterator id = uuids.begin();
|
||||
id != uuids.end(); ++id)
|
||||
for (const auto& uuid : uuids)
|
||||
{
|
||||
if (*id == mOtherParticipantUUID)
|
||||
if (uuid == mOtherParticipantUUID)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// For a conference session we need to check against the list from LLSpeakerMgr,
|
||||
// because this list may change when participants join or leave the session.
|
||||
|
||||
// Ansariel: Disabled the check because the sim doesn't clear somebody off the
|
||||
// speaker list if they crash or relog and they can't be re-added in that case.
|
||||
/*
|
||||
LLSpeakerMgr::speaker_list_t speaker_list;
|
||||
LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(mSessionID);
|
||||
if (speaker_mgr)
|
||||
{
|
||||
speaker_mgr->getSpeakerList(&speaker_list, true);
|
||||
}
|
||||
|
||||
for (uuid_vec_t::const_iterator id = uuids.begin();
|
||||
id != uuids.end(); ++id)
|
||||
{
|
||||
for (LLSpeakerMgr::speaker_list_t::const_iterator it = speaker_list.begin();
|
||||
it != speaker_list.end(); ++it)
|
||||
{
|
||||
const LLPointer<LLSpeaker>& speaker = *it;
|
||||
if (*id == speaker->mID)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -2386,7 +2329,7 @@ void FSFloaterIM::addSessionParticipants(const uuid_vec_t& uuids)
|
|||
}
|
||||
else
|
||||
{
|
||||
if(findInstance(mSessionID))
|
||||
if (findInstance(mSessionID))
|
||||
{
|
||||
// remember whom we have invited, to notify others later, when the invited ones actually join
|
||||
mInvitedParticipants.insert(mInvitedParticipants.end(), uuids.begin(), uuids.end());
|
||||
|
|
@ -2407,7 +2350,7 @@ void FSFloaterIM::addP2PSessionParticipants(const LLSD& notification, const LLSD
|
|||
LLVoiceChannel* voice_channel = LLIMModel::getInstance()->getVoiceChannel(mSessionID);
|
||||
|
||||
// first check whether this is a voice session
|
||||
bool is_voice_call = voice_channel != NULL && voice_channel->isActive();
|
||||
bool is_voice_call = voice_channel && voice_channel->isActive();
|
||||
|
||||
uuid_vec_t temp_ids;
|
||||
uuid_vec_t invited_ids;
|
||||
|
|
@ -2419,12 +2362,11 @@ void FSFloaterIM::addP2PSessionParticipants(const LLSD& notification, const LLSD
|
|||
LLUUID session_id = mSessionID;
|
||||
|
||||
// then we can close the current session
|
||||
if(findInstance(mSessionID))
|
||||
if (findInstance(mSessionID))
|
||||
{
|
||||
// remember whom we have invited, to notify others later, when the invited ones actually join
|
||||
mInvitedParticipants.insert(mInvitedParticipants.end(), uuids.begin(), uuids.end());
|
||||
|
||||
invited_ids.insert(invited_ids.end(), mInvitedParticipants.begin(), mInvitedParticipants.end());
|
||||
std::copy(uuids.begin(), uuids.end(), std::back_inserter(mInvitedParticipants));
|
||||
std::copy(mInvitedParticipants.begin(), mInvitedParticipants.end(), std::back_inserter(invited_ids));
|
||||
|
||||
// Ansariel: This will result in the floater actually being closed as opposed in CHUI!
|
||||
onClose(false);
|
||||
|
|
|
|||
|
|
@ -113,7 +113,6 @@ public:
|
|||
void onVisibilityChange(BOOL new_visibility);
|
||||
void processIMTyping(const LLUUID& from_id, BOOL typing);
|
||||
void processAgentListUpdates(const LLSD& body);
|
||||
void processSessionUpdate(const LLSD& session_update);
|
||||
|
||||
void updateChatHistoryStyle();
|
||||
static void processChatHistoryStyleUpdate(const LLSD& newvalue);
|
||||
|
|
@ -173,7 +172,6 @@ protected:
|
|||
// support sysinfo button -Zi
|
||||
|
||||
BOOL enableViewerVersionCallback(const LLSD& notification,const LLSD& response); // <FS:Zi> Viewer version popup
|
||||
void reshapeFloater(bool collapse);
|
||||
void reshapeChatLayoutPanel();
|
||||
private:
|
||||
// process focus events to set a currently active session
|
||||
|
|
@ -254,7 +252,6 @@ private:
|
|||
LLLayoutStack* mInputPanels;
|
||||
LLLayoutPanel* mUnreadMessagesNotificationPanel;
|
||||
LLTextBox* mUnreadMessagesNotificationTextBox;
|
||||
// bool mPositioned; // dead code -Zi
|
||||
|
||||
std::string mSavedTitle;
|
||||
LLUIString mTypingStart;
|
||||
|
|
|
|||
|
|
@ -40,14 +40,14 @@
|
|||
#include "lltoolbarview.h"
|
||||
#include "llvoiceclient.h"
|
||||
|
||||
static const F32 VOICE_STATUS_UPDATE_INTERVAL = 1.0f;
|
||||
constexpr F32 VOICE_STATUS_UPDATE_INTERVAL = 1.0f;
|
||||
|
||||
//
|
||||
// FSFloaterIMContainer
|
||||
//
|
||||
FSFloaterIMContainer::FSFloaterIMContainer(const LLSD& seed)
|
||||
: LLMultiFloater(seed),
|
||||
mActiveVoiceFloater(NULL),
|
||||
mActiveVoiceFloater(nullptr),
|
||||
mCurrentVoiceState(VOICE_STATE_NONE),
|
||||
mForceVoiceStateUpdate(false),
|
||||
mIsAddingNewSession(false)
|
||||
|
|
@ -186,7 +186,8 @@ void FSFloaterIMContainer::addFloater(LLFloater* floaterp,
|
|||
BOOL select_added_floater,
|
||||
LLTabContainer::eInsertionPoint insertion_point)
|
||||
{
|
||||
if(!floaterp) return;
|
||||
if (!floaterp)
|
||||
return;
|
||||
|
||||
// already here
|
||||
if (floaterp->getHost() == this)
|
||||
|
|
@ -385,14 +386,12 @@ void FSFloaterIMContainer::setMinimized(BOOL b)
|
|||
{
|
||||
if (mTabContainer)
|
||||
{
|
||||
FSFloaterNearbyChat* nearby_floater = dynamic_cast<FSFloaterNearbyChat*>(mTabContainer->getCurrentPanel());
|
||||
if (nearby_floater)
|
||||
if (FSFloaterNearbyChat* nearby_floater = dynamic_cast<FSFloaterNearbyChat*>(mTabContainer->getCurrentPanel()); nearby_floater)
|
||||
{
|
||||
nearby_floater->handleMinimized(b);
|
||||
}
|
||||
|
||||
FSFloaterIM* im_floater = dynamic_cast<FSFloaterIM*>(mTabContainer->getCurrentPanel());
|
||||
if (im_floater)
|
||||
if (FSFloaterIM* im_floater = dynamic_cast<FSFloaterIM*>(mTabContainer->getCurrentPanel()); im_floater)
|
||||
{
|
||||
im_floater->handleMinimized(b);
|
||||
}
|
||||
|
|
@ -405,7 +404,8 @@ void FSFloaterIMContainer::setMinimized(BOOL b)
|
|||
void FSFloaterIMContainer::sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id, BOOL has_offline_msg)
|
||||
{
|
||||
LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(session_id);
|
||||
if (!session) return;
|
||||
if (!session)
|
||||
return;
|
||||
|
||||
FSFloaterIM::onNewIMReceived(session_id);
|
||||
}
|
||||
|
|
@ -413,8 +413,7 @@ void FSFloaterIMContainer::sessionAdded(const LLUUID& session_id, const std::str
|
|||
//virtual
|
||||
void FSFloaterIMContainer::sessionRemoved(const LLUUID& session_id)
|
||||
{
|
||||
FSFloaterIM* iMfloater = LLFloaterReg::findTypedInstance<FSFloaterIM>("fs_impanel", session_id);
|
||||
if (iMfloater != NULL)
|
||||
if (FSFloaterIM* iMfloater = LLFloaterReg::findTypedInstance<FSFloaterIM>("fs_impanel", session_id); iMfloater)
|
||||
{
|
||||
iMfloater->closeFloater();
|
||||
}
|
||||
|
|
@ -535,7 +534,7 @@ LLFloater* FSFloaterIMContainer::getCurrentVoiceFloater()
|
|||
{
|
||||
if (!LLVoiceClient::instance().voiceEnabled())
|
||||
{
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (LLVoiceChannelProximal::getInstance() == LLVoiceChannel::getCurrentVoiceChannel())
|
||||
|
|
@ -551,7 +550,7 @@ LLFloater* FSFloaterIMContainer::getCurrentVoiceFloater()
|
|||
return im_floater;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void FSFloaterIMContainer::addFlashingSession(const LLUUID& session_id)
|
||||
|
|
@ -573,8 +572,7 @@ void FSFloaterIMContainer::checkFlashing()
|
|||
|
||||
void FSFloaterIMContainer::sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id)
|
||||
{
|
||||
avatarID_panel_map_t::iterator found = mSessions.find(old_session_id);
|
||||
if (found != mSessions.end())
|
||||
if (avatarID_panel_map_t::iterator found = mSessions.find(old_session_id); found != mSessions.end())
|
||||
{
|
||||
LLFloater* floaterp = found->second;
|
||||
mSessions.erase(found);
|
||||
|
|
|
|||
|
|
@ -51,17 +51,16 @@ void FSLSLBridgeRequest_Failure(LLSD const &aData)
|
|||
|
||||
void FSLSLBridgeRequestRadarPos_Success(LLSD const &aData)
|
||||
{
|
||||
FSRadar* radar = FSRadar::getInstance();
|
||||
LL_DEBUGS("FSLSLBridge") << ll_pretty_print_sd(aData) << LL_ENDL;
|
||||
if (radar && aData.has(LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_CONTENT))
|
||||
if (aData.has(LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_CONTENT))
|
||||
{
|
||||
std::string strContent = aData[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_CONTENT].asString();
|
||||
//LL_INFOS("FSLSLBridge") << "Got info: " << strContent << LL_ENDL;
|
||||
// AO: parse content into pairs of [agent UUID,agent zHeight] , update our radar for each one
|
||||
|
||||
|
||||
LLUUID targetAv;
|
||||
F32 targetZ;
|
||||
|
||||
|
||||
typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
|
||||
boost::char_separator<char> sep(", ");
|
||||
tokenizer tokens(strContent, sep);
|
||||
|
|
@ -69,9 +68,8 @@ void FSLSLBridgeRequestRadarPos_Success(LLSD const &aData)
|
|||
{
|
||||
targetAv = LLUUID(*(tok_iter++));
|
||||
targetZ = (F32)::atof((*tok_iter).c_str());
|
||||
|
||||
FSRadarEntry* entry = radar->getEntry(targetAv);
|
||||
if (entry)
|
||||
|
||||
if (auto entry = FSRadar::getInstance()->getEntry(targetAv); entry)
|
||||
{
|
||||
entry->setZOffset(targetZ);
|
||||
//LL_INFOS("FSLSLBridge") << targetAv << " ::: " << targetZ << LL_ENDL;
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@
|
|||
#include "rlvactions.h"
|
||||
#include "rlvhandler.h"
|
||||
|
||||
static const F32 FS_RADAR_LIST_UPDATE_INTERVAL = 1.f;
|
||||
constexpr F32 FS_RADAR_LIST_UPDATE_INTERVAL = 1.f;
|
||||
|
||||
/**
|
||||
* Periodically updates the nearby people list while the Nearby tab is active.
|
||||
|
|
@ -98,7 +98,7 @@ FSRadar::FSRadar() :
|
|||
mNameFormatCallbackConnection(),
|
||||
mAgeAlertCallbackConnection()
|
||||
{
|
||||
mRadarListUpdater = new FSRadarListUpdater(boost::bind(&FSRadar::updateRadarList, this));
|
||||
mRadarListUpdater = std::make_unique<FSRadarListUpdater>(std::bind(&FSRadar::updateRadarList, this));
|
||||
|
||||
// Use the callback from LLAvatarNameCache here or we might update the names too early!
|
||||
LLAvatarNameCache::getInstance()->addUseDisplayNamesCallback(boost::bind(&FSRadar::updateNames, this));
|
||||
|
|
@ -110,13 +110,6 @@ FSRadar::FSRadar() :
|
|||
|
||||
FSRadar::~FSRadar()
|
||||
{
|
||||
delete mRadarListUpdater;
|
||||
|
||||
for (const auto& [av_id, entry] : mEntryList)
|
||||
{
|
||||
delete entry;
|
||||
}
|
||||
|
||||
if (mShowUsernamesCallbackConnection.connected())
|
||||
{
|
||||
mShowUsernamesCallbackConnection.disconnect();
|
||||
|
|
@ -216,14 +209,13 @@ void FSRadar::updateRadarList()
|
|||
|
||||
F32 drawRadius(sRenderFarClip);
|
||||
const LLVector3d& posSelf = gAgent.getPositionGlobal();
|
||||
LLViewerRegion* own_reg = gAgent.getRegion();
|
||||
LLUUID regionSelf;
|
||||
if (own_reg)
|
||||
if (LLViewerRegion* own_reg = gAgent.getRegion(); own_reg)
|
||||
{
|
||||
regionSelf = own_reg->getRegionID();
|
||||
}
|
||||
bool alertScripts = mRadarAlertRequest; // save the current value, so it doesn't get changed out from under us by another thread
|
||||
time_t now = time(NULL);
|
||||
time_t now = time(nullptr);
|
||||
|
||||
//STEP 0: Clear model data
|
||||
mRadarEnterAlerts.clear();
|
||||
|
|
@ -259,10 +251,8 @@ void FSRadar::updateRadarList()
|
|||
// Remove old avatars from our list
|
||||
for (const auto& avid : removed_vec)
|
||||
{
|
||||
entry_map_t::iterator found = mEntryList.find(avid);
|
||||
if (found != mEntryList.end())
|
||||
if (entry_map_t::iterator found = mEntryList.find(avid); found != mEntryList.end())
|
||||
{
|
||||
delete found->second;
|
||||
mEntryList.erase(found);
|
||||
}
|
||||
}
|
||||
|
|
@ -270,18 +260,18 @@ void FSRadar::updateRadarList()
|
|||
// Add new avatars
|
||||
for (const auto& avid : added_vec)
|
||||
{
|
||||
mEntryList[avid] = new FSRadarEntry(avid);
|
||||
mEntryList.emplace(avid, std::make_shared<FSRadarEntry>(avid));
|
||||
}
|
||||
|
||||
speakermgr->update(TRUE);
|
||||
|
||||
//STEP 2: Transform detected model list data into more flexible multimap data structure;
|
||||
//TS: Count avatars in chat range and in the same region
|
||||
U32 inChatRange = 0;
|
||||
U32 inSameRegion = 0;
|
||||
U32 inChatRange{ 0 };
|
||||
U32 inSameRegion{ 0 };
|
||||
std::vector<LLVector3d>::const_iterator
|
||||
pos_it = positions.begin(),
|
||||
pos_end = positions.end();
|
||||
pos_end = positions.end();
|
||||
uuid_vec_t::const_iterator
|
||||
item_it = avatar_ids.begin(),
|
||||
item_end = avatar_ids.end();
|
||||
|
|
@ -290,7 +280,6 @@ void FSRadar::updateRadarList()
|
|||
//
|
||||
//2a. For each detected av, gather up all data we would want to display or use to drive alerts
|
||||
//
|
||||
|
||||
LLUUID avId = static_cast<LLUUID>(*item_it);
|
||||
LLVector3d avPos = static_cast<LLVector3d>(*pos_it);
|
||||
|
||||
|
|
@ -300,7 +289,7 @@ void FSRadar::updateRadarList()
|
|||
}
|
||||
|
||||
// Skip modelling this avatar if its basic data is either inaccessible, or it's a dummy placeholder
|
||||
FSRadarEntry* ent = getEntry(avId);
|
||||
auto ent = getEntry(avId);
|
||||
LLViewerRegion* reg = world->getRegionFromPosGlobal(avPos);
|
||||
if (!ent) // don't update this radar listing if data is inaccessible
|
||||
{
|
||||
|
|
@ -311,12 +300,9 @@ void FSRadar::updateRadarList()
|
|||
LLVOAvatar* avVo = (LLVOAvatar*)gObjectList.findObject(avId);
|
||||
|
||||
static LLUICachedControl<bool> sFSShowDummyAVsinRadar("FSShowDummyAVsinRadar");
|
||||
if (!sFSShowDummyAVsinRadar)
|
||||
if (!sFSShowDummyAVsinRadar && avVo && avVo->mIsDummy)
|
||||
{
|
||||
if (avVo && avVo->mIsDummy)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
bool is_muted = mutelist->isMuted(avId);
|
||||
|
|
@ -654,7 +640,7 @@ void FSRadar::updateRadarList()
|
|||
if (mRadarOffsetRequests.size() > 0)
|
||||
{
|
||||
static const std::string prefix = "getZOffsets|";
|
||||
std::string msg = "";
|
||||
std::string msg {};
|
||||
U32 updatesPerRequest = 0;
|
||||
while (mRadarOffsetRequests.size() > 0)
|
||||
{
|
||||
|
|
@ -666,7 +652,7 @@ void FSRadar::updateRadarList()
|
|||
msg = msg.substr(0, msg.size() - 1);
|
||||
bridge.viewerToLSL(prefix + msg, FSLSLBridgeRequestRadarPos_Success);
|
||||
//LL_INFOS() << " OFFSET REQUEST SEGMENT"<< prefix << msg << LL_ENDL;
|
||||
msg = "";
|
||||
msg.clear();
|
||||
updatesPerRequest = 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -832,31 +818,27 @@ void FSRadar::updateRadarList()
|
|||
|
||||
void FSRadar::requestRadarChannelAlertSync()
|
||||
{
|
||||
F32 timeNow = gFrameTimeSeconds;
|
||||
if ((timeNow - FSRADAR_CHAT_MIN_SPACING) > mRadarLastRequestTime)
|
||||
if (F32 timeNow = gFrameTimeSeconds; (timeNow - FSRADAR_CHAT_MIN_SPACING) > mRadarLastRequestTime)
|
||||
{
|
||||
mRadarLastRequestTime = timeNow;
|
||||
mRadarAlertRequest = true;
|
||||
}
|
||||
}
|
||||
|
||||
FSRadarEntry* FSRadar::getEntry(const LLUUID& avatar_id)
|
||||
std::shared_ptr<FSRadarEntry> FSRadar::getEntry(const LLUUID& avatar_id)
|
||||
{
|
||||
entry_map_t::iterator found = mEntryList.find(avatar_id);
|
||||
if (found == mEntryList.end())
|
||||
if (entry_map_t::iterator found = mEntryList.find(avatar_id); found != mEntryList.end())
|
||||
{
|
||||
return nullptr;
|
||||
return found->second;
|
||||
}
|
||||
return found->second;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void FSRadar::teleportToAvatar(const LLUUID& targetAv)
|
||||
// Teleports user to last scanned location of nearby avatar
|
||||
// Note: currently teleportViaLocation is disrupted by enforced landing points set on a parcel.
|
||||
{
|
||||
LLWorld* world = LLWorld::getInstance();
|
||||
FSRadarEntry* entry = getEntry(targetAv);
|
||||
if (entry)
|
||||
if (auto entry = getEntry(targetAv); entry)
|
||||
{
|
||||
LLVector3d avpos = entry->mGlobalPos;
|
||||
if (avpos.mdV[VZ] == AVATAR_UNKNOWN_Z_OFFSET)
|
||||
|
|
@ -867,7 +849,7 @@ void FSRadar::teleportToAvatar(const LLUUID& targetAv)
|
|||
{
|
||||
// <FS:TS> FIRE-20862: Teleport the configured offset toward the center of the region from the
|
||||
// avatar's reported position
|
||||
LLViewerRegion* avreg = world->getRegionFromPosGlobal(avpos);
|
||||
LLViewerRegion* avreg = LLWorld::getInstance()->getRegionFromPosGlobal(avpos);
|
||||
if (avreg)
|
||||
{
|
||||
LLVector3d region_center = avreg->getCenterGlobal();
|
||||
|
|
@ -964,8 +946,7 @@ void FSRadar::onRadarReportToClicked(const LLSD& userdata)
|
|||
bool FSRadar::radarReportToCheck(const LLSD& userdata)
|
||||
{
|
||||
const std::string menu_item = userdata.asString();
|
||||
bool report_to = gSavedSettings.getBOOL("FSMilkshakeRadarToasts");
|
||||
if (report_to)
|
||||
if (gSavedSettings.getBOOL("FSMilkshakeRadarToasts"))
|
||||
{
|
||||
return (menu_item == "radar_toasts");
|
||||
}
|
||||
|
|
@ -1000,8 +981,7 @@ void FSRadar::checkTracking()
|
|||
|
||||
void FSRadar::updateTracking()
|
||||
{
|
||||
FSRadarEntry* entry = getEntry(mTrackedAvatarId);
|
||||
if (entry)
|
||||
if (auto entry = getEntry(mTrackedAvatarId); entry)
|
||||
{
|
||||
if (LLTracker::getTrackedPositionGlobal() != entry->mGlobalPos)
|
||||
{
|
||||
|
|
@ -1039,8 +1019,7 @@ void FSRadar::updateNames()
|
|||
|
||||
void FSRadar::updateName(const LLUUID& avatar_id)
|
||||
{
|
||||
FSRadarEntry* entry = getEntry(avatar_id);
|
||||
if (entry)
|
||||
if (auto entry = getEntry(avatar_id); entry)
|
||||
{
|
||||
entry->updateName();
|
||||
}
|
||||
|
|
@ -1056,8 +1035,7 @@ void FSRadar::updateAgeAlertCheck()
|
|||
|
||||
void FSRadar::updateNotes(const LLUUID& avatar_id, std::string_view notes)
|
||||
{
|
||||
FSRadarEntry* entry = getEntry(avatar_id);
|
||||
if (entry)
|
||||
if (auto entry = getEntry(avatar_id); entry)
|
||||
{
|
||||
entry->setNotes(notes);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ class FSRadar
|
|||
virtual ~FSRadar();
|
||||
|
||||
public:
|
||||
typedef boost::unordered_map<const LLUUID, FSRadarEntry*, FSUUIDHash> entry_map_t;
|
||||
typedef std::unordered_map<const LLUUID, std::shared_ptr<FSRadarEntry>, FSUUIDHash> entry_map_t;
|
||||
entry_map_t getRadarList() { return mEntryList; }
|
||||
|
||||
void startTracking(const LLUUID& avatar_id);
|
||||
|
|
@ -80,13 +80,13 @@ public:
|
|||
static bool radarReportToCheck(const LLSD& userdata);
|
||||
|
||||
void getCurrentData(std::vector<LLSD>& entries, LLSD& stats) const { entries = mRadarEntriesData; stats = mAvatarStats; }
|
||||
FSRadarEntry* getEntry(const LLUUID& avatar_id);
|
||||
std::shared_ptr<FSRadarEntry> getEntry(const LLUUID& avatar_id);
|
||||
|
||||
// internals
|
||||
class Updater
|
||||
{
|
||||
public:
|
||||
typedef boost::function<void()> callback_t;
|
||||
typedef std::function<void()> callback_t;
|
||||
Updater(callback_t cb)
|
||||
: mCallback(cb)
|
||||
{ }
|
||||
|
|
@ -116,7 +116,7 @@ private:
|
|||
void radarAlertMsg(const LLUUID& agent_id, const LLAvatarName& av_name, std::string_view postMsg);
|
||||
void updateAgeAlertCheck();
|
||||
|
||||
Updater* mRadarListUpdater;
|
||||
std::unique_ptr<Updater> mRadarListUpdater;
|
||||
|
||||
struct RadarFields
|
||||
{
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -418,8 +418,7 @@ LLColor4 LGGContactSets::colorize(const LLUUID& uuid, const LLColor4& cur_color,
|
|||
}
|
||||
else
|
||||
{
|
||||
FSRadarEntry* entry = FSRadar::getInstance()->getEntry(uuid);
|
||||
if ( (entry && entry->getIsLinden()) || (!entry && FSCommon::isLinden(uuid)) )
|
||||
if (auto entry = FSRadar::getInstance()->getEntry(uuid); (entry && entry->getIsLinden()) || (!entry && FSCommon::isLinden(uuid)) )
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1919,7 +1919,7 @@ bool LLAvatarActions::canZoomIn(const LLUUID& idAgent)
|
|||
else
|
||||
{
|
||||
// Special case for SL since interest list changes
|
||||
FSRadarEntry* entry = FSRadar::getInstance()->getEntry(idAgent);
|
||||
auto entry = FSRadar::getInstance()->getEntry(idAgent);
|
||||
#ifdef OPENSIM
|
||||
if (LLGridManager::getInstance()->isInOpenSim())
|
||||
{
|
||||
|
|
@ -1928,7 +1928,7 @@ bool LLAvatarActions::canZoomIn(const LLUUID& idAgent)
|
|||
else
|
||||
#endif
|
||||
{
|
||||
return (entry != NULL);
|
||||
return (entry != nullptr);
|
||||
}
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
|
@ -1939,8 +1939,7 @@ void LLAvatarActions::zoomIn(const LLUUID& idAgent)
|
|||
// <FS:Ansariel> Firestorm radar support
|
||||
//handle_zoom_to_object(idAgent);
|
||||
|
||||
FSRadarEntry* entry = FSRadar::getInstance()->getEntry(idAgent);
|
||||
if (entry)
|
||||
if (auto entry = FSRadar::getInstance()->getEntry(idAgent); entry)
|
||||
{
|
||||
handle_zoom_to_object(idAgent, entry->getGlobalPos());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -444,6 +444,7 @@ void inventory_offer_handler(LLOfferInfo* info)
|
|||
}
|
||||
|
||||
report_to_nearby_chat(LLTrans::getString(message_type, chat_args));
|
||||
make_ui_sound("UISndInventoryOffer");
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
|
|
|
|||
|
|
@ -1032,7 +1032,9 @@ void LLIMModel::LLIMSession::addMessage(const std::string& from,
|
|||
const LLUUID& from_id,
|
||||
const std::string& utf8_text,
|
||||
const std::string& time,
|
||||
const bool is_history, // comes from a history file or chat server
|
||||
// <FS:Zi> Add a distinct color for server side group chat replay
|
||||
// const bool is_history, // comes from a history file or chat server
|
||||
const S32 is_history, // comes from a history file or chat server
|
||||
const bool is_region_msg,
|
||||
const U32 timestamp) // may be zero
|
||||
{
|
||||
|
|
@ -1101,7 +1103,9 @@ void LLIMModel::LLIMSession::addMessagesFromHistoryCache(const chat_message_list
|
|||
LL_DEBUGS("ChatHistory") << mSessionID << ": Adding history cache message: " << msg << LL_ENDL;
|
||||
|
||||
// Add message from history cache to the display
|
||||
addMessage(from, from_id, msg[LL_IM_TEXT], msg[LL_IM_TIME], true, false, 0); // from history data, not region message, no timestamp
|
||||
// <FS:Zi> Add a distinct color for server side group chat replay
|
||||
// addMessage(from, from_id, msg[LL_IM_TEXT], msg[LL_IM_TIME], true, false, 0); // from history data, not region message, no timestamp
|
||||
addMessage(from, from_id, msg[LL_IM_TEXT], msg[LL_IM_TIME], CHAT_STYLE_HISTORY, false, 0); // from history data, not region message, no timestamp
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1309,7 +1313,9 @@ void LLIMModel::LLIMSession::addMessagesFromServerHistory(const LLSD& history,
|
|||
message["time"] = chat_time_str;
|
||||
message["timestamp"] = (S32)history_msg_timestamp;
|
||||
message["index"] = (LLSD::Integer)mMsgs.size();
|
||||
message["is_history"] = true;
|
||||
// <FS:Zi> Add a distinct color for server side group chat replay
|
||||
// message["is_history"] = true;
|
||||
message["is_history"] = CHAT_STYLE_SERVER_HISTORY;
|
||||
mMsgs.push_front(message);
|
||||
|
||||
LL_DEBUGS("ChatHistory") << mSessionID << ": push_front() adding group chat history message " << message << LL_ENDL;
|
||||
|
|
@ -1356,12 +1362,16 @@ void LLIMModel::LLIMSession::chatFromLogFile(LLLogChat::ELogLineType type, const
|
|||
if (type == LLLogChat::LOG_LINE)
|
||||
{
|
||||
LL_DEBUGS("ChatHistory") << "chatFromLogFile() adding LOG_LINE message from " << msg << LL_ENDL;
|
||||
self->addMessage("", LLSD(), msg["message"].asString(), "", true, false, 0); // from history data, not region message, no timestamp
|
||||
// <FS:Zi> Add a distinct color for server side group chat replay
|
||||
// self->addMessage("", LLSD(), msg["message"].asString(), "", true, false, 0); // from history data, not region message, no timestamp
|
||||
self->addMessage("", LLSD(), msg["message"].asString(), "", CHAT_STYLE_HISTORY, false, 0); // from history data, not region message, no timestamp
|
||||
}
|
||||
else if (type == LLLogChat::LOG_LLSD)
|
||||
{
|
||||
LL_DEBUGS("ChatHistory") << "chatFromLogFile() adding LOG_LLSD message from " << msg << LL_ENDL;
|
||||
self->addMessage(msg["from"].asString(), msg["from_id"].asUUID(), msg["message"].asString(), msg["time"].asString(), true, false, 0); // from history data, not region message, no timestamp
|
||||
// <FS:Zi> Add a distinct color for server side group chat replay
|
||||
// self->addMessage(msg["from"].asString(), msg["from_id"].asUUID(), msg["message"].asString(), msg["time"].asString(), true, false, 0); // from history data, not region message, no timestamp
|
||||
self->addMessage(msg["from"].asString(), msg["from_id"].asUUID(), msg["message"].asString(), msg["time"].asString(), CHAT_STYLE_HISTORY, false, 0); // from history data, not region message, no timestamp
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1717,7 +1727,9 @@ bool LLIMModel::addToHistory(const LLUUID& session_id,
|
|||
|
||||
// <FS:Ansariel> Forward IM to nearby chat if wanted
|
||||
std::string timestr = LLLogChat::timestamp2LogString(timestamp, false);
|
||||
session->addMessage(from, from_id, utf8_text, timestr, false, is_region_msg, timestamp); //might want to add date separately
|
||||
// <FS:Zi> Add a distinct color for server side group chat replay
|
||||
// session->addMessage(from, from_id, utf8_text, timestr, false, is_region_msg, timestamp); //might want to add date separately
|
||||
session->addMessage(from, from_id, utf8_text, timestr, CHAT_STYLE_NORMAL, is_region_msg, timestamp); //might want to add date separately
|
||||
|
||||
static LLCachedControl<bool> show_im_in_chat(gSavedSettings, "FSShowIMInChatHistory");
|
||||
if (show_im_in_chat && !is_announcement)
|
||||
|
|
@ -4650,7 +4662,7 @@ public:
|
|||
{
|
||||
if ( body.has("session_info") )
|
||||
{
|
||||
im_floater->processSessionUpdate(body["session_info"]);
|
||||
//im_floater->processSessionUpdate(body["session_info"]); // <FS:Ansariel> Method does nothing
|
||||
|
||||
// Send request for chat history, if enabled.
|
||||
if (gSavedPerAccountSettings.getBOOL("FetchGroupChatHistory"))
|
||||
|
|
@ -4747,14 +4759,15 @@ public:
|
|||
const LLSD& input) const
|
||||
{
|
||||
LLUUID session_id = input["body"]["session_id"].asUUID();
|
||||
// <FS:Ansariel> [FS communication UI]
|
||||
//LLFloaterIMSession* im_floater = LLFloaterIMSession::findInstance(session_id);
|
||||
FSFloaterIM* im_floater = FSFloaterIM::findInstance(session_id);
|
||||
// </FS:Ansariel> [FS communication UI]
|
||||
if ( im_floater )
|
||||
{
|
||||
im_floater->processSessionUpdate(input["body"]["info"]);
|
||||
}
|
||||
// <FS:Ansariel> Method does nothing
|
||||
//// <FS:Ansariel> [FS communication UI]
|
||||
////LLFloaterIMSession* im_floater = LLFloaterIMSession::findInstance(session_id);
|
||||
//FSFloaterIM* im_floater = FSFloaterIM::findInstance(session_id);
|
||||
//// </FS:Ansariel> [FS communication UI]
|
||||
//if ( im_floater )
|
||||
//{
|
||||
// im_floater->processSessionUpdate(input["body"]["info"]);
|
||||
//}
|
||||
LLIMSpeakerMgr* im_mgr = LLIMModel::getInstance()->getSpeakerManager(session_id);
|
||||
if (im_mgr)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -99,7 +99,9 @@ public:
|
|||
const LLUUID& from_id,
|
||||
const std::string& utf8_text,
|
||||
const std::string& time,
|
||||
const bool is_history,
|
||||
// <FS:Zi> Add a distinct color for server side group chat replay
|
||||
// const bool is_history,
|
||||
const S32 is_history,
|
||||
const bool is_region_msg,
|
||||
U32 timestamp);
|
||||
|
||||
|
|
|
|||
|
|
@ -1353,19 +1353,12 @@ BOOL LLNetMap::handleToolTipAgent(const LLUUID& avatar_id)
|
|||
// aka radar when above 1020m.
|
||||
if (isHigher1020mBug)
|
||||
{
|
||||
FSRadar* radar = FSRadar::getInstance();
|
||||
if (radar)
|
||||
if (auto entry = FSRadar::getInstance()->getEntry(avatar_id); entry)
|
||||
{
|
||||
FSRadarEntry* entry = radar->getEntry(avatar_id);
|
||||
if (entry)
|
||||
if (F32 radar_distance = entry->getRange(); radar_distance > AVATAR_UNKNOWN_RANGE)
|
||||
{
|
||||
F32 radar_distance = entry->getRange();
|
||||
|
||||
if (radar_distance > AVATAR_UNKNOWN_RANGE)
|
||||
{
|
||||
distance = radar_distance;
|
||||
isHigher1020mBug = false;
|
||||
}
|
||||
distance = radar_distance;
|
||||
isHigher1020mBug = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1177,6 +1177,13 @@ void LLPanelProfileSecondLife::apply(LLAvatarData* data)
|
|||
|
||||
void LLPanelProfileSecondLife::processProperties(void* data, EAvatarProcessorType type)
|
||||
{
|
||||
// discard UDP replies for profile data if profile capability is available
|
||||
// otherwise we will truncate profile descriptions to the old UDP limits
|
||||
if (!gAgent.getRegionCapability(PROFILE_PROPERTIES_CAP).empty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (APT_PROPERTIES == type)
|
||||
{
|
||||
const LLAvatarData* avatar_data = static_cast<const LLAvatarData*>(data);
|
||||
|
|
@ -2996,6 +3003,13 @@ void LLPanelProfileFirstLife::onDiscardDescriptionChanges()
|
|||
// <FS:Beq> Restore UDP profiles
|
||||
void LLPanelProfileFirstLife::processProperties(void * data, EAvatarProcessorType type)
|
||||
{
|
||||
// discard UDP replies for profile data if profile capability is available
|
||||
// otherwise we will truncate profile first life descriptions to the old UDP limits
|
||||
if (!gAgent.getRegionCapability(PROFILE_PROPERTIES_CAP).empty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (APT_PROPERTIES == type)
|
||||
{
|
||||
const LLAvatarData* avatar_data = static_cast<const LLAvatarData*>(data);
|
||||
|
|
@ -3210,6 +3224,13 @@ void LLPanelProfileNotes::processProperties(LLAvatarNotes* avatar_notes)
|
|||
// <FS:Beq> Restore UDP profiles
|
||||
void LLPanelProfileNotes::processProperties(void * data, EAvatarProcessorType type)
|
||||
{
|
||||
// discard UDP replies for profile data if profile capability is available
|
||||
// otherwise we will truncate profile notes to the old UDP limits
|
||||
if (!gAgent.getRegionCapability(PROFILE_PROPERTIES_CAP).empty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (APT_NOTES == type)
|
||||
{
|
||||
LLAvatarNotes* avatar_notes = static_cast<LLAvatarNotes*>(data);
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ static LLPanelInjector<LLSidepanelInventory> t_inventory("sidepanel_inventory");
|
|||
|
||||
static const char * const INBOX_BUTTON_NAME = "inbox_btn";
|
||||
static const char * const INBOX_LAYOUT_PANEL_NAME = "inbox_layout_panel";
|
||||
static const char * const INBOX_RELOAD_BUTTON_NAME = "reload_received_items_btn"; // <FS:Zi> Add reload button to inventory inbox
|
||||
static const char * const INVENTORY_LAYOUT_STACK_NAME = "inventory_layout_stack";
|
||||
static const char * const MARKETPLACE_INBOX_PANEL = "marketplace_inbox";
|
||||
|
||||
|
|
@ -180,6 +181,12 @@ BOOL LLSidepanelInventory::postBuild()
|
|||
//LLTabContainer* tabs = mPanelMainInventory->getChild<LLTabContainer>("inventory filter tabs");
|
||||
//tabs->setCommitCallback(boost::bind(&LLSidepanelInventory::updateVerbs, this));
|
||||
|
||||
// <FS:Zi> Add reload button to inventory inbox
|
||||
if (LLButton* reload_inbox_btn = getChild<LLButton>(INBOX_RELOAD_BUTTON_NAME) ; reload_inbox_btn)
|
||||
{
|
||||
reload_inbox_btn->setClickedCallback(boost::bind(&LLSidepanelInventory::onReloadInboxClicked, this));
|
||||
}
|
||||
// </FS:Zi>
|
||||
/*
|
||||
EXT-4846 : "Can we suppress the "Landmarks" and "My Favorites" folder since they have their own Task Panel?"
|
||||
Deferring this until 2.1.
|
||||
|
|
@ -680,3 +687,16 @@ void LLSidepanelInventory::cleanup()
|
|||
}
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
|
||||
// <FS:Zi> Add reload button to inventory inbox
|
||||
void LLSidepanelInventory::onReloadInboxClicked()
|
||||
{
|
||||
const LLUUID inbox_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_INBOX);
|
||||
|
||||
if (LLViewerInventoryCategory* cat = gInventory.getCategory(inbox_id); cat)
|
||||
{
|
||||
cat->setVersion(LLViewerInventoryCategory::VERSION_UNKNOWN);
|
||||
cat->fetch();
|
||||
}
|
||||
}
|
||||
// </FS:Zi>
|
||||
|
|
|
|||
|
|
@ -110,6 +110,7 @@ private:
|
|||
LLLayoutPanel* mInboxLayoutPanel;
|
||||
|
||||
protected:
|
||||
void onReloadInboxClicked(); // <FS:Zi> Add reload button to inventory inbox
|
||||
public:
|
||||
void onBackButtonClicked();
|
||||
|
||||
|
|
|
|||
|
|
@ -5246,6 +5246,16 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data)
|
|||
mesgsys->getUUIDFast(_PREHASH_AnimationList, _PREHASH_AnimID, animation_id, i);
|
||||
mesgsys->getS32Fast(_PREHASH_AnimationList, _PREHASH_AnimSequenceID, anim_sequence_id, i);
|
||||
|
||||
// <FS:Zi> Asset blacklist
|
||||
if (FSAssetBlacklist::getInstance()->isBlacklisted(animation_id, LLAssetType::AT_ANIMATION))
|
||||
{
|
||||
// stop animation for onlookers; this won't help with deformers, but at least the
|
||||
// user themselves doesn't see it, and everyone who comes in after this won't either
|
||||
gAgent.sendAnimationRequest(animation_id, ANIM_REQUEST_STOP);
|
||||
continue;
|
||||
}
|
||||
// </FS:Zi>
|
||||
|
||||
avatarp->mSignaledAnimations[animation_id] = anim_sequence_id;
|
||||
|
||||
// *HACK: Disabling flying mode if it has been enabled shortly before the agent
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
name="sidepanel_inventory_panel"
|
||||
top="0"
|
||||
label=""
|
||||
height="570"
|
||||
height="565"
|
||||
visible="true">
|
||||
<layout_stack
|
||||
follows="left|right|top|bottom"
|
||||
|
|
@ -23,7 +23,7 @@
|
|||
top="0"
|
||||
orientation="vertical"
|
||||
name="inventory_layout_stack"
|
||||
height="570">
|
||||
height="565">
|
||||
<layout_panel
|
||||
name="main_inventory_layout_panel"
|
||||
layout="topleft"
|
||||
|
|
@ -80,7 +80,15 @@
|
|||
pad_left="35"
|
||||
top="0"
|
||||
left="5"
|
||||
right="-5" />
|
||||
right="-43" />
|
||||
<button
|
||||
name="reload_received_items_btn"
|
||||
height="35"
|
||||
width="35"
|
||||
left_pad="3"
|
||||
follows="top|right"
|
||||
image_overlay="Refresh_Off"
|
||||
tool_tip="Reload the received items list." />
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
|
|
@ -88,7 +96,7 @@
|
|||
layout="topleft"
|
||||
height="13"
|
||||
top="10"
|
||||
right="-20"
|
||||
right="-58"
|
||||
name="inbox_fresh_new_count"
|
||||
font="SansSerifMedium"
|
||||
halign="right"
|
||||
|
|
|
|||
|
|
@ -1358,6 +1358,11 @@
|
|||
<color
|
||||
name="ChatHistoryMessageFromLog"
|
||||
reference="Gray" />
|
||||
<!-- <FS:Zi> Add a distinct color for server side group chat replay -->
|
||||
<color
|
||||
name="ChatHistoryMessageFromServerLog"
|
||||
value=".37 .51 .38 1" />
|
||||
<!-- </FS:Zi> -->
|
||||
<color
|
||||
name="AreaSearchBeaconColor"
|
||||
reference="Blue_80" />
|
||||
|
|
|
|||
|
|
@ -32,9 +32,6 @@
|
|||
<panel.string name="area_text">
|
||||
Sahə
|
||||
</panel.string>
|
||||
<panel.string name="area_size_text">
|
||||
[AREA] m²
|
||||
</panel.string>
|
||||
<panel.string name="auction_id_text">
|
||||
Hərrac ID-si: [ID]
|
||||
</panel.string>
|
||||
|
|
@ -132,9 +129,6 @@
|
|||
<text name="PriceLabel">
|
||||
Sahə:
|
||||
</text>
|
||||
<text name="PriceText">
|
||||
4048 m²
|
||||
</text>
|
||||
<text name="Traffic:">
|
||||
Trafik:
|
||||
</text>
|
||||
|
|
@ -180,9 +174,6 @@
|
|||
<text name="covenant_timestamp_text">
|
||||
Axırınci dəyişiklər: 31 dekabr 1969 il., cümə, 16:00:00
|
||||
</text>
|
||||
<text name="region_section_lbl">
|
||||
Region:
|
||||
</text>
|
||||
<text name="region_name_text">
|
||||
Yüklənir...
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -66,6 +66,6 @@
|
|||
</fs_scroll_list>
|
||||
</panel>
|
||||
</tab_container>
|
||||
<button label="ОК" label_selected="ОК" name="ok_btn"/>
|
||||
<button label="OK" label_selected="OK" name="ok_btn"/>
|
||||
<button label="Ləğv et" label_selected="Ləğv et" name="cancel_btn"/>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -14,6 +14,6 @@
|
|||
<text name="hours_textbox">
|
||||
saat
|
||||
</text>
|
||||
<button label="ОК" name="ok_btn"/>
|
||||
<button label="OK" name="ok_btn"/>
|
||||
<button label="Ləğv et" name="cancel_btn"/>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -30,11 +30,11 @@
|
|||
<text name="GroupLabel">
|
||||
Qrup:
|
||||
</text>
|
||||
<check_box label="Paylaş" name="share_with_group" tool_tip="Позволить всем участникам выбранной группы получить установленные вам права на этот объект. Для включения ролевых ограничений необходимо произвести сделку."/>
|
||||
<check_box label="Paylaş" name="share_with_group" tool_tip="Seçilmiş qrupun bütün üzvlərinə bu obyektdə təyin etdiyiniz hüquqları almağa icazə verin. Rol məhdudiyyətlərini aktivləşdirmək üçün müqavilə bağlamalısınız."/>
|
||||
<text name="AnyoneLabel">
|
||||
Hamısı:
|
||||
</text>
|
||||
<check_box label="Köçürt" name="everyone_copy" tool_tip="Копию объекта может взять любой желающий. Объект и все его содержимое должны копироваться и передаваться."/>
|
||||
<check_box label="Köçürt" name="everyone_copy" tool_tip="Hər kəs obyektin köçürtməsin götürə bilər. Obyekt və onun bütün məzmunu köçürülə və paylaşıla bilməlidir."/>
|
||||
<text left="200" name="NextOwnerLabel">
|
||||
Yeni Sahibi:
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ Daha kiçik bir sahə seçməyə çalışın.
|
|||
</floater.string>
|
||||
<floater.string name="info_price_string">
|
||||
L$ [PRICE]
|
||||
(L$ [PRICE_PER_SQM]/м²)
|
||||
(L$ [PRICE_PER_SQM]/m²)
|
||||
[SOLD_WITH_OBJECTS]
|
||||
</floater.string>
|
||||
<floater.string name="insufficient_land_credits">
|
||||
|
|
@ -181,7 +181,7 @@ Daha kiçik bir sahə seçməyə çalışın.
|
|||
</text>
|
||||
<text name="info_price">
|
||||
L$ 1500
|
||||
(L$ 1,1/м²)
|
||||
(L$ 1,1/m²)
|
||||
obyektlər daxil satılıb
|
||||
</text>
|
||||
<text name="info_action">
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
<check_box label="İndi t. et" name="apply_immediate" width="100" />
|
||||
<button label="LSL köç."
|
||||
tool_tip="Rəng dəyərini <r, g, b>. formatda LSL rəng vektoruna köçürdür" name="copy_lsl_btn" width="80" />
|
||||
<button label="ОК" label_selected="ОК" name="select_btn"/>
|
||||
<button label="OK" label_selected="OK" name="select_btn"/>
|
||||
<button label="Ləğv et" label_selected="Ləğv et" name="cancel_btn"/>
|
||||
<text name="Current color:">
|
||||
^ Cari rəng ^
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
Qrafikanın öncədən təyinini sil
|
||||
</string>
|
||||
<string name="title_camera">
|
||||
Камеры Kameranın öncədən təyinini sil
|
||||
Kameranın öncədən təyinini sil
|
||||
</string>
|
||||
<text name="Preset">
|
||||
Öncədən təyini seçin
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@
|
|||
<panel name="edit_scrolling_panel">
|
||||
<text name="edit_experience_title_label" value="Adı:"/>
|
||||
<text name="edit_experience_desc_label" value="Təsviri:"/>
|
||||
<button name="Group_btn" label="Группа"/>
|
||||
<button name="Group_btn" label="Qrup"/>
|
||||
<text name="edit_ContentRating">
|
||||
Reytinq:
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="avatarrendersettings" title="Исключения отображения аватара">
|
||||
<floater name="avatarrendersettings" title="Avatar göstərmə istisnaları">
|
||||
<floater.string name="av_render_never">Heç vaxt</floater.string>
|
||||
<floater.string name="av_render_always">Tam olaraq</floater.string>
|
||||
<filter_editor label="Фильтр аватаров" name="filter_input" />
|
||||
<filter_editor label="Avatar süzgəci" name="filter_input" />
|
||||
<menu_button name="plus_btn" tool_tip="Siyahıya yeni şəxs əlavə et"/>
|
||||
<name_list name="avatar_list">
|
||||
<name_list.columns label="Ad" name="name" />
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
<menu_button name="gear_btn" tool_tip="Əlavə seçimlər"/>
|
||||
<button name="new_gesture_btn" tool_tip="Yeni jest yarat"/>
|
||||
<button name="activate_btn" tool_tip="Seçilmiş jesti aktivləşdirin/deaktiv et"/>
|
||||
<check_box label="Только активные" name="FSShowOnlyActiveGestures" width="150"/>
|
||||
<check_box label="Yalnız aktiv" name="FSShowOnlyActiveGestures" width="150"/>
|
||||
<button name="del_btn" tool_tip="Bu jesti sil"/>
|
||||
</panel>
|
||||
<button label="Dəyişdir" name="edit_btn" tool_tip="Seçilmiş jesti dəyişdirmək üçün pəncərəni açır."/>
|
||||
|
|
|
|||
|
|
@ -63,12 +63,12 @@
|
|||
<text name="target_avatar_name">
|
||||
(xarakter yoxdur)
|
||||
</text>
|
||||
<button label="Xarici torpaqda skriptlərlə xarakter obyektlərini silin" label_selected="Xarici ölkədə skriptlərlə xarakter obyektlərini silin" name="Delete Target's Scripted Objects On Others Land" tool_tip="Удаление всех объектов со скриптами, принадлежащих персонажу, на земле, не принадлежащей персонажу. «Не копируемые» объекты будут возвращены."/>
|
||||
<button label="*Bütün* ərazilərdə skriptlərlə simvol obyektlərini silin" label_selected="*Bütün* ərazilərdə skriptlərlə simvol obyektlərini silin" name="Delete Target's Scripted Objects On *Any* Land" tool_tip="Удаление всех объектов со скриптами, принадлежащих персонажу, в этом регионе. «Не копируемые» объекты будут возвращены."/>
|
||||
<button label="*BÜTÜN* xarakter obyektlərini silin" label_selected="*BÜTÜN* xarakter obyektlərini silin" name="Delete *ALL* Of Target's Objects" tool_tip="Удаление всех объектов, принадлежащих персонажу, в этом регионе. «Не копируемые» объекты будут возвращены."/>
|
||||
<button label="Toqquşmaların ən fəal iştirakçıları" label_selected="Toqquşmaların ən fəal iştirakçıları" name="Get Top Colliders" tool_tip="Список объектов, для которых наблюдается больше всего детализированных обратных вызовов" width="260"/>
|
||||
<button label="Ən yaxşı skriptləri yükləyin" label_selected="Ən yaxşı skriptləri yükləyin" name="Get Top Scripts" tool_tip="Список объектов, в которых скрипты выполняются дольше всего" width="200"/>
|
||||
<button label="Skript Xülasəsi" label_selected="Skript Xülasəsi" name="Scripts digest" tool_tip="Список всех скриптов с числом использований по каждому из них" width="160"/>
|
||||
<button label="Xarici torpaqda skriptlərlə xarakter obyektlərini silin" label_selected="Xarici regionda skriptlərlə xarakter obyektlərini silin" name="Delete Target's Scripted Objects On Others Land" tool_tip="Hədəfin sahibi olmayan torpaqda hədəfə məxsus bütün skript obyektlərini silin. Köçürülə bilməyən obyektlər geri qaytarılacaq."/>
|
||||
<button label="*Bütün* ərazilərdə skriptlərlə simvol obyektlərini silin" label_selected="*Bütün* ərazilərdə skriptlərlə simvol obyektlərini silin" name="Delete Target's Scripted Objects On *Any* Land" tool_tip="Bu bölgədəki hədəfə məxsus bütün skript obyektlərini silin. Köçürülə bilməyən obyektlər geri qaytarılacaq."/>
|
||||
<button label="*BÜTÜN* xarakter obyektlərini silin" label_selected="*BÜTÜN* xarakter obyektlərini silin" name="Delete *ALL* Of Target's Objects" tool_tip="Bu bölgədəki hədəfə məxsus bütün obyektləri silin. Köçürülə bilməyən obyektlər geri qaytarılacaq."/>
|
||||
<button label="Toqquşmaların ən fəal iştirakçıları" label_selected="Toqquşmaların ən fəal iştirakçıları" name="Get Top Colliders" tool_tip="Ən çox ətraflı geri çağırışlı obyekt siyahısı" width="260"/>
|
||||
<button label="Ən yaxşı skriptləri yükləyin" label_selected="Ən yaxşı skriptləri yükləyin" name="Get Top Scripts" tool_tip="Skriptlərin ən uzun müddət işlədiyi obyektlərin siyahısı" width="200"/>
|
||||
<button label="Skript Xülasəsi" label_selected="Skript Xülasəsi" name="Scripts digest" tool_tip="Bütün skriptlərin siyahısını və hər birinin baş vermə sayını alır" width="160"/>
|
||||
</panel>
|
||||
<panel label="Sorğu" name="request">
|
||||
<text name="Destination:">
|
||||
|
|
|
|||
|
|
@ -8,9 +8,9 @@
|
|||
<text name="LabelItemNameTitle">Adı:</text>
|
||||
<text name="LabelItemDescTitle">Təsviri:</text>
|
||||
<text name="LabelCreatorTitle">Yaradıcı:</text>
|
||||
<button label="Профиль…" name="BtnCreator"/>
|
||||
<button label="Profil…" name="BtnCreator"/>
|
||||
<text name="LabelOwnerTitle">Sahibi:</text>
|
||||
<button label="Профиль…" name="BtnOwner"/>
|
||||
<button label="Profil…" name="BtnOwner"/>
|
||||
<text name="LabelAcquiredTitle">Alınıb:</text>
|
||||
<text name="LabelAcquiredDate">Ç. 24 May 12:50:46 2006</text>
|
||||
<text name="LabelItemExperienceTitle">Macəra:</text>
|
||||
|
|
|
|||
|
|
@ -265,7 +265,7 @@
|
|||
<panel name="weights_and_warning_panel">
|
||||
<button label="Çəki və haqqı hesablayın" name="calculate_btn" tool_tip="Çəki və haqqı hesablayın"/>
|
||||
<button label="Ləğv et" name="cancel_btn"/>
|
||||
<button label="Yüklə" name="ok_btn" tool_tip="Загрузить в симулятор"/>
|
||||
<button label="Yüklə" name="ok_btn" tool_tip="Simulyatora yüklə"/>
|
||||
<button label="Seçimləri silin və formanı sıfırlayın" name="reset_btn"/>
|
||||
<!-- ========== WEIGHTS ==========-->
|
||||
<text name="upload_fee">Qiymət: L$ [FEE]</text>
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@
|
|||
D
|
||||
</text>
|
||||
<line_editor name="edit_d_value" tool_tip="D növlü xarakterlər üçün keçilə bilməsi. Xarakter nümunəsi - fərqli."/>
|
||||
<button label="Применить изменения" name="apply_edit_values"/>
|
||||
<button label="Dəyişikləri tətbiq et" name="apply_edit_values"/>
|
||||
<text name="suggested_use_a_label">
|
||||
(Humanoid)
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -10,6 +10,6 @@
|
|||
<check_box label="köçürtmək" name="next_owner_copy"/>
|
||||
<check_box initial_value="true" label="satmaq/paylaşmaq" name="next_owner_transfer"/>
|
||||
</panel>
|
||||
<button label="ОК" label_selected="ОК" name="ok"/>
|
||||
<button label="OK" label_selected="OK" name="ok"/>
|
||||
<button label="Ləğv et" label_selected="Ləğv et" name="cancel"/>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -78,23 +78,23 @@
|
|||
<text name="T_Zoom" tool_tip="Real mənada bu, yaxınlaşdırma funksiyasıdır. Bu, görünüş pəncərəsindəki baxış sahəsini dəyişəcək. Bu, Ctrl+0 və ya Ctrl+8 düymələrini basmaqla eynidir. QEYD. Əgər siz flycam-ı (3D SpacenNavigator) aktiv etmisinizsə, bu işləməyəcək.">
|
||||
Baxış bucağı
|
||||
</text>
|
||||
<button name="Reset_Camera_Angle" label="С" tool_tip="Susmaya görə olan vəziyyətə qaytarın."/>
|
||||
<button name="Reset_Camera_Angle" label="S" tool_tip="Susmaya görə olan vəziyyətə qaytarın."/>
|
||||
<text name="T_Zoom_Speed" tool_tip="Controls how fast/slow the camera will zoom in and out. Higher values produce slower and smother zoom.">
|
||||
Sür. miqyas
|
||||
</text>
|
||||
<button name="Reset_Zoom_Time" label="С" tool_tip="Susmaya görə olan vəziyyətə qaytarın."/>
|
||||
<button name="Reset_Zoom_Time" label="S" tool_tip="Susmaya görə olan vəziyyətə qaytarın."/>
|
||||
<text name="T_Camera_Lag" tool_tip="Avatar hərəkətindən kamera gecikməsi dəyəri (0 = heç biri, 30 = avatar sürəti).">
|
||||
Gecikmə
|
||||
</text>
|
||||
<button name="Reset_Camera_Lag" label="С" tool_tip="Susmaya görə olan vəziyyətə qaytarın."/>
|
||||
<button name="Reset_Camera_Lag" label="S" tool_tip="Susmaya görə olan vəziyyətə qaytarın."/>
|
||||
<text name="T_Camera_Offset" tool_tip="Kameranın defolt baxış nöqtəsindən nə qədər uzaqlaşdığına/sürüşdürülməsinə nəzarət edir.">
|
||||
Sürüşdürmə
|
||||
</text>
|
||||
<button name="Reset_Camera_Offset" label="С" tool_tip="Susmaya görə olan vəziyyətə qaytarın."/>
|
||||
<button name="Reset_Camera_Offset" label="S" tool_tip="Susmaya görə olan vəziyyətə qaytarın."/>
|
||||
<text name="T_Camera_Smoothing" tool_tip="Kameranın nə qədər hamar sürətlənməsinə və dayanmasına nəzarət edir. Daha yüksək dəyərlər daha hamar (və bir qədər yavaş) hərəkət verir.">
|
||||
Hamalaşdırma
|
||||
</text>
|
||||
<button name="Reset_Camera_Smoothing" label="С" tool_tip="Susmaya görə olan vəziyyətə qaytarın."/>
|
||||
<button name="Reset_Camera_Smoothing" label="S" tool_tip="Susmaya görə olan vəziyyətə qaytarın."/>
|
||||
</panel>
|
||||
</panel>
|
||||
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@
|
|||
<text name="ObjectMeshDetailText">
|
||||
Aşağı
|
||||
</text>
|
||||
<slider label="Гибкие примитивы:" name="FlexibleMeshDetail"/>
|
||||
<slider label="Çevik primitivlər:" name="FlexibleMeshDetail"/>
|
||||
<text name="FlexibleMeshDetailText">
|
||||
Aşağı
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
<radio_item label="HTTP proxy istifadə et" name="OtherHTTPProxy" tool_tip="Veb səhifələrə daxil olarkən HTTP proxy istifadə edilsin." value="Veb"/>
|
||||
<radio_item label="SOCKS 5 server istifadə et" name="OtherSocksProxy" tool_tip="Veb saytlarla bağlı olmayan HTTP trafiki SOCKS 5 serverindən keçirilsin." value="SOCKS"/>
|
||||
</radio_group>
|
||||
<button label="ОК" label_selected="ОК" name="OK"/>
|
||||
<button label="OK" label_selected="OK" name="OK"/>
|
||||
<button label="Ləğv et" label_selected="Ləğv et" name="Cancel"/>
|
||||
</floater>
|
||||
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@
|
|||
</panel>
|
||||
</view>
|
||||
<text name="image_res_text">
|
||||
[WIDTH] (en) x [HEIGHT] (hündürlük) пикс.
|
||||
[WIDTH] (en) x [HEIGHT] (hündürlük) piks.
|
||||
</text>
|
||||
<text name="file_size_label">
|
||||
[SIZE] KB
|
||||
|
|
|
|||
|
|
@ -277,21 +277,21 @@
|
|||
<text name="label position">
|
||||
Yerləşim (metr)
|
||||
</text>
|
||||
<button name="copy_pos_btn" label="К" tool_tip="Yerləşməni köçürt"/>
|
||||
<button name="paste_pos_btn" label="В" tool_tip="Yerləşməni yapışdır"/>
|
||||
<button name="paste_pos_clip_btn" label="в" tool_tip="Yerləşməni buferdən daxil et"/>
|
||||
<button name="copy_pos_btn" label="K" tool_tip="Yerləşməni köçürt"/>
|
||||
<button name="paste_pos_btn" label="Y" tool_tip="Yerləşməni yapışdır"/>
|
||||
<button name="paste_pos_clip_btn" label="y" tool_tip="Yerləşməni buferdən daxil et"/>
|
||||
<text name="label size">
|
||||
Ölçü (metr)
|
||||
</text>
|
||||
<button name="copy_size_btn" label="К" tool_tip="Ölçünü köçürt"/>
|
||||
<button name="paste_size_btn" label="В" tool_tip="Ölçünü yapışdır"/>
|
||||
<button name="paste_size_clip_btn" label="в" tool_tip="Ölçünü buferdən daxil et"/>
|
||||
<button name="copy_size_btn" label="K" tool_tip="Ölçünü köçürt"/>
|
||||
<button name="paste_size_btn" label="Y" tool_tip="Ölçünü yapışdır"/>
|
||||
<button name="paste_size_clip_btn" label="y" tool_tip="Ölçünü buferdən daxil et"/>
|
||||
<text name="label rotation">
|
||||
Döngə (dərəcə)
|
||||
</text>
|
||||
<button name="copy_rot_btn" label="К" tool_tip="Döngəni köçürt"/>
|
||||
<button name="paste_rot_btn" label="В" tool_tip="Döngəni yapışdır"/>
|
||||
<button name="paste_rot_clip_btn" label="в" tool_tip="Döngəni buferdən daxil et"/>
|
||||
<button name="copy_rot_btn" label="K" tool_tip="Döngəni köçürt"/>
|
||||
<button name="paste_rot_btn" label="Y" tool_tip="Döngəni yapışdır"/>
|
||||
<button name="paste_rot_clip_btn" label="y" tool_tip="Döngəni buferdən daxil et"/>
|
||||
<button label="Köçürt" name="copy_params_btn" tool_tip="Seçimləri buferə köçürt"/>
|
||||
<button label="Yapışdır" name="paste_params_btn" tool_tip="Seçimləri buferdən yapışdır"/>
|
||||
<combo_box name="comboBaseType">
|
||||
|
|
@ -577,7 +577,7 @@ Aşğ. ↔ Əaşğ.
|
|||
Sahə: [AREA] m²
|
||||
</text>
|
||||
<button label="Torpaq haqqında" label_selected="Torpaq haqqında" name="button about land"/>
|
||||
<check_box label="Показать владельцев" name="checkbox show owners" tool_tip="Цвет участка в зависимости от типа владения: Зеленый = ваша земля Голубой = земля вашей группы Красный = чужая земля Желтый = для продажи Фиолетовый = для аукциона Серый = общая"/>
|
||||
<check_box label="Sahibləri göstər" name="checkbox show owners" tool_tip="Mülkiyyət növündən asılı olaraq sahə rəngi: Yaşıl = torpağınızdır Göy = qrupunuzun torpağı Qırmızı = yad torpaq Sarı = satış üçün Bənövşəyi = hərrac üçün Boz = ümumi"/>
|
||||
<text name="label_parcel_modify">
|
||||
Sahəni dəyişdir
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
URL-ünvanlar
|
||||
</floater.string>
|
||||
<floater.string name="memory">
|
||||
Yaddaş (КБ)
|
||||
Yaddaş (KB)
|
||||
</floater.string>
|
||||
<text name="title_text">
|
||||
Yüklənir...
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
Bing appID açarı təsdiqlənməyib. Yenidən cəhd edin.
|
||||
</string>
|
||||
<string name="google_api_key_not_verified">
|
||||
Ключ Google API açarı təsdiqlənməyib. Yenidən cəhd edin.
|
||||
Google API açarı təsdiqlənməyib. Yenidən cəhd edin.
|
||||
</string>
|
||||
<string name="bing_api_key_verified">
|
||||
Bing appID açarı təsdiqlənib.
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@
|
|||
Roxanne
|
||||
</string>
|
||||
<string name="effect_Rumble">
|
||||
Урчание
|
||||
Bozarma
|
||||
</string>
|
||||
<string name="effect_Sabrina">
|
||||
Sabrina
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
<menu_item_call label="Skeleti sıfırla" name="Reset Skeleton"/>
|
||||
<menu_item_call label="Skelet və animasiyanı sıfırla" name="Reset Skeleton And Animations"/>
|
||||
<menu_item_call label="Meş LOD sıfırlanması" name="Reset Mesh LOD" />
|
||||
<context_menu label="Управление" name="Annoyance">
|
||||
<context_menu label="İdarə" name="Annoyance">
|
||||
<menu_item_call label="Blokla" name="Avatar Mute"/>
|
||||
<menu_item_call label="Blokdan çıxart" name="Avatar Unmute"/>
|
||||
<menu_item_call label="Şikayət" name="abuse"/>
|
||||
|
|
|
|||
|
|
@ -24,5 +24,5 @@
|
|||
<menu_item_check label="Tam adı: Göstərilən adı (İstifadəçi adı) kimi" name="format_displayname_username" />
|
||||
<menu_item_check label="Axtarış filterini göstər" name="friend_filter" />
|
||||
</menu>
|
||||
<menu_item_check label="Статус онлайн для друзей" name="GlobalOnlineStatusToggle" />
|
||||
<menu_item_check label="Dostlar üçün daxilolma statusu" name="GlobalOnlineStatusToggle" />
|
||||
</context_menu>
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
<menu_item_call label="Yeni əlcəklər" name="New Gloves"/>
|
||||
<menu_item_call label="Yeni mayka" name="New Undershirt"/>
|
||||
<menu_item_call label="Yenu tuman" name="New Underpants"/>
|
||||
<menu_item_call label="Yeni alfaа" name="New Alpha"/>
|
||||
<menu_item_call label="Yeni alfa" name="New Alpha"/>
|
||||
<menu_item_call label="Yeni fizika" name="New Physics"/>
|
||||
<menu_item_call label="Yeni döymə" name="New Tattoo"/>
|
||||
</menu>
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
<menu_item_call label="Don" name="Skirt"/>
|
||||
<menu_item_call label="Ayaqqabı" name="Shoes"/>
|
||||
<menu_item_call label="Corablar" name="Socks"/>
|
||||
<menu_item_call label="Куртку" name="Jacket"/>
|
||||
<menu_item_call label="Pencək" name="Jacket"/>
|
||||
<menu_item_call label="Əlcəklər" name="Gloves"/>
|
||||
<menu_item_call label="Mayka" name="Self Undershirt"/>
|
||||
<menu_item_call label="Tuman" name="Self Underpants"/>
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
<menu_item_call label="Bütün paltarı" name="All Clothes"/>
|
||||
</context_menu>
|
||||
<context_menu label="Ayır" name="Inspect Self Detach"/>
|
||||
<menu_item_call label="Отделить все" name="Detach All"/>
|
||||
<menu_item_call label="Hamısını ayır" name="Detach All"/>
|
||||
</context_menu>
|
||||
<menu_item_call label="Geyimi dəyiş" name="Chenge Outfit"/>
|
||||
<menu_item_call label="Geyimi dəyişdir" name="Edit Outfit"/>
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@
|
|||
<menu_item_call label="İM Göndər" name="Send Instant Message"/>
|
||||
<menu_item_call label="Teleport təklif et" name="Offer Teleport..."/>
|
||||
<menu_item_call label="Teleport tələb et" name="Request Teleport..."/>
|
||||
<menu_item_call label="Начать конференц чат" name="Conference Chat"/>
|
||||
<menu_item_call label="Konfrans söhbətə başla" name="Conference Chat"/>
|
||||
<menu_item_call label="Aktivləşdirm" name="Activate"/>
|
||||
<menu_item_call label="Deaktivləşdir" name="Deactivate"/>
|
||||
<menu_item_call label="Ayrı saxla" name="Save As"/>
|
||||
|
|
@ -125,8 +125,8 @@
|
|||
<menu_item_call label="Teksturasını yenilə" name="Texture Refresh Attachment" />
|
||||
<menu_item_call label="Özündən ayır" name="Detach From Yourself"/>
|
||||
<menu_item_call label="Çıxart" name="Take Off"/>
|
||||
<menu_item_call name="Settings Apply Local" label="Применить только к себе"/>
|
||||
<menu_item_call name="Settings Apply Parcel" label="Применить к Участку"/>
|
||||
<menu_item_call name="Settings Apply Local" label="Yalnız özümə tətbiq et"/>
|
||||
<menu_item_call name="Settings Apply Parcel" label="Sahəyə tətbiq et"/>
|
||||
<menu_item_call label="Ticarət mərkəzinin məhsul siyahılarına köçürt" name="Marketplace Copy"/>
|
||||
<menu_item_call label="Ticarət mərkəzinin məhsul siyahılarına daşı" name="Marketplace Move"/>
|
||||
<menu_item_call label="--seçim yoxdur--" name="--no options--"/>
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
<menu_item_call label="Şəkil çək" name="take_snapshot"/>
|
||||
<menu_item_call label="Şəkili sil" name="remove_photo"/>
|
||||
<context_menu label="Yeni paltar" name="New Clothes">
|
||||
<menu_item_call label="Yeni köynəkа" name="New Shirt"/>
|
||||
<menu_item_call label="Yeni köynək" name="New Shirt"/>
|
||||
<menu_item_call label="Yeni şalvar" name="New Pants"/>
|
||||
<menu_item_call label="Yeni ayaqqabı" name="New Shoes"/>
|
||||
<menu_item_call label="Yeni corablar" name="New Socks"/>
|
||||
|
|
|
|||
|
|
@ -2,5 +2,5 @@
|
|||
<toggleable_menu name="menu_group_plus">
|
||||
<menu_item_check label="Tarixə görə sırala" name="sort_most" />
|
||||
<menu_item_check label="Adına görə sırala" name="sort_name" />
|
||||
<menu_item_check name="view_icons" label="Показать иконки" />
|
||||
<menu_item_check name="view_icons" label="Nişanları göstər" />
|
||||
</toggleable_menu>
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
<pie_slice label="Fizika" name="Self Physics"/>
|
||||
<pie_slice label="Alfa" name="Self Alpha"/>
|
||||
</pie_menu>
|
||||
<pie_slice label="Юбку" name="Skirt"/>
|
||||
<pie_slice label="Don" name="Skirt"/>
|
||||
</pie_menu>
|
||||
<pie_menu name="Pie Object Detach HUD"/>
|
||||
<pie_menu label="Ayır >" name="Pie Object Detach">
|
||||
|
|
@ -50,7 +50,7 @@
|
|||
<pie_slice label="Jestlər..." name="Gestures"/>
|
||||
<pie_menu label="Görünüş >" name="Appearance >">
|
||||
<pie_slice label="Forma" name="Edit My Shape"/>
|
||||
<pie_menu name="ResetMenu" label="Сброс >">
|
||||
<pie_menu name="ResetMenu" label="Sıfırla >">
|
||||
<pie_slice label="Skel. & Anim." name="Reset Skeleton And Animations"/>
|
||||
<pie_slice label="Skelet" name="Reset Skeleton"/>
|
||||
<pie_slice label="Mesh LOD" name="Reset Mesh LOD"/>
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
<pie_slice label="Tekstur.yenilə" name="Texture Refresh"/>
|
||||
<pie_slice label="Skelet" name="Reset Skeleton"/>
|
||||
</pie_menu>
|
||||
<pie_menu name="DerenderMenu" label="Неотображать >">
|
||||
<pie_menu name="DerenderMenu" label="Göstərmə >">
|
||||
<pie_slice label="Həmişə" name="DerenderPermanent"/>
|
||||
<pie_slice label="Müvəqqəti" name="Derender"/>
|
||||
</pie_menu>
|
||||
|
|
|
|||
|
|
@ -163,32 +163,6 @@
|
|||
</menu>
|
||||
</menu>
|
||||
|
||||
<!-- <menu label="Положение солнца" name="Environment Settings">
|
||||
<menu_item_check label="Восход" name="Sunrise"/>
|
||||
<menu_item_check label="Полдень" name="Noon"/>
|
||||
<menu_item_check label="Закат" name="Sunset"/>
|
||||
<menu_item_check label="Полночь" name="Midnight"/>
|
||||
<menu_item_check label="Время острова" name="Revert to Region Default"/>
|
||||
</menu>
|
||||
<menu label="Редактор окружающей среды" name="Environment Editor">
|
||||
<menu_item_call label="Параметры среды..." name="Environment Settings"/>
|
||||
<menu name="Water Presets" label="Предустановки воды">
|
||||
<menu_item_call label="Новая предустановка..." name="new_water_preset"/>
|
||||
<menu_item_call label="Редактировать предустановку..." name="edit_water_preset"/>
|
||||
<menu_item_call label="Удалить предустановку..." name="delete_water_preset"/>
|
||||
</menu>
|
||||
<menu name="Sky Presets" label="Предустановки неба">
|
||||
<menu_item_call label="Новая предустановка..." name="new_sky_preset"/>
|
||||
<menu_item_call label="Редактировать предустановку..." name="edit_sky_preset"/>
|
||||
<menu_item_call label="Удалить предустановку..." name="delete_sky_preset"/>
|
||||
</menu>
|
||||
<menu name="Day Presets" label="Предустановки дня">
|
||||
<menu_item_call label="Новая предустановка..." name="new_day_preset"/>
|
||||
<menu_item_call label="Редактировать предустановку..." name="edit_day_preset"/>
|
||||
<menu_item_call label="Удалить предустановку..." name="delete_day_preset"/>
|
||||
</menu>
|
||||
</menu> -->
|
||||
|
||||
<menu name="photo_and_video" label="Şəkil və video">
|
||||
<menu_item_call label="Şəkil alətləri" name="phototools_item_call"/>
|
||||
<menu_item_call label="Kamera alətləri" name="cameratools_item_call"/>
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@
|
|||
</mimetype>
|
||||
<mimetype name="video/vnd.secondlife.qt.legacy">
|
||||
<label name="vnd.secondlife.qt.legacy_label">
|
||||
Видео (QuickTime)
|
||||
Video (QuickTime)
|
||||
</label>
|
||||
</mimetype>
|
||||
<mimetype name="application/javascript">
|
||||
|
|
|
|||
|
|
@ -26,16 +26,10 @@ Xəta təfərrüatları: "[_NAME]" adlı bildiriş notifications.xml f
|
|||
<notification name="TutorialNotFound">
|
||||
Hazırda heç bir dərslik yoxdur
|
||||
</notification>
|
||||
<notification name="GenericAlert">
|
||||
[MESSAGE]
|
||||
</notification>
|
||||
<notification name="GenericAlertYesCancel">
|
||||
[MESSAGE]
|
||||
<usetemplate name="okcancelbuttons" notext="Ləğv et" yestext="Bəli"/>
|
||||
</notification>
|
||||
<notification name="GenericAlertOK">
|
||||
[MESSAGE]
|
||||
</notification>
|
||||
<notification name="BadInstallation">
|
||||
[APP_NAME] yenilənərkən xəta baş verdi. Klientin [https://www.firestormviewer.org/downloads ən son versiyasını yükləyin].
|
||||
</notification>
|
||||
|
|
@ -195,7 +189,7 @@ Zəhmət olmasa, bir element seçin və yenidən cəhd edin.
|
|||
</notification>
|
||||
<notification name="AllowMultipleViewers">
|
||||
Birdən çox tətbiqin [APP_NAME] icrası dəstəklənmir. Bu, tekstur keşinin münaqişələrinə, zədələnmə, performans və vizual yavaşlamaya səbəb ola bilər.
|
||||
<usetemplate name="okbutton" yestext="ОК"/>
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="GrantModifyRights">
|
||||
Başqa sakinə dəyişdirmə hüquqlarının verilməsi ona HƏR obyektinizi dəyişdirməyə, silməyə və ya götürməyə imkan verəcək. Bu icazənin verilməsində ÇOX diqqətli olun.
|
||||
|
|
@ -421,7 +415,7 @@ Silahın işləməsi üçün skriptlər icra edilməlidir.
|
|||
Birdən çox üz seçildi.
|
||||
Bu hərəkəti davam etdirsəniz, obyektin hər seçilmiş üzünə ayrıca media nümunəsi yerləşdiriləcək.
|
||||
Medianı yalnız bir üzdə yerləşdirmək üçün "Üzü seçmək" əmrini seçin və obyektin istədiyiniz üzünə basın, sonra "Əlavə et" düyməsini basın.
|
||||
<usetemplate ignoretext="Медиа будет помещено на несколько выбранных граней" name="okcancelignore" notext="Ləğv et" yestext="Bəli"/>
|
||||
<usetemplate ignoretext="Media bir neçə seçilmiş üzün üstünə tətbiq olunacaq" name="okcancelignore" notext="Ləğv et" yestext="Bəli"/>
|
||||
</notification>
|
||||
<notification name="MustBeInParcel">
|
||||
Teleportasiya nöqtəsini təyin etmək üçün siz sahədə olmalısınız.
|
||||
|
|
@ -651,7 +645,7 @@ Obyekt əhatə dairəsindən kənarda ola və ya silinə bilər.
|
|||
</notification>
|
||||
<notification name="MediaFileDownloadUnsupported">
|
||||
Siz [APP_NAME] tərəfindən dəstəklənməyən fayl endirilməsi üçün sorğu göndərmisiniz.
|
||||
<usetemplate ignoretext="Предупреждать о загрузке неподдерживаемых файлов" name="okignore" yestext="Bəli"/>
|
||||
<usetemplate ignoretext="Dəstəklənməyən faylları endirmək barədə xəbərdarlıq edin" name="okignore" yestext="Bəli"/>
|
||||
</notification>
|
||||
<notification name="CannotWriteFile">
|
||||
[[FILE]] faylını yazmaq mümkün deyil
|
||||
|
|
@ -777,7 +771,7 @@ Bütün satın alınan əşyaları eyni bölgəyə köçürün.
|
|||
<notification name="PromptGoToCurrencyPage">
|
||||
[EXTRA]
|
||||
|
||||
Перейти на [_URL] для получения информации о покупке L$?
|
||||
L$ almaq haqqında məlumat üçün [_URL] ünvanına keçmək istədiyinə əminsiniz?
|
||||
<url name="url">
|
||||
http://secondlife.com/app/currency/
|
||||
</url>
|
||||
|
|
@ -1196,7 +1190,7 @@ Bu, adətən müvəqqəti bir problemdir. Seçimləri düzəldin və bir neçə
|
|||
Qrup üçün torpaq almaq mümkün deyil:
|
||||
Sizin aktiv qrupunuz üçün torpaq almaq hüququnuz yoxdur.
|
||||
</notification>
|
||||
<notification label="Добавить друга" name="AddFriendWithMessage">
|
||||
<notification label="Dost əlavə et" name="AddFriendWithMessage">
|
||||
Dostlar xəritədə bir-birlərini izləmək və onlayn statuslarını görmək üçün icazə verə bilərlər.
|
||||
|
||||
[NAME] adlı şəxsə dostluq sorğusu göndərilsin?
|
||||
|
|
@ -1421,9 +1415,9 @@ Bu [AREA] m² torpaq "[GROUP_NAME]" qrupuna ötürülsün?
|
|||
Ekran seçimləri səviyyəsi təhlükəsiz olaraq təyin edilib, çünki -safe seçimi müəyyən edilib.
|
||||
</notification>
|
||||
<notification name="DisplaySetToRecommendedGPUChange">
|
||||
Установлен рекомендуемый уровень настроек отображения, так как графическая карта изменена:
|
||||
с "[LAST_GPU]"
|
||||
на "[THIS_GPU]"
|
||||
Qrafik kartı dəyişdirildiyinə görə tövsiyə olunmuş göstərmə profili təyin olunub:
|
||||
əvvəlki "[LAST_GPU]"
|
||||
cari "[THIS_GPU]"
|
||||
</notification>
|
||||
<notification name="DisplaySetToRecommendedFeatureChange">
|
||||
Göstərmə alt sistemi dəyişdirildiyi üçün tövsiyə olunan displey seçimləri səviyyəsi təyin edilir.
|
||||
|
|
@ -1635,7 +1629,7 @@ Zəhmət olmasa, bir obyekt seçin və yenidən cəhd edin.
|
|||
[AGENT] torpaq sahibini bloklananlar siyahısına əlavə etmək mümkün deyil.
|
||||
</notification>
|
||||
<notification name="GroupIsAlreadyInList">
|
||||
<nolink>[GROUP]</nolink> уже находится в списке допущенных групп.
|
||||
<nolink>[GROUP]</nolink> artıq icazə verilən qruplar siyahısındadır.
|
||||
</notification>
|
||||
<notification name="AgentIsAlreadyInList">
|
||||
[AGENT] artıq [LIST_TYPE] siyahınızdadır.
|
||||
|
|
@ -1816,12 +1810,12 @@ Bütün gələn dostluq sorğularını rədd et rejimi aktivdir.
|
|||
</notification>
|
||||
<notification name="RejectAllGroupInvitesModeSet">
|
||||
Bütün gələn qrup dəvətlərini rədd et rejimi aktivdir.
|
||||
Входящие групповые приглашения от кого-либо теперь будут отклоняться автоматически. Bu səbəbə görə sizə məlumat verilməyəcək.
|
||||
Hər kəsdən gələn qrup dəvətləri indi avtomatik olaraq rədd ediləcək. Bu səbəbə görə sizə məlumat verilməyəcək.
|
||||
<usetemplate ignoretext="Bütün qrup dəvətlərini rədd etmək üçün statusumu dəyişirəm" name="okignore" yestext="Bəli"/>
|
||||
</notification>
|
||||
<notification name="JoinedTooManyGroupsMember">
|
||||
Qrupların maksimum sayına çatdınız. Qoşulmazdan əvvəl hər hansı bir qrupdan ayrılın və ya təklifi rədd edin.
|
||||
[NAME] пригласил вас вступить в группу как участник.
|
||||
[NAME] qrupa üzv kimi qoşulmaq təklif etdi.
|
||||
<usetemplate name="okcancelbuttons" notext="Rədd edt" yestext="Qoşul"/>
|
||||
</notification>
|
||||
<notification name="JoinedTooManyGroups">
|
||||
|
|
@ -1979,7 +1973,7 @@ Onu silmək istərdinizmi?
|
|||
[HISTORY_ENTRY] yerinə teleport etmək istədiyinizə əminsiniz?
|
||||
<usetemplate ignoretext="Tarixçədə bir yerə teleportasiyanı təsdiqləyin" name="okcancelignore" notext="Ləğv et" yestext="Teleport ol"/>
|
||||
</notification>
|
||||
<notification label="Сообщение всем в моем землевладении" name="MessageEstate">
|
||||
<notification label="Torpaq mülkiyyətimdə hər kəsə mesaj" name="MessageEstate">
|
||||
Hazırda mülkünüzdə olan bütün sakinlər üçün qısa bir elan daxil edin.
|
||||
<form name="form">
|
||||
<button name="OK" text="OK"/>
|
||||
|
|
@ -2296,7 +2290,7 @@ Zəhmət olmasa, bir obyekt seçin və yenidən cəhd edin.
|
|||
Eyni zamanda bir neçə obyektin məzmununu ala bilməzsiniz.
|
||||
Zəhmət olmasa, bir obyekt seçin və yenidən cəhd edin.
|
||||
</notification>
|
||||
<notification label="Нельзя купить содержимое" name="BuyContentsOneOwner">
|
||||
<notification label="Məzmunu almaq mümkün deyil" name="BuyContentsOneOwner">
|
||||
Eyni zamanda müxtəlif sahiblərdən obyektləri ala bilməzsiniz.
|
||||
Zəhmət olmasa, bir obyekt seçin və yenidən cəhd edin.
|
||||
</notification>
|
||||
|
|
@ -2407,7 +2401,7 @@ Element(lər) daşınılsın?
|
|||
</notification>
|
||||
<notification name="ConfirmAddingChatParticipants">
|
||||
Mövcud söhbətə iştirakçı əlavə etdiyiniz zaman yeni söhbət yaradılacaq. Bütün iştirakçılar yeni söhbət haqqında bildirişlər alacaqlar.
|
||||
<usetemplate ignoretext="Söhbət iştirakçılarının əlavə edilməsini təsdiqləyin" name="okcancelignore" notext="Ləğv et" yestext="ОК"/>
|
||||
<usetemplate ignoretext="Söhbət iştirakçılarının əlavə edilməsini təsdiqləyin" name="okcancelignore" notext="Ləğv et" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="ConfirmQuit">
|
||||
Çıxmaq istədiyinizdə əminsiniz?
|
||||
|
|
@ -2680,8 +2674,8 @@ Domen: [MEDIADOMAIN]
|
|||
URL: [MEDIAURL]
|
||||
<form name="form">
|
||||
<button name="Do Now" text="İndi [ACTION]"/>
|
||||
<button name="RememberDomain" text="[CONDITION] Разрешить этому домену"/>
|
||||
<button name="RememberURL" text="[CONDITION] Разрешить этому URL"/>
|
||||
<button name="RememberDomain" text="[CONDITION] Bu domenə icazə ver"/>
|
||||
<button name="RememberURL" text="[CONDITION] Bu URL üçün icazə ver"/>
|
||||
</form>
|
||||
</notification>
|
||||
<notification name="MediaAlertSingle">
|
||||
|
|
@ -2712,9 +2706,9 @@ URL: [AUDIOURL]
|
|||
Domen: [AUDIODOMAIN]
|
||||
URL: [AUDIOURL]
|
||||
<form name="form">
|
||||
<button name="Do Now" text="[ACTION] Сейчас"/>
|
||||
<button name="RememberDomain" text="[CONDITION] Разрешить этому домену"/>
|
||||
<button name="RememberURL" text="[CONDITION] Разрешить этому URL"/>
|
||||
<button name="Do Now" text="[ACTION] İndi"/>
|
||||
<button name="RememberDomain" text="[CONDITION] Bu domenə icazə ver"/>
|
||||
<button name="RememberURL" text="[CONDITION] Bu URL üçün icazə ver"/>
|
||||
</form>
|
||||
</notification>
|
||||
<notification name="AudioAlertSingle">
|
||||
|
|
@ -2808,7 +2802,7 @@ Mövzu: [SUBJECT], Mesaj: [MESSAGE]
|
|||
Əsas əmlaklar arasında avadanlıq siyahısı göndərmək mümkün deyil.
|
||||
</notification>
|
||||
<notification name="UnableToLoadNotecard">
|
||||
Невозможно загрузить заметку.
|
||||
Qeydi yükləmək mümkün deyil.
|
||||
Yenidən cəhd edin.
|
||||
</notification>
|
||||
<notification name="ScriptMissing">
|
||||
|
|
@ -2893,21 +2887,6 @@ Daha kiçik bir sahə seçməyə çalışın.
|
|||
<notification name="NoContentToSearch">
|
||||
Axtarmaq üçün ən azı bir növ məzmun seçin ("Ümumi", "Ortam" vəya "Yetkin").
|
||||
</notification>
|
||||
<notification name="SystemMessage">
|
||||
[MESSAGE]
|
||||
</notification>
|
||||
<notification name="FlickrConnect">
|
||||
[MESSAGE]
|
||||
</notification>
|
||||
<notification name="PaymentReceived">
|
||||
[MESSAGE]
|
||||
</notification>
|
||||
<notification name="PaymentSent">
|
||||
[MESSAGE]
|
||||
</notification>
|
||||
<notification name="PaymentFailure">
|
||||
[MESSAGE]
|
||||
</notification>
|
||||
<notification name="EventNotification">
|
||||
Hadisə bildirişi:
|
||||
|
||||
|
|
@ -2993,7 +2972,7 @@ Burada uça bilməzsiniz.
|
|||
<usetemplate name="okbutton" yestext="Regionu bərpa et"/>
|
||||
</notification>
|
||||
<notification name="DynamicPathfindingDisabled">
|
||||
В этом регионе не разрешен динамический поиск пути. Возможны нарушения работы скриптовых объектов с использованием вызовов LSL поиска пути.
|
||||
Bu regionda dinamik yol axtarışı söndürülüb. Yol axtaran LSL çağırışlarından istifadə edən skriptli obyektlər bu regionda gözlənildiyi kimi işləməyə bilər.
|
||||
</notification>
|
||||
<notification name="PathfindingCannotRebakeNavmesh">
|
||||
Bir xəta baş verdi. Şəbəkə və ya server problemi ola bilər və ya sizin tikinti icazəniz yoxdur. Bəzən sistemdən çıxmaq və yenidən daxil olmaq bu problemi həll edə bilər.
|
||||
|
|
@ -3662,7 +3641,7 @@ Aşağıdakı sakinlərlə:
|
|||
Aşağıdakı əşyalarla paylaşmaq istədiyinizə əminsiniz?
|
||||
|
||||
<nolink>[ITEMS]</nolink>
|
||||
<usetemplate name="okcancelbuttons" notext="Ləğv et" yestext="ОК"/>
|
||||
<usetemplate name="okcancelbuttons" notext="Ləğv et" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="ItemsShared">
|
||||
Əşyalar uğurla paylaşıldı.
|
||||
|
|
@ -3740,10 +3719,10 @@ https://wiki.firestormviewer.org/fs_voice
|
|||
<usetemplate ignoretext="Səs serverinə qoşulma zamanı problemlər yarandı" name="okignore" yestext="Bəli"/>
|
||||
</notification>
|
||||
<notification name="NoVoiceConnect-GIAB">
|
||||
Проблемы соединения с речевым сервером:
|
||||
Səs serverinə qoşulmaq mümkün deyil:
|
||||
|
||||
Голосовое общение будет недоступно.
|
||||
Проверьте настройки сети и брандмауэра.
|
||||
Səsli rabitə mövcud olmayacaq.
|
||||
Zəhmət olmasa şəbəkənizi və təhlükəsizlik divarı quraşdırmanızı yoxlayın.
|
||||
[https://wiki.firestormviewer.org/fs_voice]
|
||||
</notification>
|
||||
<notification name="AvatarRezLeftNotification">
|
||||
|
|
@ -3811,8 +3790,7 @@ Görünüş sahəsini fırlatmaq üçün dünyanın istənilən yerinə basın v
|
|||
Burada fərdiləşdirilə bilən görünülən adınızı təyin edin. Bu, dəyişdirilə bilməyən unikal istifadəçi adınıza əlavədir. Siz seçimlərdə digər insanların adlarını necə gördüyünüzü dəyişə bilərsiniz.
|
||||
</notification>
|
||||
<notification label="Kamera" name="HintView">
|
||||
Для изменения вида из камеры используйте инструменты "Вращение" и "Сдвиг". При нажатии клавиши Esc или переходе вид из камеры возвращается к исходному состоянию.
|
||||
Kamera görünüşünüzü dəyişdirmək üçün Fırlatma və Sürüşdürmə idarəetmə elementlərindən istifadə edin. Esc düyməsinə basmaqla və ya gəzməklə görünüşünüzü sıfırlayın.
|
||||
Kamera görünüşünüzü dəyişdirmək üçün "Döndər" və "Sürüşdür" idarəetmə elementlərindən istifadə edin. Esc düyməsinə basmaqla və ya gəzməklə görünüşünüzü sıfırlayın.
|
||||
</notification>
|
||||
<notification label="Avadanlıq siyahısı" name="HintInventory">
|
||||
Elementləri tapmaq üçün avadanlıq siyahınızı yoxlayın. Ən yeni elementləri Son pəncərəsində asanlıqla tapmaq olar.
|
||||
|
|
@ -3863,7 +3841,6 @@ Görünüş sahəsini fırlatmaq üçün dünyanın istənilən yerinə basın v
|
|||
Proksi seçimləri [APP_NAME] tətbiqini yenidən başlatdıqdan sonra qüvvəyə minir.
|
||||
</notification>
|
||||
<notification name="AuthRequest">
|
||||
Сайт по адресу "<nolink>[HOST_NAME]</nolink>" в царстве "in realm "[REALM]" требует имени пользователя и пароля.
|
||||
"[REALM]" " sahəsində " "<nolink>[HOST_NAME]</nolink>" saytı istifadəçi adı və parol tələb edir.
|
||||
<form name="form">
|
||||
<input name="username" text="İstifadəçi adı"/>
|
||||
|
|
@ -3961,7 +3938,7 @@ Davam edilsin?
|
|||
<notification name="PathfindingLinksets_MismatchOnRestricted_MismatchOnVolume">
|
||||
Bəzi seçilmiş keçid dəstləri keçiddə icazə məhdudiyyətlərinə görə '[REQUESTED_TYPE]' olaraq təyin edilə bilməz. Bu keçid dəstləri əvəzinə "[RESTRICTED_TYPE]" olaraq təyin ediləcək.
|
||||
|
||||
Bəzi seçilmiş keçid dəstləri '[REQUESTED_TYPE]' olaraq təyin edilə bilməz, çünki forma qabarıq deyil. Тип использования этих наборов связей не изменится.
|
||||
Bəzi seçilmiş keçid dəstləri '[REQUESTED_TYPE]' olaraq təyin edilə bilməz, çünki forma qabarıq deyil. Bu keçid dəstlərinin istifadə növü dəyişilməyəcək.
|
||||
|
||||
Davam edilsin?
|
||||
<usetemplate ignoretext="Bəzi seçilmiş link dəstləri keçidlər dəstində icazə məhdudiyyətləri və forma qeyri-qabarıq olduğu üçün təyin edilə bilməz." name="okcancelignore" notext="Ləğv et" yestext="Bəli"/>
|
||||
|
|
@ -3971,7 +3948,7 @@ Davam edilsin?
|
|||
|
||||
Bəzi seçilmiş keçid dəstləri keçiddə icazə məhdudiyyətlərinə görə '[REQUESTED_TYPE]' olaraq təyin edilə bilməz. Bu keçid dəstləri əvəzinə "[RESTRICTED_TYPE]" olaraq təyin ediləcək.
|
||||
|
||||
Bəzi seçilmiş keçid dəstləri '[REQUESTED_TYPE]' olaraq təyin edilə bilməz, çünki forma qabarıq deyil. Тип использования этих наборов связей не изменится.
|
||||
Bəzi seçilmiş keçid dəstləri '[REQUESTED_TYPE]' olaraq təyin edilə bilməz, çünki forma qabarıq deyil. Bu keçid dəstlərinin istifadə növü dəyişilməyəcək.
|
||||
|
||||
Davam edilsin?
|
||||
<usetemplate ignoretext="Bəzi seçilmiş keçid dəstlərinin fantom bayrağı dəyişdiriləcək, digərləri isə keçid setindəki icazə məhdudiyyətləri və forma qeyri-qabarıq olduğu üçün təyin edilə bilməz." name="okcancelignore" notext="Ləğv et" yestext="Bəli"/>
|
||||
|
|
@ -4094,9 +4071,6 @@ Intel drayver veb-saytını yoxlamaq istəyirsiniz?
|
|||
[SYSINFO]
|
||||
<usetemplate name="okcancelbuttons" yestext="Göndər" notext="Ləğv et"/>
|
||||
</notification>
|
||||
<notification name="BlockLoginInfo">
|
||||
[REASON]
|
||||
</notification>
|
||||
<notification name="TestversionExpired">
|
||||
[APP_NAME] tətbiqinin bu sınaq versiyasının vaxtı keçib və daha istifadə edilə bilməz.
|
||||
</notification>
|
||||
|
|
@ -4247,11 +4221,11 @@ Cəhd ləğv edildi.
|
|||
</notification>
|
||||
<notification name="PathfindingReturnMultipleItems">
|
||||
Siz [NUM_ITEMS] elementi qaytarırsınız. Davam etmək istədiyinizə əminsiniz?
|
||||
<usetemplate ignoretext="Вы уверены, что хотите вернуть несколько объектов?" name="okcancelignore" notext="Xeyr" yestext="Bəli"/>
|
||||
<usetemplate ignoretext="Bir neçə obyekti qaytarmaq istədiyiniə əminsiniz?" name="okcancelignore" notext="Xeyr" yestext="Bəli"/>
|
||||
</notification>
|
||||
<notification name="PathfindingDeleteMultipleItems">
|
||||
Siz [NUM_ITEMS] elementi silirsiniz. Davam etmək istədiyinizə əminsiniz?
|
||||
<usetemplate ignoretext="Вы уверены, что хотите удалить несколько объектов?" name="okcancelignore" notext="Xeyr" yestext="Bəli"/>
|
||||
<usetemplate ignoretext="Bir neçə obyekti silmək istədiyiniə əminsiniz?" name="okcancelignore" notext="Xeyr" yestext="Bəli"/>
|
||||
</notification>
|
||||
<notification name="AvatarFrozen">
|
||||
[AV_FREEZER] sizi dondurdu. Siz hərəkət edə və ya dünya ilə əlaqə saxlaya bilməzsiniz.
|
||||
|
|
@ -4391,7 +4365,7 @@ O, dolu ola və ya tezliklə yenidən başlaya bilər.
|
|||
Seçilmiş obyekti saxlamaq mümkün deyil: "[OBJ_NAME]" obyekti köçürülmür.
|
||||
</notification>
|
||||
<notification name="NoModNoTaking">
|
||||
Нельзя забрать выбранное: вам не разрешено изменять объект "[OBJ_NAME]".
|
||||
Seçilmişləri götürmək mümkün deyil: "[OBJ_NAME]" obyektinə dəyişiklik etmək icazəniz yoxdur
|
||||
</notification>
|
||||
<notification name="RezDestInternalError">
|
||||
Daxili xəta: naməlum növ təyinat yeri.
|
||||
|
|
@ -4594,7 +4568,7 @@ daşımaq mümkün deyil, çünki siz navigasiya şəbəkəsini region sərhədl
|
|||
Tələb olunan obyekti yaratmaq mümkün deyil. Region artıq doludur.
|
||||
</notification>
|
||||
<notification name="CantCreateAnimatedObjectTooLarge">
|
||||
НевTələb olunan animasiya obyektini yaratmaq mümkün deyil, çünki o, rig üçbucaq limitini keçib.
|
||||
Tələb olunan animasiya obyektini yaratmaq mümkün deyil, çünki o, rig üçbucaq limitini keçib.
|
||||
</notification>
|
||||
<notification name="CantAttackMultipleObjOneSpot">
|
||||
Eyni nöqtəyə birdən çox obyekt əlavə edə bilməzsiniz.
|
||||
|
|
@ -4702,10 +4676,10 @@ daşımaq mümkün deyil, çünki siz navigasiya şəbəkəsini region sərhədl
|
|||
Əlavə edilmiş obyekti yerə atmaq alınmadı: burada yerə atmaq icazəniz yoxdur.
|
||||
</notification>
|
||||
<notification name="CantDropAttachmentInsufficientLandResources">
|
||||
Əlavə edilmiş obyekti yerə atmaq alınmadı: не хватает свободных земельных ресурсов.
|
||||
Əlavə edilmiş obyekti yerə atmaq alınmadı: boş torpaq resursları çatışmır.
|
||||
</notification>
|
||||
<notification name="CantDropAttachmentInsufficientResources">
|
||||
Əlavə edilmiş obyektləri yerə atmaq alınmadı:: не хватает свободных ресурсов.
|
||||
Əlavə edilmiş obyektləri yerə atmaq alınmadı: boş resurslar çatışmır.
|
||||
</notification>
|
||||
<notification name="CantDropObjectFullParcel">
|
||||
Obyekti bura atmaq olmaz. Sahə artıq doludur.
|
||||
|
|
@ -4806,7 +4780,7 @@ Daha kiçik bir sahə seçməyə çalışın.
|
|||
Regionda reklamlara icazə verilmir.
|
||||
</notification>
|
||||
<notification name="LandPassExpireSoon">
|
||||
Ваш пропуск на эту землю скоро закончится.
|
||||
Bu torpağa icazənamənin müddəti tezliklə bitəcək
|
||||
</notification>
|
||||
<notification name="CantSitNoSuitableSurface">
|
||||
Oturmaq üçün uyğun səth yoxdur. Başqa yerdə cəhd edin.
|
||||
|
|
@ -4964,9 +4938,6 @@ Onlar xətaları həll etmək üçün http://opensimulator.org/wiki/inventory is
|
|||
<notification name="DefaultObjectPermissions">
|
||||
Defolt obyekt icazələrini yadda saxlayarkən problem baş verdi: [REASON]. Lütfən, defolt icazələri daha sonra təyin etməyə cəhd edin.
|
||||
</notification>
|
||||
<notification name="OutfitPhotoLoadError">
|
||||
[REASON]
|
||||
</notification>
|
||||
<notification name="AddPaymentMethod">
|
||||
Növbəti səhifədə L$ məbləği seçin və
|
||||
Sifariş yerləşdir düyməsini basın. Ödəniş zamanı
|
||||
|
|
@ -5203,14 +5174,14 @@ hansı nişandan istifadə etmək istərdiniz?
|
|||
<usetemplate ignoretext="Mənə bildirin ki, onlayn statusun görünməsinə keçid bir qədər vaxt apara bilər" name="okignore" yestext="Bəli"/>
|
||||
</notification>
|
||||
<notification name="RenderVolumeLODFactorWarning">
|
||||
ВНИМАНИЕ: уровень детализации (LOD) установлен на высокий
|
||||
XƏBƏRDARLIQ: Dətallaşdırma səviyyəsi (LOD) yüksək olaraq təyin edilib
|
||||
|
||||
Для повседневного использования достаточно уровня в диапазоне 1-3.
|
||||
Попробуйте заменить объекты, которые выглядят деформированными при таких значениях.
|
||||
Gündəlik istifadə üçün 1-3 aralığında səviyyə kifayətdir.
|
||||
Bu səviyyələrdə əyri görünən obyektləri əvəz etməyə çalışın.
|
||||
|
||||
Уровень LOD > 3: добавляет задержки. Рекомендуется только для фотографии.
|
||||
Уровень LOD > 4: использовать в особых случаях. Возврат после relog.
|
||||
Уровень LOD > 8: не имеет реального эффекта. Может вызвать ошибки.
|
||||
LOD > 3 səviyyəsi: gecikmə əlavə edir. Yalnız şəkil üçün tövsiyə olunur.
|
||||
LOD > 4 səviyyəsi: xüsusi hallarda istifadə edin. Yenidən daxil olduqdan sonra geri qayıdır.
|
||||
LOD > 8 səviyyəsi: real təsiri yoxdur. Səhvlərə səbəb ola bilər.
|
||||
</notification>
|
||||
<notification name="CurrencyURIOverrideReceived">
|
||||
Bu bölgə üçüncü tərəf valyuta portalını təyin etməyi seçdi.
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<scroll_container name="avatar_universal_scroll">
|
||||
<panel name="avatar_universal_color_panel">
|
||||
<texture_picker label="Baş döyməsi" name="Head Universal Tattoo" tool_tip="Şəkil seçmək üçün basın"/>
|
||||
<texture_picker label="Üst döyməsiу" name="Upper Universal Tattoo" tool_tip="Şəkil seçmək üçün basın"/>
|
||||
<texture_picker label="Üst döyməsi" name="Upper Universal Tattoo" tool_tip="Şəkil seçmək üçün basın"/>
|
||||
<texture_picker label="Alt döyməsi" name="Lower Universal Tattoo" tool_tip="Şəkil seçmək üçün basın"/>
|
||||
<texture_picker label="Don döyməsi" name="Skirt Tattoo" tool_tip="Şəkil seçmək üçün basın"/>
|
||||
<texture_picker label="Saç döyməsi" name="Hair Tattoo" tool_tip="Şəkil seçmək üçün basın"/>
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@
|
|||
<labeled_back_button label="Yadda saxla" name="back_btn" tool_tip="Geyimin dəyişdirilməsinə qayıt"/>
|
||||
<text name="edit_wearable_title" value="Fiquranın dəyişdirilməsi"/>
|
||||
<panel label="Köynək" name="wearable_type_panel">
|
||||
<text name="description_text" value="Фигура:"/>
|
||||
<text name="description_text" value="Forma:"/>
|
||||
<radio_group name="sex_radio">
|
||||
<radio_item label="" name="sex_male" tool_tip="Kişi" value="1"/>
|
||||
<radio_item label="" name="sex_female" tool_tip="Qadın" value="0"/>
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ Günlük maksimum 200 bildiriş göndərilə bilər.
|
|||
<button name="remove_attachment" tool_tip="Bildirişinizdən əlavəni silin"/>
|
||||
<button label="Avadanklq siyahısı" name="open_inventory" tool_tip="Avadanlıq siyahısını aç"/>
|
||||
<button label="Göndər" label_selected="Göndər" name="send_notice"/>
|
||||
<group_drop_target name="drop_target" tool_tip="Перетащите из инвентаря на эту панель предмет, чтобы отправить его вместе с сообщением. У вас должно быть разрешение на копирование и передачу этого предмета."/>
|
||||
<group_drop_target name="drop_target" tool_tip="Mesajla birlikdə göndərmək üçün avadanlıq siyahınızdan elementi bu panelə çəkin. Bu elementi köçürtəmək və paylaşmaq üçün icazəniz olmalıdır."/>
|
||||
</panel>
|
||||
<panel label="Arxivlənmiş bildirişlər" name="panel_view_past_notice">
|
||||
<text name="lbl6">
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@
|
|||
</text>
|
||||
</panel>
|
||||
<panel name="trash_btn_panel">
|
||||
<dnd_button name="trash_btn" tool_tip="Удалить выбранный элемент"/>
|
||||
<dnd_button name="trash_btn" tool_tip="Seçilmiş elementi sil"/>
|
||||
</panel>
|
||||
</panel>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -7,10 +7,10 @@
|
|||
<boşdur>
|
||||
</string>
|
||||
<string name="parcel_media_name">
|
||||
Потоковое видео на участке
|
||||
Sahədə axın video
|
||||
</string>
|
||||
<string name="parcel_audio_name">
|
||||
Потоковый звук на участке
|
||||
Sahədə axın musiqi
|
||||
</string>
|
||||
<string name="playing_suffix">
|
||||
(oynadılır)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
<string name="unsaved_changes" value="Saxlanılmamış dəyişiklər"/>
|
||||
<string name="now_editing" value="İndi dəyişdirilir"/>
|
||||
<panel.string name="not_available">
|
||||
(нет)
|
||||
(yox)
|
||||
</panel.string>
|
||||
<panel.string name="unknown">
|
||||
(naməlum)
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@
|
|||
<text name="estate_name_label" value="Əmlak:"/>
|
||||
<text name="estate_rating_label" value="Reytinq:"/>
|
||||
<text name="estate_owner_label" value="Sahibi:"/>
|
||||
<text name="estate_owner" value="Тест имени владельца используя длинное имя"/>
|
||||
<text name="estate_owner" value="Uzun addan istifadə edərək sahib adı sınağı"/>
|
||||
<text name="covenant_label" value="Müqavilə:"/>
|
||||
</panel>
|
||||
</accordion_tab>
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
<check_box label="Sazlama menyusunu göstər (Öz riskinizə görə istifadə edin!)" name="show_develop_menu_check"/>
|
||||
<check_box label="Windows sistemlərində WMI ilə VRAM aşkarlamasını söndür" name="FSDisableWMIProbing"/>
|
||||
<check_box label="Menyu axtarışını göstər" name="show_search_menu_check"/>
|
||||
<!-- <check_box label="Включить использование анимации с временным шагом (Эксперементально)" tool_tip="Эта настройка может уменьшить нагрузку прорисовки на дальних аватаров но также может привести к воспроизведению их анимаций на неправильных скоростях" name="UseAnimationTimeSteps"/> -->
|
||||
<text name="BackgroundYieldTimeText">
|
||||
[APP_NAME] ön planda olmadıqda, hər bir kadrı digər tətbiqlərə qəbul etmək üçün millisaniyələrlə vaxtın miqdarı (defolt: 40; 1 saniyə = 1000 millisaniyə):
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
<check_box label="Nişangahı göstərin" name="ShowCrosshairs" tool_tip="Birinci şəxs baxımından nişangahı göstərin"/>
|
||||
<check_box label="Döyüş qabiliyyətlərini aktivləşdirin" name="FSMouselookCombatFeatures"/>
|
||||
<check_box label="Hədəf markerlərini çəkin (oxlar)" name="ExodusMouselookIFF"/>
|
||||
<slider label="Məsafə (м)" name="ExodusMouselookIFFRange"/>
|
||||
<slider label="Məsafə (m)" name="ExodusMouselookIFFRange"/>
|
||||
<text name="Mouse Sensitivity">
|
||||
Siçan həssaslığı:
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -45,10 +45,10 @@
|
|||
</combo_box>
|
||||
<button label="Jurnalı təmizlə..." name="clear_log"/>
|
||||
<button label="Tarixçələri təmizlə..." name="delete_transcripts"/>
|
||||
<check_box name="LogNearbyChat" label="Сохранить историю общего чата" tool_tip="Запись сообщения общего чата на жестком диске"/>
|
||||
<check_box label="Использовать старый формат имени в истории" name="UseLegacyIMLogNames" tool_tip="Если опция включена, формат устаревшего имени файла для транскриптов (User Name) будет использоваться вместо нового формата (user_name)."/>
|
||||
<check_box label="Добавить время в названии файла истории" name="LogFileNamewithDate" tool_tip="Добавляет время в названии файла в формате chat-ГГГГ-ММ-ДД и 'ЛС имя файла'-ГГГГ-ММ."/>
|
||||
<check_box label="Использовать встроенный просмотр истории" name="FSUseBuiltInHistory" tool_tip="Использовать встроенный просмотр истории, если отключено, то будет открываться программа просмотра текстовых файлов по умолчанию системы"/>
|
||||
<check_box name="LogNearbyChat" label="Ümumi söhbət tarixçəsini yadda saxlayın" tool_tip="Ümumi söhbət mesajının tarixini sabit diskinizə yazır"/>
|
||||
<check_box label="Tarixdə köhnə ad formatından istifadə edin" name="UseLegacyIMLogNames" tool_tip="Bu seçim aktiv edilərsə, yeni format (user_name) əvəzinə tarixçə üçün köhnə fayl adı formatı (User Name) istifadə olunacaq."/>
|
||||
<check_box label="Tarix faylının adına vaxt əlavə edin" name="LogFileNamewithDate" tool_tip="chat-YYYY-AA-GG və 'PM fayl adı'-YYYY-AA formatında fayl adına vaxt əlavə edir."/>
|
||||
<check_box label="Daxili tarixə baxıcıdan istifadə edin" name="FSUseBuiltInHistory" tool_tip="Daxili tarixə baxıcıdan istifadə edir. Əgər söndürülsə, o, sistemin standart mətn faylı görüntüləyicisini açacaq"/>
|
||||
</panel>
|
||||
<panel label="Kamera diqqəti (LookAt)" name="tab-lookat">
|
||||
<check_box label="Başqaları nəyə baxdığını göstər:" name="showlookat" tool_tip="Avatarın kamera bağlantı nöqtəsini müəyyənləşdirmək üçün istifadə olunur."/>
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@
|
|||
<text name="description_label">Təsviri:</text>
|
||||
<text name="location_label">Məkan:</text>
|
||||
<text name="classified_location_edit">Yüklənir...</text>
|
||||
<button name="set_to_curr_location_btn" label="Установить текущее местоположение"/>
|
||||
<button name="set_to_curr_location_btn" label="Cari məkanı təyin et"/>
|
||||
<text name="category_label" value="Kateqoriya:"/>
|
||||
<text name="content_type_label" value="Məzmun növü:"/>
|
||||
<icons_combo_box name="content_type_edit" label="Ümumi">
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
<text_editor name="user_key" value="(yüklənir...)"/>
|
||||
<layout_stack name="imagepositioner">
|
||||
<layout_panel name="image_action_panel">
|
||||
<menu_button name="image_action_btn" tool_tip="Выполнение действий, связанных с изображением профиля"/>
|
||||
<menu_button name="image_action_btn" tool_tip="Profil şəkli ilə bağlı tədbirlər görmək"/>
|
||||
</layout_panel>
|
||||
<layout_panel name="label_stack">
|
||||
<text name="label" value="Yaş:"/>
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@
|
|||
<layout_stack name="ls_environment_config2">
|
||||
<layout_panel name="pnl_environment_current">
|
||||
<text name="select_environment_label">
|
||||
Выбор окружающей среды
|
||||
Ətraf mühitin seçimi
|
||||
</text>
|
||||
<button label="[USEDEFAULT]" name="btn_usedefault"/>
|
||||
<button label="Avadanlıq siyahısından" name="btn_select_inventory"/>
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@
|
|||
Yüklənir...
|
||||
</script_editor>
|
||||
<combo_box label="Daxil et..." name="Insert..."/>
|
||||
<text name="line_col" value="Строка 0, Столбец 0"/>
|
||||
<text name="line_col" value="Sətir 0, Sütun 0"/>
|
||||
<button label="Dəyişdirici..." name="edit_btn_2"/>
|
||||
<button label="Yadda saxla" label_selected="Yadda saxla" name="save_btn_2"/>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
<text name="local_remember_location_sessions_text">
|
||||
Seanslar arasında yeri və fayl adını saxlayın
|
||||
</text>
|
||||
<button label="▶ Выбор" name="cancel_btn"/>
|
||||
<button label="▶ Seçim" name="cancel_btn"/>
|
||||
<flyout_button label="Yadda saxla" name="save_btn" tool_tip="Şəkili fayla yadda saxla">
|
||||
<flyout_button.item label="Yadda saxla" name="save_item"/>
|
||||
<flyout_button.item label="Ayrı saxla..." name="saveas_item"/>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<panel name="status">
|
||||
<panel name="parcel_info_panel">
|
||||
<button name="buy_land_btn" tool_tip="Участок для продажи"/>
|
||||
<button name="buy_land_btn" tool_tip="Satış üçün sahə"/>
|
||||
<text tool_tip="Üzərində durduğunuz torpaq hissəsinin adı. Ətraflı oxumaq üçün basın." name="parcel_info_text" value="(yüklənir...)"/>
|
||||
</panel>
|
||||
<panel.string name="packet_loss_tooltip">
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
[AMT] L$
|
||||
</panel.string>
|
||||
<panel name="menu_search_panel">
|
||||
<search_editor label="Menyuda axtar" name="search_menu_edit" tool_tip="Введите интересующий вас термин для поиска здесь. Результаты будут отображены для частичного совпадения полного текста в меню."/>
|
||||
<search_editor label="Menyuda axtar" name="search_menu_edit" tool_tip="Axtarış sözünüzü bura daxil edin. Nəticələr menyuda tam mətnin qismən uyğunluğu üçün göstəriləcək."/>
|
||||
</panel>
|
||||
<panel name="parcel_info_panel">
|
||||
<button name="buy_land_btn" tool_tip="Satılan sahə"/>
|
||||
|
|
|
|||
|
|
@ -4,15 +4,6 @@
|
|||
For example, the strings used in avatar chat bubbles, and strings
|
||||
that are returned from one component and may appear in many places-->
|
||||
<strings>
|
||||
<string name="SECOND_LIFE">
|
||||
[CURRENT_GRID]
|
||||
</string>
|
||||
<string name="APP_NAME">
|
||||
Firestorm
|
||||
</string>
|
||||
<string name="CAPITALIZED_APP_NAME">
|
||||
FIRESTORM
|
||||
</string>
|
||||
<string name="SECOND_LIFE_GRID">
|
||||
Second Life şəbəkəsi
|
||||
</string>
|
||||
|
|
@ -237,9 +228,6 @@ Səs serveri versiyası: [VOICE_VERSION]
|
|||
<string name="AditiGridLabel">
|
||||
Second Life Beta Test Şəbəkəsi (Aditi)
|
||||
</string>
|
||||
<string name="ViewerDownloadURL">
|
||||
https://www.firestormviewer.org/choose-your-platform/
|
||||
</string>
|
||||
<string name="LoginFailedViewerNotPermitted">
|
||||
İstifadə etdiyiniz klientin artıq Second Life oyununa girişi yoxdur. Siz müştərinin yeni versiyasını bu ünvandan yükləyə bilərsiniz:
|
||||
https://www.firestormviewer.org/choose-your-platform/
|
||||
|
|
@ -380,8 +368,8 @@ Bir dəqiqədən sonra yenidən daxil olmağa çalışın.
|
|||
Bir dəqiqədən sonra yenidən daxil olmağa çalışın.
|
||||
</string>
|
||||
<string name="LoginFailedAuthenticationMFARequired">
|
||||
Чтобы продолжить вход в систему, введите новый токен из приложения многофакторной аутентификации.
|
||||
Если вы считаете, что это ошибка, пожалуйста, свяжитесь с support@secondlife.com
|
||||
Daxil olmağa davam etmək üçün çoxfaktorlu autentifikasiya proqramından yeni token daxil edin.
|
||||
Bunun səhv olduğunu düşünürsünüzsə, buraya məktub göndərin: support@secondlife.com.
|
||||
</string>
|
||||
<string name="AgentLostConnection">
|
||||
Bu bölgədə, ola bilsin ki, problemlər ola bilər. Şəbəkə bağlantınızı yoxlayın.
|
||||
|
|
@ -423,7 +411,6 @@ Bir dəqiqədən sonra yenidən daxil olmağa çalışın.
|
|||
<string name="SocialFlickrErrorDisconnecting">
|
||||
Flickr-dən ayrılmaq mümkün deyil
|
||||
</string>
|
||||
|
||||
<string name="BlackAndWhite">
|
||||
Qara və Ağ
|
||||
</string>
|
||||
|
|
@ -542,7 +529,7 @@ Bir dəqiqədən sonra yenidən daxil olmağa çalışın.
|
|||
Dəyişdirmək qadağandır
|
||||
</string>
|
||||
<string name="TooltipFlagNotSafe">
|
||||
Тəhlükəsiz deyil
|
||||
Təhlükəsiz deyil
|
||||
</string>
|
||||
<string name="TooltipFlagNoFly">
|
||||
Uçuşlar qadağandır
|
||||
|
|
@ -732,9 +719,6 @@ Bir dəqiqədən sonra yenidən daxil olmağa çalışın.
|
|||
<string name="SLappAgentUnmute">
|
||||
Yan. səsi
|
||||
</string>
|
||||
<string name="SLappAgentIM">
|
||||
IM
|
||||
</string>
|
||||
<string name="SLappAgentPay">
|
||||
Ödə
|
||||
</string>
|
||||
|
|
@ -1214,7 +1198,7 @@ etmək haqqında kömək almaq üçün http://secondlife.com/support ünvanına
|
|||
Kamera istifadəçiyə diqqətləşdirilə bilmir, çünki onlar göstərmə məsafənizdən kənardadırlar.
|
||||
</string>
|
||||
<string name="Ok">
|
||||
ОК
|
||||
OK
|
||||
</string>
|
||||
<string name="Premature end of file">
|
||||
Faylın vaxtından əvvəl sonu
|
||||
|
|
@ -1738,24 +1722,18 @@ etmək haqqında kömək almaq üçün http://secondlife.com/support ünvanına
|
|||
<string name="InventoryOutboxNoItemsTitle">
|
||||
«Göndərilən» qovluqunuz boşdur.
|
||||
</string>
|
||||
<string name="InventoryOutboxNoItemsTooltip">
|
||||
</string>
|
||||
<string name="InventoryOutboxNoItems">
|
||||
Qovluqları bu sahəyə daşıyın və [[MARKETPLACE_DASHBOARD_URL] Ticarət mərkəzində] satış üçün siyahıya atmaq üçün Ticarət mərkəzində Göndər üzərinə basın.
|
||||
</string>
|
||||
<string name="InventoryOutboxInitializingTitle">
|
||||
Ticarət mərkəzinin inisiallaşdrılıması.
|
||||
</string>
|
||||
<string name="InventoryOutboxInitializingTooltip">
|
||||
</string>
|
||||
<string name="InventoryOutboxInitializing">
|
||||
[[MARKETPLACE_CREATE_STORE_URL] Dükan hesabınıza] müraciət eləyirik.
|
||||
</string>
|
||||
<string name="InventoryOutboxErrorTitle">
|
||||
Ticarət mərkəzinin səhvləri.
|
||||
</string>
|
||||
<string name="InventoryOutboxErrorTooltip">
|
||||
</string>
|
||||
<string name="InventoryOutboxError">
|
||||
[[MARKETPLACE_CREATE_STORE_URL] Dükan] xətaları qaytarır.
|
||||
</string>
|
||||
|
|
@ -2010,15 +1988,6 @@ Bu mesaj yenidən baş verərsə, kömək üçün http://support.secondlife.com
|
|||
<string name="InvFolder All">
|
||||
Hamısı
|
||||
</string>
|
||||
<string name="InvFolder #Firestorm">
|
||||
#Firestorm
|
||||
</string>
|
||||
<string name="InvFolder #Phoenix">
|
||||
#Phoenix
|
||||
</string>
|
||||
<string name="InvFolder #RLV">
|
||||
#RLV
|
||||
</string>
|
||||
<string name="InvFolder My Suitcase">
|
||||
Çamadanım
|
||||
</string>
|
||||
|
|
@ -2217,9 +2186,6 @@ Bu mesaj yenidən baş verərsə, kömək üçün http://support.secondlife.com
|
|||
<string name="ATTACHMENT_NOT_ATTACHED">
|
||||
Xəta: Obyekt hazırkı geyimdədir, lakin calaşdırılmayıb
|
||||
</string>
|
||||
<string name="YearsMonthsOld">
|
||||
[AGEYEARS] [AGEMONTHS]
|
||||
</string>
|
||||
<string name="YearsOld">
|
||||
[AGEYEARS]
|
||||
</string>
|
||||
|
|
@ -2235,9 +2201,6 @@ Bu mesaj yenidən baş verərsə, kömək üçün http://support.secondlife.com
|
|||
<string name="TodayOld">
|
||||
Bu gün qeydiyyatdan keçib
|
||||
</string>
|
||||
<string name="TotalDaysOld">
|
||||
; [AGEDAYSTOTAL]
|
||||
</string>
|
||||
<string name="av_render_everyone_now">
|
||||
İndi hamı sizi görə bilər.
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ Təlimi təkrarlamaq üçün 'Gəlmə Adası - Ümumi' nöqtəsinə keçin.
|
|||
Bu regionu ziyarət etmək üçün ən azı 18 yaşınız olmalıdır.
|
||||
</message>
|
||||
<message name="RegionTPSpecialUsageBlocked">
|
||||
Regiona daxil olmaq mümkün deyil. '[REGION_NAME]' oyun regionu sayılır, və daxil olmaq üçün six является игровым регионом и вы должны отвечать определенным критериям, чтобы войти. Для получения дополнительной информации, пожалуйста, просмотрите [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Second_Life_Skill_Gaming_FAQ Skill Gaming FAQ].
|
||||
Regiona daxil olmaq mümkün deyil. '[REGION_NAME]' oyun regionu sayılır, və daxil olmaq üçün siz müəyyən meyarlara cavab verməlisiniz. Ətraflı məlumat üçün [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Second_Life_Skill_Gaming_FAQ Skill Gaming FAQ] səhifəsinə baxın.
|
||||
</message>
|
||||
</message_set>
|
||||
<message_set name="progress">
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
<panel name="buttons_panel">
|
||||
<button label="Stoppen" name="stop_btn" />
|
||||
<button label="Stoppen und zurückziehen" name="stop_and_revoke_btn" />
|
||||
<button label="Zurückziehen" name="revoke_btn" />
|
||||
<button label="Blacklist" name="blacklist_btn" />
|
||||
<check_box label="Keine im eigenen Besitz" name="no_owned_animations_check" tool_tip="Falls aktiviert, werden alle Animationen im Besitz des eigenen Avatars gefiltert, z.B. AO-Animationen oder Standard-Systemanimationen" />
|
||||
</panel>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -9,6 +9,9 @@
|
|||
<floater.string name="asset_sound">
|
||||
Sound
|
||||
</floater.string>
|
||||
<floater.string name="asset_animation">
|
||||
Animation
|
||||
</floater.string>
|
||||
<floater.string name="asset_resident">
|
||||
Einwohner
|
||||
</floater.string>
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@
|
|||
|
||||
<!--Movement-->
|
||||
<panel label="Bewegung" name="tab-movement">
|
||||
<check_box label="Mit Pfeiltasten bewegen" name="arrow_keys_move_avatar_check"/>
|
||||
<check_box label="Mit Pfeiltasten bewegen" name="arrow_keys_move_avatar_check" tool_tip="Gilt ausschließlich für das „Chat in der Nähe“-Fenster am unteren Bildrand des Viewers, nicht für den entsprechenden Reiter im „Gespräche“-Fenster."/>
|
||||
<check_box label="Buchstabeneingabe beeinflusst Bewegung (z.B. WASD)" name="LetterKeysAffectsMovementNotFocusChatBar"/>
|
||||
<check_box label="Drücken-drücken-halten, um zu rennen" name="tap_tap_hold_to_run"/>
|
||||
<check_box label="Fliegen/Landen beim Drücken von auf (springen) / ab (kriechen)" name="automatic_fly" />
|
||||
|
|
|
|||
|
|
@ -86,10 +86,10 @@
|
|||
<button
|
||||
follows="top|right"
|
||||
height="22"
|
||||
label="Revoke"
|
||||
label="Blacklist"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="revoke_btn"
|
||||
name="blacklist_btn"
|
||||
top_pad="4"
|
||||
width="98" />
|
||||
|
||||
|
|
|
|||
|
|
@ -21,6 +21,9 @@
|
|||
<floater.string name="asset_sound">
|
||||
Sound
|
||||
</floater.string>
|
||||
<floater.string name="asset_animation">
|
||||
Animation
|
||||
</floater.string>
|
||||
<floater.string name="asset_resident">
|
||||
Resident
|
||||
</floater.string>
|
||||
|
|
|
|||
|
|
@ -36,11 +36,11 @@
|
|||
label="English"
|
||||
name="English"
|
||||
value="en" />
|
||||
<!-- <combo_box.item
|
||||
<combo_box.item
|
||||
enabled="true"
|
||||
label="Azərbaycanca (Azerbaijani)"
|
||||
name="Azerbaijani"
|
||||
value="az" /> -->
|
||||
value="az" />
|
||||
<!--
|
||||
<combo_box.item
|
||||
enabled="true"
|
||||
|
|
|
|||
|
|
@ -467,6 +467,7 @@
|
|||
layout="topleft"
|
||||
left_delta="10"
|
||||
name="arrow_keys_move_avatar_check"
|
||||
tool_tip="Only applies to the Nearby Chat entry field at the bottom of the viewer, not to the Nearby Chat tab in Conversations."
|
||||
width="237"
|
||||
top_pad="8"/>
|
||||
<check_box
|
||||
|
|
|
|||
|
|
@ -82,7 +82,15 @@
|
|||
pad_left="35"
|
||||
top="0"
|
||||
left="5"
|
||||
right="-5" />
|
||||
right="-43" />
|
||||
<button
|
||||
name="reload_received_items_btn"
|
||||
height="35"
|
||||
width="35"
|
||||
left_pad="3"
|
||||
follows="top|right"
|
||||
image_overlay="Refresh_Off"
|
||||
tool_tip="Reload the received items list." />
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
|
|
@ -90,7 +98,7 @@
|
|||
layout="topleft"
|
||||
height="13"
|
||||
top="10"
|
||||
right="-20"
|
||||
right="-58"
|
||||
name="inbox_fresh_new_count"
|
||||
font="SansSerifMedium"
|
||||
halign="right"
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
<panel name="buttons_panel">
|
||||
<button label="Stop" name="stop_btn"/>
|
||||
<button label="Stop & révoquer" name="stop_and_revoke_btn"/>
|
||||
<button label="Révoquer" name="revoke_btn" width="100"/>
|
||||
<button label="Blacklister" name="blacklist_btn" width="100"/>
|
||||
<check_box label="Non possédées" name="no_owned_animations_check" tool_tip="Activer l'option filtrera les animations que possède votre avatar (AO et animations du système)."/>
|
||||
</panel>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
<floater.string name="asset_object">Objet</floater.string>
|
||||
<floater.string name="asset_texture">Texture</floater.string>
|
||||
<floater.string name="asset_sound">Son</floater.string>
|
||||
<floater.string name="asset_animation">Animation</floater.string>
|
||||
<floater.string name="asset_resident">Résident</floater.string>
|
||||
<floater.string name="asset_unknown">Inconnu</floater.string>
|
||||
<floater.string name="unknown_object">Objet inconnu</floater.string>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<text name="language_textbox">Langue :</text>
|
||||
<combo_box name="language_combobox">
|
||||
<combo_box.item label="English (Anglais)" name="English"/>
|
||||
<!-- <combo_box.item label="Azərbaycanca (Azerbaïdjanais)" name="Azerbaijani"/> -->
|
||||
<combo_box.item label="Azərbaycanca (Azerbaïdjanais)" name="Azerbaijani"/>
|
||||
<!-- <combo_box.item label="Dansk (Danois) - Beta" name="Danish"/> -->
|
||||
<combo_box.item label="Deutsch (Allemand)" name="Deutsch(German)"/>
|
||||
<combo_box.item label="Español (Espagnol) - Beta" name="Spanish"/>
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
<panel name="buttons_panel">
|
||||
<button label="Zatrzymaj" name="stop_btn" />
|
||||
<button label="Zatrzymaj i cofnij zezwol." name="stop_and_revoke_btn" />
|
||||
<button label="Cofnij zezwol." name="revoke_btn" />
|
||||
<button label="Zablokuj" name="blacklist_btn" />
|
||||
<check_box label="Bez moich animacji" name="no_owned_animations_check" tool_tip="Gdy zaznaczysz tą opcję, to odfiltrowane zostaną animacje będące w posiadaniu Twojego awatara - jak te pochodzące z Animatora, mechanizmów zastępowania animacji lub domyślne systemowe." />
|
||||
</panel>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -9,6 +9,9 @@
|
|||
<floater.string name="asset_sound">
|
||||
Dźwięk
|
||||
</floater.string>
|
||||
<floater.string name="asset_animation">
|
||||
Animacja
|
||||
</floater.string>
|
||||
<floater.string name="asset_resident">
|
||||
Rezydent
|
||||
</floater.string>
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
<check_box label="Zamień osie myszy" name="invert_mouse"/>
|
||||
</panel>
|
||||
<panel label="Ruch" name="tab-movement">
|
||||
<check_box label="Przyciski ze strzałkami zawsze poruszają awatarem" name="arrow_keys_move_avatar_check"/>
|
||||
<check_box label="Przyciski ze strzałkami zawsze poruszają awatarem" name="arrow_keys_move_avatar_check" tool_tip="Dotyczy tylko pola wprowadzania 'czatu w pobliżu' na dole okna przeglądarki, a nie karty 'czatu w pobliżu' w Rozmowach." />
|
||||
<check_box label="Naciskanie klawiszy liter wpływa na ruch (tzn. WASD) zamiast rozpoczynać czat" name="LetterKeysAffectsMovementNotFocusChatBar"/>
|
||||
<check_box label="Puk-puk-trzymaj, aby biec" name="tap_tap_hold_to_run"/>
|
||||
<check_box label="Przytrzymaj klawisz skoku lub kucania, aby zacząć lub przestać latać" name="automatic_fly"/>
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
<panel name="buttons_panel">
|
||||
<button label="Стоп" name="stop_btn" />
|
||||
<button label="Стоп и Отменить" name="stop_and_revoke_btn" />
|
||||
<button label="Отменить" name="revoke_btn" />
|
||||
<button label="Заблокировать" name="blacklist_btn" />
|
||||
<check_box label="Нет моих анимаций" name="no_owned_animations_check" tool_tip="Будет отфильтровывать все анимации, которые принадлежат вашему аватару, такие как АО анимации или анимации системы по умолчанию" />
|
||||
</panel>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -9,6 +9,9 @@
|
|||
<floater.string name="asset_sound">
|
||||
Звук
|
||||
</floater.string>
|
||||
<floater.string name="asset_animation">
|
||||
Анимация
|
||||
</floater.string>
|
||||
<floater.string name="asset_resident">
|
||||
Житель
|
||||
</floater.string>
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@
|
|||
font="SansSerifMedium"
|
||||
name="inbox_btn"
|
||||
height="35"
|
||||
width="308"
|
||||
width="270"
|
||||
image_unselected="MarketplaceBtn_Off"
|
||||
image_selected="MarketplaceBtn_Selected"
|
||||
halign="left"
|
||||
|
|
@ -89,6 +89,14 @@
|
|||
pad_left="35"
|
||||
top="0"
|
||||
left="10" />
|
||||
<button
|
||||
name="reload_received_items_btn"
|
||||
height="35"
|
||||
width="35"
|
||||
left_pad="3"
|
||||
follows="top|right"
|
||||
image_overlay="Refresh_Off"
|
||||
tool_tip="Reload the received items list." />
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
|
|
@ -96,7 +104,7 @@
|
|||
layout="topleft"
|
||||
height="13"
|
||||
top="10"
|
||||
right="-20"
|
||||
right="-58"
|
||||
name="inbox_fresh_new_count"
|
||||
font="SansSerifMedium"
|
||||
halign="right"
|
||||
|
|
|
|||
Loading…
Reference in New Issue