Skip to content

Commit 792a38b

Browse files
committed
#3705 Add an option to hide the $L balance
1 parent b82f52a commit 792a38b

File tree

4 files changed

+64
-24
lines changed

4 files changed

+64
-24
lines changed

indra/newview/app_settings/settings.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9595,6 +9595,17 @@
95959595
<key>Value</key>
95969596
<integer>1</integer>
95979597
</map>
9598+
<key>ObscureBalanceInStatusBar</key>
9599+
<map>
9600+
<key>Comment</key>
9601+
<string>If true, balance will be shows as '*'</string>
9602+
<key>Persist</key>
9603+
<integer>1</integer>
9604+
<key>Type</key>
9605+
<string>Boolean</string>
9606+
<key>Value</key>
9607+
<integer>0</integer>
9608+
</map>
95989609
<key>RenderUIBuffer</key>
95999610
<map>
96009611
<key>Comment</key>

indra/newview/llstatusbar.cpp

Lines changed: 44 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,8 @@ LLStatusBar::LLStatusBar(const LLRect& rect)
114114
mBtnVolume(NULL),
115115
mBoxBalance(NULL),
116116
mBalance(0),
117+
mBalanceClicked(false),
118+
mObscureBalance(false),
117119
mHealth(100),
118120
mSquareMetersCredit(0),
119121
mSquareMetersCommitted(0),
@@ -125,20 +127,11 @@ LLStatusBar::LLStatusBar(const LLRect& rect)
125127
// status bar can possible overlay menus?
126128
setMouseOpaque(false);
127129

128-
mBalanceTimer = new LLFrameTimer();
129-
mHealthTimer = new LLFrameTimer();
130-
131130
buildFromFile("panel_status_bar.xml");
132131
}
133132

134133
LLStatusBar::~LLStatusBar()
135134
{
136-
delete mBalanceTimer;
137-
mBalanceTimer = NULL;
138-
139-
delete mHealthTimer;
140-
mHealthTimer = NULL;
141-
142135
// LLView destructor cleans up children
143136
}
144137

@@ -171,7 +164,8 @@ bool LLStatusBar::postBuild()
171164
getChild<LLUICtrl>("goShop")->setCommitCallback(boost::bind(&LLWeb::loadURL, gSavedSettings.getString("MarketplaceURL"), LLStringUtil::null, LLStringUtil::null));
172165

173166
mBoxBalance = getChild<LLTextBox>("balance");
174-
mBoxBalance->setClickedCallback( &LLStatusBar::onClickBalance, this );
167+
mBoxBalance->setClickedCallback(&LLStatusBar::onClickRefreshBalance, this);
168+
mBoxBalance->setDoubleClickCallback([this](LLUICtrl*, S32 x, S32 y, MASK mask) { onClickToggleBalance(); });
175169

176170
mIconPresetsCamera = getChild<LLIconCtrl>( "presets_icon_camera" );
177171
mIconPresetsCamera->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterPresetsCamera, this));
@@ -191,12 +185,14 @@ bool LLStatusBar::postBuild()
191185

192186
gSavedSettings.getControl("MuteAudio")->getSignal()->connect(boost::bind(&LLStatusBar::onVolumeChanged, this, _2));
193187
gSavedSettings.getControl("EnableVoiceChat")->getSignal()->connect(boost::bind(&LLStatusBar::onVoiceChanged, this, _2));
188+
gSavedSettings.getControl("ObscureBalanceInStatusBar")->getSignal()->connect(boost::bind(&LLStatusBar::onObscureBalanceChanged, this, _2));
194189

195190
if (!gSavedSettings.getBOOL("EnableVoiceChat") && LLAppViewer::instance()->isSecondInstance())
196191
{
197192
// Indicate that second instance started without sound
198193
mBtnVolume->setImageUnselected(LLUI::getUIImage("VoiceMute_Off"));
199194
}
195+
mObscureBalance = gSavedSettings.getBOOL("ObscureBalanceInStatusBar");
200196

201197
// Adding Net Stat Graph
202198
S32 x = getRect().getWidth() - 2;
@@ -319,6 +315,12 @@ void LLStatusBar::refresh()
319315
mTextTime->setToolTip (dtStr);
320316
}
321317

318+
if (mBalanceClicked && mBalanceClickTimer.getElapsedTimeF32() > 1.f)
319+
{
320+
mBalanceClicked = false;
321+
sendMoneyBalanceRequest();
322+
}
323+
322324
LLRect r;
323325
const S32 MENU_RIGHT = gMenuBarView->getRightmostMenuEdge();
324326

@@ -384,9 +386,17 @@ void LLStatusBar::setBalance(S32 balance)
384386
std::string money_str = LLResMgr::getInstance()->getMonetaryString( balance );
385387

386388
LLStringUtil::format_map_t string_args;
387-
string_args["[AMT]"] = llformat("%s", money_str.c_str());
389+
if (mObscureBalance)
390+
{
391+
string_args["[AMT]"] = "****";
392+
}
393+
else
394+
{
395+
string_args["[AMT]"] = llformat("%s", money_str.c_str());
396+
}
388397
std::string label_str = getString("buycurrencylabel", string_args);
389398
mBoxBalance->setValue(label_str);
399+
mBoxBalance->setToolTipArg(LLStringExplicit("[AMT]"), llformat("%s", money_str.c_str()));
390400

