android/GlueIOIOPort: fix spurious errors after IOIO baud rate change
[xcsoar.git] / src / CrossSection / CrossSectionWidget.cpp
blob68589bed3a295425dc5ea66de413995771859411
1 /*
2 Copyright_License {
4 XCSoar Glide Computer - http://www.xcsoar.org/
5 Copyright (C) 2000-2013 The XCSoar Project
6 A detailed list of copyright holders can be found in the file "AUTHORS".
8 This program is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License
10 as published by the Free Software Foundation; either version 2
11 of the License, or (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
24 #include "CrossSectionWidget.hpp"
25 #include "CrossSection/CrossSectionWindow.hpp"
26 #include "UIGlobals.hpp"
27 #include "Look/Look.hpp"
28 #include "Interface.hpp"
29 #include "Components.hpp"
31 void
32 CrossSectionWidget::Update(const MoreData &basic,
33 const DerivedInfo &calculated,
34 const AirspaceRendererSettings &settings)
36 CrossSectionWindow &w = *(CrossSectionWindow *)GetWindow();
38 w.ReadBlackboard(basic, calculated,
39 CommonInterface::GetComputerSettings().task.glide,
40 CommonInterface::GetComputerSettings().polar.glide_polar_task,
41 CommonInterface::GetMapSettings().airspace);
43 if (basic.location_available && basic.track_available) {
44 w.SetStart(basic.location);
45 w.SetDirection(basic.track);
46 w.SetRange(fixed(50000));
47 } else
48 w.SetInvalid();
50 w.Invalidate();
53 void
54 CrossSectionWidget::Prepare(ContainerWindow &parent, const PixelRect &rc)
56 const Look &look = UIGlobals::GetLook();
58 WindowStyle style;
59 style.Hide();
60 style.Disable();
62 CrossSectionWindow *w =
63 new CrossSectionWindow(look.cross_section, look.map.airspace, look.chart);
64 w->SetAirspaces(&airspace_database);
65 w->SetTerrain(terrain);
66 w->Create(parent, rc, style);
68 SetWindow(w);
71 void
72 CrossSectionWidget::Unprepare()
74 DeleteWindow();
77 void
78 CrossSectionWidget::Show(const PixelRect &rc)
80 Update(CommonInterface::Basic(), CommonInterface::Calculated(),
81 CommonInterface::GetMapSettings().airspace);
82 CommonInterface::GetLiveBlackboard().AddListener(*this);
84 WindowWidget::Show(rc);
87 void
88 CrossSectionWidget::Hide()
90 WindowWidget::Hide();
92 CommonInterface::GetLiveBlackboard().RemoveListener(*this);
95 void
96 CrossSectionWidget::OnCalculatedUpdate(const MoreData &basic,
97 const DerivedInfo &calculated)
99 Update(basic, calculated, CommonInterface::GetMapSettings().airspace);