Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tizen
diff options
context:
space:
mode:
authorSergey Pisarchik <pisarchik@mapswithme.com>2014-07-23 23:21:54 +0400
committerAlex Zolotarev <alex@maps.me>2015-09-23 02:22:33 +0300
commit01149efe0412e66be2e02f4dd85bde2ecfd92bc8 (patch)
tree1f6d1b6612ffefbcd8044b8c250429f8b5178e6c /tizen
parentd082fd471e3eaebdf3ffe2d937bd8917e84f19ee (diff)
[Tizen] Add compass to bookmark page.
Diffstat (limited to 'tizen')
-rw-r--r--tizen/MapsWithMe/inc/BookMarkSplitPanel.hpp9
-rw-r--r--tizen/MapsWithMe/inc/BookMarkUtils.hpp1
-rw-r--r--tizen/MapsWithMe/src/BookMarkSplitPanel.cpp45
-rw-r--r--tizen/MapsWithMe/src/BookMarkUtils.cpp13
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)