Added methods to ListBox and ComboBox to check if it contains a certain item

0.8
Bruno Van de Velde 2017-11-05 22:09:37 +01:00
parent 3e0a2dcd11
commit a76acc67de
6 changed files with 97 additions and 3 deletions

View File

@ -470,6 +470,20 @@ namespace tgui
ExpandDirection getExpandDirection() const;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @brief Returns whether the combo box contains the given item
/// @return Does the combo box contain the item?
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool contains(const sf::String& item) const;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @brief Returns whether the combo box contains an item with the given id
/// @return Does the combo box contain the id?
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool containsId(const sf::String& id) const;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @internal
/// This function is called when the widget is added to a container.

View File

@ -438,6 +438,20 @@ namespace tgui
bool getAutoScroll() const;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @brief Returns whether the list box contains the given item
/// @return Does the list box contain the item?
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool contains(const sf::String& item) const;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @brief Returns whether the list box contains an item with the given id
/// @return Does the list box contain the id?
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool containsId(const sf::String& id) const;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @brief Returns whether the mouse position (which is relative to the parent widget) lies on top of the widget
///

View File

@ -466,6 +466,22 @@ namespace tgui
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool ComboBox::contains(const sf::String& item) const
{
const auto& items = getItems();
return std::find(items.begin(), items.end(), item) != items.end();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool ComboBox::containsId(const sf::String& id) const
{
const auto& ids = getItemIds();
return std::find(ids.begin(), ids.end(), id) != ids.end();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void ComboBox::setParent(Container* parent)
{
hideListBox();
@ -632,8 +648,8 @@ namespace tgui
if (getItemCount() > 0)
{
auto items = getItems();
auto& ids = getItemIds();
const auto& items = getItems();
const auto& ids = getItemIds();
bool itemIdsUsed = false;
std::string itemList = "[" + Serializer::serialize(items[0]);

View File

@ -466,6 +466,20 @@ namespace tgui
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool ListBox::contains(const sf::String& item) const
{
return std::find_if(m_items.begin(), m_items.end(), [item](const Text& text){ return text.getString() == item; }) != m_items.end();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool ListBox::containsId(const sf::String& id) const
{
return std::find(m_itemIds.begin(), m_itemIds.end(), id) != m_itemIds.end();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool ListBox::mouseOnWidget(Vector2f pos) const
{
return FloatRect{getPosition().x, getPosition().y, getSize().x, getSize().y}.contains(pos);

View File

@ -195,6 +195,24 @@ TEST_CASE("[ComboBox]")
REQUIRE(comboBox->getSelectedItemId() == "");
REQUIRE(comboBox->getSelectedItemIndex() == -1);
}
SECTION("Contains")
{
REQUIRE(!comboBox->contains("Item 1"));
REQUIRE(!comboBox->containsId("1"));
comboBox->addItem("Item 1", "1");
REQUIRE(comboBox->contains("Item 1"));
REQUIRE(comboBox->containsId("1"));
comboBox->addItem("Item 2");
REQUIRE(comboBox->contains("Item 2"));
REQUIRE(!comboBox->containsId("2"));
comboBox->removeItem("Item 1");
REQUIRE(!comboBox->contains("Item 1"));
REQUIRE(!comboBox->containsId("1"));
}
SECTION("ItemsToDisplay")
{

View File

@ -227,7 +227,25 @@ TEST_CASE("[ListBox]")
REQUIRE(listBox->getSelectedItemId() == "");
REQUIRE(listBox->getSelectedItemIndex() == -1);
}
SECTION("Contains")
{
REQUIRE(!listBox->contains("Item 1"));
REQUIRE(!listBox->containsId("1"));
listBox->addItem("Item 1", "1");
REQUIRE(listBox->contains("Item 1"));
REQUIRE(listBox->containsId("1"));
listBox->addItem("Item 2");
REQUIRE(listBox->contains("Item 2"));
REQUIRE(!listBox->containsId("2"));
listBox->removeItem("Item 1");
REQUIRE(!listBox->contains("Item 1"));
REQUIRE(!listBox->containsId("1"));
}
SECTION("ItemHeight")
{
listBox->setItemHeight(20);