Repo created
This commit is contained in:
parent
4af19165ec
commit
68073add76
12458 changed files with 12350765 additions and 2 deletions
111
libs/map/gps_tracker.cpp
Normal file
111
libs/map/gps_tracker.cpp
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
#include "map/gps_tracker.hpp"
|
||||
#include "map/framework.hpp"
|
||||
|
||||
#include "platform/platform.hpp"
|
||||
|
||||
#include "base/file_name_utils.hpp"
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "defines.hpp"
|
||||
|
||||
using namespace std::chrono;
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
char constexpr kEnabledKey[] = "GpsTrackingEnabled";
|
||||
|
||||
inline std::string GetFilePath()
|
||||
{
|
||||
return base::JoinPath(GetPlatform().WritableDir(), GPS_TRACK_FILENAME);
|
||||
}
|
||||
|
||||
inline bool GetSettingsIsEnabled()
|
||||
{
|
||||
bool enabled;
|
||||
if (!settings::Get(kEnabledKey, enabled))
|
||||
enabled = false;
|
||||
return enabled;
|
||||
}
|
||||
|
||||
inline void SetSettingsIsEnabled(bool enabled)
|
||||
{
|
||||
settings::Set(kEnabledKey, enabled);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
GpsTracker & GpsTracker::Instance()
|
||||
{
|
||||
static GpsTracker instance;
|
||||
return instance;
|
||||
}
|
||||
|
||||
GpsTracker::GpsTracker() : m_enabled(GetSettingsIsEnabled()), m_track(GetFilePath(), std::make_unique<GpsTrackFilter>())
|
||||
{}
|
||||
|
||||
void GpsTracker::SetEnabled(bool enabled)
|
||||
{
|
||||
if (enabled == m_enabled)
|
||||
return;
|
||||
|
||||
SetSettingsIsEnabled(enabled);
|
||||
m_enabled = enabled;
|
||||
|
||||
if (enabled)
|
||||
m_track.Clear();
|
||||
}
|
||||
|
||||
void GpsTracker::Clear()
|
||||
{
|
||||
m_track.Clear();
|
||||
}
|
||||
|
||||
bool GpsTracker::IsEnabled() const
|
||||
{
|
||||
return m_enabled;
|
||||
}
|
||||
|
||||
bool GpsTracker::IsEmpty() const
|
||||
{
|
||||
return m_track.IsEmpty();
|
||||
}
|
||||
|
||||
size_t GpsTracker::GetTrackSize() const
|
||||
{
|
||||
return m_track.GetSize();
|
||||
}
|
||||
|
||||
TrackStatistics GpsTracker::GetTrackStatistics() const
|
||||
{
|
||||
return m_track.GetTrackStatistics();
|
||||
}
|
||||
|
||||
ElevationInfo const & GpsTracker::GetElevationInfo() const
|
||||
{
|
||||
return m_track.GetElevationInfo();
|
||||
}
|
||||
|
||||
void GpsTracker::Connect(TGpsTrackDiffCallback const & fn)
|
||||
{
|
||||
m_track.SetCallback(fn);
|
||||
}
|
||||
|
||||
void GpsTracker::Disconnect()
|
||||
{
|
||||
m_track.SetCallback(nullptr);
|
||||
}
|
||||
|
||||
void GpsTracker::OnLocationUpdated(location::GpsInfo const & info)
|
||||
{
|
||||
if (!m_enabled)
|
||||
return;
|
||||
m_track.AddPoint(info);
|
||||
}
|
||||
|
||||
void GpsTracker::ForEachTrackPoint(GpsTrackCallback const & callback) const
|
||||
{
|
||||
CHECK(callback != nullptr, ("Callback should be provided"));
|
||||
m_track.ForEachPoint(callback);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue