• 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
  • earthquake
EarthquakePlugin.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 2011 Utku Aydın <utkuaydin34@gmail.com>
9 //
10 
11 #include "EarthquakePlugin.h"
12 #include "EarthquakeModel.h"
13 #include "ui_EarthquakeConfigWidget.h"
14 
15 #include <QPushButton>
16 #include <QSlider>
17 
18 #include "MarbleModel.h"
19 
20 namespace Marble {
21 
22 EarthquakePlugin::EarthquakePlugin()
23  : AbstractDataPlugin( 0 ),
24  m_ui( 0 ),
25  m_configDialog( 0 ),
26  m_maximumNumberOfItems( 100 )
27 {
28 }
29 
30 EarthquakePlugin::EarthquakePlugin( const MarbleModel *marbleModel )
31  : AbstractDataPlugin( marbleModel ),
32  m_ui( 0 ),
33  m_configDialog( 0 ),
34  m_minMagnitude( 0.0 ),
35  m_startDate( QDateTime::fromString( "2006-02-04", "yyyy-MM-dd" ) ),
36  m_endDate( marbleModel->clockDateTime() ),
37  m_maximumNumberOfItems( 100 )
38 {
39  setEnabled( true ); // Plugin is enabled by default
40  setVisible( false ); // Plugin is invisible by default
41  connect( this, SIGNAL(settingsChanged(QString)),
42  this, SLOT(updateModel()) );
43 }
44 
45 void EarthquakePlugin::initialize()
46 {
47  EarthquakeModel *model = new EarthquakeModel( marbleModel(), this );
48  setModel( model );
49  setNumberOfItems( 20 );
50 }
51 
52 QString EarthquakePlugin::name() const
53 {
54  return tr( "Earthquakes" );
55 }
56 
57 QString EarthquakePlugin::guiString() const
58 {
59  return tr( "&Earthquakes" );
60 }
61 
62 QString EarthquakePlugin::nameId() const
63 {
64  return "earthquake";
65 }
66 
67 QString EarthquakePlugin::version() const
68 {
69  return "1.0";
70 }
71 
72 QString EarthquakePlugin::description() const
73 {
74  return tr( "Shows earthquakes on the map." );
75 }
76 
77 QString EarthquakePlugin::copyrightYears() const
78 {
79  return "2010, 2011";
80 }
81 
82 QList<PluginAuthor> EarthquakePlugin::pluginAuthors() const
83 {
84  return QList<PluginAuthor>()
85  << PluginAuthor( QString::fromUtf8( "Utku Aydın" ), "utkuaydin34@gmail.com" )
86  << PluginAuthor( QString::fromUtf8( "Daniel Marth" ), "danielmarth@gmx.at" );
87 }
88 
89 QIcon EarthquakePlugin::icon() const
90 {
91  return QIcon(":/icons/earthquake.png");
92 }
93 
94 QDialog *EarthquakePlugin::configDialog()
95 {
96  if ( !m_configDialog ) {
97  // Initializing configuration dialog
98  m_configDialog = new QDialog();
99  m_ui = new Ui::EarthquakeConfigWidget;
100  m_ui->setupUi( m_configDialog );
101  m_ui->m_numResults->setRange( 1, m_maximumNumberOfItems );
102  readSettings();
103  connect( m_ui->m_buttonBox, SIGNAL(accepted()),
104  SLOT(writeSettings()) );
105  connect( m_ui->m_buttonBox, SIGNAL(rejected()),
106  SLOT(readSettings()) );
107  connect( m_ui->m_buttonBox->button( QDialogButtonBox::Reset ), SIGNAL(clicked()),
108  SLOT(restoreDefaultSettings()) );
109  QPushButton *applyButton = m_ui->m_buttonBox->button( QDialogButtonBox::Apply );
110  connect( applyButton, SIGNAL(clicked()),
111  SLOT(writeSettings()) );
112  connect( m_ui->m_endDate, SIGNAL(dateTimeChanged(QDateTime)),
113  SLOT(validateDateRange()) );
114  connect( this, SIGNAL(settingsChanged(QString)),
115  this, SLOT(readSettings()) );
116  }
117  return m_configDialog;
118 }
119 
120 QHash<QString,QVariant> EarthquakePlugin::settings() const
121 {
122  QHash<QString, QVariant> settings = AbstractDataPlugin::settings();
123 
124  settings.insert( "numResults", numberOfItems() );
125  settings.insert( "minMagnitude", m_minMagnitude );
126  settings.insert( "startDate", m_startDate );
127  settings.insert( "endDate", m_endDate );
128  settings.insert( "maximumNumberOfItems", m_maximumNumberOfItems );
129 
130  return settings;
131 }
132 
133 void EarthquakePlugin::setSettings( const QHash<QString,QVariant> &settings )
134 {
135  AbstractDataPlugin::setSettings( settings );
136 
137  setNumberOfItems( settings.value( "numResults", 20 ).toInt() );
138  m_minMagnitude = settings.value( "minMagnitude", 0.0 ).toReal();
139  m_startDate = settings.value( "startDate", QDateTime::fromString( "2006-02-04", "yyyy-MM-dd" ) ).toDateTime();
140  m_endDate = settings.value( "endDate", marbleModel()->clockDateTime() ).toDateTime();
141  m_maximumNumberOfItems = settings.value( "maximumNumberOfItems", m_maximumNumberOfItems ).toInt();
142 
143  emit settingsChanged( nameId() );
144 }
145 
146 void EarthquakePlugin::readSettings()
147 {
148  Q_ASSERT( m_configDialog );
149 
150  m_ui->m_numResults->setValue( numberOfItems() );
151  m_ui->m_minMagnitude->setValue( m_minMagnitude );
152  m_ui->m_startDate->setDateTime( m_startDate );
153  m_ui->m_endDate->setDateTime( m_endDate );
154  m_ui->m_startDate->setMaximumDateTime( m_ui->m_endDate->dateTime() );
155 }
156 
157 void EarthquakePlugin::writeSettings()
158 {
159  Q_ASSERT( m_configDialog );
160 
161  setNumberOfItems( m_ui->m_numResults->value() );
162  m_minMagnitude = m_ui->m_minMagnitude->value();
163  m_startDate = m_ui->m_startDate->dateTime();
164  m_endDate = m_ui->m_endDate->dateTime();
165 
166  emit settingsChanged( nameId() );
167 }
168 
169 void EarthquakePlugin::updateModel()
170 {
171  if( model() ) {
172  EarthquakeModel *const earthquakeModel = static_cast<EarthquakeModel *>( model() );
173  earthquakeModel->setMinMagnitude( m_minMagnitude );
174  earthquakeModel->setStartDate( m_startDate );
175  earthquakeModel->setEndDate( m_endDate );
176  earthquakeModel->clear();
177  }
178 }
179 
180 void EarthquakePlugin::validateDateRange()
181 {
182  Q_ASSERT( m_configDialog );
183  if( m_ui->m_startDate->dateTime() > m_ui->m_endDate->dateTime() ) {
184  m_ui->m_startDate->setDateTime( m_ui->m_endDate->dateTime() );
185  }
186  m_ui->m_startDate->setMaximumDateTime( m_ui->m_endDate->dateTime() );
187 }
188 
189 }
190 
191 Q_EXPORT_PLUGIN2( EarthquakePlugin, Marble::EarthquakePlugin )
192 
193 #include "EarthquakePlugin.moc"
Marble::AbstractDataPlugin::setNumberOfItems
void setNumberOfItems(quint32 number)
Set the number of items to be shown at the same time.
Definition: AbstractDataPlugin.cpp:156
QHash::insert
iterator insert(const Key &key, const T &value)
Marble::EarthquakePlugin
Definition: EarthquakePlugin.h:27
MarbleModel.h
This file contains the headers for MarbleModel.
Marble::PluginAuthor
Definition: PluginInterface.h:28
Marble::RenderPlugin::restoreDefaultSettings
void restoreDefaultSettings()
Passes an empty set of settings to the plugin.
Definition: RenderPlugin.cpp:221
Marble::AbstractDataPlugin
An abstract class for plugins that show data that has a geo coordinate.
Definition: AbstractDataPlugin.h:45
Marble::EarthquakePlugin::name
QString name() const
Returns the user-visible name of the plugin.
Definition: EarthquakePlugin.cpp:52
Marble::EarthquakePlugin::description
QString description() const
Returns a user description of the plugin.
Definition: EarthquakePlugin.cpp:72
QObject::tr
QString tr(const char *sourceText, const char *disambiguation, int n)
Marble::EarthquakePlugin::pluginAuthors
QList< PluginAuthor > pluginAuthors() const
Definition: EarthquakePlugin.cpp:82
Marble::AbstractDataPlugin::numberOfItems
quint32 numberOfItems() const
QString::fromUtf8
QString fromUtf8(const char *str, int size)
Marble::AbstractDataPluginModel::clear
void clear()
Removes all items.
Definition: AbstractDataPluginModel.cpp:663
Marble::EarthquakeModel::setMinMagnitude
void setMinMagnitude(double minMagnitude)
Definition: EarthquakeModel.cpp:43
QHash< QString, QVariant >
Marble::RenderPlugin::settingsChanged
void settingsChanged(QString nameId)
This signal is emitted if the settings of the RenderPlugin changed.
Marble::EarthquakePlugin::nameId
QString nameId() const
Returns the unique name of the plugin.
Definition: EarthquakePlugin.cpp:62
EarthquakePlugin.h
Marble::EarthquakePlugin::settings
virtual QHash< QString, QVariant > settings() const
Definition: EarthquakePlugin.cpp:120
EarthquakeModel.h
Marble::RenderPlugin::setVisible
void setVisible(bool visible)
settting visible
Definition: RenderPlugin.cpp:151
QString
QList
Marble::AbstractDataPlugin::setModel
void setModel(AbstractDataPluginModel *model)
Set the model of the plugin.
Definition: AbstractDataPlugin.cpp:134
Q_EXPORT_PLUGIN2
#define Q_EXPORT_PLUGIN2(a, b)
Definition: marble_export.h:34
QHash::value
const T value(const Key &key) const
Marble::EarthquakePlugin::setSettings
virtual void setSettings(const QHash< QString, QVariant > &settings)
Set the settings of the item.
Definition: EarthquakePlugin.cpp:133
Marble::EarthquakePlugin::version
QString version() const
Definition: EarthquakePlugin.cpp:67
QDateTime::fromString
QDateTime fromString(const QString &string, Qt::DateFormat format)
Marble::EarthquakePlugin::readSettings
void readSettings()
Definition: EarthquakePlugin.cpp:146
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::EarthquakePlugin::writeSettings
void writeSettings()
Definition: EarthquakePlugin.cpp:157
Marble::EarthquakePlugin::copyrightYears
QString copyrightYears() const
Definition: EarthquakePlugin.cpp:77
Marble::EarthquakePlugin::EarthquakePlugin
EarthquakePlugin()
Definition: EarthquakePlugin.cpp:22
Marble::EarthquakeModel::setStartDate
void setStartDate(const QDateTime &startDate)
Definition: EarthquakeModel.cpp:48
Marble::EarthquakeModel::setEndDate
void setEndDate(const QDateTime &endDate)
Definition: EarthquakeModel.cpp:53
QDialog
QPushButton
Marble::EarthquakePlugin::initialize
virtual void initialize()
Definition: EarthquakePlugin.cpp:45
Marble::EarthquakePlugin::updateModel
void updateModel()
Definition: EarthquakePlugin.cpp:169
Marble::EarthquakePlugin::configDialog
QDialog * configDialog()
Returns a pointer to the configuration dialog of the plugin.
Definition: EarthquakePlugin.cpp:94
Marble::RenderPlugin::marbleModel
const MarbleModel * marbleModel() const
Access to the MarbleModel.
Definition: RenderPlugin.cpp:83
Marble::EarthquakeModel
Definition: EarthquakeModel.h:20
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::EarthquakePlugin::guiString
QString guiString() const
String that should be displayed in GUI.
Definition: EarthquakePlugin.cpp:57
Marble::AbstractDataPlugin::model
AbstractDataPluginModel * model()
Definition: AbstractDataPlugin.cpp:124
Marble::RenderPlugin::setSettings
virtual void setSettings(const QHash< QString, QVariant > &settings)
Set the settings of the plugin.
Definition: RenderPlugin.cpp:195
QIcon
QDateTime
Marble::EarthquakePlugin::icon
QIcon icon() const
Returns an icon for the plugin.
Definition: EarthquakePlugin.cpp:89
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:13:38 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