File indexing completed on 2024-05-12 03:51:34

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2008 Torsten Rahn <tackat@kde.org>
0004 //
0005 
0006 #ifndef MARBLEOVERVIEWMAP_H
0007 #define MARBLEOVERVIEWMAP_H
0008 
0009 #include <QHash>
0010 #include <QColor>
0011 #include <QPixmap>
0012 #include <QSvgWidget>
0013 #include <QSvgRenderer>
0014 
0015 #include "GeoDataLatLonAltBox.h"
0016 #include "AbstractFloatItem.h"
0017 #include "DialogConfigurationInterface.h"
0018 
0019 namespace Ui
0020 {
0021     class OverviewMapConfigWidget;
0022 }
0023 
0024 namespace Marble
0025 {
0026 
0027 /**
0028  * @short The class that creates an overview map.
0029  *
0030  */
0031 
0032 class OverviewMap : public AbstractFloatItem, public DialogConfigurationInterface
0033 {
0034     Q_OBJECT
0035     Q_PLUGIN_METADATA(IID "org.kde.marble.OverviewMap")
0036     Q_INTERFACES( Marble::RenderPluginInterface )
0037     Q_INTERFACES( Marble::DialogConfigurationInterface )
0038     MARBLE_PLUGIN( OverviewMap )
0039     
0040  public:
0041     OverviewMap();
0042     explicit OverviewMap( const MarbleModel *marbleModel );
0043     ~OverviewMap() override;
0044 
0045     QStringList backendTypes() const override;
0046 
0047     QString name() const override;
0048 
0049     QString guiString() const override;
0050 
0051     QString nameId() const override;
0052 
0053     QString version() const override;
0054 
0055     QString description() const override;
0056 
0057     QString copyrightYears() const override;
0058 
0059     QVector<PluginAuthor> pluginAuthors() const override;
0060 
0061     QIcon icon () const override;
0062 
0063     QDialog *configDialog() override;
0064 
0065     void initialize () override;
0066 
0067     bool isInitialized () const override;
0068 
0069     void setProjection( const ViewportParams *viewport ) override;
0070 
0071     void paintContent( QPainter *painter ) override;
0072 
0073     /**
0074      * @return: The settings of the item.
0075      */
0076     QHash<QString,QVariant> settings() const override;
0077 
0078     /**
0079      * Set the settings of the item.
0080      */
0081     void setSettings( const QHash<QString,QVariant> &settings ) override;
0082 
0083  public Q_SLOTS:
0084     void readSettings();
0085     void writeSettings();
0086     void updateSettings();
0087 
0088  protected:
0089     bool eventFilter( QObject *object, QEvent *e ) override;
0090 
0091  private:
0092     void changeBackground( const QString& target );
0093     QSvgWidget *currentWidget() const;
0094     void setCurrentWidget( QSvgWidget *widget );
0095     void loadPlanetMaps();
0096     void loadMapSuggestions();
0097 
0098     QString m_target;
0099     QSvgRenderer   m_svgobj;
0100     QHash<QString, QSvgWidget *> m_svgWidgets;
0101     QHash<QString, QString> m_svgPaths;
0102     QStringList    m_planetID;
0103     QPixmap        m_worldmap;
0104     QHash<QString,QVariant> m_settings;
0105     QColor m_posColor;
0106     QSizeF m_defaultSize;
0107 
0108     Ui::OverviewMapConfigWidget *ui_configWidget;
0109     QDialog *m_configDialog;
0110 
0111     GeoDataLatLonAltBox m_latLonAltBox;
0112     qreal m_centerLat;
0113     qreal m_centerLon;
0114     bool m_mapChanged;
0115 
0116  private Q_SLOTS:
0117     void chooseCustomMap();
0118     void synchronizeSpinboxes();
0119     void showCurrentPlanetPreview() const;
0120     void choosePositionIndicatorColor();
0121     void useMapSuggestion( int index );
0122 };
0123 
0124 }
0125 
0126 #endif