diff --git a/tizen/MapsWithMe/inc/Constants.hpp b/tizen/MapsWithMe/inc/Constants.hpp index e58fad1d45..ca179465e8 100644 --- a/tizen/MapsWithMe/inc/Constants.hpp +++ b/tizen/MapsWithMe/inc/Constants.hpp @@ -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; diff --git a/tizen/MapsWithMe/inc/MapsWithMeForm.hpp b/tizen/MapsWithMe/inc/MapsWithMeForm.hpp index 09104ad267..b2832fdf2b 100644 --- a/tizen/MapsWithMe/inc/MapsWithMeForm.hpp +++ b/tizen/MapsWithMe/inc/MapsWithMeForm.hpp @@ -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 > 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; diff --git a/tizen/MapsWithMe/inc/SearchForm.hpp b/tizen/MapsWithMe/inc/SearchForm.hpp index c3271364c5..610675b91f 100644 --- a/tizen/MapsWithMe/inc/SearchForm.hpp +++ b/tizen/MapsWithMe/inc/SearchForm.hpp @@ -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); diff --git a/tizen/MapsWithMe/res/screen-size-normal/IDF_MAIN_FORM.xml b/tizen/MapsWithMe/res/screen-size-normal/IDF_MAIN_FORM.xml index ed3c21617e..ffa48965fe 100644 --- a/tizen/MapsWithMe/res/screen-size-normal/IDF_MAIN_FORM.xml +++ b/tizen/MapsWithMe/res/screen-size-normal/IDF_MAIN_FORM.xml @@ -25,4 +25,9 @@ + + + + + diff --git a/tizen/MapsWithMe/src/Constants.cpp b/tizen/MapsWithMe/src/Constants.cpp index 43aff5b40b..08b385f5eb 100644 --- a/tizen/MapsWithMe/src/Constants.cpp +++ b/tizen/MapsWithMe/src/Constants.cpp @@ -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; diff --git a/tizen/MapsWithMe/src/FormFactory.cpp b/tizen/MapsWithMe/src/FormFactory.cpp index 50a3408843..f66410d6f5 100644 --- a/tizen/MapsWithMe/src/FormFactory.cpp +++ b/tizen/MapsWithMe/src/FormFactory.cpp @@ -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) diff --git a/tizen/MapsWithMe/src/MapsWithMeForm.cpp b/tizen/MapsWithMe/src/MapsWithMeForm.cpp index 6914ea910b..7b781c0d14 100644 --- a/tizen/MapsWithMe/src/MapsWithMeForm.cpp +++ b/tizen/MapsWithMe/src/MapsWithMeForm.cpp @@ -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(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(pArgs->GetAt(0)); + m_searchText = *pSearchText; + m_searchBarEnabled = true; + } + pArgs->RemoveAll(true); + delete pArgs; } + + UpdateButtons(); } diff --git a/tizen/MapsWithMe/src/SearchForm.cpp b/tizen/MapsWithMe/src/SearchForm.cpp index 477cd128a0..e46e9fc94f 100644 --- a/tizen/MapsWithMe/src/SearchForm.cpp +++ b/tizen/MapsWithMe/src/SearchForm.cpp @@ -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(pArgs->GetAt(0)); + m_searchBar->SetText(*pSearchText); + Search(GetSearchString()); + } + pArgs->RemoveAll(true); + delete pArgs; } }