1 // SPDX-License-Identifier: LGPL-2.1-or-later 2 // 3 // SPDX-FileCopyrightText: 2006-2010 Torsten Rahn <tackat@kde.org> 4 // SPDX-FileCopyrightText: 2007 Inge Wallin <ingwa@kde.org> 5 // SPDX-FileCopyrightText: 2010-2013 Bernhard Beschow <bbeschow@cs.tu-berlin.de> 6 // 7 8 9 #ifndef MARBLE_QTMAINWINDOW_H 10 #define MARBLE_QTMAINWINDOW_H 11 12 13 #include <QMainWindow> 14 #include <QVariantMap> 15 #include "ControlView.h" 16 17 class QActionGroup; 18 class QAction; 19 class QLabel; 20 class QMenu; 21 class QProgressBar; 22 23 namespace Marble 24 { 25 26 class GeoDataContainer; 27 class MarbleWidget; 28 class SunControlWidget; 29 class TimeControlWidget; 30 class QtMarbleConfigDialog; 31 class DownloadRegionDialog; 32 class MovieCaptureDialog; 33 34 class MainWindow : public QMainWindow 35 { 36 Q_OBJECT 37 38 public: 39 explicit MainWindow(const QString& marbleDataPath = QString(), 40 const QVariantMap& cmdLineSettings = QVariantMap(), 41 QWidget *parent=nullptr); 42 ~MainWindow() override; 43 44 marbleControl()45 ControlView* marbleControl() { 46 return m_controlView; 47 } marbleWidget()48 MarbleWidget* marbleWidget() { 49 return m_controlView->marbleWidget(); 50 } 51 52 void addGeoDataFile( const QString &fileName ); 53 54 protected: 55 void closeEvent( QCloseEvent *event ) override; 56 57 private: 58 void createActions(); 59 void createMenus( const QList<QAction*> &panelActions ); 60 void createStatusBar(); 61 62 static QString readMarbleDataPath(); 63 void readSettings(const QVariantMap& overrideSettings = QVariantMap()); 64 void writeSettings(); 65 66 private Q_SLOTS: 67 void showPosition( const QString& position); 68 void showDistance( const QString& position); 69 void showZoom( int ); 70 void showDateTime(); 71 72 void initObject(const QVariantMap& cmdLineSettings); 73 void editSettings(); 74 void updateSettings(); 75 76 void fallBackToDefaultTheme(); 77 78 void changeRecordingState(); 79 80 void updateWindowTitle(); 81 82 // File Menu 83 void openFile(); 84 void openMapDialog(); 85 void exportMapScreenShot(); 86 void showDownloadRegionDialog(); 87 void printMapScreenShot(); 88 void workOffline( bool ); 89 void showMapWizard(); 90 91 // Edit Menu 92 void copyMap(); 93 void copyCoordinates(); 94 void updateMapEditButtonVisibility( const QString &mapTheme ); 95 void showMovieCaptureDialog(); 96 void stopRecording(); 97 98 // View Menu 99 void lockPosition( bool ); 100 void createPluginsMenus(); 101 void createPluginMenus(); 102 void showClouds( bool ); 103 void controlSun(); 104 void controlTime(); 105 void showSun( bool ); 106 void reload(); 107 108 // Settings Menu 109 void changeViewSize( QAction* ); 110 void showFullScreen( bool ); 111 void showStatusBar( bool ); 112 void setupStatusBar(); 113 void setupDownloadProgressBar(); 114 115 // Help Menu 116 void enterWhatsThis(); 117 void aboutMarble(); 118 void handbook(); 119 void openForum(); 120 121 //Bookmark Menu 122 void openEditBookmarkDialog(); 123 void setHome(); 124 void createBookmarksListMenu( QMenu *bookmarksListMenu, const GeoDataContainer *container ); 125 void lookAtBookmark( QAction * action ); 126 void manageBookmarks(); 127 void createBookmarkMenu(); 128 void createFolderList( QMenu *bookmarksListMenu, const GeoDataContainer *container ); 129 void showBookmarks( bool show ); 130 131 // Download region dialog 132 void downloadRegion(); 133 134 void showZoomLevel( bool show ); 135 void changeAngleDisplayUnit( QAction *action ); 136 137 void handleProgress( int, int ); 138 void removeProgressItem(); 139 140 private: 141 ControlView *m_controlView; 142 QSize m_savedSize; 143 SunControlWidget* m_sunControlDialog; 144 TimeControlWidget* m_timeControlDialog; 145 QtMarbleConfigDialog *m_configDialog; 146 DownloadRegionDialog* m_downloadRegionDialog; 147 MovieCaptureDialog* m_movieCaptureDialog; 148 149 /// Store plugin toolbar pointers so that they can be removed/updated later 150 QList<QToolBar*> m_pluginToolbars; 151 /// Store plugin menus so that they can be removed/updated later 152 QList<QAction*> m_pluginMenus; 153 154 QMenu *m_fileMenu; 155 QMenu *m_viewMenu; 156 QMenu *m_helpMenu; 157 QMenu *m_settingsMenu; 158 QMenu *m_panelMenu; 159 QMenu *m_viewSizeMenu; 160 QMenu *m_infoBoxesMenu; 161 QMenu *m_onlineServicesMenu; 162 QMenu *m_bookmarkMenu; 163 // File Menu 164 QAction *m_openAction; 165 QAction *m_exportMapAction; 166 QAction *m_downloadAction; 167 QAction *m_downloadRegionAction; 168 QAction *m_printPreviewAction; 169 QAction *m_printAction; 170 QAction *m_workOfflineAction; 171 QAction *m_quitAction; 172 QAction *m_mapWizardAction; 173 174 // Edit Menu 175 QAction *m_copyMapAction; 176 QAction *m_copyCoordinatesAction; 177 QAction *m_osmEditAction; 178 QAction *m_recordMovieAction; 179 QAction *m_stopRecordingAction; 180 181 // View Menu 182 QAction *m_showCloudsAction; 183 QAction *m_controlSunAction; 184 QAction *m_controlTimeAction; 185 QAction *m_reloadAction; 186 187 // Settings Menu 188 QAction *m_fullScreenAction; 189 QAction *m_statusBarAction; 190 QAction *m_configDialogAction; 191 QActionGroup *m_viewSizeActsGroup; 192 193 // Help Menu 194 QAction *m_whatsThisAction; 195 QAction *m_aboutMarbleAction; 196 QAction *m_aboutQtAction; 197 QAction *m_lockFloatItemsAction; 198 QAction *m_handbookAction; 199 QAction *m_forumAction; 200 201 // Status Bar 202 QString m_position; 203 QString m_distance; 204 QString m_zoom; 205 QString m_clock; 206 QLabel *m_positionLabel; 207 QLabel *m_distanceLabel; 208 QLabel *m_zoomLabel; 209 QLabel *m_clockLabel; 210 QProgressBar *m_downloadProgressBar; 211 QAction *m_toggleTileLevelAction; 212 QActionGroup *m_angleDisplayUnitActionGroup; 213 QAction *m_dmsDegreeAction; 214 QAction *m_decimalDegreeAction; 215 QAction *m_utmAction; 216 void updateStatusBar(); 217 218 //Bookmark Menu 219 QAction *m_addBookmarkAction; 220 QAction *m_setHomeAction; 221 QAction *m_toggleBookmarkDisplayAction; 222 QAction *m_manageBookmarksAction; 223 224 QString m_lastFileOpenPath; 225 QStringList m_commandlineFilePaths; 226 }; 227 228 } // namespace Marble 229 230 #endif 231