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