SL-13814 Clarify dialog for insufficient L$ balance

master
Mnikolenko Productengine 2020-09-03 17:29:06 +03:00
parent 73ece91724
commit 1fb0e233ff
3 changed files with 416 additions and 276 deletions

View File

@ -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);

View File

@ -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);
}

View File

@ -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_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"
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"
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"
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="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"
height="30"
top="25"
width="300"
name="info_buying">
Buy L$
</text>
<text
type="string"
length="1"
follows="top|left"
font="SansSerifMedium"
height="16"
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"
</text>
</layout_panel>
<layout_panel
auto_resize="false"
name="layout_panel_required"
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"
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"
</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"
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&apos;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"
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>