391401
updateBalancePanelPosition();
392402

@@ -406,8 +416,6 @@ void LLStatusBar::setBalance(S32 balance)
406416

407417
if( balance != mBalance )
408418
{
409-
mBalanceTimer->reset();
410-
mBalanceTimer->setTimerExpirySec( ICON_TIMER_EXPIRY );
411419
mBalance = balance;
412420
}
413421
}
@@ -459,9 +467,6 @@ void LLStatusBar::setHealth(S32 health)
459467
}
460468
}
461469
}
462-
463-
mHealthTimer->reset();
464-
mHealthTimer->setTimerExpirySec( ICON_TIMER_EXPIRY );
465470
}
466471

467472
mHealth = health;
@@ -621,13 +626,27 @@ static void onClickVolume(void* data)
621626
}
622627

623628
//static
624-
void LLStatusBar::onClickBalance(void* )
629+
void LLStatusBar::onClickRefreshBalance(void* data)
625630
{
626-
// Force a balance request message:
627-
LLStatusBar::sendMoneyBalanceRequest();
631+
LLStatusBar* status_bar = (LLStatusBar*)data;
632+
633+
if (!status_bar->mBalanceClicked)
634+
{
635+
// Schedule a balance request message:
636+
status_bar->mBalanceClicked = true;
637+
status_bar->mBalanceClickTimer.reset();
638+
}
628639
// The refresh of the display (call to setBalance()) will be done by process_money_balance_reply()
629640
}
630641

642+
void LLStatusBar::onClickToggleBalance()
643+
{
644+
mObscureBalance = !mObscureBalance;
645+
gSavedSettings.setBOOL("ObscureBalanceInStatusBar", mObscureBalance);
646+
setBalance(mBalance);
647+
mBalanceClicked = false; // supress click
648+
}
649+
631650
//static
632651
void LLStatusBar::onClickMediaToggle(void* data)
633652
{
@@ -657,6 +676,12 @@ void LLStatusBar::onVoiceChanged(const LLSD& newvalue)
657676
refresh();
658677
}
659678

679+
void LLStatusBar::onObscureBalanceChanged(const LLSD& newvalue)
680+
{
681+
mObscureBalance = newvalue.asBoolean();
682+
setBalance(mBalance);
683+
}
684+
660685
void LLStatusBar::onUpdateFilterTerm()
661686
{
662687
LLWString searchValue = utf8str_to_wstring( mFilterEdit->getValue() );

indra/newview/llstatusbar.h

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@ class LLStatusBar
7272
void debitBalance(S32 debit);
7373
void creditBalance(S32 credit);
7474

75-
// Request the latest currency balance from the server
75+
// Request the latest currency balance from the server.
76+
// Reply at process_money_balance_reply()
7677
static void sendMoneyBalanceRequest();
7778

7879
void setHealth(S32 percent);
@@ -102,14 +103,16 @@ class LLStatusBar
102103
void onClickBuyCurrency();
103104
void onVolumeChanged(const LLSD& newvalue);
104105
void onVoiceChanged(const LLSD& newvalue);
106+
void onObscureBalanceChanged(const LLSD& newvalue);
105107

106108
void onMouseEnterPresetsCamera();
107109
void onMouseEnterPresets();
108110
void onMouseEnterVolume();
109111
void onMouseEnterNearbyMedia();
110112

111113
static void onClickMediaToggle(void* data);
112-
static void onClickBalance(void* data);
114+
static void onClickRefreshBalance(void* data);
115+
void onClickToggleBalance();
113116

114117
LLSearchEditor *mFilterEdit;
115118
LLPanel *mSearchPanel;
@@ -135,11 +138,12 @@ class LLStatusBar
135138
LLFrameTimer mClockUpdateTimer;
136139

137140
S32 mBalance;
141+
bool mBalanceClicked;
142+
bool mObscureBalance;
143+
LLTimer mBalanceClickTimer;
138144
S32 mHealth;
139145
S32 mSquareMetersCredit;
140146
S32 mSquareMetersCommitted;
141-
LLFrameTimer* mBalanceTimer;
142-
LLFrameTimer* mHealthTimer;
143147
LLPanelPresetsCameraPulldown* mPanelPresetsCameraPulldown;
144148
LLPanelPresetsPulldown* mPanelPresetsPulldown;
145149
LLPanelVolumePulldown* mPanelVolumePulldown;

indra/newview/skins/default/xui/en/panel_status_bar.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@
8686
height="18"
8787
left="0"
8888
name="balance"
89-
tool_tip="Click to refresh your L$ balance"
89+
tool_tip="L$ [AMT]&#10;Click to refresh your L$ balance.&#10;Double-click to display or hide your L$ balance."
9090
v_pad="4"
9191
top="0"
9292
wrap="false"

0 commit comments

Comments
 (0)