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"
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));
54 CrossSectionWidget::Prepare(ContainerWindow
&parent
, const PixelRect
&rc
)
56 const Look
&look
= UIGlobals::GetLook();
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
);
72 CrossSectionWidget::Unprepare()
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
);
88 CrossSectionWidget::Hide()
92 CommonInterface::GetLiveBlackboard().RemoveListener(*this);
96 CrossSectionWidget::OnCalculatedUpdate(const MoreData
&basic
,
97 const DerivedInfo
&calculated
)
99 Update(basic
, calculated
, CommonInterface::GetMapSettings().airspace
);