[LLIMMgr/LLIMPanel Revision] Dynamic dropdown entries handling functions
Adds addDynamics(), removeDynamics(), rebuildDynamics()
This commit is contained in:
@@ -502,8 +502,7 @@ BOOL LLFloaterIMPanel::postBuild()
|
|||||||
if (LLComboBox* flyout = findChild<LLComboBox>("instant_message_flyout"))
|
if (LLComboBox* flyout = findChild<LLComboBox>("instant_message_flyout"))
|
||||||
{
|
{
|
||||||
flyout->setCommitCallback(boost::bind(&LLFloaterIMPanel::onFlyoutCommit, this, flyout, _2));
|
flyout->setCommitCallback(boost::bind(&LLFloaterIMPanel::onFlyoutCommit, this, flyout, _2));
|
||||||
flyout->add(getString("ding off"), 6);
|
addDynamics(flyout);
|
||||||
flyout->add(getString("rp mode off"), 7);
|
|
||||||
}
|
}
|
||||||
if (LLUICtrl* ctrl = findChild<LLUICtrl>("tp_btn"))
|
if (LLUICtrl* ctrl = findChild<LLUICtrl>("tp_btn"))
|
||||||
ctrl->setCommitCallback(boost::bind(static_cast<void(*)(const LLUUID&)>(LLAvatarActions::offerTeleport), mOtherParticipantUUID));
|
ctrl->setCommitCallback(boost::bind(static_cast<void(*)(const LLUUID&)>(LLAvatarActions::offerTeleport), mOtherParticipantUUID));
|
||||||
@@ -985,6 +984,17 @@ bool LLFloaterIMPanel::isInviteAllowed() const
|
|||||||
|| (IM_SESSION_INVITE == mDialog) );
|
|| (IM_SESSION_INVITE == mDialog) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LLFloaterIMPanel::removeDynamics(LLComboBox* flyout)
|
||||||
|
{
|
||||||
|
flyout->remove(mDing ? getString("ding on") : getString("ding off"));
|
||||||
|
flyout->remove(mRPMode ? getString("rp mode on") : getString("rp mode off"));
|
||||||
|
}
|
||||||
|
|
||||||
|
void LLFloaterIMPanel::addDynamics(LLComboBox* flyout)
|
||||||
|
{
|
||||||
|
flyout->add(mDing ? getString("ding on") : getString("ding off"), 6);
|
||||||
|
flyout->add(mRPMode ? getString("rp mode on") : getString("rp mode off"), 7);
|
||||||
|
}
|
||||||
|
|
||||||
void LLFloaterIMPanel::onFlyoutCommit(LLComboBox* flyout, const LLSD& value)
|
void LLFloaterIMPanel::onFlyoutCommit(LLComboBox* flyout, const LLSD& value)
|
||||||
{
|
{
|
||||||
@@ -1000,29 +1010,17 @@ void LLFloaterIMPanel::onFlyoutCommit(LLComboBox* flyout, const LLSD& value)
|
|||||||
else if (option == 3) LLAvatarActions::teleportRequest(mOtherParticipantUUID);
|
else if (option == 3) LLAvatarActions::teleportRequest(mOtherParticipantUUID);
|
||||||
else if (option == 4) LLAvatarActions::pay(mOtherParticipantUUID);
|
else if (option == 4) LLAvatarActions::pay(mOtherParticipantUUID);
|
||||||
else if (option == 5) LLAvatarActions::inviteToGroup(mOtherParticipantUUID);
|
else if (option == 5) LLAvatarActions::inviteToGroup(mOtherParticipantUUID);
|
||||||
else if (option >= 6) // Options that change labels need to stay in order at the end
|
else if (option >= 6) // Options that use dynamic items
|
||||||
{
|
{
|
||||||
std::string ding_label(mDing ? getString("ding on") : getString("ding off"));
|
|
||||||
std::string rp_label(mRPMode ? getString("rp mode on") : getString("rp mode off"));
|
|
||||||
// First remove them all
|
// First remove them all
|
||||||
flyout->remove(ding_label);
|
removeDynamics(flyout);
|
||||||
flyout->remove(rp_label);
|
|
||||||
|
|
||||||
// Toggle as requested, adjust the strings
|
// Toggle as requested, adjust the strings
|
||||||
if (option == 6)
|
if (option == 6) mDing = !mDing;
|
||||||
{
|
else if (option == 7) mRPMode = !mRPMode;
|
||||||
mDing = !mDing;
|
|
||||||
ding_label = mDing ? getString("ding on") : getString("ding off");
|
|
||||||
}
|
|
||||||
else if (option == 7)
|
|
||||||
{
|
|
||||||
mRPMode = !mRPMode;
|
|
||||||
rp_label = mRPMode ? getString("rp mode on") : getString("rp mode off");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Last add them back
|
// Last add them back
|
||||||
flyout->add(ding_label, 6);
|
addDynamics(flyout);
|
||||||
flyout->add(rp_label, 7);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -137,6 +137,11 @@ private:
|
|||||||
// Called by UI methods.
|
// Called by UI methods.
|
||||||
void onSendMsg();
|
void onSendMsg();
|
||||||
|
|
||||||
|
// Build the flyout list
|
||||||
|
void rebuildDynamics(LLComboBox* flyout) { removeDynamics(flyout); addDynamics(flyout); }
|
||||||
|
void removeDynamics(LLComboBox* flyout);
|
||||||
|
void addDynamics(LLComboBox* flyout);
|
||||||
|
|
||||||
// Called by handleKeyHere
|
// Called by handleKeyHere
|
||||||
void closeIfNotPinned();
|
void closeIfNotPinned();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user