diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 11 | ||||
| -rw-r--r-- | indra/newview/llstatusbar.cpp | 63 | ||||
| -rw-r--r-- | indra/newview/llstatusbar.h | 12 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_status_bar.xml | 2 | 
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]
Click to refresh your L$ balance.
Double-click to display or hide your L$ balance."       v_pad="4"       top="0"       wrap="false"   | 
