diff options
-rw-r--r-- | indra/newview/llcurrencyuimanager.cpp | 7 | ||||
-rw-r--r-- | indra/newview/llfloaterbuycurrency.cpp | 61 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_buy_currency.xml | 624 |
3 files changed, 416 insertions, 276 deletions
diff --git a/indra/newview/llcurrencyuimanager.cpp b/indra/newview/llcurrencyuimanager.cpp index df94e337da..cd7332c4d4 100644 --- a/indra/newview/llcurrencyuimanager.cpp +++ b/indra/newview/llcurrencyuimanager.cpp @@ -454,7 +454,7 @@ void LLCurrencyUIManager::Impl::updateUI() if (!mUserEnteredCurrencyBuy) { - if (!mZeroMessage.empty() && mUserCurrencyBuy == 0) + if (mUserCurrencyBuy == 0) { lindenAmount->setText(LLStringUtil::null); } @@ -467,8 +467,9 @@ void LLCurrencyUIManager::Impl::updateUI() } } - mPanel.getChild<LLUICtrl>("currency_est")->setTextArg("[LOCALAMOUNT]", getLocalEstimate()); - mPanel.getChildView("currency_est")->setVisible( hasEstimate() && mUserCurrencyBuy > 0); + std::string estimated = (mUserCurrencyBuy == 0) ? mPanel.getString("estimated_zero") : getLocalEstimate(); + mPanel.getChild<LLUICtrl>("currency_est")->setTextArg("[LOCALAMOUNT]", estimated); + mPanel.getChildView("currency_est")->setVisible( hasEstimate() || mUserCurrencyBuy == 0); mPanel.getChildView("currency_links")->setVisible( mSupportsInternationalBilling); mPanel.getChildView("exchange_rate_note")->setVisible( mSupportsInternationalBilling); diff --git a/indra/newview/llfloaterbuycurrency.cpp b/indra/newview/llfloaterbuycurrency.cpp index 25348474a1..b039475389 100644 --- a/indra/newview/llfloaterbuycurrency.cpp +++ b/indra/newview/llfloaterbuycurrency.cpp @@ -32,6 +32,8 @@ #include "llcurrencyuimanager.h" #include "llfloater.h" #include "llfloaterreg.h" +#include "lllayoutstack.h" +#include "lliconctrl.h" #include "llnotificationsutil.h" #include "llstatusbar.h" #include "lltextbox.h" @@ -60,6 +62,7 @@ public: bool mHasTarget; std::string mTargetName; S32 mTargetPrice; + S32 mRequiredAmount; public: void noTarget(); @@ -68,6 +71,7 @@ public: virtual BOOL postBuild(); void updateUI(); + void collapsePanels(bool collapse); virtual void draw(); virtual BOOL canClose(); @@ -92,7 +96,9 @@ LLFloater* LLFloaterBuyCurrency::buildFloater(const LLSD& key) LLFloaterBuyCurrencyUI::LLFloaterBuyCurrencyUI(const LLSD& key) : LLFloater(key), mChildren(*this), - mManager(*this) + mManager(*this), + mHasTarget(false), + mTargetPrice(0) { } @@ -104,7 +110,8 @@ LLFloaterBuyCurrencyUI::~LLFloaterBuyCurrencyUI() void LLFloaterBuyCurrencyUI::noTarget() { mHasTarget = false; - mManager.setAmount(STANDARD_BUY_AMOUNT); + mTargetPrice = 0; + mManager.setAmount(0); } void LLFloaterBuyCurrencyUI::target(const std::string& name, S32 price) @@ -120,7 +127,8 @@ void LLFloaterBuyCurrencyUI::target(const std::string& name, S32 price) need = 0; } - mManager.setAmount(need + MINIMUM_BALANCE_AMOUNT); + mRequiredAmount = need + MINIMUM_BALANCE_AMOUNT; + mManager.setAmount(0); } @@ -175,7 +183,6 @@ void LLFloaterBuyCurrencyUI::updateUI() getChildView("purchase_warning_repurchase")->setVisible(FALSE); getChildView("purchase_warning_notenough")->setVisible(FALSE); getChildView("contacting")->setVisible(FALSE); - getChildView("buy_action")->setVisible(FALSE); if (hasError) { @@ -208,8 +215,8 @@ void LLFloaterBuyCurrencyUI::updateUI() { if (mHasTarget) { - getChildView("buy_action")->setVisible( true); - getChild<LLUICtrl>("buy_action")->setTextArg("[ACTION]", mTargetName); + getChild<LLUICtrl>("target_price")->setTextArg("[AMT]", llformat("%d", mTargetPrice)); + getChild<LLUICtrl>("required_amount")->setTextArg("[AMT]", llformat("%d", mRequiredAmount)); } } @@ -230,18 +237,40 @@ void LLFloaterBuyCurrencyUI::updateUI() if (mHasTarget) { - if (total >= mTargetPrice) - { - getChildView("purchase_warning_repurchase")->setVisible( true); - } - else - { - getChildView("purchase_warning_notenough")->setVisible( true); - } + getChildView("purchase_warning_repurchase")->setVisible( !getChildView("currency_links")->getVisible()); } } - getChildView("getting_data")->setVisible( !mManager.canBuy() && !hasError); + getChildView("getting_data")->setVisible( !mManager.canBuy() && !hasError && !getChildView("currency_est")->getVisible()); +} + +void LLFloaterBuyCurrencyUI::collapsePanels(bool collapse) +{ + LLLayoutPanel* price_panel = getChild<LLLayoutPanel>("layout_panel_price"); + + if (price_panel->isCollapsed() == collapse) + return; + + LLLayoutStack* outer_stack = getChild<LLLayoutStack>("outer_stack"); + LLLayoutPanel* required_panel = getChild<LLLayoutPanel>("layout_panel_required"); + LLLayoutPanel* msg_panel = getChild<LLLayoutPanel>("layout_panel_msg"); + + S32 delta_height = price_panel->getRect().getHeight() + required_panel->getRect().getHeight() + msg_panel->getRect().getHeight(); + delta_height *= (collapse ? -1 : 1); + + LLIconCtrl* icon = getChild<LLIconCtrl>("normal_background"); + LLRect rect = icon->getRect(); + icon->setRect(rect.setOriginAndSize(rect.mLeft, rect.mBottom - delta_height, rect.getWidth(), rect.getHeight() + delta_height)); + + outer_stack->collapsePanel(price_panel, collapse); + outer_stack->collapsePanel(required_panel, collapse); + outer_stack->collapsePanel(msg_panel, collapse); + + outer_stack->updateLayout(); + + LLRect floater_rect = getRect(); + floater_rect.mBottom -= delta_height; + setShape(floater_rect, false); } void LLFloaterBuyCurrencyUI::onClickBuy() @@ -265,6 +294,7 @@ void LLFloaterBuyCurrency::buyCurrency() LLFloaterBuyCurrencyUI* ui = LLFloaterReg::showTypedInstance<LLFloaterBuyCurrencyUI>("buy_currency"); ui->noTarget(); ui->updateUI(); + ui->collapsePanels(true); } // static @@ -273,6 +303,7 @@ void LLFloaterBuyCurrency::buyCurrency(const std::string& name, S32 price) LLFloaterBuyCurrencyUI* ui = LLFloaterReg::showTypedInstance<LLFloaterBuyCurrencyUI>("buy_currency"); ui->target(name, price); ui->updateUI(); + ui->collapsePanels(false); } diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency.xml b/indra/newview/skins/default/xui/en/floater_buy_currency.xml index 061af1b67c..e8e83301be 100644 --- a/indra/newview/skins/default/xui/en/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_currency.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <floater - legacy_header_height="18" + can_minimize="false" - height="275" + height="285" layout="topleft" title="BUY L$" name="buy currency" @@ -17,277 +17,385 @@ name="info_cannot_buy"> Unable to Buy </floater.string> + <floater.string + name="estimated_zero"> + US$ 0.00 + </floater.string> <icon - height="215" + height="245" image_name="Linden_Dollar_Background" layout="topleft" left="0" name="normal_background" - top="17" + top="0" use_draw_context_alpha="false" width="350" /> - <text - type="string" - length="1" - follows="top|left|right" - font="SansSerifHuge" - layout="topleft" - left="20" - height="30" - top="25" - width="340" - name="info_need_more"> - You need more L$ - </text> - <text - type="string" - length="1" - follows="top|left" - height="16" + <layout_stack + animate="false" + name="outer_stack" + layout="topleft" + follows="all" + orientation="vertical" + left="0" + top="0" + width="350" + height="285"> + <layout_panel + auto_resize="false" + name="layout_panel_title" layout="topleft" - top="246" - left="15" - width="300" - name="contacting"> - Contacting LindeX... - </text> - <text - type="string" - length="1" - follows="top|left" - font="SansSerifHuge" + follows="all" + width="350" + height="35"> + <text + type="string" + length="1" + follows="top|left|right" + font="SansSerifLarge" + layout="topleft" + left="20" + height="30" + top="8" + width="340" + name="info_need_more"> + You need more L$ + </text> + <text + type="string" + length="1" + follows="top|left|right" + font="SansSerifLarge" + layout="topleft" + left="20" + height="30" + top="8" + width="300" + name="info_buying"> + Buy L$ + </text> + <view_border + bevel_style="none" + height="0" + layout="topleft" + left="20" + name="text_border" + top_delta="25" + width="300"/> + </layout_panel> + <layout_panel + auto_resize="false" + name="layout_panel_price" layout="topleft" - left="20" - height="30" - top="25" - width="300" - name="info_buying"> - Buy L$ - </text> - <text - type="string" - length="1" - follows="top|left" - font="SansSerifMedium" - height="16" + follows="all" + width="350" + height="18"> + <text + type="string" + length="1" + follows="top|left" + font="SansSerifMedium" + height="16" + layout="topleft" + left="20" + name="target_price_label" + top_pad="3" + width="210"> + You need + </text> + <text + type="string" + length="1" + font="SansSerifMedium" + follows="top|left" + halign="right" + height="16" + layout="topleft" + left="200" + name="target_price" + top_delta="0" + width="120"> + L$ [AMT] + </text> + </layout_panel> + <layout_panel + auto_resize="false" + name="layout_panel_balance" layout="topleft" - left="20" - name="balance_label" - top="65" - width="210"> - I have - </text> - <text - type="string" - length="1" - font="SansSerifMedium" - follows="top|left" - halign="right" - height="16" - layout="topleft" - left="200" - name="balance_amount" - top_delta="0" - width="120"> + follows="all" + width="350" + height="19"> + <text + type="string" + length="1" + follows="top|left" + font="SansSerifMedium" + height="16" + layout="topleft" + left="20" + name="balance_label" + top_pad="5" + width="210"> + You now have + </text> + <text + type="string" + length="1" + font="SansSerifMedium" + follows="top|left" + halign="right" + height="16" + layout="topleft" + left="200" + name="balance_amount" + top_delta="0" + width="120"> L$ [AMT] - </text> - <text - type="string" - length="1" - follows="top|left" - font="SansSerifMedium" - height="16" - top="95" - layout="topleft" - left="20" - name="currency_action" - width="210"> - I want to buy - </text> - <text - font="SansSerifMedium" - type="string" - length="1" - follows="left|top" - height="16" - layout="topleft" - top_delta="0" - left="217" - name="currency_label" - width="15"> - L$ - </text> - <line_editor - type="string" - max_length_bytes="10" - halign="right" - font="SansSerifMedium" - select_on_focus="true" - follows="top|left" - top_delta="-7" - height="22" - label="L$" - left_pad="3" - name="currency_amt" - width="85"> - 1234 - </line_editor> - <text - type="string" - font="SansSerifMedium" - length="1" - follows="top|left" - height="16" - layout="topleft" - left="20" - top="125" - name="buying_label" - width="210"> - For the price - </text> - <text - type="string" - length="1" - font="SansSerifMedium" - text_color="EmphasisColor" - follows="top|left" - halign="right" - height="16" - top_delta="0" + </text> + </layout_panel> + <layout_panel + auto_resize="false" + name="layout_panel_required" layout="topleft" - left="150" - name="currency_est" - width="170"> - approx. [LOCALAMOUNT] - </text> - <text - type="string" - font="SansSerifSmall" - text_color="EmphasisColor" - length="1" - follows="top|left" - height="16" - layout="topleft" - top="125" - left="170" - width="150" - halign="right" - name="getting_data"> - Estimating... - </text> - <text - type="string" - font="SansSerifSmall" - top="145" - length="1" - follows="top|left" - height="16" - halign="right" - left="20" - width="300" - layout="topleft" - name="buy_action"> - [ACTION] - </text> - <text - type="string" - font="SansSerifMedium" - length="1" - follows="top|left" - height="16" - layout="topleft" - left="20" - name="total_label" - top="165" - width="210"> - My new balance will be - </text> - <text - type="string" - length="1" - font="SansSerifMedium" - follows="top|left" - top_delta="0" - height="16" - layout="topleft" - left="200" - halign="right" - name="total_amount" - width="120"> + follows="all" + width="350" + height="22"> + <text + type="string" + length="1" + follows="top|left" + font="SansSerifMedium" + font.style="BOLD" + height="16" + layout="topleft" + left="20" + name="required_label" + top_pad="6" + width="210"> + You should buy at least + </text> + <text + type="string" + length="1" + font="SansSerifMedium" + follows="top|left" + halign="right" + height="16" + layout="topleft" + left="200" + name="required_amount" + top_delta="0" + width="120"> L$ [AMT] - </text> - <text - type="string" - length="1" - text_color="LtGray_50" - follows="top|left" + </text> + </layout_panel> + <layout_panel + auto_resize="false" + name="layout_panel_action" layout="topleft" - halign="right" - top="189" - left="20" - width="300" - height="30" - name="currency_links"> - [http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] - </text> - <text - type="string" - length="1" - text_color="LtGray_50" - follows="top|left" + follows="all" + width="350" + height="90"> + <view_border + bevel_style="none" + height="0" + layout="topleft" + left="20" + name="text_border_2" + top_pad="5" + width="300"/> + <text + type="string" + length="1" + follows="top|left" + font="SansSerifMedium" + height="16" + top_pad="15" + layout="topleft" + left="20" + name="currency_action" + width="210"> + Choose amount to buy + </text> + <text + font="SansSerifMedium" + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + top_delta="0" + left="247" + name="currency_label" + width="15"> + L$ + </text> + <line_editor + type="string" + max_length_bytes="10" + halign="right" + font="SansSerifMedium" + select_on_focus="true" + follows="top|left" + top_delta="-4" + height="22" + label="L$" + left_pad="3" + name="currency_amt" + width="55"> + 1234 + </line_editor> + <text + type="string" + length="1" + font="SansSerifMedium" + text_color="EmphasisColor" + follows="top|left" + halign="right" + height="16" + top_pad="4" + layout="topleft" + left="150" + name="currency_est" + width="170"> + Approx. [LOCALAMOUNT] + </text> + <text + type="string" + font="SansSerifSmall" + text_color="EmphasisColor" + length="1" + follows="top|left" + height="16" + layout="topleft" + left="170" + top_delta="0" + width="150" + halign="right" + name="getting_data"> + Estimating... + </text> + <text + type="string" + font="SansSerifMedium" + length="1" + follows="top|left" + height="16" + layout="topleft" + left="20" + name="total_label" + top_pad="10" + width="210"> + Your new balance will be + </text> + <text + type="string" + length="1" + font="SansSerifMedium" + follows="top|left" + top_delta="0" + height="16" + layout="topleft" + left="200" + halign="right" + name="total_amount" + width="120"> + L$ [AMT] + </text> + </layout_panel> + <layout_panel + auto_resize="false" + name="layout_panel_msg" layout="topleft" - halign="right" - top="202" - left="20" - width="300" - height="30" - name="exchange_rate_note"> + follows="all" + width="350" + height="50"> + <view_border + bevel_style="none" + height="0" + layout="topleft" + left="20" + name="text_border_3" + top_pad="0" + width="300"/> + <text + type="string" + length="1" + text_color="LtGray_50" + follows="top|left" + layout="topleft" + halign="right" + top_pad="3" + left="20" + width="300" + height="30" + name="currency_links"> + [http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] + </text> + <text + type="string" + length="1" + text_color="LtGray_50" + follows="top|left" + layout="topleft" + halign="right" + top="19" + left="20" + width="300" + height="30" + name="exchange_rate_note"> Re-enter amount to see the latest exchange rate. - </text> - <text - type="string" - length="1" - text_color="LtGray_50" - follows="top|left" - layout="topleft" - halign="right" - top="208" - left="10" - width="310" - height="35" - name="purchase_warning_repurchase"> - Confirming this purchase only buys L$, not the object. - </text> - <text - type="string" - length="1" - text_color="LtGray_50" - follows="top|left" - layout="topleft" - halign="right" - top="213" - left="20" - width="300" - height="30" - name="purchase_warning_notenough"> - You aren't buying enough L$. Please increase the amount. - </text> - - <button - follows="bottom|left" - height="20" - label="Buy Now" - layout="topleft" - left="151" - name="buy_btn" - top="242" - width="90"/> - <button - follows="bottom|right" - height="20" - label="Cancel" + </text> + <text + type="string" + length="1" + follows="top|left" + layout="topleft" + font="SansSerifMedium" + top="10" + left="20" + width="310" + height="35" + name="purchase_warning_repurchase"> +After you receive your L$, you should try your +purchase again. + </text> + </layout_panel> + <layout_panel + auto_resize="false" + name="layout_panel_buttons" layout="topleft" - left_pad="10" - name="cancel_btn" - width="90"/> + follows="all" + width="350" + height="40"> + <text + type="string" + length="1" + follows="top|left" + height="16" + layout="topleft" + top_pad="0" + left="15" + width="300" + name="contacting"> + Contacting LindeX... + </text> + <button + follows="top|left|right" + height="20" + label="Buy L$ now" + layout="topleft" + left="151" + name="buy_btn" + bottom_delta ="8" + width="90"/> + <button + follows="top|left|right" + height="20" + label="Cancel" + layout="topleft" + left_pad="10" + name="cancel_btn" + width="90"/> + </layout_panel> + </layout_stack> </floater> |