static bool onCheck(LLHandle<LLView> flat_list_handle,
						LLHandle<LLPanel> inventory_panel_handle,
						LLSD::String sort_order_str)
	{
		if (flat_list_handle.isDead() || inventory_panel_handle.isDead()) return false;

		LLWearableItemsList* flat_list = dynamic_cast<LLWearableItemsList*>(flat_list_handle.get());
		LLInventoryPanel* inventory_panel = dynamic_cast<LLInventoryPanel*>(inventory_panel_handle.get());

		if (!inventory_panel || !flat_list) return false;

		// Inventory panel uses its own sort order independent from
		// flat list view so this flag is used to distinguish between
		// currently visible "tree" or "flat" representation of inventory.
		bool inventory_tree_visible = inventory_panel->getVisible();

		if (inventory_tree_visible)
		{
			U32 sort_order = inventory_panel->getSortOrder();

			if ("by_most_recent" == sort_order_str)
			{
				return LLWearableItemsList::E_SORT_BY_MOST_RECENT & sort_order;
			}
			else if ("by_name" == sort_order_str)
			{
				// If inventory panel is not sorted by date then it is sorted by name.
				return LLWearableItemsList::E_SORT_BY_MOST_RECENT & ~sort_order;
			}
			llwarns << "Unrecognized inventory panel sort order" << llendl;
		}
		else
		{
			LLWearableItemsList::ESortOrder	sort_order = flat_list->getSortOrder();

			if ("by_most_recent" == sort_order_str)
			{
				return LLWearableItemsList::E_SORT_BY_MOST_RECENT == sort_order;
			}
			else if ("by_name" == sort_order_str)
			{
				return LLWearableItemsList::E_SORT_BY_NAME == sort_order;
			}
			else if ("by_type" == sort_order_str)
			{
				return LLWearableItemsList::E_SORT_BY_TYPE_NAME == sort_order;
			}
			llwarns << "Unrecognized wearable list sort order" << llendl;
		}
		return false;
	}
	static bool onVisible(LLHandle<LLPanel> inventory_panel_handle,
						  LLSD::String sort_order_str)
	{
		if (inventory_panel_handle.isDead()) return false;

		LLInventoryPanel* inventory_panel = dynamic_cast<LLInventoryPanel*>(inventory_panel_handle.get());

		// Enable sorting by type only for the flat list of items
		// because inventory panel doesn't support this kind of sorting.
		return ( "by_type" == sort_order_str )
				&&	( !inventory_panel || !inventory_panel->getVisible() );
	}
	static void onSort(LLHandle<LLView> flat_list_handle,
					   LLHandle<LLPanel> inventory_panel_handle,
					   LLSD::String sort_order_str)
	{
		if (flat_list_handle.isDead() || inventory_panel_handle.isDead()) return;

		LLWearableItemsList* flat_list = dynamic_cast<LLWearableItemsList*>(flat_list_handle.get());
		LLInventoryPanel* inventory_panel = dynamic_cast<LLInventoryPanel*>(inventory_panel_handle.get());

		if (!flat_list || !inventory_panel) return;

		LLWearableItemsList::ESortOrder	sort_order;

		if ("by_most_recent" == sort_order_str)
		{
			sort_order = LLWearableItemsList::E_SORT_BY_MOST_RECENT;
		}
		else if ("by_name" == sort_order_str)
		{
			sort_order = LLWearableItemsList::E_SORT_BY_NAME;
		}
		else if ("by_type" == sort_order_str)
		{
			sort_order = LLWearableItemsList::E_SORT_BY_TYPE_NAME;
		}
		else
		{
			llwarns << "Unrecognized sort order action" << llendl;
			return;
		}

		if (inventory_panel->getVisible())
		{
			inventory_panel->setSortOrder(sort_order);
		}
		else
		{
			flat_list->setSortOrder(sort_order);
		}
	}
Exemplo n.º 4
0
	/*virtual*/ void httpSuccess()
	{
		if (mHandle.isDead())
		{
			return;
		}

		LLPanelGroupExperiences* panel = mHandle.get();
		if (panel)
		{
			panel->setExperienceList(getContent().get("experience_ids"));
		}
	}
Exemplo n.º 5
0
bool LLTransientFloaterMgr::isControlClicked(ETransientGroup group, controls_set_t& set, S32 x, S32 y)
{
	std::list< LLHandle<LLView> > dead_handles;
	
	bool res = true;
	for (controls_set_t::iterator it = set.begin(); it
			!= set.end(); it++)
	{
		LLView* control_view = NULL;

		LLHandle<LLView> handle = *it;
		if (handle.isDead())
		{
			dead_handles.push_back(handle);
			continue;
		}

		control_view = handle.get();

		if (!control_view->getVisible())
		{
			continue;
		}

		LLRect rect = control_view->calcScreenRect();
		// if click inside view rect
		if (rect.pointInRect(x, y))
		{
			res = false;
			break;
		}
	}

	for (std::list< LLHandle<LLView> >::iterator it = dead_handles.begin(); it != dead_handles.end(); ++it)
	{
		LLHandle<LLView> handle = *it;
		mGroupControls.find(group)->second.erase(handle);
	}
	
	return res;
}