summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2025-07-29 01:07:59 +0300
committerAndrey Kleshchev <117672381+akleshchev@users.noreply.github.com>2025-07-29 18:05:34 +0300
commit792a38b68c66f760aac294c5673b25c16b1ea060 (patch)
tree50e2ba3e53c56bc0e144818a8a1f60cfa5695f5f
parentb82f52acbb00a9dd3e5426e8a6510a0ef6f41289 (diff)
#3705 Add an option to hide the $L balance
-rw-r--r--indra/newview/app_settings/settings.xml11
-rw-r--r--indra/newview/llstatusbar.cpp63
-rw-r--r--indra/newview/llstatusbar.h12
-rw-r--r--indra/newview/skins/default/xui/en/panel_status_bar.xml2
4 files changed, 64 insertions, 24 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 27e3a95092..aadafa71ad 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -9595,6 +9595,17 @@
<key>Value</key>
<integer>1</integer>
</map>
+ <key>ObscureBalanceInStatusBar</key>
+ <map>
+ <key>Comment</key>
+ <string>If true, balance will be shows as '*'</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
<key>RenderUIBuffer</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
index 8aa2058ae1..bb93e2e79e 100644
--- a/indra/newview/llstatusbar.cpp
+++ b/indra/newview/llstatusbar.cpp
@@ -114,6 +114,8 @@ LLStatusBar::LLStatusBar(const LLRect& rect)
mBtnVolume(NULL),
mBoxBalance(NULL),
mBalance(0),
+ mBalanceClicked(false),
+ mObscureBalance(false),
mHealth(100),
mSquareMetersCredit(0),
mSquareMetersCommitted(0),
@@ -125,20 +127,11 @@ LLStatusBar::LLStatusBar(const LLRect& rect)
// status bar can possible overlay menus?
setMouseOpaque(false);
- mBalanceTimer = new LLFrameTimer();
- mHealthTimer = new LLFrameTimer();
-
buildFromFile("panel_status_bar.xml");
}
LLStatusBar::~LLStatusBar()
{
- delete mBalanceTimer;
- mBalanceTimer = NULL;
-
- delete mHealthTimer;
- mHealthTimer = NULL;
-
// LLView destructor cleans up children
}
@@ -171,7 +164,8 @@ bool LLStatusBar::postBuild()
getChild<LLUICtrl>("goShop")->setCommitCallback(boost::bind(&LLWeb::loadURL, gSavedSettings.getString("MarketplaceURL"), LLStringUtil::null, LLStringUtil::null));
mBoxBalance = getChild<LLTextBox>("balance");
- mBoxBalance->setClickedCallback( &LLStatusBar::onClickBalance, this );
+ mBoxBalance->setClickedCallback(&LLStatusBar::onClickRefreshBalance, this);
+ mBoxBalance->setDoubleClickCallback([this](LLUICtrl*, S32 x, S32 y, MASK mask) { onClickToggleBalance(); });
mIconPresetsCamera = getChild<LLIconCtrl>( "presets_icon_camera" );
mIconPresetsCamera->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterPresetsCamera, this));
@@ -191,12 +185,14 @@ bool LLStatusBar::postBuild()
gSavedSettings.getControl("MuteAudio")->getSignal()->connect(boost::bind(&LLStatusBar::onVolumeChanged, this, _2));
gSavedSettings.getControl("EnableVoiceChat")->getSignal()->connect(boost::bind(&LLStatusBar::onVoiceChanged, this, _2));
+ gSavedSettings.getControl("ObscureBalanceInStatusBar")->getSignal()->connect(boost::bind(&LLStatusBar::onObscureBalanceChanged, this, _2));
if (!gSavedSettings.getBOOL("EnableVoiceChat") && LLAppViewer::instance()->isSecondInstance())
{
// Indicate that second instance started without sound
mBtnVolume->setImageUnselected(LLUI::getUIImage("VoiceMute_Off"));
}
+ mObscureBalance = gSavedSettings.getBOOL("ObscureBalanceInStatusBar");
// Adding Net Stat Graph
S32 x = getRect().getWidth() - 2;
@@ -319,6 +315,12 @@ void LLStatusBar::refresh()
mTextTime->setToolTip (dtStr);
}
+ if (mBalanceClicked && mBalanceClickTimer.getElapsedTimeF32() > 1.f)
+ {
+ mBalanceClicked = false;
+ sendMoneyBalanceRequest();
+ }
+
LLRect r;
const S32 MENU_RIGHT = gMenuBarView->getRightmostMenuEdge();
@@ -384,9 +386,17 @@ void LLStatusBar::setBalance(S32 balance)
std::string money_str = LLResMgr::getInstance()->getMonetaryString( balance );
LLStringUtil::format_map_t string_args;
- string_args["[AMT]"] = llformat("%s", money_str.c_str());
+ if (mObscureBalance)
+ {
+ string_args["[AMT]"] = "****";
+ }
+ else
+ {
+ string_args["[AMT]"] = llformat("%s", money_str.c_str());
+ }
std::string label_str = getString("buycurrencylabel", string_args);
mBoxBalance->setValue(label_str);
+ mBoxBalance->setToolTipArg(LLStringExplicit("[AMT]"), llformat("%s", money_str.c_str()));
updateBalancePanelPosition();
@@ -406,8 +416,6 @@ void LLStatusBar::setBalance(S32 balance)
if( balance != mBalance )
{
- mBalanceTimer->reset();
- mBalanceTimer->setTimerExpirySec( ICON_TIMER_EXPIRY );
mBalance = balance;
}
}
@@ -459,9 +467,6 @@ void LLStatusBar::setHealth(S32 health)
}
}
}
-
- mHealthTimer->reset();
- mHealthTimer->setTimerExpirySec( ICON_TIMER_EXPIRY );
}
mHealth = health;
@@ -621,13 +626,27 @@ static void onClickVolume(void* data)
}
//static
-void LLStatusBar::onClickBalance(void* )
+void LLStatusBar::onClickRefreshBalance(void* data)
{
- // Force a balance request message:
- LLStatusBar::sendMoneyBalanceRequest();
+ LLStatusBar* status_bar = (LLStatusBar*)data;
+
+ if (!status_bar->mBalanceClicked)
+ {
+ // Schedule a balance request message:
+ status_bar->mBalanceClicked = true;
+ status_bar->mBalanceClickTimer.reset();
+ }
// The refresh of the display (call to setBalance()) will be done by process_money_balance_reply()
}
+void LLStatusBar::onClickToggleBalance()
+{
+ mObscureBalance = !mObscureBalance;
+ gSavedSettings.setBOOL("ObscureBalanceInStatusBar", mObscureBalance);
+ setBalance(mBalance);
+ mBalanceClicked = false; // supress click
+}
+
//static
void LLStatusBar::onClickMediaToggle(void* data)
{
@@ -657,6 +676,12 @@ void LLStatusBar::onVoiceChanged(const LLSD& newvalue)
refresh();
}
+void LLStatusBar::onObscureBalanceChanged(const LLSD& newvalue)
+{
+ mObscureBalance = newvalue.asBoolean();
+ setBalance(mBalance);
+}
+
void LLStatusBar::onUpdateFilterTerm()
{
LLWString searchValue = utf8str_to_wstring( mFilterEdit->getValue() );
diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h
index 45cbda0ef1..a8fc621ff8 100644
--- a/indra/newview/llstatusbar.h
+++ b/indra/newview/llstatusbar.h
@@ -72,7 +72,8 @@ public:
void debitBalance(S32 debit);
void creditBalance(S32 credit);
- // Request the latest currency balance from the server
+ // Request the latest currency balance from the server.
+ // Reply at process_money_balance_reply()
static void sendMoneyBalanceRequest();
void setHealth(S32 percent);
@@ -102,6 +103,7 @@ private:
void onClickBuyCurrency();
void onVolumeChanged(const LLSD& newvalue);
void onVoiceChanged(const LLSD& newvalue);
+ void onObscureBalanceChanged(const LLSD& newvalue);
void onMouseEnterPresetsCamera();
void onMouseEnterPresets();
@@ -109,7 +111,8 @@ private:
void onMouseEnterNearbyMedia();
static void onClickMediaToggle(void* data);
- static void onClickBalance(void* data);
+ static void onClickRefreshBalance(void* data);
+ void onClickToggleBalance();
LLSearchEditor *mFilterEdit;
LLPanel *mSearchPanel;
@@ -135,11 +138,12 @@ private:
LLFrameTimer mClockUpdateTimer;
S32 mBalance;
+ bool mBalanceClicked;
+ bool mObscureBalance;
+ LLTimer mBalanceClickTimer;
S32 mHealth;
S32 mSquareMetersCredit;
S32 mSquareMetersCommitted;
- LLFrameTimer* mBalanceTimer;
- LLFrameTimer* mHealthTimer;
LLPanelPresetsCameraPulldown* mPanelPresetsCameraPulldown;
LLPanelPresetsPulldown* mPanelPresetsPulldown;
LLPanelVolumePulldown* mPanelVolumePulldown;
diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml
index 4501e0df3a..cf52916484 100644
--- a/indra/newview/skins/default/xui/en/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml
@@ -86,7 +86,7 @@
height="18"
left="0"
name="balance"
- tool_tip="Click to refresh your L$ balance"
+ tool_tip="L$ [AMT]&#10;Click to refresh your L$ balance.&#10;Double-click to display or hide your L$ balance."
v_pad="4"
top="0"
wrap="false"