File indexing completed on 2024-04-28 03:50:18

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2008 Torsten Rahn <tackat@kde.org>
0004 //
0005 
0006 #ifndef MAPSCALEFLOATITEM_H
0007 #define MAPSCALEFLOATITEM_H
0008 
0009 #include "AbstractFloatItem.h"
0010 #include "DialogConfigurationInterface.h"
0011 
0012 namespace Ui
0013 {
0014     class MapScaleConfigWidget;
0015 }
0016 
0017 namespace Marble
0018 {
0019 
0020 /**
0021  * @short The class that creates a map scale.
0022  *
0023  */
0024 
0025 class MapScaleFloatItem : public AbstractFloatItem, public DialogConfigurationInterface
0026 {
0027     Q_OBJECT
0028     Q_PLUGIN_METADATA(IID "org.kde.marble.MapScaleFloatItem")
0029     Q_INTERFACES( Marble::RenderPluginInterface )
0030     Q_INTERFACES( Marble::DialogConfigurationInterface )
0031     MARBLE_PLUGIN( MapScaleFloatItem )
0032  public:
0033     explicit MapScaleFloatItem( const MarbleModel *marbleModel = nullptr );
0034     ~MapScaleFloatItem() override;
0035 
0036     QStringList backendTypes() const override;
0037 
0038     QString name() const override;
0039 
0040     QString guiString() const override;
0041 
0042     QString nameId() const override;
0043 
0044     QString version() const override;
0045 
0046     QString description() const override;
0047 
0048     QString copyrightYears() const override;
0049 
0050     QVector<PluginAuthor> pluginAuthors() const override;
0051 
0052     QIcon icon () const override;
0053 
0054     void initialize () override;
0055 
0056     bool isInitialized () const override;
0057 
0058     void setProjection( const ViewportParams *viewport ) override;
0059 
0060     void paintContent( QPainter *painter ) override;
0061 
0062 
0063     QDialog *configDialog() override;
0064 
0065  protected:
0066     void contextMenuEvent( QWidget *w, QContextMenuEvent *e ) override;
0067     void toolTipEvent( QHelpEvent *e ) override;
0068 
0069  private Q_SLOTS:
0070     void readSettings();
0071     void writeSettings();
0072     void toggleRatioScaleVisibility();
0073     void toggleMinimized();
0074 
0075 private:
0076     void calcScaleBar();
0077 
0078  private:
0079     QDialog *m_configDialog;
0080     Ui::MapScaleConfigWidget *ui_configWidget;
0081 
0082     int      m_radius;
0083 
0084     QString  m_target;
0085 
0086     int      m_leftBarMargin;
0087     int      m_rightBarMargin;
0088     int      m_scaleBarWidth;
0089     int      m_viewportWidth;
0090     int      m_scaleBarHeight;
0091     qreal    m_scaleBarDistance;
0092 
0093     qreal    m_pixel2Length;
0094     int      m_bestDivisor;
0095     int      m_pixelInterval;
0096     int      m_valueInterval;
0097 
0098     QString m_ratioString;
0099 
0100     bool     m_scaleInitDone;
0101 
0102     bool     m_showRatioScale;
0103 
0104     QMenu*   m_contextMenu;
0105 
0106     QAction  *m_minimizeAction;
0107     bool m_minimized;
0108     int m_widthScaleFactor;
0109 };
0110 
0111 }
0112 
0113 #endif // MAPSCALEFLOATITEM_H