icfans

COSMOS_联系人列表界面搜索框自动显示和隐藏

0
阅读(220) 评论(0)

[DESCRIPTION]
Cosmos 联系人列表界面搜索框默认都是一直显示状态,如果是支持键盘输入的版本,可以修改为将搜索框隐藏,当按
按键输入数据时,就自动显示搜索框。
[SOLUTION]来自半导体社区
下面的代码在Cosmos 11A1112验证通过。
修改实现的思路是:
显示和隐藏的判断条件是输入框是否为空;
输入框为空,就隐藏searchbar,不为空就显示;
由于VcpListMenuSearchBar目前没有接口可以控制显示或隐藏 searchbar,需要在添加一个控制显示和隐藏的接口;
1,
在 vcp_list_menu.h 中,VcpBaseListMenu 中添加函数定义:
//add for hide searchbar
void setSearchBarHidden(VfxBool isHidden = VFX_FALSE);
2,
在vcp_list_menu.cpp 中增加函数实现:
//add for hidden searchbar
void VcpBaseListMenu::setSearchBarHidden(VfxBool isHidden)
{
if(isHidden)
{
m_searchBar->setBounds(0, 0, getBounds().getWidth(), 0);
}
else
{
m_searchBar->setBounds(0, 0, getBounds().getWidth(), VCP_LIST_MENU_SEARCH_BAR_HEIGHT);
}
}
3,
void VappPhbListCp::onListReady()
{
// stop acitvity
m_activity->stop();
enableSearchBar(VFX_TRUE);
//add begin
if (m_searchText.isEmpty())
{
setSearchBarHidden(VFX_TRUE);
}
else
{
setSearchBarHidden(VFX_FALSE);
}
//add end
resetAllItems(VFX_TRUE);
......
}
4,
void VappPhbListCp::OnTextChanged(VcpTextEditor *editor)
{
m_searchText = VFX_WSTR_MEM(editor->getText());
//add begin
if(m_searchText.isEmpty())
{
setSearchBarHidden(VFX_TRUE);
}
else
{
setSearchBarHidden(VFX_FALSE);
}
//add end
m_list->setQuery(m_searchText);
// config seekbar
configSeekBar();
}