Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions indra/newview/app_settings/settings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
63 changes: 44 additions & 19 deletions indra/newview/llstatusbar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand All @@ -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
}

Expand Down Expand Up @@ -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));
Expand All @@ -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;
Expand Down Expand Up @@ -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();

Expand Down Expand Up @@ -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();

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

if( balance != mBalance )
{
mBalanceTimer->reset();
mBalanceTimer->setTimerExpirySec( ICON_TIMER_EXPIRY );
mBalance = balance;
}
}
Expand Down Expand Up @@ -459,9 +467,6 @@ void LLStatusBar::setHealth(S32 health)
}
}
}

mHealthTimer->reset();
mHealthTimer->setTimerExpirySec( ICON_TIMER_EXPIRY );
}

mHealth = health;
Expand Down Expand Up @@ -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)
{
Expand Down Expand Up @@ -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() );
Expand Down
12 changes: 8 additions & 4 deletions indra/newview/llstatusbar.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@ class LLStatusBar
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);
Expand Down Expand Up @@ -102,14 +103,16 @@ class LLStatusBar
void onClickBuyCurrency();
void onVolumeChanged(const LLSD& newvalue);
void onVoiceChanged(const LLSD& newvalue);
void onObscureBalanceChanged(const LLSD& newvalue);

void onMouseEnterPresetsCamera();
void onMouseEnterPresets();
void onMouseEnterVolume();
void onMouseEnterNearbyMedia();

static void onClickMediaToggle(void* data);
static void onClickBalance(void* data);
static void onClickRefreshBalance(void* data);
void onClickToggleBalance();

LLSearchEditor *mFilterEdit;
LLPanel *mSearchPanel;
Expand All @@ -135,11 +138,12 @@ class LLStatusBar
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;
Expand Down
2 changes: 1 addition & 1 deletion indra/newview/skins/default/xui/en/panel_status_bar.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Loading