本文整理汇总了C++中LLNotificationPtr::isRespondedTo方法的典型用法代码示例。如果您正苦于以下问题:C++ LLNotificationPtr::isRespondedTo方法的具体用法?C++ LLNotificationPtr::isRespondedTo怎么用?C++ LLNotificationPtr::isRespondedTo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LLNotificationPtr
的用法示例。
在下文中一共展示了LLNotificationPtr::isRespondedTo方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: saveNotifications
void LLPersistentNotificationStorage::saveNotifications()
{
LL_RECORD_BLOCK_TIME(FTM_SAVE_NOTIFICATIONS);
boost::intrusive_ptr<LLPersistentNotificationChannel> history_channel = boost::dynamic_pointer_cast<LLPersistentNotificationChannel>(LLNotifications::instance().getChannel("Persistent"));
if (!history_channel)
{
return;
}
LLSD output = LLSD::emptyMap();
LLSD& data = output["data"];
for ( std::vector<LLNotificationPtr>::iterator it = history_channel->beginHistory(), end_it = history_channel->endHistory();
it != end_it;
++it)
{
LLNotificationPtr notification = *it;
// After a notification was placed in Persist channel, it can become
// responded, expired or canceled - in this case we are should not save it
if(notification->isRespondedTo() || notification->isCancelled()
|| notification->isExpired())
{
continue;
}
data.append(notification->asLLSD(true));
if (data.size() >= gSavedSettings.getS32("MaxPersistentNotifications"))
{
LL_WARNS() << "Too many persistent notifications."
<< " Saved " << gSavedSettings.getS32("MaxPersistentNotifications") << " of " << history_channel->size()
<< " persistent notifications." << LL_ENDL;
break;
}
}
writeNotifications(output);
}
示例2: form
//.........这里部分代码省略.........
mTextBox = getChild<LLTextEditor>("text_editor_box");
}
// *TODO: magic numbers(???) - copied from llnotify.cpp(250)
const S32 MAX_LENGTH = 512 + 20 + DB_FIRST_NAME_BUF_SIZE + DB_LAST_NAME_BUF_SIZE + DB_INV_ITEM_NAME_BUF_SIZE;
mTextBox->setMaxTextLength(MAX_LENGTH);
mTextBox->setVisible(TRUE);
mTextBox->setValue(notification->getMessage());
// add buttons for a script notification
if (mIsTip)
{
adjustPanelForTipNotice();
}
else
{
std::vector<index_button_pair_t> buttons;
buttons.reserve(mNumOptions);
S32 buttons_width = 0;
// create all buttons and accumulate they total width to reshape mControlPanel
for (S32 i = 0; i < mNumOptions; i++)
{
LLSD form_element = form->getElement(i);
if (form_element["type"].asString() != "button")
{
continue;
}
LLButton* new_button = createButton(form_element, TRUE);
buttons_width += new_button->getRect().getWidth();
S32 index = form_element["index"].asInteger();
buttons.push_back(index_button_pair_t(index,new_button));
}
if (buttons.empty())
{
addDefaultButton();
}
else
{
const S32 button_panel_width = mControlPanel->getRect().getWidth();// do not change width of the panel
S32 button_panel_height = mControlPanel->getRect().getHeight();
//try get an average h_pad to spread out buttons
S32 h_pad = (button_panel_width - buttons_width) / (S32(buttons.size()));
if(h_pad < 2*HPAD)
{
/*
* Probably it is a scriptdialog toast
* for a scriptdialog toast h_pad can be < 2*HPAD if we have a lot of buttons.
* In last case set default h_pad to avoid heaping of buttons
*/
S32 button_per_row = button_panel_width / BUTTON_WIDTH;
h_pad = (button_panel_width % BUTTON_WIDTH) / (button_per_row - 1);// -1 because we do not need space after last button in a row
if(h_pad < 2*HPAD) // still not enough space between buttons ?
{
h_pad = 2*HPAD;
}
}
if (mIsScriptDialog)
{
// we are using default width for script buttons so we can determinate button_rows
//to get a number of rows we divide the required width of the buttons to button_panel_width
S32 button_rows = llceil(F32(buttons.size() - 1) * (BUTTON_WIDTH + h_pad) / button_panel_width);
//S32 button_rows = (buttons.size() - 1) * (BUTTON_WIDTH + h_pad) / button_panel_width;
//reserve one row for the ignore_btn
button_rows++;
//calculate required panel height for scripdialog notification.
button_panel_height = button_rows * (BTN_HEIGHT + VPAD) + IGNORE_BTN_TOP_DELTA + BOTTOM_PAD;
}
else
{
// in common case buttons can have different widths so we need to calculate button_rows according to buttons_width
//S32 button_rows = llceil(F32(buttons.size()) * (buttons_width + h_pad) / button_panel_width);
S32 button_rows = llceil(F32((buttons.size() - 1) * h_pad + buttons_width) / button_panel_width);
//calculate required panel height
button_panel_height = button_rows * (BTN_HEIGHT + VPAD) + BOTTOM_PAD;
}
// we need to keep min width and max height to make visible all buttons, because width of the toast can not be changed
adjustPanelForScriptNotice(button_panel_width, button_panel_height);
updateButtonsLayout(buttons, h_pad);
// save buttons for later use in disableButtons()
mButtons.assign(buttons.begin(), buttons.end());
}
}
// adjust panel's height to the text size
mInfoPanel->setFollowsAll();
snapToMessageHeight(mTextBox, MAX_LENGTH);
if(notification->isReusable())
{
mButtonClickConnection = sButtonClickSignal.connect(
boost::bind(&LLToastNotifyPanel::onToastPanelButtonClicked, this, _1, _2));
if(notification->isRespondedTo())
{
// User selected an option in toast, now disable required buttons in IM window
disableRespondedOptions(notification);
}
}
}
示例3: expirationFilter
// The expiration channel gets all notifications that are cancelled
bool LLNotifications::expirationFilter(LLNotificationPtr pNotification)
{
return pNotification->isCancelled() || pNotification->isRespondedTo();
}