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

marble

  • sources
  • kde-4.12
  • 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  m_marbleWidget( 0 )
35 {
36 }
37 
38 WikipediaPlugin::WikipediaPlugin( const MarbleModel *marbleModel )
39  : AbstractDataPlugin( marbleModel ),
40  m_icon( MarbleDirs::path( "svg/wikipedia_shadow.svg" ) ),
41  ui_configWidget( 0 ),
42  m_configDialog( 0 ),
43  m_showThumbnails( true ),
44  m_marbleWidget( 0 )
45 {
46  // Plugin is enabled by default
47  setEnabled( true );
48  // Plugin is not visible by default
49  setVisible( false );
50 
51  connect( this, SIGNAL(settingsChanged(QString)),
52  this, SLOT(updateSettings()) );
53  connect( this, SIGNAL(changedNumberOfItems(quint32)),
54  this, SLOT(checkNumberOfItems(quint32)) );
55 
56  setSettings( QHash<QString,QVariant>() );
57 }
58 
59 WikipediaPlugin::~WikipediaPlugin()
60 {
61  delete ui_configWidget;
62  delete m_configDialog;
63 }
64 
65 void WikipediaPlugin::initialize()
66 {
67  WikipediaModel *model = new WikipediaModel( marbleModel(), this );
68  // Ensure that all settings get forwarded to the model.
69  setModel( model );
70  updateSettings();
71 }
72 
73 QString WikipediaPlugin::name() const
74 {
75  return tr( "Wikipedia Articles" );
76 }
77 
78 QString WikipediaPlugin::guiString() const
79 {
80  return tr( "&Wikipedia" );
81 }
82 
83 QString WikipediaPlugin::nameId() const
84 {
85  return "wikipedia";
86 }
87 
88 QString WikipediaPlugin::version() const
89 {
90  return "1.0";
91 }
92 
93 QString WikipediaPlugin::description() const
94 {
95  return tr( "Automatically downloads Wikipedia articles and shows them on the right position on the map" );
96 }
97 
98 QString WikipediaPlugin::copyrightYears() const
99 {
100  return "2009";
101 }
102 
103 QList<PluginAuthor> WikipediaPlugin::pluginAuthors() const
104 {
105  return QList<PluginAuthor>()
106  << PluginAuthor( "Bastian Holst", "bastianholst@gmx.de" );
107 }
108 
109 QString WikipediaPlugin::aboutDataText() const
110 {
111  return tr( "Geo positions by geonames.org\nTexts by wikipedia.org" );
112 }
113 
114 QIcon WikipediaPlugin::icon() const
115 {
116  return m_icon;
117 }
118 
119 QDialog *WikipediaPlugin::configDialog()
120 {
121  if ( !m_configDialog ) {
122  // Initializing configuration dialog
123  m_configDialog = new QDialog();
124  ui_configWidget = new Ui::WikipediaConfigWidget;
125  ui_configWidget->setupUi( m_configDialog );
126  readSettings();
127  ui_configWidget->m_itemNumberSpinBox->setRange( 0, maximumNumberOfItems );
128  connect( ui_configWidget->m_buttonBox, SIGNAL(accepted()),
129  SLOT(writeSettings()) );
130  connect( ui_configWidget->m_buttonBox, SIGNAL(rejected()),
131  SLOT(readSettings()) );
132  QPushButton *applyButton = ui_configWidget->m_buttonBox->button( QDialogButtonBox::Apply );
133  connect( applyButton, SIGNAL(clicked()),
134  this, SLOT(writeSettings()) );
135  }
136  return m_configDialog;
137 }
138 
139 QHash<QString,QVariant> WikipediaPlugin::settings() const
140 {
141  QHash<QString, QVariant> settings = AbstractDataPlugin::settings();
142 
143  settings.insert( "numberOfItems", numberOfItems() );
144  settings.insert( "showThumbnails", m_showThumbnails );
145 
146  return settings;
147 }
148 
149 void WikipediaPlugin::setSettings( const QHash<QString,QVariant> &settings )
150 {
151  AbstractDataPlugin::setSettings( settings );
152 
153  setNumberOfItems( qMin<int>( maximumNumberOfItems, settings.value( "numberOfItems", 15 ).toInt() ) );
154  m_showThumbnails = settings.value( "showThumbnails", true ).toBool();
155 
156  readSettings();
157  emit settingsChanged( nameId() );
158 }
159 
160 bool WikipediaPlugin::eventFilter(QObject *object, QEvent *event)
161 {
162  if ( isInitialized() ) {
163  WikipediaModel *wikipediaModel = dynamic_cast<WikipediaModel*>( model() );
164  Q_ASSERT( wikipediaModel );
165  MarbleWidget* widget = dynamic_cast<MarbleWidget*>( object );
166  if ( widget ) {
167  wikipediaModel->setMarbleWidget( widget );
168  }
169  }
170 
171  return AbstractDataPlugin::eventFilter( object, event );
172 }
173 
174 void WikipediaPlugin::readSettings()
175 {
176  if ( !m_configDialog )
177  return;
178 
179  ui_configWidget->m_itemNumberSpinBox->setValue( numberOfItems() );
180  ui_configWidget->m_showThumbnailCheckBox->setChecked( m_showThumbnails );
181 }
182 
183 void WikipediaPlugin::writeSettings()
184 {
185  setNumberOfItems( ui_configWidget->m_itemNumberSpinBox->value() );
186  m_showThumbnails = ui_configWidget->m_showThumbnailCheckBox->isChecked();
187 
188  emit settingsChanged( nameId() );
189 }
190 
191 void WikipediaPlugin::updateSettings()
192 {
193  AbstractDataPluginModel *abstractModel = model();
194  if ( abstractModel != 0 ) {
195  abstractModel->setItemSettings( settings() );
196  }
197 
198  WikipediaModel *wikipediaModel = qobject_cast<WikipediaModel*>( model() );
199  if ( wikipediaModel ) {
200  wikipediaModel->setShowThumbnail( m_showThumbnails );
201  }
202 }
203 
204 void WikipediaPlugin::checkNumberOfItems( quint32 number ) {
205  if ( number > maximumNumberOfItems ) {
206  setNumberOfItems( maximumNumberOfItems );
207  }
208 
209  readSettings();
210 }
211 
212 Q_EXPORT_PLUGIN2(WikipediaPlugin, Marble::WikipediaPlugin)
213 
214 #include "WikipediaPlugin.moc"
Marble::WikipediaPlugin::settings
virtual QHash< QString, QVariant > settings() const
Definition: WikipediaPlugin.cpp:139
Marble::AbstractDataPlugin::setNumberOfItems
void setNumberOfItems(quint32 number)
Set the number of items to be shown at the same time.
Definition: AbstractDataPlugin.cpp:151
Marble::WikipediaPlugin::copyrightYears
QString copyrightYears() const
Definition: WikipediaPlugin.cpp:98
Marble::WikipediaPlugin::~WikipediaPlugin
~WikipediaPlugin()
Definition: WikipediaPlugin.cpp:59
Marble::AbstractDataPlugin::changedNumberOfItems
void changedNumberOfItems(quint32 number)
QDialog
Marble::WikipediaModel::setShowThumbnail
void setShowThumbnail(bool show)
Definition: WikipediaModel.cpp:55
Marble::RenderPlugin::eventFilter
bool eventFilter(QObject *, QEvent *)
Definition: RenderPlugin.cpp:209
Marble::WikipediaPlugin::icon
QIcon icon() const
Returns an icon for the plugin.
Definition: WikipediaPlugin.cpp:114
Marble::WikipediaPlugin::name
QString name() const
Returns the user-visible name of the plugin.
Definition: WikipediaPlugin.cpp:73
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:78
Marble::AbstractDataPlugin
An abstract class for plugins that show data that has a geo coordinate.
Definition: AbstractDataPlugin.h:45
QObject
Marble::WikipediaPlugin::nameId
QString nameId() const
Returns the unique name of the plugin.
Definition: WikipediaPlugin.cpp:83
MarbleDebug.h
Marble::WikipediaPlugin::pluginAuthors
QList< PluginAuthor > pluginAuthors() const
Definition: WikipediaPlugin.cpp:103
Marble::MarbleWidget
A widget class that displays a view of the earth.
Definition: MarbleWidget.h:102
Marble::AbstractDataPlugin::model
AbstractDataPluginModel * model() const
Definition: AbstractDataPlugin.cpp:124
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:93
Marble::AbstractDataPluginModel::setItemSettings
void setItemSettings(QHash< QString, QVariant > itemSettings)
Sets the settings for all items.
Definition: AbstractDataPluginModel.cpp:568
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:149
Marble::WikipediaModel::setMarbleWidget
void setMarbleWidget(MarbleWidget *widget)
Definition: WikipediaModel.cpp:123
Marble::AbstractDataPlugin::setModel
void setModel(AbstractDataPluginModel *model)
Set the model of the plugin.
Definition: AbstractDataPlugin.cpp:129
WikipediaModel.h
Marble::WikipediaPlugin::setSettings
virtual void setSettings(const QHash< QString, QVariant > &settings)
Set the settings of the item.
Definition: WikipediaPlugin.cpp:149
maximumNumberOfItems
const quint32 maximumNumberOfItems
Definition: WikipediaPlugin.cpp:28
Q_EXPORT_PLUGIN2
#define Q_EXPORT_PLUGIN2(a, b)
Definition: marble_export.h:34
Marble::WikipediaPlugin::eventFilter
bool eventFilter(QObject *object, QEvent *event)
Definition: WikipediaPlugin.cpp:160
Marble::MarbleModel
The data model (not based on QAbstractModel) for a MarbleWidget.
Definition: MarbleModel.h:96
Marble::RenderPlugin::setEnabled
void setEnabled(bool enabled)
settting enabled
Definition: RenderPlugin.cpp:137
Marble::WikipediaPlugin::aboutDataText
QString aboutDataText() const
Returns about text (credits) for external data the plugin uses.
Definition: WikipediaPlugin.cpp:109
Marble::WikipediaPlugin::initialize
void initialize()
Definition: WikipediaPlugin.cpp:65
Marble::WikipediaPlugin::version
QString version() const
Definition: WikipediaPlugin.cpp:88
Marble::WikipediaPlugin
Definition: WikipediaPlugin.h:32
MarbleWidget.h
This file contains the headers for MarbleWidget.
Marble::RenderPlugin::marbleModel
const MarbleModel * marbleModel() const
Access to the MarbleModel.
Definition: RenderPlugin.cpp:81
Marble::RenderPlugin::settings
virtual QHash< QString, QVariant > settings() const
Settings of the plugin.
Definition: RenderPlugin.cpp:183
Marble::WikipediaPlugin::configDialog
QDialog * configDialog()
Returns a pointer to the configuration dialog of the plugin.
Definition: WikipediaPlugin.cpp:119
Marble::RenderPlugin::setSettings
virtual void setSettings(const QHash< QString, QVariant > &settings)
Set the settings of the plugin.
Definition: RenderPlugin.cpp:193
Marble::WikipediaPlugin::WikipediaPlugin
WikipediaPlugin()
Definition: WikipediaPlugin.cpp:30
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:38:53 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
  • kstars
  • libkdeedu
  •   keduvocdocument
  • 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