File indexing completed on 2023-09-24 03:58:58
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2006-2010 Torsten Rahn <tackat@kde.org> 0004 // SPDX-FileCopyrightText: 2007 Inge Wallin <ingwa@kde.org> 0005 // SPDX-FileCopyrightText: 2010-2013 Bernhard Beschow <bbeschow@cs.tu-berlin.de> 0006 // 0007 0008 0009 #ifndef MARBLE_QTMAINWINDOW_H 0010 #define MARBLE_QTMAINWINDOW_H 0011 0012 0013 #include <QMainWindow> 0014 #include <QVariantMap> 0015 #include "ControlView.h" 0016 0017 class QActionGroup; 0018 class QAction; 0019 class QLabel; 0020 class QMenu; 0021 class QProgressBar; 0022 0023 namespace Marble 0024 { 0025 0026 class GeoDataContainer; 0027 class MarbleWidget; 0028 class SunControlWidget; 0029 class TimeControlWidget; 0030 class QtMarbleConfigDialog; 0031 class DownloadRegionDialog; 0032 class MovieCaptureDialog; 0033 0034 class MainWindow : public QMainWindow 0035 { 0036 Q_OBJECT 0037 0038 public: 0039 explicit MainWindow(const QString& marbleDataPath = QString(), 0040 const QVariantMap& cmdLineSettings = QVariantMap(), 0041 QWidget *parent=nullptr); 0042 ~MainWindow() override; 0043 0044 0045 ControlView* marbleControl() { 0046 return m_controlView; 0047 } 0048 MarbleWidget* marbleWidget() { 0049 return m_controlView->marbleWidget(); 0050 } 0051 0052 void addGeoDataFile( const QString &fileName ); 0053 0054 protected: 0055 void closeEvent( QCloseEvent *event ) override; 0056 0057 private: 0058 void createActions(); 0059 void createMenus( const QList<QAction*> &panelActions ); 0060 void createStatusBar(); 0061 0062 static QString readMarbleDataPath(); 0063 void readSettings(const QVariantMap& overrideSettings = QVariantMap()); 0064 void writeSettings(); 0065 0066 private Q_SLOTS: 0067 void showPosition( const QString& position); 0068 void showDistance( const QString& position); 0069 void showZoom( int ); 0070 void showDateTime(); 0071 0072 void initObject(const QVariantMap& cmdLineSettings); 0073 void editSettings(); 0074 void updateSettings(); 0075 0076 void fallBackToDefaultTheme(); 0077 0078 void changeRecordingState(); 0079 0080 void updateWindowTitle(); 0081 void updateCenterFromTheme(); 0082 0083 // File Menu 0084 void openFile(); 0085 void openMapDialog(); 0086 void exportMapScreenShot(); 0087 void showDownloadRegionDialog(); 0088 void printMapScreenShot(); 0089 void workOffline( bool ); 0090 void showMapWizard(); 0091 0092 // Edit Menu 0093 void copyMap(); 0094 void copyCoordinates(); 0095 void updateMapEditButtonVisibility( const QString &mapTheme ); 0096 void showMovieCaptureDialog(); 0097 void stopRecording(); 0098 0099 // View Menu 0100 void lockPosition( bool ); 0101 void createPluginsMenus(); 0102 void createPluginMenus(); 0103 void showClouds( bool ); 0104 void controlSun(); 0105 void controlTime(); 0106 void showSun( bool ); 0107 void reload(); 0108 0109 // Settings Menu 0110 void changeViewSize( QAction* ); 0111 void showFullScreen( bool ); 0112 void showStatusBar( bool ); 0113 void setupStatusBar(); 0114 void setupDownloadProgressBar(); 0115 0116 // Help Menu 0117 void enterWhatsThis(); 0118 void aboutMarble(); 0119 void handbook(); 0120 void openForum(); 0121 0122 //Bookmark Menu 0123 void openEditBookmarkDialog(); 0124 void setHome(); 0125 void createBookmarksListMenu( QMenu *bookmarksListMenu, const GeoDataContainer *container ); 0126 void lookAtBookmark( QAction * action ); 0127 void manageBookmarks(); 0128 void createBookmarkMenu(); 0129 void createFolderList( QMenu *bookmarksListMenu, const GeoDataContainer *container ); 0130 void showBookmarks( bool show ); 0131 0132 // Download region dialog 0133 void downloadRegion(); 0134 0135 void showZoomLevel( bool show ); 0136 void changeAngleDisplayUnit( QAction *action ); 0137 0138 void handleProgress( int, int ); 0139 void removeProgressItem(); 0140 0141 private: 0142 ControlView *m_controlView; 0143 QSize m_savedSize; 0144 SunControlWidget* m_sunControlDialog; 0145 TimeControlWidget* m_timeControlDialog; 0146 QtMarbleConfigDialog *m_configDialog; 0147 DownloadRegionDialog* m_downloadRegionDialog; 0148 MovieCaptureDialog* m_movieCaptureDialog; 0149 0150 /// Store plugin toolbar pointers so that they can be removed/updated later 0151 QList<QToolBar*> m_pluginToolbars; 0152 /// Store plugin menus so that they can be removed/updated later 0153 QList<QAction*> m_pluginMenus; 0154 0155 QMenu *m_fileMenu; 0156 QMenu *m_viewMenu; 0157 QMenu *m_helpMenu; 0158 QMenu *m_settingsMenu; 0159 QMenu *m_panelMenu; 0160 QMenu *m_viewSizeMenu; 0161 QMenu *m_infoBoxesMenu; 0162 QMenu *m_onlineServicesMenu; 0163 QMenu *m_bookmarkMenu; 0164 // File Menu 0165 QAction *m_openAction; 0166 QAction *m_exportMapAction; 0167 QAction *m_downloadAction; 0168 QAction *m_downloadRegionAction; 0169 QAction *m_printPreviewAction; 0170 QAction *m_printAction; 0171 QAction *m_workOfflineAction; 0172 QAction *m_quitAction; 0173 QAction *m_mapWizardAction; 0174 0175 // Edit Menu 0176 QAction *m_copyMapAction; 0177 QAction *m_copyCoordinatesAction; 0178 QAction *m_osmEditAction; 0179 QAction *m_recordMovieAction; 0180 QAction *m_stopRecordingAction; 0181 0182 // View Menu 0183 QAction *m_showCloudsAction; 0184 QAction *m_controlSunAction; 0185 QAction *m_controlTimeAction; 0186 QAction *m_reloadAction; 0187 0188 // Settings Menu 0189 QAction *m_fullScreenAction; 0190 QAction *m_statusBarAction; 0191 QAction *m_configDialogAction; 0192 QActionGroup *m_viewSizeActsGroup; 0193 0194 // Help Menu 0195 QAction *m_whatsThisAction; 0196 QAction *m_aboutMarbleAction; 0197 QAction *m_aboutQtAction; 0198 QAction *m_lockFloatItemsAction; 0199 QAction *m_handbookAction; 0200 QAction *m_forumAction; 0201 0202 // Status Bar 0203 QString m_position; 0204 QString m_distance; 0205 QString m_zoom; 0206 QString m_clock; 0207 QLabel *m_positionLabel; 0208 QLabel *m_distanceLabel; 0209 QLabel *m_zoomLabel; 0210 QLabel *m_clockLabel; 0211 QProgressBar *m_downloadProgressBar; 0212 QAction *m_toggleTileLevelAction; 0213 QActionGroup *m_angleDisplayUnitActionGroup; 0214 QAction *m_dmsDegreeAction; 0215 QAction *m_decimalDegreeAction; 0216 QAction *m_utmAction; 0217 void updateStatusBar(); 0218 0219 //Bookmark Menu 0220 QAction *m_addBookmarkAction; 0221 QAction *m_setHomeAction; 0222 QAction *m_toggleBookmarkDisplayAction; 0223 QAction *m_manageBookmarksAction; 0224 0225 QString m_lastFileOpenPath; 0226 QStringList m_commandlineFilePaths; 0227 }; 0228 0229 } // namespace Marble 0230 0231 #endif