diff --git a/tizen/MapsWithMe/inc/AboutForm.hpp b/tizen/MapsWithMe/inc/AboutForm.hpp index d437ddc805..bf50d3d6fb 100644 --- a/tizen/MapsWithMe/inc/AboutForm.hpp +++ b/tizen/MapsWithMe/inc/AboutForm.hpp @@ -13,7 +13,7 @@ public: bool Initialize(void); virtual result OnInitializing(void); virtual void OnFormBackRequested(Tizen::Ui::Controls::Form & source); - virtual void OnActionPerformed(const Tizen::Ui::Control & source, int actionId); + virtual void OnActionPerformed(Tizen::Ui::Control const & source, int actionId); private: static const int ID_CLOSE = 101; diff --git a/tizen/MapsWithMe/inc/FormFactory.hpp b/tizen/MapsWithMe/inc/FormFactory.hpp index c500d63e3e..94565875b5 100644 --- a/tizen/MapsWithMe/inc/FormFactory.hpp +++ b/tizen/MapsWithMe/inc/FormFactory.hpp @@ -8,6 +8,7 @@ extern const wchar_t * FORM_DOWNLOAD_GROUP; extern const wchar_t * FORM_DOWNLOAD_COUNTRY; extern const wchar_t * FORM_DOWNLOAD_REGION; extern const wchar_t * FORM_ABOUT; +extern const wchar_t * FORM_SEARCH; class FormFactory diff --git a/tizen/MapsWithMe/inc/SceneRegister.hpp b/tizen/MapsWithMe/inc/SceneRegister.hpp index 7e88f63817..9e26b16df6 100644 --- a/tizen/MapsWithMe/inc/SceneRegister.hpp +++ b/tizen/MapsWithMe/inc/SceneRegister.hpp @@ -7,6 +7,7 @@ extern const wchar_t * SCENE_DOWNLOAD_GROUP; extern const wchar_t * SCENE_DOWNLOAD_COUNTRY; extern const wchar_t * SCENE_DOWNLOAD_REGION; extern const wchar_t * SCENE_ABOUT; +extern const wchar_t * SCENE_SEARCH; class SceneRegister { diff --git a/tizen/MapsWithMe/inc/SearchForm.hpp b/tizen/MapsWithMe/inc/SearchForm.hpp new file mode 100644 index 0000000000..ad28dbc0ef --- /dev/null +++ b/tizen/MapsWithMe/inc/SearchForm.hpp @@ -0,0 +1,55 @@ +#pragma once + +#include +#include "../../../search/result.hpp" + +class Framework; + +class SearchForm: public Tizen::Ui::Controls::Form +, public Tizen::Ui::Controls::IFormBackEventListener +, public Tizen::Ui::IActionEventListener +, public Tizen::Ui::Controls::IScrollEventListener +, public Tizen::Ui::Controls::IListViewItemProviderF +, public Tizen::Ui::Controls::IListViewItemEventListener +, public Tizen::Ui::ITextEventListener +{ +public: + SearchForm(); + virtual ~SearchForm(void); + + bool Initialize(void); +private: + + virtual result OnInitializing(void); + + // ITextEventListener + virtual void OnTextValueChanged(Tizen::Ui::Control const & source); + virtual void OnTextValueChangeCanceled(Tizen::Ui::Control const & source){} + // IFormBackEventListener + virtual void OnFormBackRequested(Tizen::Ui::Controls::Form & source); + // IActionEventListener + virtual void OnActionPerformed(Tizen::Ui::Control const & source, int actionId); + //IListViewItemProvider + virtual Tizen::Ui::Controls::ListItemBase * CreateItem (int index, float itemWidth); + virtual bool DeleteItem (int index, Tizen::Ui::Controls::ListItemBase * pItem, float itemWidth); + virtual int GetItemCount(void); + // IListViewItemEventListener + virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView & listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state){} + virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView & listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status); + 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) {} + // IScrollEventListener + virtual void OnScrollEndReached (Tizen::Ui::Control & source, Tizen::Ui::Controls::ScrollEndEvent type){}; + virtual void OnScrollPositionChanged (Tizen::Ui::Control & source, int scrollPosition); + // search + void OnSearchResultsReceived(search::Results const & results); + + void UpdateList(); + Tizen::Base::String GetSearchString() const; + bool IsShowCategories() const; + void Search(Tizen::Base::String const & val); + +private: + search::Results m_curResults; + Tizen::Ui::Controls::SearchBar * m_searchBar; +}; diff --git a/tizen/MapsWithMe/res/screen-density-high/search/single-result.png b/tizen/MapsWithMe/res/screen-density-high/search/single-result.png new file mode 100644 index 0000000000..7e2009f84d Binary files /dev/null and b/tizen/MapsWithMe/res/screen-density-high/search/single-result.png differ diff --git a/tizen/MapsWithMe/res/screen-density-high/search/suggestion-result.png b/tizen/MapsWithMe/res/screen-density-high/search/suggestion-result.png new file mode 100644 index 0000000000..2b32280594 Binary files /dev/null and b/tizen/MapsWithMe/res/screen-density-high/search/suggestion-result.png differ diff --git a/tizen/MapsWithMe/res/screen-size-normal/IDF_SEARCH_FORM.xml b/tizen/MapsWithMe/res/screen-size-normal/IDF_SEARCH_FORM.xml new file mode 100644 index 0000000000..260580cbb2 --- /dev/null +++ b/tizen/MapsWithMe/res/screen-size-normal/IDF_SEARCH_FORM.xml @@ -0,0 +1,24 @@ + + + + + + 720 +
+ + + + + + + + + + + + + + +
diff --git a/tizen/MapsWithMe/src/AboutForm.cpp b/tizen/MapsWithMe/src/AboutForm.cpp index 084d7c68fd..0d8f49c1a0 100644 --- a/tizen/MapsWithMe/src/AboutForm.cpp +++ b/tizen/MapsWithMe/src/AboutForm.cpp @@ -54,7 +54,7 @@ result AboutForm::OnInitializing(void) return E_SUCCESS; } -void AboutForm::OnActionPerformed(const Tizen::Ui::Control & source, int actionId) +void AboutForm::OnActionPerformed(Tizen::Ui::Control const & source, int actionId) { switch(actionId) { diff --git a/tizen/MapsWithMe/src/AppResourceId.cpp b/tizen/MapsWithMe/src/AppResourceId.cpp index f5c84700a2..2baa329a9c 100644 --- a/tizen/MapsWithMe/src/AppResourceId.cpp +++ b/tizen/MapsWithMe/src/AppResourceId.cpp @@ -7,10 +7,12 @@ const wchar_t* IDC_DOWNLOAD_LISTVIEW = L"IDC_DOWNLOAD_LISTVIEW"; const wchar_t* IDC_ENABLE_GPS = L"IDC_ENABLE_GPS"; const wchar_t* IDC_ENABLE_SCALE_BUTTONS_CB = L"IDC_ENABLE_SCALE_BUTTONS_CB"; const wchar_t* IDC_FOOTS_CHECKBUTTON = L"IDC_FOOTS_CHECKBUTTON"; +const wchar_t* IDC_LISTVIEW = L"IDC_LISTVIEW"; const wchar_t* IDC_MEASUREMENT_NOTE = L"IDC_MEASUREMENT_NOTE"; const wchar_t* IDC_MEASUREMENT_UNITS_LABEL = L"IDC_MEASUREMENT_UNITS_LABEL"; const wchar_t* IDC_MENU = L"IDC_MENU"; const wchar_t* IDC_METERS_CHECKBUTTON = L"IDC_METERS_CHECKBUTTON"; +const wchar_t* IDC_SEARCHBAR = L"IDC_SEARCHBAR"; const wchar_t* IDC_VERSION_LABEL = L"IDC_VERSION_LABEL"; const wchar_t* IDC_WEB = L"IDC_WEB"; const wchar_t* IDC_ZOOM_IN = L"IDC_ZOOM_IN"; @@ -18,8 +20,11 @@ const wchar_t* IDC_ZOOM_OUT = L"IDC_ZOOM_OUT"; const wchar_t* IDF_ABOUT_FORM = L"IDF_ABOUT_FORM"; const wchar_t* IDF_DOWNLOAD_FORM = L"IDF_DOWNLOAD_FORM"; const wchar_t* IDF_MAIN_FORM = L"IDF_MAIN_FORM"; +const wchar_t* IDF_SEARCH_FORM = L"IDF_SEARCH_FORM"; const wchar_t* IDS_ABOUT = L"IDS_ABOUT"; const wchar_t* IDS_ARE_YOU_SURE = L"IDS_ARE_YOU_SURE"; +const wchar_t* IDS_ATM = L"IDS_ATM"; +const wchar_t* IDS_BANK = L"IDS_BANK"; const wchar_t* IDS_BECOME_A_PRO = L"IDS_BECOME_A_PRO"; const wchar_t* IDS_CANCEL = L"IDS_CANCEL"; const wchar_t* IDS_CANCEL_DOWNLOAD = L"IDS_CANCEL_DOWNLOAD"; @@ -27,15 +32,29 @@ const wchar_t* IDS_DELETE = L"IDS_DELETE"; const wchar_t* IDS_DOWNLOAD = L"IDS_DOWNLOAD"; const wchar_t* IDS_DOWNLOAD_COUNTRY_FAILED = L"IDS_DOWNLOAD_COUNTRY_FAILED"; const wchar_t* IDS_DOWNLOAD_MAPS = L"IDS_DOWNLOAD_MAPS"; +const wchar_t* IDS_ENTERTAINMENT = L"IDS_ENTERTAINMENT"; +const wchar_t* IDS_FOOD = L"IDS_FOOD"; +const wchar_t* IDS_FUEL = L"IDS_FUEL"; +const wchar_t* IDS_HOSPITAL = L"IDS_HOSPITAL"; +const wchar_t* IDS_HOTEL = L"IDS_HOTEL"; const wchar_t* IDS_KILOMETRES = L"IDS_KILOMETRES"; const wchar_t* IDS_MB = L"IDS_MB"; const wchar_t* IDS_MEASUREMENT_UNITS = L"IDS_MEASUREMENT_UNITS"; const wchar_t* IDS_MEASUREMENT_UNITS_SUMMARY = L"IDS_MEASUREMENT_UNITS_SUMMARY"; const wchar_t* IDS_MILES = L"IDS_MILES"; +const wchar_t* IDS_NO_SEARCH_RESULTS_FOUND = L"IDS_NO_SEARCH_RESULTS_FOUND"; +const wchar_t* IDS_PARKING = L"IDS_PARKING"; +const wchar_t* IDS_PHARMACY = L"IDS_PHARMACY"; +const wchar_t* IDS_POLICE = L"IDS_POLICE"; +const wchar_t* IDS_POST = L"IDS_POST"; const wchar_t* IDS_PREF_ZOOM_SUMMARY = L"IDS_PREF_ZOOM_SUMMARY"; const wchar_t* IDS_PREF_ZOOM_TITLE = L"IDS_PREF_ZOOM_TITLE"; const wchar_t* IDS_SETTINGS = L"IDS_SETTINGS"; const wchar_t* IDS_SHARE_MY_LOCATION = L"IDS_SHARE_MY_LOCATION"; +const wchar_t* IDS_SHOP = L"IDS_SHOP"; +const wchar_t* IDS_TOILET = L"IDS_TOILET"; +const wchar_t* IDS_TOURISM = L"IDS_TOURISM"; +const wchar_t* IDS_TRANSPORT = L"IDS_TRANSPORT"; const wchar_t* IDS_VERSION = L"IDS_VERSION"; // main form const wchar_t * IDB_MY_POSITION_NORMAL = L"main_form_menu/my-position-normal.png"; @@ -49,3 +68,6 @@ const wchar_t * IDB_MWM_PRO = L"main_menu/MWMProIcon.png"; const wchar_t * IDB_DOWNLOAD_MAP = L"main_menu/IconMap.png"; const wchar_t * IDB_SETTINGS = L"main_menu/IconSettings.png"; const wchar_t * IDB_SHARE = L"main_menu/IconShare.png"; +//search +const wchar_t * IDB_SINGLE_RESULT = L"search/single-result.png"; +const wchar_t * IDB_SUGGESTION_RESULT = L"search/suggestion-result.png"; diff --git a/tizen/MapsWithMe/src/FormFactory.cpp b/tizen/MapsWithMe/src/FormFactory.cpp index aa06d70c08..454ddab407 100644 --- a/tizen/MapsWithMe/src/FormFactory.cpp +++ b/tizen/MapsWithMe/src/FormFactory.cpp @@ -2,6 +2,7 @@ #include "MapsWithMeForm.hpp" #include "SettingsForm.hpp" #include "AboutForm.hpp" +#include "SearchForm.hpp" #include "DownloadCountryForm.hpp" #include "../../../base/logging.hpp" #include "../../../platform/tizen_utils.hpp" @@ -16,6 +17,7 @@ const wchar_t * FORM_DOWNLOAD_GROUP = L"FormDownloadGroup"; const wchar_t * FORM_DOWNLOAD_COUNTRY = L"FormDownloadCountry"; const wchar_t * FORM_DOWNLOAD_REGION = L"FormDownloadRegion"; const wchar_t * FORM_ABOUT = L"FormAbout"; +const wchar_t * FORM_SEARCH = L"FormSearch"; FormFactory::FormFactory(void) @@ -61,6 +63,12 @@ Tizen::Ui::Controls::Form * FormFactory::CreateFormN(String const & formId, Scen pSceneManager->AddSceneEventListener(sceneId, *pForm); pNewForm = pForm; } + else if (formId == FORM_SEARCH) + { + SearchForm * pForm = new SearchForm(); + pForm->Initialize(); + pNewForm = pForm; + } return pNewForm; } diff --git a/tizen/MapsWithMe/src/MapsWithMeForm.cpp b/tizen/MapsWithMe/src/MapsWithMeForm.cpp index 072d619822..01aa61c1aa 100644 --- a/tizen/MapsWithMe/src/MapsWithMeForm.cpp +++ b/tizen/MapsWithMe/src/MapsWithMeForm.cpp @@ -141,6 +141,11 @@ void MapsWithMeForm::OnActionPerformed(Tizen::Ui::Control const & source, int ac } case ID_SEARCH: { + ::Framework * pFramework = tizen::Framework::GetInstance(); + pFramework->PrepareSearch(false); + SceneManager * pSceneManager = SceneManager::GetInstance(); + pSceneManager->GoForward(ForwardSceneTransition(SCENE_SEARCH, + SCENE_TRANSITION_ANIMATION_TYPE_LEFT, SCENE_HISTORY_OPTION_ADD_HISTORY, SCENE_DESTROY_OPTION_KEEP)); break; } } diff --git a/tizen/MapsWithMe/src/SceneRegister.cpp b/tizen/MapsWithMe/src/SceneRegister.cpp index 86b7183c80..fabff9b369 100644 --- a/tizen/MapsWithMe/src/SceneRegister.cpp +++ b/tizen/MapsWithMe/src/SceneRegister.cpp @@ -11,6 +11,7 @@ const wchar_t * SCENE_DOWNLOAD_GROUP = L"ScnDownloadGroup"; const wchar_t * SCENE_DOWNLOAD_COUNTRY = L"ScnDownloadCountry"; const wchar_t * SCENE_DOWNLOAD_REGION = L"ScnDownloadRegion"; const wchar_t * SCENE_ABOUT = L"ScnAbout"; +const wchar_t * SCENE_SEARCH = L"ScnSearch"; SceneRegister::SceneRegister(void) { @@ -36,4 +37,5 @@ SceneRegister::RegisterAllScenes(void) pSceneManager->RegisterScene(SCENE_DOWNLOAD_COUNTRY, FORM_DOWNLOAD_COUNTRY, PANEL_BLANK); pSceneManager->RegisterScene(SCENE_DOWNLOAD_REGION, FORM_DOWNLOAD_REGION, PANEL_BLANK); pSceneManager->RegisterScene(SCENE_ABOUT, FORM_ABOUT, PANEL_BLANK); + pSceneManager->RegisterScene(SCENE_SEARCH, FORM_SEARCH, PANEL_BLANK); } diff --git a/tizen/MapsWithMe/src/SearchForm.cpp b/tizen/MapsWithMe/src/SearchForm.cpp new file mode 100644 index 0000000000..4b9a986d54 --- /dev/null +++ b/tizen/MapsWithMe/src/SearchForm.cpp @@ -0,0 +1,297 @@ +#include "SearchForm.hpp" +#include "SceneRegister.hpp" +#include "MapsWithMeForm.hpp" +#include "AppResourceId.h" + +#include "../../../map/user_mark.hpp" +#include "../../../map/framework.hpp" +#include "../../../search/result.hpp" +#include "../../../platform/settings.hpp" +#include "../../../platform/tizen_utils.hpp" +#include "../../../base/logging.hpp" + +#include +#include +#include +#include "Utils.hpp" +#include "Framework.hpp" + +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::Graphics; +using namespace search; + +namespace detail +{ +typedef vector CategoriesT; +CategoriesT const & GetCategories() +{ + static CategoriesT vr; + if (vr.empty()) + { + vr.push_back(GetString(IDS_FOOD)); + vr.push_back(GetString(IDS_SHOP)); + vr.push_back(GetString(IDS_HOTEL)); + vr.push_back(GetString(IDS_TOURISM)); + vr.push_back(GetString(IDS_ENTERTAINMENT)); + vr.push_back(GetString(IDS_ATM)); + vr.push_back(GetString(IDS_BANK)); + vr.push_back(GetString(IDS_TRANSPORT)); + vr.push_back(GetString(IDS_FUEL)); + vr.push_back(GetString(IDS_PARKING)); + vr.push_back(GetString(IDS_PHARMACY)); + vr.push_back(GetString(IDS_HOSPITAL)); + vr.push_back(GetString(IDS_TOILET)); + vr.push_back(GetString(IDS_POST)); + vr.push_back(GetString(IDS_POLICE)); + } + return vr; +} + +::Framework * GetFramework() +{ + return ::tizen::Framework::GetInstance(); +} + +static Color const white(0xFF,0xFF,0xFF); +static Color const gray(0xB0,0xB0,0xB0); + +static int topHght = 27; //margin from top to text +static int btwWdth = 20; //margin between texts +static int imgWdth = 60; //left img width +static int imgHght = 60; //left img height +static int lstItmHght = 120; //list item height +static int backWdth = 150; //back txt width +static int mainFontSz = 45; //big font +static int minorFontSz = 25; //small font + +CustomItem * CreateFeatureItem(Result const & val, double itemWidth) +{ + String itemText = val.GetString(); + CustomItem * pItem = new CustomItem(); + + pItem->Construct(FloatDimension(itemWidth, lstItmHght), LIST_ANNEX_STYLE_NORMAL); + FloatRectangle imgRect(btwWdth, topHght, imgWdth, imgHght); + pItem->AddElement(imgRect, 0, *GetBitmap(IDB_SINGLE_RESULT), null, null); + int txtWdht = itemWidth - btwWdth - imgWdth - backWdth; + pItem->AddElement(FloatRectangle(btwWdth + imgWdth + btwWdth, 15, txtWdht, imgHght), 1, val.GetString(), mainFontSz, white, white, white); + pItem->AddElement(FloatRectangle(btwWdth + imgWdth + btwWdth, 60.0f, txtWdht, imgHght), 2, val.GetRegionString(), minorFontSz, white, white, white); + String feature = val.GetFeatureType(); + int ind; + if (feature.IndexOf(" ", 0, ind) == E_SUCCESS) + { + String s; + feature.SubString(0,ind,s); + feature = s; + } + pItem->AddElement(FloatRectangle(itemWidth - backWdth, 10, backWdth, imgHght), 3, feature, minorFontSz, gray, gray, gray); + double lat, lon; + GetFramework()->GetCurrentPosition(lat, lon); + double north = 0; + string distance; + double azimut; + GetFramework()->GetDistanceAndAzimut(val.GetFeatureCenter(), lat, lon, north, distance, azimut); + String dist(distance.c_str()); + pItem->AddElement(FloatRectangle(itemWidth - backWdth, 50, backWdth, imgHght), 4, dist, minorFontSz, gray, gray, gray); + + return pItem; +} + +CustomItem * CreateSuggestionItem(String const & val, double itemWidth) +{ + String itemText = val; + CustomItem * pItem = new CustomItem(); + + pItem->Construct(FloatDimension(itemWidth, lstItmHght), LIST_ANNEX_STYLE_NORMAL); + FloatRectangle imgRect(btwWdth, topHght, imgWdth, imgHght); + pItem->AddElement(imgRect, 0, *GetBitmap(IDB_SUGGESTION_RESULT), null, null); + pItem->AddElement(FloatRectangle(btwWdth + imgWdth + btwWdth, topHght, itemWidth, imgHght), 1, itemText, mainFontSz, white, white, white); + + return pItem; +} + +} // detail + +using namespace detail; + + +SearchForm::SearchForm() +:m_searchBar(0) +{ +} + +SearchForm::~SearchForm(void) +{ +} + +bool SearchForm::Initialize(void) +{ + Construct(IDF_SEARCH_FORM); + return true; +} + +result SearchForm::OnInitializing(void) +{ + m_searchBar = static_cast(GetControl(IDC_SEARCHBAR, true)); + m_searchBar->SetMode(SEARCH_BAR_MODE_INPUT); + m_searchBar->AddActionEventListener(*this); + m_searchBar->AddTextEventListener(*this); + + ListView * pList = static_cast(GetControl(IDC_LISTVIEW, true)); + pList->SetItemProvider(*this); + pList->AddListViewItemEventListener(*this); + pList->AddScrollEventListener(*this); + + SetFormBackEventListener(this); + + return E_SUCCESS; +} + +void SearchForm::OnActionPerformed(Tizen::Ui::Control const & source, int actionId) +{ + if (actionId == m_searchBar->GetButtonActionId()) + { + SceneManager * pSceneManager = SceneManager::GetInstance(); + pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT)); + } +} + +void SearchForm::OnTextValueChanged(Tizen::Ui::Control const & source) +{ + Search(GetSearchString()); +} + +void SearchForm::OnSearchResultsReceived(search::Results const & results) +{ + if (results.IsEndMarker()) + { + if (!results.IsEndedNormal()) + m_curResults.Clear(); + UpdateList(); + } + else + m_curResults = results; +} + +void SearchForm::OnFormBackRequested(Tizen::Ui::Controls::Form & source) +{ + SceneManager * pSceneManager = SceneManager::GetInstance(); + pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT)); +} + +ListItemBase * SearchForm::CreateItem (int index, float itemWidth) +{ + if(IsShowCategories()) + { + return CreateSuggestionItem(GetCategories()[index], itemWidth); + } + else + { + if (m_curResults.GetCount() == 0) + { + String itemText = GetString(IDS_NO_SEARCH_RESULTS_FOUND); + CustomItem * pItem = new CustomItem(); + pItem->Construct(FloatDimension(itemWidth, lstItmHght), LIST_ANNEX_STYLE_NORMAL); + pItem->AddElement(FloatRectangle(btwWdth, topHght, itemWidth, imgHght), 0, itemText, mainFontSz, white, white, white); + return pItem; + } + else + { + Result const & res = m_curResults.GetResult(index); + if (res.GetResultType() == Result::RESULT_SUGGESTION) + return CreateSuggestionItem(res.GetString(), itemWidth); + else + return CreateFeatureItem(res, itemWidth); + } + } +} + +void SearchForm::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView & listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status) +{ + if(IsShowCategories()) + { + m_searchBar->SetText(GetCategories()[index]); + Search(GetSearchString()); + Invalidate(true); + } + else + { + if (m_curResults.GetCount() > 0) + { + Result res = m_curResults.GetResult(index); + if (res.GetResultType() == Result::RESULT_SUGGESTION) + { + m_searchBar->SetText(res.GetString()); + Search(GetSearchString()); + Invalidate(true); + } + else + { + GetFramework()->ShowSearchResult(res); + SceneManager * pSceneManager = SceneManager::GetInstance(); + pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT)); + } + } + } +} + +void SearchForm::OnScrollPositionChanged(Tizen::Ui::Control & source, int scrollPosition) +{ + m_searchBar->HideKeypad(); +} + +bool SearchForm::DeleteItem (int index, Tizen::Ui::Controls::ListItemBase * pItem, float itemWidth) +{ + delete pItem; + return true; +} + +int SearchForm::GetItemCount(void) +{ + if (IsShowCategories()) + { + return GetCategories().size(); + } + else + { + if (m_curResults.GetCount() == 0) + return 1; + else + return m_curResults.GetCount(); + } +} + +void SearchForm::UpdateList() +{ + ListView * pList = static_cast(GetControl(IDC_LISTVIEW)); + pList->UpdateList(); + pList->RemoveScrollEventListener(*this); + pList->ScrollToItem(0); + pList->AddScrollEventListener(*this); +} + +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); + double lat, lon; + GetFramework()->GetCurrentPosition(lat, lon); + m_params.SetPosition(lat, lon); + + GetFramework()->Search(m_params); +} + +String SearchForm::GetSearchString() const +{ + return m_searchBar->GetText(); +} + +bool SearchForm::IsShowCategories() const +{ + return GetSearchString().IsEmpty(); +}