1 #ifndef MERKATOR_MAINWINDOW_H_ 2 #define MERKATOR_MAINWINDOW_H_ 3 4 #include "IMerkMainWindow.h" 5 #include "IProgressWindow.h" 6 7 #include <QMainWindow> 8 #include <QtXml> 9 #include <QProgressBar> 10 #include <QLabel> 11 12 namespace Ui { 13 class MainWindow; 14 } 15 16 class MainWindowPrivate; 17 class LayerDock; 18 class Document; 19 class Layer; 20 class ImageMapLayer; 21 class MapView; 22 class Feature; 23 class PropertiesDock; 24 class InfoDock; 25 class DirtyDock; 26 class FeaturesDock; 27 class QGPS; 28 class GlobalPainter; 29 class Painter; 30 class TrackLayer; 31 class TrackSegment; 32 class Interaction; 33 class QtToolBarManager; 34 class PreferencesDialog; 35 36 #ifdef GEOIMAGE 37 class GeoImageDock; 38 #endif 39 40 class MainWindow : public QMainWindow, public IMerkMainWindow, public IProgressWindow 41 { 42 Q_OBJECT 43 44 friend class ActionsDialog; 45 friend class MerkaartorPreferences; 46 47 public: 48 MainWindow(QWidget *parent = 0); 49 virtual ~MainWindow(); 50 51 bool eventFilter ( QObject * watched, QEvent * event ); 52 53 public slots: 54 void invalidateView(bool UpdateDock = true); 55 void toggleButtonStyle(); 56 57 virtual void on_createRoundaboutAction_triggered(); 58 virtual void on_createPolygonAction_triggered(); 59 virtual void on_createRectangleAction_triggered(); 60 virtual void on_createDoubleWayAction_triggered(); 61 virtual void on_createNodeAction_triggered(); 62 virtual void on_markBridgeAction_triggered(); 63 virtual void on_createRoadAction_triggered(); 64 virtual void on_createCurvedRoadAction_triggered(); 65 virtual void on_createRelationAction_triggered(); 66 virtual void on_createAreaAction_triggered(); 67 virtual void on_editPropertiesAction_triggered(); 68 virtual void on_editUndoAction_triggered(); 69 virtual void on_editRedoAction_triggered(); 70 virtual void on_editMapStyleAction_triggered(); 71 virtual void on_editCutAction_triggered(); 72 virtual void on_editCopyAction_triggered(); 73 virtual void on_editPasteFeatureAction_triggered(); 74 virtual void on_editPasteOverwriteAction_triggered(); 75 virtual void on_editPasteMergeAction_triggered(); 76 77 virtual void on_layersNewImageAction_triggered(); 78 virtual void on_layersNewDrawingAction_triggered(); 79 virtual void on_layersNewFilterAction_triggered(); 80 virtual void on_layersMapdustAction_triggered(); 81 82 virtual void on_fileNewAction_triggered(); 83 virtual void on_fileDownloadAction_triggered(); 84 virtual void on_fileDownloadMoreAction_triggered(); 85 virtual void on_fileUploadAction_triggered(); 86 virtual void on_fileImportAction_triggered(); 87 virtual void on_fileImportGDALAction_triggered(); 88 virtual void on_fileOpenAction_triggered(); 89 virtual void on_fileSaveAsAction_triggered(); 90 virtual void on_fileSaveAsTemplateAction_triggered(); 91 virtual void on_fileSaveAction_triggered(); 92 virtual void on_fileWorkOfflineAction_triggered(); 93 virtual void on_filePrintAction_triggered(); 94 virtual void on_filePropertiesAction_triggered(); 95 96 virtual void on_helpAboutAction_triggered(); 97 virtual void on_viewZoomAllAction_triggered(); 98 virtual void on_viewZoomInAction_triggered(); 99 virtual void on_viewZoomOutAction_triggered(); 100 virtual void on_viewZoomWindowAction_triggered(); 101 virtual void on_viewLockZoomAction_triggered(); 102 virtual void on_viewDownloadedAction_triggered(); 103 virtual void on_viewDirtyAction_triggered(); 104 virtual void on_viewScaleAction_triggered(); 105 virtual void on_viewPhotosAction_triggered(); 106 virtual void on_viewShowLatLonGridAction_triggered(); 107 virtual void on_viewStyleBackgroundAction_triggered(); 108 virtual void on_viewStyleForegroundAction_triggered(); 109 virtual void on_viewStyleTouchupAction_triggered(); 110 virtual void on_viewNamesAction_triggered(); 111 virtual void on_viewVirtualNodesAction_triggered(); 112 virtual void on_viewTrackPointsAction_triggered(); 113 virtual void on_viewTrackSegmentsAction_triggered(); 114 virtual void on_viewRelationsAction_triggered(); 115 virtual void on_viewGotoAction_triggered(); 116 virtual void on_viewArrowsNeverAction_triggered(bool checked); 117 virtual void on_viewArrowsOnewayAction_triggered(bool checked); 118 virtual void on_viewArrowsAlwaysAction_triggered(bool checked); 119 120 virtual void on_editRemoveAction_triggered(); 121 virtual void on_editMoveAction_triggered(); 122 virtual void on_editRotateAction_triggered(); 123 virtual void on_editScaleAction_triggered(); 124 virtual void on_editReverseAction_triggered(); 125 126 virtual void on_roadSplitAction_triggered(); 127 virtual void on_roadBreakAction_triggered(); 128 virtual void on_roadJoinAction_triggered(); 129 virtual void on_roadSimplifyAction_triggered(); 130 virtual void on_roadCreateJunctionAction_triggered(); 131 virtual void on_roadAddStreetNumbersAction_triggered(); 132 virtual void on_roadSubdivideAction_triggered(); 133 virtual void on_roadAxisAlignAction_triggered(); 134 virtual void on_roadExtrudeAction_triggered(); 135 virtual void on_roadBingExtractAction_triggered(); 136 137 virtual void on_featureSelectChildrenAction_triggered(); 138 virtual void on_featureSelectParentsAction_triggered(); 139 virtual void on_featureDownloadMissingChildrenAction_triggered(); 140 virtual void on_featureDeleteAction_triggered(); 141 virtual void on_featureCommitAction_triggered(); 142 143 virtual void on_nodeAlignAction_triggered(); 144 virtual void on_nodeSpreadAction_triggered(); 145 virtual void on_nodeMergeAction_triggered(); 146 virtual void on_nodeDetachAction_triggered(); 147 virtual void on_relationAddMemberAction_triggered(); 148 virtual void on_relationRemoveMemberAction_triggered(); 149 virtual void on_relationAddToMultipolygonAction_triggered(); 150 virtual void on_areaJoinAction_triggered(); 151 virtual void on_areaSplitAction_triggered(); 152 virtual void on_areaTerraceAction_triggered(); 153 154 virtual void on_mapStyleSaveAction_triggered(); 155 virtual void on_mapStyleSaveAsAction_triggered(); 156 virtual void on_mapStyleLoadAction_triggered(); 157 virtual void on_exportOSMAction_triggered(); 158 virtual void on_exportOSCAction_triggered(); 159 virtual void on_exportGPXAction_triggered(); 160 virtual void on_exportKMLAction_triggered(); 161 virtual void on_exportGDALAction_triggered(); 162 virtual void on_editSelectAction_triggered(); 163 virtual void on_bookmarkAddAction_triggered(); 164 virtual void on_bookmarkRemoveAction_triggered(); 165 on_toolsPreferencesAction_triggered()166 virtual void on_toolsPreferencesAction_triggered() {toolsPreferencesAction_triggered();} 167 virtual void on_toolsShortcutsAction_triggered(); 168 virtual void on_toolsToolbarsAction_triggered(); 169 virtual void on_toolsWMSServersAction_triggered(); 170 virtual void on_toolsTMSServersAction_triggered(); 171 virtual void on_toolsProjectionsAction_triggered(); 172 virtual void on_toolsFiltersAction_triggered(); 173 virtual void toolsPreferencesAction_triggered(bool focusData=false); 174 virtual void on_toolsResetDiscardableAction_triggered(); 175 virtual void on_toolsRebuildHistoryAction_triggered(); 176 177 virtual void on_windowPropertiesAction_triggered(); 178 virtual void on_windowLayersAction_triggered(); 179 virtual void on_windowInfoAction_triggered(); 180 virtual void on_windowDirtyAction_triggered(); 181 virtual void on_windowFeatsAction_triggered(); 182 virtual void on_windowToolbarAction_triggered(); 183 virtual void on_windowGPSAction_triggered(); 184 #ifdef GEOIMAGE 185 virtual void on_windowGeoimageAction_triggered(); 186 #endif 187 virtual void on_windowStylesAction_triggered(); 188 189 virtual void on_windowHideAllAction_triggered(); 190 virtual void on_windowShowAllAction_triggered(); 191 virtual void on_gpsConnectAction_triggered(); 192 virtual void on_gpsReplayAction_triggered(); 193 virtual void on_gpsRecordAction_triggered(); 194 virtual void on_gpsPauseAction_triggered(); 195 virtual void on_gpsDisconnectAction_triggered(); 196 virtual void on_gpsCenterAction_triggered(); 197 virtual void preferencesChanged(PreferencesDialog* prefs); 198 virtual void clipboardChanged(); 199 200 virtual void on_toolTemplatesSaveAction_triggered(); 201 virtual void on_toolTemplatesMergeAction_triggered(); 202 virtual void on_toolTemplatesLoadAction_triggered(); 203 204 205 protected slots: 206 void onCustomcontextmenurequested(const QPoint &pos); 207 void onImagerequested(ImageMapLayer*); 208 void onImagereceived(ImageMapLayer* aLayer); 209 void onLoadingfinished(ImageMapLayer*); 210 211 signals: 212 void remove_triggered(); 213 void move_triggered(); 214 void add_triggered(); 215 void reverse_triggered(); 216 217 void content_changed(); 218 219 public: 220 MainWindowPrivate* p; 221 Ui::MainWindow *ui; 222 223 QString currentProjectFile; 224 PropertiesDock* properties(); 225 FeaturesDock* features(); 226 InfoDock* info(); 227 QGPS* gps(); 228 #ifdef GEOIMAGE 229 GeoImageDock* geoImage(); 230 #endif 231 Document* document(); 232 //MapLayer* activeLayer(); 233 MapView* view(); 234 QByteArray fullscreenState; 235 236 QProgressBar* pbImages; 237 QString StatusMessage; 238 QLabel* ViewportStatusLabel; 239 QLabel* PaintTimeLabel; 240 QLabel* MeterPerPixelLabel; 241 QLabel* AdjusmentMeterLabel; 242 243 public slots: 244 void handleMessage(const QString& msg); 245 246 void adjustLayers(bool adjustViewport); 247 void bookmarkTriggered(QAction* anAction); 248 void recentOpenTriggered(QAction* anAction); 249 void recentImportTriggered(QAction* anAction); 250 #ifndef _MOBILE 251 void projectionSet(const QString& prj); 252 void projectionTriggered(QAction* anAction); 253 #endif 254 void styleTriggered(QAction* anAction); 255 void updateGpsPosition(qreal latitude, qreal longitude, QDateTime time, qreal altitude, qreal speed, qreal heading); 256 void applyStyles(QString NewStyle); 257 void applyPainters(GlobalPainter* theGlobalPainter, QList<Painter>* thePainters); 258 259 public: 260 bool testImport(const QString filePath); 261 bool importFiles(Document * mapDocument, const QStringList & filesNames, QStringList * importedFileNames = NULL, bool useGdal = false); 262 void loadUrl(const QString& urlString); 263 void loadUrl(const QUrl& u); 264 void loadDocument(QString fn); 265 void loadTemplateDocument(QString fn); 266 void saveDocument(const QString& fn); 267 void saveTemplateDocument(const QString& fn); 268 void downloadFeatures(const QList<Feature*>& aDownloadList); 269 270 void createProgressDialog(); 271 void deleteProgressDialog(); 272 273 void createToolBarManager(); 274 275 void updateLanguage(); 276 277 bool hasUnsavedChanges(); 278 279 void launchInteraction(Interaction *anInteraction); 280 enum ImportStatus { IMPORT_OK, IMPORT_ABORTED, IMPORT_ERROR }; 281 bool getPathToSave(const QString& title, const QString& extension, const QString& allowedTypes, QString* path); 282 283 QStringList translationPaths(); 284 285 protected: 286 MapView* theView; 287 Document* theDocument; 288 InfoDock* theInfo; 289 DirtyDock* theDirty; 290 LayerDock* theLayers; 291 #ifdef GEOIMAGE 292 GeoImageDock* theGeoImage; 293 #endif 294 QGPS* theGPS; 295 296 TrackLayer* gpsRecLayer; 297 TrackSegment* curGpsTrackSegment; 298 QHash<QString, QString> shortcutsDefault; 299 300 QTranslator* qtTranslator; 301 QTranslator* merkaartorTranslator; 302 303 QtToolBarManager *toolBarManager; 304 305 private slots: 306 void delayedInit(); 307 void setAreaOpacity(QAction*); 308 void updateBookmarksMenu(); 309 void updateWindowMenu(bool b=false); 310 311 void on_viewWireframeAction_toggled(bool arg1); 312 313 private: 314 void importAction( bool useGdal = false ); 315 ImportStatus importFile(Document* mapDocument, const QString& fileName, Layer*& newLayer); 316 ImportStatus importFileUsingGDAL(Document* mapDocument, const QString& fileName, Layer*& newLayer); 317 void updateMenu(); 318 void updateRecentOpenMenu(); 319 void updateRecentImportMenu(); 320 void updateProjectionMenu(); 321 void updateStyleMenu(); 322 bool selectExportedFeatures(QList<Feature*>& theFeatures); 323 324 Document* doLoadDocument(QFile* file); 325 void doSaveDocument(QFile* fn, bool asTemplate=false); 326 327 QString makeAbsolute(const QString& path); 328 #if defined(Q_OS_MAC) 329 QString macOsTranslationsPath(); 330 #endif 331 332 bool tryLoadTranslator(const QString& languageFile, QTranslator* theTranslator); 333 334 void dieClipboardInvalid(); 335 void warnMapDownloadFailed(); 336 337 void updateSegmentMode(QMouseEvent* mouseEvent); 338 339 void startBusyCursor(); 340 void endBusyCursor(); 341 342 void syncOSM(const QString &aWeb, const QString &aUser, const QString &aPwd); 343 protected: 344 void closeEvent(QCloseEvent * event); 345 virtual QMenu * createPopupMenu (); 346 }; 347 348 #endif 349 350 351