Rose
HamChrono.h
Go to the documentation of this file.
1 
8 #pragma once
9 
10 #include "Cache.h"
11 #include "MapProjection.h"
12 #include "Menu.h"
13 #include "Rose.h"
14 #include "SettingsNames.h"
15 #include "Signals.h"
16 #include "SystemMonitor.h"
17 #include "TextField.h"
18 #include "Timer.h"
19 
22  ExitButton,
23 };
24 
25 static constexpr std::array<rose::TextField::FieldSettings,3> ConfigTextFieldSettings = {
26  rose::TextField::FieldSettings{rose::DataType::String, set::CALLSIGN, "Call", "", 10, 'M'},
27  rose::TextField::FieldSettings{rose::DataType::Real, set::QTH_Lat, "Lat", "Deg", 8, '0'},
28  rose::TextField::FieldSettings{rose::DataType::Real, set::QTH_Lon, "Lon", "Deg", 9, '0'},
29 };
30 
31 static constexpr std::array<rose::MenuButtonData,2> ConfigMenu{
34 };
35 
40 class HamChrono : public rose::Rose {
41 protected:
42  int mMapWidth{};
43  int mMapHeight{};
44  int mAboveMap{};
45  int mLeftMap{};
46 
47  rose::SecondTickPtr mSecondTick{};
48  rose::SystemData mSystemData{};
49 
50  std::shared_ptr<rose::MapProjection> mMapProjection{};
51 
52  std::unique_ptr<rose::WebFileCache> solarImageCache;
53  std::unique_ptr<rose::WebFileCache> mCelesTrackEphemeris;
54  std::unique_ptr<rose::WebFileCache> mClearSkyEphemeris;
55  std::shared_ptr<rose::WebFileCache> clearSkyMaps;
56 
57  std::shared_ptr<rose::Slot<uint32_t>> mSolarImageCacheSlot;
58  std::shared_ptr<rose::Slot<uint32_t>> mEphemerisSlot;
59 
60  rose::GeoPosition mQthLocation{};
61 
62  void callsignBlock(std::shared_ptr<rose::Row> &topRow, std::shared_ptr<rose::Column> &sideColumn);
63 
64  void switchBox(std::shared_ptr<rose::Grid> &grid);
65 
66  std::shared_ptr<rose::Slot<rose::Button::SignalType>> mConfigButtonRx{};
67 
68 public:
69  HamChrono() = delete;
70  ~HamChrono() override = default;
71 
72  HamChrono(int argc, char **argv, const char *name) : rose::Rose(argc, argv, name) {}
73 
74  void build();
75 };
76 
Exit the application.
Definition: ConwayLife.h:151
uint32_t SignalToken
A type definition for SignalToken used to identify the source of a Signal.
Definition: Types.h:53
The value that can be used for the first SignalToken of a user application.
Definition: Constants.h:61
Information to specify a Menu Button.
Definition: Menu.h:23
An abstraction of a geographic position.
Definition: MapProjection.h:165
A clock for Amateur Radio.
Definition: HamChrono.h:40
Classes and functions for caching data fetched from the network.
Definition: TextField.h:25
UserSignalTokenValues
Definition: HamChrono.h:20
Gather system data to transmit on Signal objects.
Definition: SystemMonitor.h:24
Exit the application.
Definition: HamChrono.h:21
Establish an intra-application signaling protocol.
A class to display system related information.