diff options
author | Sergey Pisarchik <pisarchik@mapswithme.com> | 2014-07-23 23:21:54 +0400 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-23 02:22:33 +0300 |
commit | 01149efe0412e66be2e02f4dd85bde2ecfd92bc8 (patch) | |
tree | 1f6d1b6612ffefbcd8044b8c250429f8b5178e6c /tizen | |
parent | d082fd471e3eaebdf3ffe2d937bd8917e84f19ee (diff) |
[Tizen] Add compass to bookmark page.
Diffstat (limited to 'tizen')
-rw-r--r-- | tizen/MapsWithMe/inc/BookMarkSplitPanel.hpp | 9 | ||||
-rw-r--r-- | tizen/MapsWithMe/inc/BookMarkUtils.hpp | 1 | ||||
-rw-r--r-- | tizen/MapsWithMe/src/BookMarkSplitPanel.cpp | 45 | ||||
-rw-r--r-- | tizen/MapsWithMe/src/BookMarkUtils.cpp | 13 |
4 files changed, 66 insertions, 2 deletions
diff --git a/tizen/MapsWithMe/inc/BookMarkSplitPanel.hpp b/tizen/MapsWithMe/inc/BookMarkSplitPanel.hpp index e51e4d432b..69fc9fdef2 100644 --- a/tizen/MapsWithMe/inc/BookMarkSplitPanel.hpp +++ b/tizen/MapsWithMe/inc/BookMarkSplitPanel.hpp @@ -1,6 +1,7 @@ #pragma once #include <FUi.h> +#include <FUixSensor.h> class UserMark; class MapsWithMeForm; @@ -11,6 +12,7 @@ class BookMarkSplitPanel: public Tizen::Ui::Controls::SplitPanel , public Tizen::Ui::Controls::IListViewItemProviderF , public Tizen::Ui::Controls::IListViewItemEventListener , public Tizen::Ui::ITextEventListener +, public Tizen::Uix::Sensor::ISensorEventListener { public: BookMarkSplitPanel(); @@ -62,6 +64,9 @@ public: virtual void OnTextValueChangeCanceled (Tizen::Ui::Control const & source); virtual void OnTextValueChanged (Tizen::Ui::Control const & source); + // ISensorEventListener + virtual void OnDataReceived (Tizen::Uix::Sensor::SensorType sensorType, Tizen::Uix::Sensor::SensorData & sensorData, result r); + Tizen::Base::String GetHeaderText() const; Tizen::Base::String GetDistanceText() const; Tizen::Base::String GetCountryText() const; @@ -72,6 +77,8 @@ public: void UpdateState(); UserMark const * GetCurMark() const; bool IsBookMark() const; + + void UpdateCompass(); private: enum EButtons @@ -105,4 +112,6 @@ private: Tizen::Ui::Controls::ListView * m_pList; MapsWithMeForm * m_pMainForm; + Tizen::Uix::Sensor::SensorManager m_sensorManager; + double m_NorthAzimut; }; diff --git a/tizen/MapsWithMe/inc/BookMarkUtils.hpp b/tizen/MapsWithMe/inc/BookMarkUtils.hpp index 653c53848d..ab834619f8 100644 --- a/tizen/MapsWithMe/inc/BookMarkUtils.hpp +++ b/tizen/MapsWithMe/inc/BookMarkUtils.hpp @@ -27,6 +27,7 @@ Tizen::Base::String GetMarkName(UserMark const * pUserMark); Tizen::Base::String GetMarkType(UserMark const * pUserMark); Tizen::Base::String GetMarkCountry(UserMark const * pUserMark); Tizen::Base::String GetDistance(UserMark const * pUserMark); +double GetAzimut(UserMark const * pUserMark, double north); const wchar_t * GetColorBM(EColor color); const wchar_t * GetColorPPBM(EColor color); diff --git a/tizen/MapsWithMe/src/BookMarkSplitPanel.cpp b/tizen/MapsWithMe/src/BookMarkSplitPanel.cpp index 3c03b19ca5..072678de6c 100644 --- a/tizen/MapsWithMe/src/BookMarkSplitPanel.cpp +++ b/tizen/MapsWithMe/src/BookMarkSplitPanel.cpp @@ -12,6 +12,7 @@ #include "../../../platform/tizen_utils.hpp" #include "../../../base/logging.hpp" #include "../../../std/sstream.hpp" +#include <FUixSensor.h> using namespace Tizen::Base; using namespace Tizen::Ui::Controls; @@ -19,6 +20,7 @@ using namespace Tizen::Ui::Scenes; using namespace Tizen::Graphics; using namespace consts; using namespace bookmark; +using namespace Tizen::Uix::Sensor; using Tizen::Base::Collection::ArrayList; BookMarkSplitPanel::BookMarkSplitPanel() @@ -95,6 +97,11 @@ bool BookMarkSplitPanel::Construct(const Tizen::Graphics::FloatRectangle& rect) SetPane(m_pFirstPanel, SPLIT_PANEL_PANE_ORDER_FIRST); SetPane(m_pSecondPanel, SPLIT_PANEL_PANE_ORDER_SECOND); + m_sensorManager.Construct(); + if (m_sensorManager.IsAvailable(SENSOR_TYPE_MAGNETIC)) + m_sensorManager.AddSensorListener(*this, SENSOR_TYPE_MAGNETIC, 50, true); + m_NorthAzimut = 0; + return true; } @@ -176,8 +183,6 @@ Tizen::Ui::Controls::ListItemBase * BookMarkSplitPanel::CreateSettingsItem (floa pItem->Construct(FloatDimension(itemWidth, settingsItemHeight), LIST_ANNEX_STYLE_NORMAL); FloatRectangle imgRect(btwWdth, topHght, imgWdth, imgHght); - pItem->AddElement(imgRect, COMPAS_BACKGROUND_IMG, *GetBitmap(IDB_PLACE_PAGE_COMPASS), null, null); - pItem->AddElement(imgRect, COMPAS_IMG, *GetBitmap(IDB_PLACE_PAGE_COMPASS_BACKGROUND), null, null); if (IsBookMark()) { FloatRectangle colorImgRect(imgRect); @@ -240,6 +245,7 @@ void BookMarkSplitPanel::UpdateState() int const listSz = IsBookMark() ? allItemsHeight : headerSettingsHeight; m_pList->SetSize(m_pList->GetWidth(), listSz); m_pList->UpdateList(); + UpdateCompass(); m_pButton->SetPosition(btwWdth, listSz + btwWdth); m_pDummyMessageEdit->SetFocus(); m_pMessageEdit->SetShowState(IsBookMark()); @@ -354,3 +360,38 @@ void BookMarkSplitPanel::OnTextValueChanged (Tizen::Ui::Control const & source) GetBMMnger().SetBookMarkMessage(m_pMessageEdit->GetText()); UpdateState(); } + + +void BookMarkSplitPanel::UpdateCompass() +{ + Tizen::Graphics::Canvas * pCanvas = m_pList->GetCanvasN(); + if (pCanvas) + { + pCanvas->FillRectangle(consts::green, Rectangle(2,headerItemHeight + 2, 100,100)); + Bitmap const * pBTM_Back = GetBitmap(IDB_PLACE_PAGE_COMPASS_BACKGROUND); + int imgBackHeighDiv2 = pBTM_Back->GetHeight()/2; + Bitmap const * pBTM = GetBitmap(IDB_PLACE_PAGE_COMPASS); + int imgHeighDiv2 = pBTM->GetHeight()/2; + int centerX = btwWdth + imgHeighDiv2; + int centerY = headerItemHeight + btwWdth + imgHeighDiv2; + + + + pCanvas->DrawBitmap(Point(centerX - imgBackHeighDiv2, centerY - imgBackHeighDiv2), *pBTM_Back); + double dAzimut = GetAzimut(GetCurMark(), m_NorthAzimut); + pCanvas->DrawBitmap(Point(centerX, centerY), *pBTM, Point(imgHeighDiv2, imgHeighDiv2), (dAzimut/(2*M_PI))*360); + delete pCanvas; + } +} +void BookMarkSplitPanel::OnDataReceived(SensorType sensorType, SensorData & sensorData, result r) +{ + MagneticSensorData & data = static_cast< MagneticSensorData& >(sensorData); + m_NorthAzimut = atan2(data.y, data.x) - math::pi; + double const pi2 = 2.0*math::pi; + if (m_NorthAzimut < 0.0) + m_NorthAzimut += pi2; + else if (m_NorthAzimut > pi2) + m_NorthAzimut -= pi2; + + UpdateCompass(); +} diff --git a/tizen/MapsWithMe/src/BookMarkUtils.cpp b/tizen/MapsWithMe/src/BookMarkUtils.cpp index 33f4bdc156..4b334f7f27 100644 --- a/tizen/MapsWithMe/src/BookMarkUtils.cpp +++ b/tizen/MapsWithMe/src/BookMarkUtils.cpp @@ -83,6 +83,19 @@ Tizen::Base::String GetDistance(UserMark const * pUserMark) return dist.c_str(); } +double GetAzimut(UserMark const * pUserMark, double north) +{ + if (!pUserMark) + return 0; + double lat, lon; + GetFramework()->GetCurrentPosition(lat, lon); + string dist; + double azimut; + m2::PointD pt = pUserMark->GetOrg(); + GetFramework()->GetDistanceAndAzimut(pt, lat, lon, north, dist, azimut); + return azimut; +} + bool IsBookMark(UserMark const * pUserMark) { if (!pUserMark) |