DEV-44351: Add a new secondlife:///app/classified/create SLapp.
Also cleaned up the code for the existing app/classified/{UUID}
support. Much nicer now.
meow-7.2.2
parent
88291b378e
commit
3eea3281af
|
|
@ -57,7 +57,6 @@
|
|||
#include "llpanelprofile.h"
|
||||
#include "llpanelpick.h"
|
||||
#include "llpanelclassified.h"
|
||||
#include "llpanelprofileview.h"
|
||||
#include "llsidetray.h"
|
||||
|
||||
static const std::string XML_BTN_NEW = "new_btn";
|
||||
|
|
@ -88,6 +87,14 @@ public:
|
|||
|
||||
bool handle(const LLSD& params, const LLSD& query_map, LLMediaCtrl* web)
|
||||
{
|
||||
// handle app/classified/create urls first
|
||||
if (params.size() == 1 && params[0].asString() == "create")
|
||||
{
|
||||
createClassified();
|
||||
return true;
|
||||
}
|
||||
|
||||
// then handle the general app/classified/{UUID}/{CMD} urls
|
||||
if (params.size() < 2)
|
||||
{
|
||||
return false;
|
||||
|
|
@ -114,6 +121,31 @@ public:
|
|||
return false;
|
||||
}
|
||||
|
||||
void createClassified()
|
||||
{
|
||||
// open the new classified panel on the Me > Picks sidetray
|
||||
LLSD params;
|
||||
params["id"] = gAgent.getID();
|
||||
params["open_tab_name"] = "panel_picks";
|
||||
params["show_tab_panel"] = "create_classified";
|
||||
LLSideTray::getInstance()->showPanel("panel_me", params);
|
||||
}
|
||||
|
||||
void openClassified(LLAvatarClassifiedInfo* c_info)
|
||||
{
|
||||
// open the classified info panel on the Me > Picks sidetray
|
||||
LLSD params;
|
||||
params["id"] = c_info->creator_id;
|
||||
params["open_tab_name"] = "panel_picks";
|
||||
params["show_tab_panel"] = "classified_details";
|
||||
params["classified_id"] = c_info->classified_id;
|
||||
params["classified_avatar_id"] = c_info->creator_id;
|
||||
params["classified_snapshot_id"] = c_info->snapshot_id;
|
||||
params["classified_name"] = c_info->name;
|
||||
params["classified_desc"] = c_info->description;
|
||||
LLSideTray::getInstance()->showPanel("panel_profile_view", params);
|
||||
}
|
||||
|
||||
/*virtual*/ void processProperties(void* data, EAvatarProcessorType type)
|
||||
{
|
||||
if (APT_CLASSIFIED_INFO != type)
|
||||
|
|
@ -128,22 +160,8 @@ public:
|
|||
return;
|
||||
}
|
||||
|
||||
// open the people profile page for the classified's owner
|
||||
LLSD params;
|
||||
params["id"] = c_info->creator_id;
|
||||
params["classified"] = c_info->classified_id;
|
||||
params["open_tab_name"] = "panel_profile";
|
||||
LLPanelProfileView *profile = dynamic_cast<LLPanelProfileView*>(LLSideTray::getInstance()->showPanel("panel_profile_view", params));
|
||||
|
||||
// then open the classified panel on this user's profile panel
|
||||
if (profile)
|
||||
{
|
||||
LLPanelPicks* panel_picks = profile->getChild<LLPanelPicks>("panel_picks");
|
||||
if (panel_picks)
|
||||
{
|
||||
panel_picks->openClassifiedInfo(c_info);
|
||||
}
|
||||
}
|
||||
// open the detail side tray for this classified
|
||||
openClassified(c_info);
|
||||
|
||||
// remove our observer now that we're done
|
||||
mClassifiedIds.erase(c_info->classified_id);
|
||||
|
|
@ -693,33 +711,24 @@ void LLPanelPicks::openClassifiedInfo()
|
|||
|
||||
LLClassifiedItem* c_item = getSelectedClassifiedItem();
|
||||
|
||||
createClassifiedInfoPanel();
|
||||
|
||||
LLSD params;
|
||||
params["classified_id"] = c_item->getClassifiedId();
|
||||
params["avatar_id"] = c_item->getAvatarId();
|
||||
params["snapshot_id"] = c_item->getSnapshotId();
|
||||
params["name"] = c_item->getClassifiedName();
|
||||
params["desc"] = c_item->getDescription();
|
||||
|
||||
getProfilePanel()->openPanel(mPanelClassifiedInfo, params);
|
||||
openClassifiedInfo(c_item->getClassifiedId(), c_item->getAvatarId(),
|
||||
c_item->getSnapshotId(), c_item->getClassifiedName(),
|
||||
c_item->getDescription());
|
||||
}
|
||||
|
||||
void LLPanelPicks::openClassifiedInfo(LLAvatarClassifiedInfo *c_info)
|
||||
void LLPanelPicks::openClassifiedInfo(const LLUUID &classified_id,
|
||||
const LLUUID &avatar_id,
|
||||
const LLUUID &snapshot_id,
|
||||
const std::string &name, const std::string &desc)
|
||||
{
|
||||
if (! c_info)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
createClassifiedInfoPanel();
|
||||
|
||||
LLSD params;
|
||||
params["classified_id"] = c_info->classified_id;
|
||||
params["avatar_id"] = c_info->creator_id;
|
||||
params["snapshot_id"] = c_info->snapshot_id;
|
||||
params["name"] = c_info->name;
|
||||
params["desc"] = c_info->description;
|
||||
params["classified_id"] = classified_id;
|
||||
params["avatar_id"] = avatar_id;
|
||||
params["snapshot_id"] = snapshot_id;
|
||||
params["name"] = name;
|
||||
params["desc"] = desc;
|
||||
|
||||
getProfilePanel()->openPanel(mPanelClassifiedInfo, params);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,9 +86,6 @@ public:
|
|||
// parent panels failed to work (picks related code was in my profile panel)
|
||||
void setProfilePanel(LLPanelProfile* profile_panel);
|
||||
|
||||
// display the info panel for the given classified
|
||||
void openClassifiedInfo(LLAvatarClassifiedInfo *c_info);
|
||||
|
||||
protected:
|
||||
/*virtual*/void updateButtons();
|
||||
|
||||
|
|
@ -120,6 +117,10 @@ private:
|
|||
|
||||
void openPickInfo();
|
||||
void openClassifiedInfo();
|
||||
void openClassifiedInfo(const LLUUID &classified_id, const LLUUID &avatar_id,
|
||||
const LLUUID &snapshot_id, const std::string &name,
|
||||
const std::string &desc);
|
||||
friend class LLPanelProfile;
|
||||
|
||||
void showAccordion(const std::string& name, bool show);
|
||||
|
||||
|
|
|
|||
|
|
@ -144,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();
|
||||
|
|
@ -155,6 +156,33 @@ 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
|
||||
|
|
|
|||
Loading…
Reference in New Issue