summaryrefslogtreecommitdiff
path: root/indra/newview/llpanelprofile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llpanelprofile.cpp')
-rw-r--r--indra/newview/llpanelprofile.cpp119
1 files changed, 92 insertions, 27 deletions
diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp
index bec670cdaa..b5d85dfd4b 100644
--- a/indra/newview/llpanelprofile.cpp
+++ b/indra/newview/llpanelprofile.cpp
@@ -59,17 +59,61 @@ public:
return false;
}
- if (params[1].asString() == "about")
+ const std::string verb = params[1].asString();
+ if (verb == "about")
{
LLAvatarActions::showProfile(avatar_id);
return true;
}
- if (params[1].asString() == "inspect")
+ if (verb == "inspect")
{
- LLFloaterReg::showInstance("inspect_avatar", LLSD().insert("avatar_id", avatar_id));
+ LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", avatar_id));
return true;
}
+
+ if (verb == "im")
+ {
+ LLAvatarActions::startIM(avatar_id);
+ return true;
+ }
+
+ if (verb == "pay")
+ {
+ LLAvatarActions::pay(avatar_id);
+ return true;
+ }
+
+ if (verb == "offerteleport")
+ {
+ LLAvatarActions::offerTeleport(avatar_id);
+ return true;
+ }
+
+ if (verb == "requestfriend")
+ {
+ LLAvatarActions::requestFriendshipDialog(avatar_id);
+ return true;
+ }
+
+ if (verb == "mute")
+ {
+ if (! LLAvatarActions::isBlocked(avatar_id))
+ {
+ LLAvatarActions::toggleBlock(avatar_id);
+ }
+ return true;
+ }
+
+ if (verb == "unmute")
+ {
+ if (LLAvatarActions::isBlocked(avatar_id))
+ {
+ LLAvatarActions::toggleBlock(avatar_id);
+ }
+ return true;
+ }
+
return false;
}
};
@@ -100,6 +144,7 @@ BOOL LLPanelProfile::postBuild()
void LLPanelProfile::onOpen(const LLSD& key)
{
+ // open the desired panel
if (key.has("open_tab_name"))
{
getTabContainer()[PANEL_PICKS]->onClosePanel();
@@ -111,39 +156,48 @@ void LLPanelProfile::onOpen(const LLSD& key)
{
getTabCtrl()->getCurrentPanel()->onOpen(getAvatarId());
}
+
+ // support commands to open further pieces of UI
+ if (key.has("show_tab_panel"))
+ {
+ std::string panel = key["show_tab_panel"].asString();
+ if (panel == "create_classified")
+ {
+ LLPanelPicks* picks = dynamic_cast<LLPanelPicks *>(getTabContainer()[PANEL_PICKS]);
+ if (picks)
+ {
+ picks->createNewClassified();
+ }
+ }
+ else if (panel == "classified_details")
+ {
+ LLUUID classified_id = key["classified_id"].asUUID();
+ LLUUID avatar_id = key["classified_avatar_id"].asUUID();
+ LLUUID snapshot_id = key["classified_snapshot_id"].asUUID();
+ std::string name = key["classified_name"].asString();
+ std::string desc = key["classified_desc"].asString();
+ LLPanelPicks* picks = dynamic_cast<LLPanelPicks *>(getTabContainer()[PANEL_PICKS]);
+ if (picks)
+ {
+ picks->openClassifiedInfo(classified_id, avatar_id, snapshot_id, name, desc);
+ }
+ }
+ }
}
//*TODO redo panel toggling
-void LLPanelProfile::togglePanel(LLPanel* panel)
+void LLPanelProfile::togglePanel(LLPanel* panel, const LLSD& key)
{
// TRUE - we need to open/expand "panel"
bool expand = getChildList()->front() != panel; // mTabCtrl->getVisible();
if (expand)
{
- if (panel->getParent() != this)
- {
- addChild(panel);
- }
- else
- {
- sendChildToFront(panel);
- }
-
- panel->setVisible(TRUE);
-
- LLRect new_rect = getRect();
- panel->reshape(new_rect.getWidth(), new_rect.getHeight());
- new_rect.setLeftTopAndSize(0, new_rect.getHeight(), new_rect.getWidth(), new_rect.getHeight());
- panel->setRect(new_rect);
+ openPanel(panel, key);
}
else
{
- panel->setVisible(FALSE);
- if (panel->getParent() == this)
- {
- removeChild(panel);
- }
+ closePanel(panel);
getTabCtrl()->getCurrentPanel()->onOpen(getAvatarId());
}
@@ -190,14 +244,25 @@ void LLPanelProfile::openPanel(LLPanel* panel, const LLSD& params)
panel->setRect(new_rect);
}
-void LLPanelProfile::notifyParent(const LLSD& info)
+void LLPanelProfile::closePanel(LLPanel* panel)
+{
+ panel->setVisible(FALSE);
+
+ if (panel->getParent() == this)
+ {
+ removeChild(panel);
+ }
+}
+
+S32 LLPanelProfile::notifyParent(const LLSD& info)
{
std::string action = info["action"];
// lets update Picks list after Pick was saved
if("save_new_pick" == action)
{
onOpen(info);
- return;
+ return 1;
}
- LLPanel::notifyParent(info);
+
+ return LLPanel::notifyParent(info);
}