blob: 7fe028aef9b21be796f4951d4c50d9625bd4b37b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
#pragma once
#include "qt/draw_widget.hpp"
#include "storage/index.hpp"
#include "platform/location.hpp"
#include "platform/location_service.hpp"
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <array>
#include <memory>
class Framework;
class QDockWidget;
class QLabel;
class QPushButton;
class QToolButton;
class TrafficMode;
namespace search { class Result; }
namespace qt
{
class MainWindow : public QMainWindow, location::LocationObserver
{
DrawWidget * m_pDrawWidget = nullptr; // TODO(mgsergio): Make indexing more informative.
std::array<QDockWidget *, 2> m_Docks;
QPushButton * m_downloadButton = nullptr;
QPushButton * m_retryButton = nullptr;
QLabel * m_downloadingStatusLabel = nullptr;
storage::TCountryId m_lastCountry;
std::unique_ptr<location::LocationService> const m_locationService;
// This object is managed by Qt memory system.
TrafficMode * m_trafficMode = nullptr;
QAction * m_pMyPositionAction = nullptr;
QAction * m_pCreateFeatureAction = nullptr;
QAction * m_selectionMode = nullptr;
QAction * m_clearSelection = nullptr;
QAction * m_pSearchAction = nullptr;
QAction * m_trafficEnableAction = nullptr;
QAction * m_saveTrafficSampleAction = nullptr;
QAction * m_quitTrafficModeAction = nullptr;
QToolButton * m_routePointsToolButton = nullptr;
QAction * m_selectStartRoutePoint = nullptr;
QAction * m_selectFinishRoutePoint = nullptr;
QAction * m_selectIntermediateRoutePoint = nullptr;
#ifdef BUILD_DESIGNER
QString const m_mapcssFilePath = nullptr;
QAction * m_pBuildStyleAction = nullptr;
QAction * m_pRecalculateGeomIndex = nullptr;
QAction * m_pDrawDebugRectAction = nullptr;
QAction * m_pGetStatisticsAction = nullptr;
QAction * m_pRunTestsAction = nullptr;
QAction * m_pBuildPhonePackAction = nullptr;
#endif // BUILD_DESIGNER
Q_OBJECT
public:
MainWindow(Framework & framework, bool apiOpenGLES3, QString const & mapcssFilePath = QString());
static void SetDefaultSurfaceFormat(bool apiOpenGLES3);
protected:
string GetIniFile();
void OnLocationError(location::TLocationError errorCode) override;
void OnLocationUpdated(location::GpsInfo const & info) override;
void LocationStateModeChanged(location::EMyPositionMode mode);
void CreatePanelImpl(size_t i, Qt::DockWidgetArea area, QString const & name,
QKeySequence const & hotkey, char const * slot);
void CreateNavigationBar();
void CreateSearchBarAndPanel();
void CreateCountryStatusControls();
void CreateTrafficPanel(string const & dataFilePath, string const & sampleFilePath);
void DestroyTrafficPanel();
#if defined(Q_WS_WIN)
/// to handle menu messages
bool winEvent(MSG * msg, long * result) override;
#endif
void closeEvent(QCloseEvent * e) override;
protected Q_SLOTS:
#ifndef NO_DOWNLOADER
void ShowUpdateDialog();
#endif // NO_DOWNLOADER
void OnPreferences();
void OnAbout();
void OnMyPosition();
void OnCreateFeatureClicked();
void OnSearchButtonClicked();
void OnLoginMenuItem();
void OnUploadEditsMenuItem();
void OnBeforeEngineCreation();
void OnDownloadClicked();
void OnRetryDownloadClicked();
void OnSwitchSelectionMode();
void OnClearSelection();
void OnTrafficEnabled();
void OnOpenTrafficSample();
void OnSaveTrafficSample();
void OnQuitTrafficMode();
void OnStartPointSelected();
void OnFinishPointSelected();
void OnIntermediatePointSelected();
void OnFollowRoute();
void OnClearRoute();
#ifdef BUILD_DESIGNER
void OnBuildStyle();
void OnRecalculateGeomIndex();
void OnDebugStyle();
void OnGetStatistics();
void OnRunTests();
void OnBuildPhonePackage();
#endif // BUILD_DESIGNER
};
} // namespace qt
|