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