forked from organicmaps/organicmaps
[Tizen] Add search bar on main form (for canceling search).
This commit is contained in:
parent
81ae6f0d1f
commit
19678b965c
8 changed files with 134 additions and 32 deletions
|
@ -19,7 +19,8 @@ extern int const lstItmHght; //list item height
|
|||
extern int const backWdth; //back txt width
|
||||
extern int const mainFontSz; //big font
|
||||
extern int const mediumFontSz; //medium font
|
||||
extern int const minorFontSz ; //small font
|
||||
extern int const minorFontSz; //small font
|
||||
extern int const searchBarHeight; //search bar on main form
|
||||
|
||||
//bookmark panel
|
||||
extern int const markPanelHeight;
|
||||
|
|
|
@ -24,6 +24,8 @@ class MapsWithMeForm
|
|||
, public Tizen::Ui::Controls::IListViewItemEventListener
|
||||
, public Tizen::Ui::Scenes::ISceneEventListener
|
||||
, public Tizen::Ui::Controls::IFormMenuEventListener
|
||||
, public Tizen::Ui::Controls::ISearchBarEventListener
|
||||
, public Tizen::Ui::ITextEventListener
|
||||
{
|
||||
public:
|
||||
MapsWithMeForm();
|
||||
|
@ -36,10 +38,10 @@ public:
|
|||
// ITouchEventListener
|
||||
virtual void OnTouchFocusIn (Tizen::Ui::Control const & source,
|
||||
Tizen::Graphics::Point const & currentPosition,
|
||||
Tizen::Ui::TouchEventInfo const & touchInfo);
|
||||
Tizen::Ui::TouchEventInfo const & touchInfo){}
|
||||
virtual void OnTouchFocusOut (Tizen::Ui::Control const & source,
|
||||
Tizen::Graphics::Point const & currentPosition,
|
||||
Tizen::Ui::TouchEventInfo const & touchInfo);
|
||||
Tizen::Ui::TouchEventInfo const & touchInfo){}
|
||||
virtual void OnTouchMoved (Tizen::Ui::Control const & source,
|
||||
Tizen::Graphics::Point const & currentPosition,
|
||||
Tizen::Ui::TouchEventInfo const & touchInfo);
|
||||
|
@ -76,10 +78,15 @@ public:
|
|||
virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView & listView, int index, Tizen::Ui::Controls::SweepDirection direction){}
|
||||
virtual void OnListViewItemLongPressed(Tizen::Ui::Controls::ListView & listView, int index, int elementId, bool & invokeListViewItemCallback){}
|
||||
// ISceneEventListener
|
||||
virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
|
||||
const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
|
||||
virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
|
||||
const Tizen::Ui::Scenes::SceneId& nextSceneId){}
|
||||
virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId & previousSceneId,
|
||||
const Tizen::Ui::Scenes::SceneId & currentSceneId, Tizen::Base::Collection::IList * pArgs);
|
||||
virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId & currentSceneId,
|
||||
const Tizen::Ui::Scenes::SceneId & nextSceneId){}
|
||||
// ISearchBarEventListener
|
||||
virtual void OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar & source, Tizen::Ui::Controls::SearchBarMode mode);
|
||||
// ITextEventListener
|
||||
virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control & source){}
|
||||
virtual void OnTextValueChanged(const Tizen::Ui::Control & source);
|
||||
|
||||
//IUserMarkListener
|
||||
void OnUserMark(UserMarkCopy * pCopy);
|
||||
|
@ -103,6 +110,12 @@ public:
|
|||
void UpdateBookMarkSplitPanelState();
|
||||
bool m_bookMArkSplitPanelEnabled;
|
||||
|
||||
void CreateSearchBar();
|
||||
void ShowSearchBar();
|
||||
void HideSearchBar();
|
||||
bool m_searchBarEnabled;
|
||||
Tizen::Base::String m_searchText;
|
||||
|
||||
private:
|
||||
bool m_locationEnabled;
|
||||
std::vector<std::pair<double, double> > m_prev_pts;
|
||||
|
@ -114,7 +127,8 @@ private:
|
|||
ID_MENU,
|
||||
ID_STAR,
|
||||
ID_BUTTON_SCALE_PLUS,
|
||||
ID_BUTTON_SCALE_MINUS
|
||||
ID_BUTTON_SCALE_MINUS,
|
||||
ID_SEARCH_CANCEL
|
||||
};
|
||||
|
||||
enum EMainMenuItems
|
||||
|
@ -133,6 +147,7 @@ private:
|
|||
Tizen::Ui::Controls::SplitPanel * m_pSplitPanel;
|
||||
Tizen::Ui::Controls::Panel* m_pFirstPanel;
|
||||
Tizen::Ui::Controls::Panel* m_pSecondPanel;
|
||||
Tizen::Ui::Controls::SearchBar * m_pSearchBar;
|
||||
|
||||
UserMarkPanel * m_userMarkPanel;
|
||||
BookMarkSplitPanel * m_bookMarkSplitPanel;
|
||||
|
|
|
@ -13,6 +13,7 @@ class SearchForm: public Tizen::Ui::Controls::Form
|
|||
, public Tizen::Ui::Controls::IListViewItemEventListener
|
||||
, public Tizen::Ui::ITextEventListener
|
||||
, public Tizen::Ui::IKeypadEventListener
|
||||
, public Tizen::Ui::Scenes::ISceneEventListener
|
||||
{
|
||||
public:
|
||||
SearchForm();
|
||||
|
@ -48,6 +49,11 @@ private:
|
|||
virtual void OnKeypadClosed (Tizen::Ui::Control & source){}
|
||||
virtual void OnKeypadOpened (Tizen::Ui::Control & source){}
|
||||
virtual void OnKeypadWillOpen (Tizen::Ui::Control & source){}
|
||||
// ISceneEventListener
|
||||
virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
|
||||
const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
|
||||
virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
|
||||
const Tizen::Ui::Scenes::SceneId& nextSceneId){}
|
||||
// search
|
||||
void OnSearchResultsReceived(search::Results const & results);
|
||||
|
||||
|
|
|
@ -25,4 +25,9 @@
|
|||
<layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="100.0" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0.0" marginLeft="0.0" marginRight="20.0" marginTop="20.0" mode="Portrait" rightRelation="IDF_MAIN_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_ZOOM_IN" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="100.0" x="600.0" y="632.0"/>
|
||||
<layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="167.0" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0.0" marginLeft="0.0" marginRight="0.0" marginTop="0.0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="145.0" x="551.0" y="553.0"/>
|
||||
</Button>
|
||||
<SearchBar id="IDC_SEARCHBAR" parent="IDF_MAIN_FORM">
|
||||
<property accessibilityHint="" backgroundBitmapPath="" buttonActionId="333" buttonText="" color="#15C783" colorOpacity="100" disabledButtonColor="" disabledButtonTextColor="" disabledSearchFieldColor="#15C783" disabledSearchFieldTextColor="" ellipsisPosition="ELLIPSIS_POSITION_END" guideText="" guideTextColor="" highlightedButtonColor="#15C783" highlightedButtonTextColor="" highlightedSearchFieldColor="#15C783" highlightedSearchFieldTextColor="" keypadAction="KEYPAD_ACTION_SEARCH" limitLength="500" lowerCaseMode="false" normalButtonColor="#15C783" normalButtonTextColor="" normalSearchFieldColor="#15C783" normalSearchFieldTextColor="" pressedButtonColor="#15C783" pressedButtonTextColor="" searchFieldTextSize="33.0" showSearchBarButton="true" text="" textPredictionEnabled="true"/>
|
||||
<layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="112.0" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0.0" marginLeft="0.0" marginRight="0.0" marginTop="0.0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDF_MAIN_FORM" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="720.0" x="0.0" y="0.0"/>
|
||||
<layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="86.0" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0.0" marginLeft="0.0" marginRight="0.0" marginTop="0.0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="720.0" x="0.0" y="162.0"/>
|
||||
</SearchBar>
|
||||
</Scene>
|
||||
|
|
|
@ -21,6 +21,7 @@ int const backWdth = 150; //back txt width
|
|||
int const mainFontSz = 45; //big font
|
||||
int const mediumFontSz = 33; //medium font
|
||||
int const minorFontSz = 25; //small font
|
||||
int const searchBarHeight = 112; //search bar on main form
|
||||
|
||||
int const markPanelHeight = 1.5 * lstItmHght;
|
||||
int const btnSz = 55;
|
||||
|
|
|
@ -77,6 +77,7 @@ Tizen::Ui::Controls::Form * FormFactory::CreateFormN(String const & formId, Scen
|
|||
{
|
||||
SearchForm * pForm = new SearchForm();
|
||||
pForm->Initialize();
|
||||
pSceneManager->AddSceneEventListener(sceneId, *pForm);
|
||||
pNewForm = pForm;
|
||||
}
|
||||
else if (formId == FORM_BMCATEGORIES)
|
||||
|
|
|
@ -100,6 +100,7 @@ result MapsWithMeForm::OnInitializing(void)
|
|||
CreateBookMarkPanel();
|
||||
CreateSplitPanel();
|
||||
CreateBookMarkSplitPanel();
|
||||
CreateSearchBar();
|
||||
|
||||
HideSplitPanel();
|
||||
HideBookMarkPanel();
|
||||
|
@ -170,9 +171,11 @@ void MapsWithMeForm::OnActionPerformed(Tizen::Ui::Control const & source, int ac
|
|||
{
|
||||
::Framework * pFramework = tizen::Framework::GetInstance();
|
||||
pFramework->PrepareSearch(false);
|
||||
ArrayList * pList = new ArrayList;
|
||||
pList->Add(new String(m_searchText));
|
||||
SceneManager * pSceneManager = SceneManager::GetInstance();
|
||||
pSceneManager->GoForward(ForwardSceneTransition(SCENE_SEARCH,
|
||||
SCENE_TRANSITION_ANIMATION_TYPE_LEFT, SCENE_HISTORY_OPTION_ADD_HISTORY, SCENE_DESTROY_OPTION_KEEP));
|
||||
SCENE_TRANSITION_ANIMATION_TYPE_LEFT, SCENE_HISTORY_OPTION_ADD_HISTORY, SCENE_DESTROY_OPTION_KEEP), pList);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -393,18 +396,6 @@ void MapsWithMeForm::OnTouchReleased(Tizen::Ui::Control const & source,
|
|||
}
|
||||
}
|
||||
|
||||
void MapsWithMeForm::OnTouchFocusIn(Tizen::Ui::Control const & source,
|
||||
Point const & currentPosition,
|
||||
Tizen::Ui::TouchEventInfo const & touchInfo)
|
||||
{
|
||||
}
|
||||
|
||||
void MapsWithMeForm::OnTouchFocusOut(Tizen::Ui::Control const & source,
|
||||
Point const & currentPosition,
|
||||
Tizen::Ui::TouchEventInfo const & touchInfo)
|
||||
{
|
||||
}
|
||||
|
||||
void MapsWithMeForm::CreateSplitPanel()
|
||||
{
|
||||
m_pSplitPanel = new SplitPanel();
|
||||
|
@ -510,6 +501,49 @@ void MapsWithMeForm::UpdateBookMarkSplitPanelState()
|
|||
m_bookMarkSplitPanel->UpdateState();
|
||||
}
|
||||
|
||||
void MapsWithMeForm::OnTextValueChanged (const Tizen::Ui::Control &source)
|
||||
{
|
||||
tizen::Framework::GetInstance()->CancelInteractiveSearch();
|
||||
HideSearchBar();
|
||||
}
|
||||
void MapsWithMeForm::OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar & source, SearchBarMode mode)
|
||||
{
|
||||
::Framework * pFramework = tizen::Framework::GetInstance();
|
||||
pFramework->PrepareSearch(false);
|
||||
SceneManager * pSceneManager = SceneManager::GetInstance();
|
||||
|
||||
ArrayList * pList = new ArrayList;
|
||||
pList->Add(new String(m_searchText));
|
||||
|
||||
pSceneManager->GoForward(ForwardSceneTransition(SCENE_SEARCH,
|
||||
SCENE_TRANSITION_ANIMATION_TYPE_LEFT, SCENE_HISTORY_OPTION_ADD_HISTORY, SCENE_DESTROY_OPTION_KEEP), pList);
|
||||
}
|
||||
|
||||
void MapsWithMeForm::CreateSearchBar()
|
||||
{
|
||||
m_pSearchBar = static_cast<SearchBar *>(GetControl(IDC_SEARCHBAR, true));
|
||||
m_pSearchBar->AddTouchEventListener(*this);
|
||||
m_pSearchBar->AddSearchBarEventListener(*this);
|
||||
m_pSearchBar->AddTextEventListener(*this);
|
||||
}
|
||||
|
||||
void MapsWithMeForm::ShowSearchBar()
|
||||
{
|
||||
m_searchBarEnabled = true;
|
||||
m_pSearchBar->SetMode(SEARCH_BAR_MODE_NORMAL);
|
||||
m_pSearchBar->SetShowState(true);
|
||||
m_pSearchBar->SetText(m_searchText);
|
||||
Invalidate(true);
|
||||
}
|
||||
|
||||
void MapsWithMeForm::HideSearchBar()
|
||||
{
|
||||
m_searchBarEnabled = false;
|
||||
m_searchText = "";
|
||||
m_pSearchBar->SetShowState(false);
|
||||
Invalidate(true);
|
||||
}
|
||||
|
||||
void MapsWithMeForm::OnFormBackRequested(Form& source)
|
||||
{
|
||||
if (m_splitPanelEnabled)
|
||||
|
@ -525,6 +559,10 @@ void MapsWithMeForm::OnFormBackRequested(Form& source)
|
|||
HideBookMarkSplitPanel();
|
||||
ShowBookMarkPanel();
|
||||
}
|
||||
else if (m_searchBarEnabled)
|
||||
{
|
||||
HideSearchBar();
|
||||
}
|
||||
else
|
||||
{
|
||||
UiApp * pApp = UiApp::GetInstance();
|
||||
|
@ -558,6 +596,10 @@ void MapsWithMeForm::UpdateButtons()
|
|||
footerItem.SetIcon(FOOTER_ITEM_STATUS_NORMAL, GetBitmap(m_locationEnabled ? IDB_MY_POSITION_PRESSED : IDB_MY_POSITION_NORMAL));
|
||||
pFooter->SetItemAt (0, footerItem);
|
||||
UpdateBookMarkSplitPanelState();
|
||||
if (m_searchBarEnabled)
|
||||
ShowSearchBar();
|
||||
else
|
||||
HideSearchBar();
|
||||
|
||||
Invalidate(true);
|
||||
}
|
||||
|
@ -666,8 +708,20 @@ void MapsWithMeForm::OnListViewItemStateChanged(ListView & listView, int index,
|
|||
void MapsWithMeForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
|
||||
const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
|
||||
{
|
||||
if (currentSceneId == SceneManager::GetInstance()->GetCurrentScene()->GetSceneId())
|
||||
m_searchText = "";
|
||||
m_searchBarEnabled = false;
|
||||
if (pArgs != null)
|
||||
{
|
||||
UpdateButtons();
|
||||
// Come from Search Page
|
||||
if (pArgs->GetCount() == 1)
|
||||
{
|
||||
String * pSearchText = dynamic_cast<String *>(pArgs->GetAt(0));
|
||||
m_searchText = *pSearchText;
|
||||
m_searchBarEnabled = true;
|
||||
}
|
||||
pArgs->RemoveAll(true);
|
||||
delete pArgs;
|
||||
}
|
||||
|
||||
UpdateButtons();
|
||||
}
|
||||
|
|
|
@ -21,8 +21,7 @@ using namespace Tizen::Base;
|
|||
using namespace Tizen::Ui;
|
||||
using namespace Tizen::Ui::Controls;
|
||||
using namespace Tizen::Ui::Scenes;
|
||||
using namespace Tizen::App;
|
||||
using namespace Tizen::Web::Controls;
|
||||
using namespace Tizen::Base::Collection;
|
||||
using namespace Tizen::Graphics;
|
||||
using namespace search;
|
||||
using namespace consts;
|
||||
|
@ -257,18 +256,18 @@ void SearchForm::UpdateList()
|
|||
|
||||
void SearchForm::Search(String const & val)
|
||||
{
|
||||
search::SearchParams m_params;
|
||||
m_params.m_callback = bind(&SearchForm::OnSearchResultsReceived, this, _1);
|
||||
m_params.m_query = FromTizenString(val);
|
||||
search::SearchParams params;
|
||||
params.m_callback = bind(&SearchForm::OnSearchResultsReceived, this, _1);
|
||||
params.m_query = FromTizenString(val);
|
||||
|
||||
Tizen::Locales::LanguageCode language;
|
||||
if (m_searchBar->GetCurrentLanguage(language) == E_SUCCESS)
|
||||
m_params.SetInputLanguage(CodeFromISO369_2to_1(GetLanguageCode(language)));
|
||||
params.SetInputLanguage(CodeFromISO369_2to_1(GetLanguageCode(language)));
|
||||
double lat, lon;
|
||||
GetFramework()->GetCurrentPosition(lat, lon);
|
||||
m_params.SetPosition(lat, lon);
|
||||
params.SetPosition(lat, lon);
|
||||
|
||||
GetFramework()->Search(m_params);
|
||||
GetFramework()->Search(params);
|
||||
}
|
||||
|
||||
String SearchForm::GetSearchString() const
|
||||
|
@ -286,7 +285,27 @@ void SearchForm::OnKeypadActionPerformed (Tizen::Ui::Control & source, Tizen::Ui
|
|||
if (keypadAction == KEYPAD_ACTION_SEARCH)
|
||||
{
|
||||
GetFramework()->ShowAllSearchResults();
|
||||
ArrayList * pList = new ArrayList;
|
||||
pList->Construct();
|
||||
pList->Add(new String(GetSearchString()));
|
||||
SceneManager * pSceneManager = SceneManager::GetInstance();
|
||||
pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
|
||||
pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT), pList);
|
||||
}
|
||||
}
|
||||
|
||||
void SearchForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
|
||||
const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
|
||||
{
|
||||
if (pArgs != null)
|
||||
{
|
||||
// Come from Main page in resume mode
|
||||
if (pArgs->GetCount() == 1)
|
||||
{
|
||||
String * pSearchText = dynamic_cast<String *>(pArgs->GetAt(0));
|
||||
m_searchBar->SetText(*pSearchText);
|
||||
Search(GetSearchString());
|
||||
}
|
||||
pArgs->RemoveAll(true);
|
||||
delete pArgs;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue