File indexing completed on 2024-04-21 03:49:42
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2006-2007 Torsten Rahn <tackat@kde.org> 0004 // SPDX-FileCopyrightText: 2007 Inge Wallin <ingwa@kde.org> 0005 // SPDX-FileCopyrightText: 2013 Yazeed Zoabi <yazeedz.zoabi@gmail.com> 0006 // 0007 0008 // 0009 // The Legend Browser displays the legend 0010 // 0011 0012 #ifndef MARBLE_MARBLELEGENDBROWSER_H 0013 #define MARBLE_MARBLELEGENDBROWSER_H 0014 0015 #ifdef MARBLE_NO_WEBKITWIDGETS 0016 #include "NullMarbleWebView.h" 0017 #else 0018 #include "MarbleWebView.h" 0019 #endif 0020 0021 #include "marble_export.h" 0022 0023 class QEvent; 0024 class QUrl; 0025 class QString; 0026 0027 namespace Marble 0028 { 0029 0030 class MarbleModel; 0031 class MarbleLegendBrowserPrivate; 0032 0033 class MARBLE_EXPORT MarbleLegendBrowser : public MarbleWebView 0034 { 0035 Q_OBJECT 0036 0037 public: 0038 explicit MarbleLegendBrowser( QWidget* parent ); 0039 ~MarbleLegendBrowser() override; 0040 0041 void setMarbleModel( MarbleModel *marbleModel ); 0042 QSize sizeHint() const override; 0043 0044 Q_SIGNALS: 0045 void toggledShowProperty( const QString&, bool ); 0046 void tourLinkClicked( const QString &url ); 0047 0048 public Q_SLOTS: 0049 void setCheckedProperty( const QString& name, bool checked ); 0050 void setRadioCheckedProperty( const QString& value,const QString& name, bool checked ); 0051 0052 private Q_SLOTS: 0053 void initTheme(); 0054 void loadLegend(); 0055 void openLinkExternally( const QUrl &url ); 0056 0057 protected: 0058 bool event( QEvent * event ) override; 0059 static QString readHtml(const QUrl &name); 0060 QString generateSectionsHtml(); 0061 static void translateHtml(QString &html); 0062 0063 private: 0064 void injectWebChannel( QString &html ); 0065 void reverseSupportCheckboxes( QString &html ); 0066 private: 0067 Q_DISABLE_COPY( MarbleLegendBrowser ) 0068 MarbleLegendBrowserPrivate * const d; 0069 }; 0070 0071 class MarbleJsWrapper : public QObject 0072 { 0073 Q_OBJECT 0074 public: 0075 explicit MarbleJsWrapper( MarbleLegendBrowser* parent ) : m_parent(parent) {} 0076 0077 public Q_SLOTS: 0078 void setCheckedProperty( const QString& name, bool checked ) 0079 { 0080 m_parent->setCheckedProperty(name, checked); 0081 } 0082 void setRadioCheckedProperty( const QString& value,const QString& name, bool checked ) 0083 { 0084 m_parent->setRadioCheckedProperty(value, name, checked); 0085 } 0086 private: 0087 MarbleLegendBrowser * m_parent; 0088 }; 0089 0090 } 0091 0092 #endif