From 09965b0cdfd12062aee06b5bb08f26835cf28c19 Mon Sep 17 00:00:00 2001 From: Melanie Date: Mon, 15 Apr 2013 15:55:46 +0200 Subject: [PATCH] Add support for Avination's "Upload Credits" --- indra/newview/hippogridmanager.cpp | 16 ++++++- indra/newview/hippogridmanager.h | 3 ++ indra/newview/llstartup.cpp | 2 + indra/newview/llstatusbar.cpp | 48 ++++++++++++++++++- indra/newview/llstatusbar.h | 4 ++ indra/newview/llviewergenericmessage.cpp | 2 +- .../default/xui/en-us/panel_status_bar.xml | 14 ++++-- 7 files changed, 83 insertions(+), 6 deletions(-) diff --git a/indra/newview/hippogridmanager.cpp b/indra/newview/hippogridmanager.cpp index bab5eb8dd..8a4e1d8c1 100644 --- a/indra/newview/hippogridmanager.cpp +++ b/indra/newview/hippogridmanager.cpp @@ -58,7 +58,8 @@ HippoGridInfo::HippoGridInfo(const std::string& gridName) : mMaxAgentGroups(-1), mCurrencySymbol("OS$"), mRealCurrencySymbol("US$"), - mDirectoryFee(30) + mDirectoryFee(30), + mUPCSupported(false) { } @@ -676,6 +677,19 @@ void HippoGridInfo::setAutoUpdate(bool b) mAutoUpdate = b; } +bool HippoGridInfo::getUPCSupported() +{ + if(isSecondLife()) + return false; + else + return mUPCSupported; +} + +void HippoGridInfo::setUPCSupported(bool b) +{ + mUPCSupported = b; +} + // ******************************************************************** // ******************************************************************** // HippoGridManager diff --git a/indra/newview/hippogridmanager.h b/indra/newview/hippogridmanager.h index 310033af7..0e6c0f077 100644 --- a/indra/newview/hippogridmanager.h +++ b/indra/newview/hippogridmanager.h @@ -82,6 +82,8 @@ public: void setRenderCompat(bool compat); void setMaxAgentGroups(int max) { mMaxAgentGroups = max; } void setVoiceConnector(const std::string& vc) { mVoiceConnector = vc; } + void setUPCSupported(bool on); + bool getUPCSupported(); void setCurrencySymbol(const std::string& sym); void setRealCurrencySymbol(const std::string& sym); @@ -116,6 +118,7 @@ private: bool mRenderCompat; bool mInvLinks; bool mAutoUpdate; + bool mUPCSupported; int mMaxAgentGroups; std::string mCurrencySymbol; diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 3ecc2aa4d..7741d31a9 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -4385,6 +4385,8 @@ bool process_login_success_response(std::string& password) if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setMaxAgentGroups(atoi(tmp.c_str())); tmp = response["VoiceConnector"].asString(); if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setVoiceConnector(tmp); + tmp = response["upc_supported"].asString(); + if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setUPCSupported(true); gHippoGridManager->saveFile(); gHippoLimits->setLimits(); diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index 631527d24..0563a150c 100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -68,6 +68,7 @@ #include "llworld.h" #include "llstatgraph.h" #include "llviewercontrol.h" +#include "llviewergenericmessage.h" #include "llviewermenu.h" // for gMenuBarView #include "llviewerparcelmgr.h" #include "llviewerthrottle.h" @@ -137,9 +138,27 @@ std::vector LLStatusBar::sDays; std::vector LLStatusBar::sMonths; const U32 LLStatusBar::MAX_DATE_STRING_LENGTH = 2000; +class LLDispatchUPCBalance : public LLDispatchHandler +{ +public: + virtual bool operator()( + const LLDispatcher* dispatcher, + const std::string& key, + const LLUUID& invoice, + const sparam_t& strings) + { + S32 upc = atoi(strings[0].c_str()); + gStatusBar->setUPC(upc); + return true; + } +}; + +static LLDispatchUPCBalance sDispatchUPCBalance; + LLStatusBar::LLStatusBar(const std::string& name, const LLRect& rect) : LLPanel(name, LLRect(), FALSE), // not mouse opaque mBalance(0), +mUPC(0), mHealth(100), mSquareMetersCredit(0), mSquareMetersCommitted(0), @@ -147,6 +166,11 @@ mRegionCrossingSlot(), mNavMeshSlot(), mIsNavMeshDirty(false) { + mUPCSupported = gHippoGridManager->getConnectedGrid()->getUPCSupported(); + + if (mUPCSupported) + gGenericDispatcher.addHandler("upcbalance", &sDispatchUPCBalance); + // status bar can possible overlay menus? setMouseOpaque(FALSE); setIsChrome(TRUE); @@ -168,10 +192,14 @@ mIsNavMeshDirty(false) mTextParcelName = getChild("ParcelNameText" ); mTextBalance = getChild("BalanceText" ); + mTextUPC = getChild("UPCText" ); mTextHealth = getChild("HealthText" ); mTextTime = getChild("TimeText" ); + if (!mUPCSupported) + mTextUPC->setVisible(false); + childSetAction("scriptout", onClickScriptDebug, this); childSetAction("health", onClickHealth, this); childSetAction("no_fly", onClickFly, this); @@ -595,6 +623,14 @@ void LLStatusBar::refresh() } // Set rects of money, buy money, time + if (mUPCSupported) + { + childGetRect("UPCText", r); + r.translate( new_right - r.mRight, 0); + childSetRect("UPCText", r); + new_right -= r.getWidth() - 18; + } + childGetRect("BalanceText", r); r.translate( new_right - r.mRight, 0); childSetRect("BalanceText", r); @@ -631,6 +667,8 @@ void LLStatusBar::refresh() void LLStatusBar::setVisibleForMouselook(bool visible) { mTextBalance->setVisible(visible); + if (mUPCSupported) + mTextUPC->setVisible(visible); mTextTime->setVisible(visible); childSetVisible("buycurrency", visible); childSetVisible("search_editor", visible); @@ -653,7 +691,7 @@ void LLStatusBar::creditBalance(S32 credit) void LLStatusBar::setBalance(S32 balance) { mTextBalance->setText(gHippoGridManager->getConnectedGrid()->getCurrencySymbol().c_str() + - LLResMgr::getInstance()->getMonetaryString(balance)); + LLResMgr::getInstance()->getMonetaryString(balance - mUPC)); if (mBalance && (fabs((F32)(mBalance - balance)) > gSavedSettings.getF32("UISndMoneyChangeThreshold"))) { @@ -670,6 +708,14 @@ void LLStatusBar::setBalance(S32 balance) } } +void LLStatusBar::setUPC(S32 upc) +{ + mTextUPC->setText("UPC " + LLResMgr::getInstance()->getMonetaryString(upc)); + + mUPC = upc; + + setBalance(mBalance); +} // static void LLStatusBar::sendMoneyBalanceRequest() diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h index 144047166..b24913ef3 100644 --- a/indra/newview/llstatusbar.h +++ b/indra/newview/llstatusbar.h @@ -61,6 +61,7 @@ public: // MANIPULATORS void setBalance(S32 balance); + void setUPC(S32 balance); void debitBalance(S32 debit); void creditBalance(S32 credit); @@ -99,6 +100,7 @@ private: private: LLTextBox *mTextBalance; + LLTextBox *mTextUPC; LLTextBox *mTextHealth; LLTextBox *mTextTime; @@ -110,6 +112,7 @@ private: LLButton *mBtnBuyCurrency; S32 mBalance; + S32 mUPC; S32 mHealth; S32 mSquareMetersCredit; S32 mSquareMetersCommitted; @@ -118,6 +121,7 @@ private: boost::signals2::connection mRegionCrossingSlot; LLPathfindingNavMesh::navmesh_slot_t mNavMeshSlot; bool mIsNavMeshDirty; + bool mUPCSupported; static std::vector sDays; static std::vector sMonths; diff --git a/indra/newview/llviewergenericmessage.cpp b/indra/newview/llviewergenericmessage.cpp index 312fae50a..c4675e7bb 100644 --- a/indra/newview/llviewergenericmessage.cpp +++ b/indra/newview/llviewergenericmessage.cpp @@ -105,7 +105,7 @@ void process_generic_message(LLMessageSystem* msg, void**) } else if (agent_id != gAgent.getID()) { - llwarns << "GenericMessage for wrong agent" << llendl; + llwarns << "GenericMessage for wrong agent " << agent_id << llendl; return; } else diff --git a/indra/newview/skins/default/xui/en-us/panel_status_bar.xml b/indra/newview/skins/default/xui/en-us/panel_status_bar.xml index f0e6af8c1..bf1b1c213 100644 --- a/indra/newview/skins/default/xui/en-us/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/en-us/panel_status_bar.xml @@ -15,21 +15,29 @@ Loading... + + UPC - N/A - +