• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

marble

  • sources
  • kde-4.14
  • kdeedu
  • marble
  • src
  • plugins
  • render
  • wikipedia
WikipediaPlugin.cpp
Go to the documentation of this file.
1 //
2 // This file is part of the Marble Virtual Globe.
3 //
4 // This program is free software licensed under the GNU LGPL. You can
5 // find a copy of this license in LICENSE.txt in the top directory of
6 // the source code.
7 //
8 // Copyright 2009 Bastian Holst <bastianholst@gmx.de>
9 //
10 
11 // Self
12 #include "WikipediaPlugin.h"
13 
14 // Marble
15 #include "ui_WikipediaConfigWidget.h"
16 #include "WikipediaModel.h"
17 #include "MarbleDirs.h"
18 #include "MarbleDebug.h"
19 #include "MarbleWidget.h"
20 
21 // Qt
22 #include <QPushButton>
23 #include <QLabel>
24 
25 using namespace Marble;
26 /* TRANSLATOR Marble::WikipediaPlugin */
27 
28 const quint32 maximumNumberOfItems = 99;
29 
30 WikipediaPlugin::WikipediaPlugin()
31  : AbstractDataPlugin( 0 ),
32  ui_configWidget( 0 ),
33  m_configDialog( 0 )
34 {
35 }
36 
37 WikipediaPlugin::WikipediaPlugin( const MarbleModel *marbleModel )
38  : AbstractDataPlugin( marbleModel ),
39  m_icon( MarbleDirs::path( "svg/wikipedia_shadow.svg" ) ),
40  ui_configWidget( 0 ),
41  m_configDialog( 0 ),
42  m_showThumbnails( true )
43 {
44  // Plugin is enabled by default
45  setEnabled( true );
46  // Plugin is not visible by default
47  setVisible( false );
48 
49  connect( this, SIGNAL(settingsChanged(QString)),
50  this, SLOT(updateSettings()) );
51  connect( this, SIGNAL(changedNumberOfItems(quint32)),
52  this, SLOT(checkNumberOfItems(quint32)) );
53 
54  setSettings( QHash<QString,QVariant>() );
55 }
56 
57 WikipediaPlugin::~WikipediaPlugin()
58 {
59  delete ui_configWidget;
60  delete m_configDialog;
61 }
62 
63 void WikipediaPlugin::initialize()
64 {
65  WikipediaModel *model = new WikipediaModel( marbleModel(), this );
66  // Ensure that all settings get forwarded to the model.
67  setModel( model );
68  updateSettings();
69 }
70 
71 QString WikipediaPlugin::name() const
72 {
73  return tr( "Wikipedia Articles" );
74 }
75 
76 QString WikipediaPlugin::guiString() const
77 {
78  return tr( "&Wikipedia" );
79 }
80 
81 QString WikipediaPlugin::nameId() const
82 {
83  return "wikipedia";
84 }
85 
86 QString WikipediaPlugin::version() const
87 {
88  return "1.0";
89 }
90 
91 QString WikipediaPlugin::description() const
92 {
93  return tr( "Automatically downloads Wikipedia articles and shows them on the right position on the map" );
94 }
95 
96 QString WikipediaPlugin::copyrightYears() const
97 {
98  return "2009";
99 }
100 
101 QList<PluginAuthor> WikipediaPlugin::pluginAuthors() const
102 {
103  return QList<PluginAuthor>()
104  << PluginAuthor( "Bastian Holst", "bastianholst@gmx.de" );
105 }
106 
107 QString WikipediaPlugin::aboutDataText() const
108 {
109  return tr( "Geo positions by geonames.org\nTexts by wikipedia.org" );
110 }
111 
112 QIcon WikipediaPlugin::icon() const
113 {
114  return m_icon;
115 }
116 
117 QDialog *WikipediaPlugin::configDialog()
118 {
119  if ( !m_configDialog ) {
120  // Initializing configuration dialog
121  m_configDialog = new QDialog();
122  ui_configWidget = new Ui::WikipediaConfigWidget;
123  ui_configWidget->setupUi( m_configDialog );
124  readSettings();
125  ui_configWidget->m_itemNumberSpinBox->setRange( 0, maximumNumberOfItems );
126  connect( ui_configWidget->m_buttonBox, SIGNAL(accepted()),
127  SLOT(writeSettings()) );
128  connect( ui_configWidget->m_buttonBox, SIGNAL(rejected()),
129  SLOT(readSettings()) );
130  QPushButton *applyButton = ui_configWidget->m_buttonBox->button( QDialogButtonBox::Apply );
131  connect( applyButton, SIGNAL(clicked()),
132  this, SLOT(writeSettings()) );
133  }
134  return m_configDialog;
135 }
136 
137 QHash<QString,QVariant> WikipediaPlugin::settings() const
138 {
139  QHash<QString, QVariant> settings = AbstractDataPlugin::settings();
140 
141  settings.insert( "numberOfItems", numberOfItems() );
142  settings.insert( "showThumbnails", m_showThumbnails );
143 
144  return settings;
145 }
146 
147 void WikipediaPlugin::setSettings( const QHash<QString,QVariant> &settings )
148 {
149  AbstractDataPlugin::setSettings( settings );
150 
151  setNumberOfItems( qMin<int>( maximumNumberOfItems, settings.value( "numberOfItems", 15 ).toInt() ) );
152  m_showThumbnails = settings.value( "showThumbnails", true ).toBool();
153 
154  readSettings();
155  emit settingsChanged( nameId() );
156 }
157 
158 bool WikipediaPlugin::eventFilter(QObject *object, QEvent *event)
159 {
160  if ( isInitialized() ) {
161  WikipediaModel *wikipediaModel = dynamic_cast<WikipediaModel*>( model() );
162  Q_ASSERT( wikipediaModel );
163  MarbleWidget* widget = dynamic_cast<MarbleWidget*>( object );
164  if ( widget ) {
165  wikipediaModel->setMarbleWidget( widget );
166  }
167  }
168 
169  return AbstractDataPlugin::eventFilter( object, event );
170 }
171 
172 void WikipediaPlugin::readSettings()
173 {
174  if ( !m_configDialog )
175  return;
176 
177  ui_configWidget->m_itemNumberSpinBox->setValue( numberOfItems() );
178  ui_configWidget->m_showThumbnailCheckBox->setChecked( m_showThumbnails );
179 }
180 
181 void WikipediaPlugin::writeSettings()
182 {
183  setNumberOfItems( ui_configWidget->m_itemNumberSpinBox->value() );
184  m_showThumbnails = ui_configWidget->m_showThumbnailCheckBox->isChecked();
185 
186  emit settingsChanged( nameId() );
187 }
188 
189 void WikipediaPlugin::updateSettings()
190 {
191  AbstractDataPluginModel *abstractModel = model();
192  if ( abstractModel != 0 ) {
193  abstractModel->setItemSettings( settings() );
194  }
195 
196  WikipediaModel *wikipediaModel = qobject_cast<WikipediaModel*>( model() );
197  if ( wikipediaModel ) {
198  wikipediaModel->setShowThumbnail( m_showThumbnails );
199  }
200 }
201 
202 void WikipediaPlugin::checkNumberOfItems( quint32 number ) {
203  if ( number > maximumNumberOfItems ) {
204  setNumberOfItems( maximumNumberOfItems );
205  }
206 
207  readSettings();
208 }
209 
210 Q_EXPORT_PLUGIN2(WikipediaPlugin, Marble::WikipediaPlugin)
211 
212 #include "WikipediaPlugin.moc"
Marble::WikipediaPlugin::settings
virtual QHash< QString, QVariant > settings() const
Definition: WikipediaPlugin.cpp:137
Marble::AbstractDataPlugin::setNumberOfItems
void setNumberOfItems(quint32 number)
Set the number of items to be shown at the same time.
Definition: AbstractDataPlugin.cpp:156
Marble::WikipediaPlugin::copyrightYears
QString copyrightYears() const
Definition: WikipediaPlugin.cpp:96
QEvent
Marble::WikipediaPlugin::~WikipediaPlugin
~WikipediaPlugin()
Definition: WikipediaPlugin.cpp:57
QHash::insert
iterator insert(const Key &key, const T &value)
Marble::AbstractDataPlugin::changedNumberOfItems
void changedNumberOfItems(quint32 number)
Marble::WikipediaModel::setShowThumbnail
void setShowThumbnail(bool show)
Definition: WikipediaModel.cpp:55
Marble::RenderPlugin::eventFilter
bool eventFilter(QObject *, QEvent *)
Definition: RenderPlugin.cpp:216
Marble::WikipediaPlugin::icon
QIcon icon() const
Returns an icon for the plugin.
Definition: WikipediaPlugin.cpp:112
Marble::WikipediaPlugin::name
QString name() const
Returns the user-visible name of the plugin.
Definition: WikipediaPlugin.cpp:71
Marble::PluginAuthor
Definition: PluginInterface.h:28
Marble::AbstractDataPluginModel
An abstract data model (not based on QAbstractModel) for a AbstractDataPlugin.
Definition: AbstractDataPluginModel.h:45
Marble::WikipediaPlugin::guiString
QString guiString() const
String that should be displayed in GUI.
Definition: WikipediaPlugin.cpp:76
Marble::AbstractDataPlugin
An abstract class for plugins that show data that has a geo coordinate.
Definition: AbstractDataPlugin.h:45
Marble::WikipediaPlugin::nameId
QString nameId() const
Returns the unique name of the plugin.
Definition: WikipediaPlugin.cpp:81
MarbleDebug.h
QObject::tr
QString tr(const char *sourceText, const char *disambiguation, int n)
Marble::WikipediaPlugin::pluginAuthors
QList< PluginAuthor > pluginAuthors() const
Definition: WikipediaPlugin.cpp:101
Marble::MarbleWidget
A widget class that displays a view of the earth.
Definition: MarbleWidget.h:104
Marble::AbstractDataPlugin::numberOfItems
quint32 numberOfItems() const
Marble::AbstractDataPlugin::isInitialized
bool isInitialized() const
Definition: AbstractDataPlugin.cpp:81
Marble::WikipediaPlugin::description
QString description() const
Returns a user description of the plugin.
Definition: WikipediaPlugin.cpp:91
Marble::AbstractDataPluginModel::setItemSettings
void setItemSettings(QHash< QString, QVariant > itemSettings)
Sets the settings for all items.
Definition: AbstractDataPluginModel.cpp:568
QHash< QString, QVariant >
QObject
Marble::RenderPlugin::settingsChanged
void settingsChanged(QString nameId)
This signal is emitted if the settings of the RenderPlugin changed.
MarbleDirs.h
Marble::MarbleDirs
A class that manages data look-up for Marble.
Definition: MarbleDirs.h:79
WikipediaPlugin.h
Marble::WikipediaModel
Definition: WikipediaModel.h:25
Marble::RenderPlugin::setVisible
void setVisible(bool visible)
settting visible
Definition: RenderPlugin.cpp:151
Marble::WikipediaModel::setMarbleWidget
void setMarbleWidget(MarbleWidget *widget)
Definition: WikipediaModel.cpp:123
QString
QList
Marble::AbstractDataPlugin::setModel
void setModel(AbstractDataPluginModel *model)
Set the model of the plugin.
Definition: AbstractDataPlugin.cpp:134
WikipediaModel.h
Marble::WikipediaPlugin::setSettings
virtual void setSettings(const QHash< QString, QVariant > &settings)
Set the settings of the item.
Definition: WikipediaPlugin.cpp:147
maximumNumberOfItems
const quint32 maximumNumberOfItems
Definition: WikipediaPlugin.cpp:28
Q_EXPORT_PLUGIN2
#define Q_EXPORT_PLUGIN2(a, b)
Definition: marble_export.h:34
QHash::value
const T value(const Key &key) const
Marble::WikipediaPlugin::eventFilter
bool eventFilter(QObject *object, QEvent *event)
Definition: WikipediaPlugin.cpp:158
Marble::MarbleModel
The data model (not based on QAbstractModel) for a MarbleWidget.
Definition: MarbleModel.h:97
Marble::RenderPlugin::setEnabled
void setEnabled(bool enabled)
settting enabled
Definition: RenderPlugin.cpp:139
Marble::WikipediaPlugin::aboutDataText
QString aboutDataText() const
Returns about text (credits) for external data the plugin uses.
Definition: WikipediaPlugin.cpp:107
Marble::WikipediaPlugin::initialize
void initialize()
Definition: WikipediaPlugin.cpp:63
Marble::WikipediaPlugin::version
QString version() const
Definition: WikipediaPlugin.cpp:86
Marble::WikipediaPlugin
Definition: WikipediaPlugin.h:30
QDialog
MarbleWidget.h
This file contains the headers for MarbleWidget.
QPushButton
Marble::RenderPlugin::marbleModel
const MarbleModel * marbleModel() const
Access to the MarbleModel.
Definition: RenderPlugin.cpp:83
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
Marble::RenderPlugin::settings
virtual QHash< QString, QVariant > settings() const
Settings of the plugin.
Definition: RenderPlugin.cpp:185
Marble::AbstractDataPlugin::model
AbstractDataPluginModel * model()
Definition: AbstractDataPlugin.cpp:124
Marble::WikipediaPlugin::configDialog
QDialog * configDialog()
Returns a pointer to the configuration dialog of the plugin.
Definition: WikipediaPlugin.cpp:117
Marble::RenderPlugin::setSettings
virtual void setSettings(const QHash< QString, QVariant > &settings)
Set the settings of the plugin.
Definition: RenderPlugin.cpp:195
Marble::WikipediaPlugin::WikipediaPlugin
WikipediaPlugin()
Definition: WikipediaPlugin.cpp:30
QIcon
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:13:42 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

marble

Skip menu "marble"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal