fixed Bug EXT-1602 'Add new folder' and 'Add new landmark' has same icons that is deceitful
New menubutton has been implemented according to Viewer 2.0 Design Specification:Places Task Panel. It generates a menu for AddLandmark and AddFolder options --HG-- branch : product-enginemeow-7.2.2
parent
4309277c1b
commit
3b40f9052b
|
|
@ -56,7 +56,7 @@
|
|||
//static LLRegisterPanelClassWrapper<LLLandmarksPanel> t_landmarks("panel_landmarks");
|
||||
|
||||
static const std::string OPTIONS_BUTTON_NAME = "options_gear_btn";
|
||||
static const std::string ADD_LANDMARK_BUTTON_NAME = "add_landmark_btn";
|
||||
static const std::string ADD_BUTTON_NAME = "add_btn";
|
||||
static const std::string ADD_FOLDER_BUTTON_NAME = "add_folder_btn";
|
||||
static const std::string TRASH_BUTTON_NAME = "trash_btn";
|
||||
|
||||
|
|
@ -300,6 +300,8 @@ void LLLandmarksPanel::processParcelInfo(const LLParcelData& parcel_data)
|
|||
panel_pick, panel_places,params));
|
||||
panel_pick->setSaveCallback(boost::bind(&LLLandmarksPanel::onPickPanelExit,this,
|
||||
panel_pick, panel_places,params));
|
||||
panel_pick->setCancelCallback(boost::bind(&LLLandmarksPanel::onPickPanelExit,this,
|
||||
panel_pick, panel_places,params));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -433,11 +435,11 @@ void LLLandmarksPanel::initListCommandsHandlers()
|
|||
mListCommands = getChild<LLPanel>("bottom_panel");
|
||||
|
||||
mListCommands->childSetAction(OPTIONS_BUTTON_NAME, boost::bind(&LLLandmarksPanel::onActionsButtonClick, this));
|
||||
mListCommands->childSetAction(ADD_LANDMARK_BUTTON_NAME, boost::bind(&LLLandmarksPanel::onAddLandmarkButtonClick, this));
|
||||
mListCommands->childSetAction(ADD_FOLDER_BUTTON_NAME, boost::bind(&LLLandmarksPanel::onAddFolderButtonClick, this));
|
||||
mListCommands->childSetAction(TRASH_BUTTON_NAME, boost::bind(&LLLandmarksPanel::onTrashButtonClick, this));
|
||||
mListCommands->getChild<LLButton>(ADD_BUTTON_NAME)->setHeldDownCallback(boost::bind(&LLLandmarksPanel::onAddButtonHeldDown, this));
|
||||
static const LLSD add_landmark_command("add_landmark");
|
||||
mListCommands->childSetAction(ADD_BUTTON_NAME, boost::bind(&LLLandmarksPanel::onAddAction, this, add_landmark_command));
|
||||
|
||||
|
||||
LLDragAndDropButton* trash_btn = mListCommands->getChild<LLDragAndDropButton>(TRASH_BUTTON_NAME);
|
||||
trash_btn->setDragAndDropHandler(boost::bind(&LLLandmarksPanel::handleDragAndDropToTrash, this
|
||||
, _4 // BOOL drop
|
||||
|
|
@ -453,6 +455,7 @@ void LLLandmarksPanel::initListCommandsHandlers()
|
|||
mEnableCallbackRegistrar.add("Places.LandmarksGear.Enable", boost::bind(&LLLandmarksPanel::isActionEnabled, this, _2));
|
||||
mGearLandmarkMenu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_places_gear_landmark.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
|
||||
mGearFolderMenu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_places_gear_folder.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
|
||||
mMenuAdd = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_place_add_button.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -488,52 +491,26 @@ void LLLandmarksPanel::onActionsButtonClick()
|
|||
mGearFolderMenu->getChild<LLMenuItemCallGL>("collapse")->setVisible(cur_item->isOpen());
|
||||
menu = mGearFolderMenu;
|
||||
}
|
||||
if(menu)
|
||||
showActionMenu(menu,OPTIONS_BUTTON_NAME);
|
||||
}
|
||||
|
||||
void LLLandmarksPanel::onAddButtonHeldDown()
|
||||
{
|
||||
showActionMenu(mMenuAdd,ADD_BUTTON_NAME);
|
||||
}
|
||||
|
||||
void LLLandmarksPanel::showActionMenu(LLMenuGL* menu, std::string spawning_view_name)
|
||||
{
|
||||
if (menu)
|
||||
{
|
||||
menu->buildDrawLabels();
|
||||
menu->updateParent(LLMenuGL::sMenuContainer);
|
||||
LLView* actions_btn = getChild<LLView>(OPTIONS_BUTTON_NAME);
|
||||
LLView* spawning_view = getChild<LLView> (spawning_view_name);
|
||||
S32 menu_x, menu_y;
|
||||
actions_btn->localPointToOtherView(0,actions_btn->getRect().getHeight(),&menu_x,&menu_y, this);
|
||||
//show menu in co-ordinates of panel
|
||||
spawning_view->localPointToOtherView(0, spawning_view->getRect().getHeight(), &menu_x, &menu_y, this);
|
||||
menu_y += menu->getRect().getHeight();
|
||||
LLMenuGL::showPopup(this, menu, menu_x,menu_y);
|
||||
}
|
||||
}
|
||||
|
||||
void LLLandmarksPanel::onAddLandmarkButtonClick() const
|
||||
{
|
||||
if(LLLandmarkActions::landmarkAlreadyExists())
|
||||
{
|
||||
std::string location;
|
||||
LLAgentUI::buildLocationString(location, LLAgentUI::LOCATION_FORMAT_FULL);
|
||||
llwarns<<" Landmark already exists at location: "<< location<<llendl;
|
||||
return;
|
||||
}
|
||||
LLSideTray::getInstance()->showPanel("panel_places", LLSD().insert("type", "create_landmark"));
|
||||
}
|
||||
|
||||
void LLLandmarksPanel::onAddFolderButtonClick() const
|
||||
{
|
||||
LLFolderViewItem* item = getCurSelectedItem();
|
||||
if(item && mCurrentSelectedList == mLandmarksInventoryPanel)
|
||||
{
|
||||
LLFolderViewEventListener* folder_bridge = NULL;
|
||||
if(item-> getListener()->getInventoryType() == LLInventoryType::IT_LANDMARK)
|
||||
{
|
||||
// for a landmark get parent folder bridge
|
||||
folder_bridge = item->getParentFolder()->getListener();
|
||||
}
|
||||
else if (item-> getListener()->getInventoryType() == LLInventoryType::IT_CATEGORY)
|
||||
{
|
||||
// for a folder get its own bridge
|
||||
folder_bridge = item->getListener();
|
||||
}
|
||||
|
||||
menu_create_inventory_item(mCurrentSelectedList->getRootFolder()
|
||||
, dynamic_cast<LLFolderBridge*>(folder_bridge)
|
||||
, LLSD("category")
|
||||
, gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK)
|
||||
);
|
||||
LLMenuGL::showPopup(this, menu, menu_x, menu_y);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -547,11 +524,39 @@ void LLLandmarksPanel::onAddAction(const LLSD& userdata) const
|
|||
std::string command_name = userdata.asString();
|
||||
if("add_landmark" == command_name)
|
||||
{
|
||||
onAddLandmarkButtonClick();
|
||||
if(LLLandmarkActions::landmarkAlreadyExists())
|
||||
{
|
||||
std::string location;
|
||||
LLAgentUI::buildLocationString(location, LLAgentUI::LOCATION_FORMAT_FULL);
|
||||
llwarns<<" Landmark already exists at location: "<< location<<llendl;
|
||||
return;
|
||||
}
|
||||
LLSideTray::getInstance()->showPanel("panel_places", LLSD().insert("type", "create_landmark"));
|
||||
}
|
||||
else if ("category" == command_name)
|
||||
{
|
||||
onAddFolderButtonClick();
|
||||
LLFolderViewItem* item = getCurSelectedItem();
|
||||
if (item && mCurrentSelectedList == mLandmarksInventoryPanel)
|
||||
{
|
||||
LLFolderViewEventListener* folder_bridge = NULL;
|
||||
if (item-> getListener()->getInventoryType()
|
||||
== LLInventoryType::IT_LANDMARK)
|
||||
{
|
||||
// for a landmark get parent folder bridge
|
||||
folder_bridge = item->getParentFolder()->getListener();
|
||||
}
|
||||
else if (item-> getListener()->getInventoryType()
|
||||
== LLInventoryType::IT_CATEGORY)
|
||||
{
|
||||
// for a folder get its own bridge
|
||||
folder_bridge = item->getListener();
|
||||
}
|
||||
|
||||
menu_create_inventory_item(mCurrentSelectedList->getRootFolder(),
|
||||
dynamic_cast<LLFolderBridge*> (folder_bridge), LLSD(
|
||||
"category"), gInventory.findCategoryUUIDForType(
|
||||
LLAssetType::AT_LANDMARK));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -90,8 +90,8 @@ private:
|
|||
void initListCommandsHandlers();
|
||||
void updateListCommands();
|
||||
void onActionsButtonClick();
|
||||
void onAddLandmarkButtonClick() const;
|
||||
void onAddFolderButtonClick() const;
|
||||
void showActionMenu(LLMenuGL* menu, std::string spawning_view_name);
|
||||
void onAddButtonHeldDown();
|
||||
void onTrashButtonClick() const;
|
||||
void onAddAction(const LLSD& command_name) const;
|
||||
void onClipboardAction(const LLSD& command_name) const;
|
||||
|
|
@ -121,6 +121,7 @@ private:
|
|||
LLInventorySubTreePanel* mLibraryInventoryPanel;
|
||||
LLMenuGL* mGearLandmarkMenu;
|
||||
LLMenuGL* mGearFolderMenu;
|
||||
LLMenuGL* mMenuAdd;
|
||||
LLInventorySubTreePanel* mCurrentSelectedList;
|
||||
|
||||
LLPanel* mListCommands;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<menu
|
||||
layout="topleft"
|
||||
left="0"
|
||||
mouse_opaque="false"
|
||||
name="menu_folder_gear"
|
||||
visible="false">
|
||||
<menu_item_call
|
||||
label="Add Folder"
|
||||
layout="topleft"
|
||||
name="add_folder">
|
||||
<on_click
|
||||
function="Places.LandmarksGear.Add.Action"
|
||||
parameter="category" />
|
||||
<on_enable
|
||||
function="Places.LandmarksGear.Enable"
|
||||
parameter="category" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Add Landmark"
|
||||
layout="topleft"
|
||||
name="add_landmark">
|
||||
<on_click
|
||||
function="Places.LandmarksGear.Add.Action"
|
||||
parameter="add_landmark" />
|
||||
</menu_item_call>
|
||||
</menu>
|
||||
|
|
@ -114,22 +114,10 @@
|
|||
image_disabled="AddItem_Disabled"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="add_landmark_btn"
|
||||
name="add_btn"
|
||||
picture_style="true"
|
||||
tool_tip="Add new landmark"
|
||||
width="18" />
|
||||
<button
|
||||
follows="bottom|left"
|
||||
height="18"
|
||||
image_selected="AddItem_Press"
|
||||
image_unselected="AddItem_Off"
|
||||
image_disabled="AddItem_Disabled"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="add_folder_btn"
|
||||
picture_style="true"
|
||||
tool_tip="Add new folder"
|
||||
width="18" />
|
||||
<dnd_button
|
||||
follows="bottom|right"
|
||||
height="18"
|
||||
|
|
|
|||
Loading…
Reference in New Issue