• 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
  • photo
PhotoPlugin.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 // Copyright 2012 Mohammed Nafees <nafees.technocool@gmail.com>
10 //
11 
12 // Self
13 #include "PhotoPlugin.h"
14 
15 #include "PhotoPluginModel.h"
16 
17 // Marble
18 #include "ui_PhotoConfigWidget.h"
19 #include "MarbleDebug.h"
20 #include "MarbleModel.h"
21 #include "MarbleWidget.h"
22 
23 // Qt
24 #include <QPushButton>
25 #include <QLabel>
26 #include <QStringList>
27 
28 using namespace Marble;
29 /* TRANSLATOR Marble::PhotoPlugin */
30 
31 const quint32 maximumNumberOfItems = 99;
32 
33 PhotoPlugin::PhotoPlugin()
34  : AbstractDataPlugin( 0 ),
35  ui_configWidget( 0 ),
36  m_configDialog( 0 ),
37  m_marbleWidget( 0 )
38 {
39 }
40 
41 PhotoPlugin::PhotoPlugin( const MarbleModel *marbleModel )
42  : AbstractDataPlugin( marbleModel ),
43  ui_configWidget( 0 ),
44  m_configDialog( 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 PhotoPlugin::~PhotoPlugin()
60 {
61  delete ui_configWidget;
62  delete m_configDialog;
63 }
64 
65 void PhotoPlugin::initialize()
66 {
67  mDebug() << "PhotoPlugin: Initialize";
68  PhotoPluginModel *model = new PhotoPluginModel( marbleModel(), this );
69  setModel( model );
70  updateSettings();
71 }
72 
73 QString PhotoPlugin::name() const
74 {
75  return tr( "Photos" );
76 }
77 
78 QString PhotoPlugin::guiString() const
79 {
80  return tr( "&Photos" );
81 }
82 
83 QString PhotoPlugin::nameId() const
84 {
85  return "photo";
86 }
87 
88 QString PhotoPlugin::version() const
89 {
90  return "1.0";
91 }
92 
93 QString PhotoPlugin::description() const
94 {
95  return tr( "Automatically downloads images from around the world in preference to their popularity" );
96 }
97 
98 QString PhotoPlugin::copyrightYears() const
99 {
100  return "2009, 2012";
101 }
102 
103 QList<PluginAuthor> PhotoPlugin::pluginAuthors() const
104 {
105  return QList<PluginAuthor>()
106  << PluginAuthor( "Bastian Holst", "bastianholst@gmx.de" )
107  << PluginAuthor( "Mohammed Nafees", "nafees.technocool@gmail.com" );
108 }
109 
110 QIcon PhotoPlugin::icon() const
111 {
112  return QIcon(":/icons/photo.png");
113 }
114 
115 QDialog *PhotoPlugin::configDialog()
116 {
117  if ( !m_configDialog ) {
118  // Initializing configuration dialog
119  m_configDialog = new QDialog();
120  ui_configWidget = new Ui::PhotoConfigWidget;
121  ui_configWidget->setupUi( m_configDialog );
122 
123  // add licenses to the list widget
124  QListWidgetItem *ccByNcSa2 = new QListWidgetItem( ui_configWidget->m_licenseListWidget );
125  ccByNcSa2->setText( tr("Attribution-NonCommercial-ShareAlike License") );
126  ccByNcSa2->setIcon( QIcon() );
127  ccByNcSa2->setCheckState( Qt::Checked );
128  ccByNcSa2->setData( Qt::UserRole+1, 1 );
129  ccByNcSa2->setData( Qt::UserRole+2, "http://creativecommons.org/licenses/by-nc-sa/2.0/" );
130  ui_configWidget->m_licenseListWidget->addItem( ccByNcSa2 );
131  QListWidgetItem *ccByNc2 = new QListWidgetItem( ui_configWidget->m_licenseListWidget );
132  ccByNc2->setText( tr("Attribution-NonCommercial License") );
133  ccByNc2->setIcon( QIcon() );
134  ccByNc2->setCheckState( Qt::Checked );
135  ccByNc2->setData( Qt::UserRole+1, 2 );
136  ccByNc2->setData( Qt::UserRole+2, "http://creativecommons.org/licenses/by-nc/2.0/" );
137  ui_configWidget->m_licenseListWidget->addItem( ccByNc2 );
138  QListWidgetItem *ccByNcNd2 = new QListWidgetItem( ui_configWidget->m_licenseListWidget );
139  ccByNcNd2->setText( tr("Attribution-NonCommercial-NoDerivs License") );
140  ccByNcNd2->setIcon( QIcon() );
141  ccByNcNd2->setCheckState( Qt::Checked );
142  ccByNcNd2->setData( Qt::UserRole+1, 3 );
143  ccByNcNd2->setData( Qt::UserRole+2, "http://creativecommons.org/licenses/by-nc-nd/2.0/" );
144  ui_configWidget->m_licenseListWidget->addItem( ccByNcNd2 );
145  QListWidgetItem *ccBy2 = new QListWidgetItem( ui_configWidget->m_licenseListWidget );
146  ccBy2->setText( tr("Attribution License") );
147  ccBy2->setIcon( QIcon() );
148  ccBy2->setCheckState( Qt::Checked );
149  ccBy2->setData( Qt::UserRole+1, 4 );
150  ccBy2->setData( Qt::UserRole+2, "http://creativecommons.org/licenses/by/2.0/" );
151  ui_configWidget->m_licenseListWidget->addItem( ccBy2 );
152  QListWidgetItem *ccBySa2 = new QListWidgetItem( ui_configWidget->m_licenseListWidget );
153  ccBySa2->setText( tr("Attribution-ShareAlike License") );
154  ccBySa2->setIcon( QIcon() );
155  ccBySa2->setCheckState( Qt::Checked );
156  ccBySa2->setData( Qt::UserRole+1, 5 );
157  ccBySa2->setData( Qt::UserRole+2, "http://creativecommons.org/licenses/by-sa/2.0/" );
158  ui_configWidget->m_licenseListWidget->addItem( ccBySa2 );
159  QListWidgetItem *ccByNd2 = new QListWidgetItem( ui_configWidget->m_licenseListWidget );
160  ccByNd2->setText( tr("Attribution-NoDerivs License") );
161  ccByNd2->setIcon( QIcon() );
162  ccByNd2->setCheckState( Qt::Checked );
163  ccByNd2->setData( Qt::UserRole+1, 6 );
164  ccByNd2->setData( Qt::UserRole+2, "http://creativecommons.org/licenses/by-nd/2.0/" );
165  ui_configWidget->m_licenseListWidget->addItem( ccByNd2 );
166  QListWidgetItem *noLicense = new QListWidgetItem( ui_configWidget->m_licenseListWidget );
167  noLicense->setText( tr("No known copyright restrictions") );
168  noLicense->setIcon( QIcon() );
169  noLicense->setCheckState( Qt::Checked );
170  noLicense->setData( Qt::UserRole+1, 7 );
171  noLicense->setData( Qt::UserRole+2, "http://flickr.com/commons/usage/" );
172  ui_configWidget->m_licenseListWidget->addItem( noLicense );
173 
174  readSettings();
175  ui_configWidget->m_itemNumberSpinBox->setRange( 0, maximumNumberOfItems );
176  connect( ui_configWidget->m_buttonBox, SIGNAL(accepted()),
177  SLOT(writeSettings()) );
178  connect( ui_configWidget->m_buttonBox, SIGNAL(rejected()),
179  SLOT(readSettings()) );
180  QPushButton *applyButton = ui_configWidget->m_buttonBox->button( QDialogButtonBox::Apply );
181  connect( applyButton, SIGNAL(clicked()),
182  this, SLOT(writeSettings()) );
183  }
184  return m_configDialog;
185 }
186 
187 QHash<QString,QVariant> PhotoPlugin::settings() const
188 {
189  QHash<QString, QVariant> settings = AbstractDataPlugin::settings();
190 
191  settings.insert( "numberOfItems", numberOfItems() );
192  settings.insert( "checkState", m_checkStateList.join(",") );
193 
194  return settings;
195 }
196 
197 void PhotoPlugin::setSettings( const QHash<QString,QVariant> &settings )
198 {
199  AbstractDataPlugin::setSettings( settings );
200 
201  setNumberOfItems( qMin<int>( maximumNumberOfItems, settings.value( "numberOfItems", 15 ).toInt() ) );
202  m_checkStateList = settings.value( "checkState", "1,2,3,4,5,6,7" ).toString().split( ",", QString::SkipEmptyParts );
203 
204  updateSettings();
205  readSettings();
206 }
207 
208 bool PhotoPlugin::eventFilter(QObject *object, QEvent *event)
209 {
210  if ( isInitialized() ) {
211  PhotoPluginModel *photoPluginModel = dynamic_cast<PhotoPluginModel*>( model() );
212  Q_ASSERT( photoPluginModel );
213  MarbleWidget* widget = dynamic_cast<MarbleWidget*>( object );
214  if ( widget ) {
215  photoPluginModel->setMarbleWidget( widget );
216  }
217  }
218 
219  return AbstractDataPlugin::eventFilter( object, event );
220 }
221 
222 void PhotoPlugin::readSettings()
223 {
224  if ( !m_configDialog )
225  return;
226 
227  ui_configWidget->m_itemNumberSpinBox->setValue( numberOfItems() );
228  for ( int i = 0; i < ui_configWidget->m_licenseListWidget->count(); ++i ) {
229  const QString licenseId = QString::number( ui_configWidget->m_licenseListWidget->item(i)->data( Qt::UserRole+1 ).toInt() );
230  ui_configWidget->m_licenseListWidget->item(i)->setCheckState( m_checkStateList.contains( licenseId ) ? Qt::Checked : Qt::Unchecked );
231  }
232 }
233 
234 void PhotoPlugin::writeSettings()
235 {
236  setNumberOfItems( ui_configWidget->m_itemNumberSpinBox->value() );
237 
238  QStringList licenseCheckStateList;
239  for ( int i = 0; i < ui_configWidget->m_licenseListWidget->count(); ++i ) {
240  if ( ui_configWidget->m_licenseListWidget->item(i)->checkState() == Qt::Checked )
241  {
242  licenseCheckStateList << ui_configWidget->m_licenseListWidget->item(i)->data( Qt::UserRole+1 ).toString();
243  }
244  }
245  m_checkStateList = licenseCheckStateList;
246 
247  emit settingsChanged( nameId() );
248 }
249 
250 void PhotoPlugin::updateSettings()
251 {
252  AbstractDataPluginModel *abstractModel = model();
253  if ( abstractModel != 0 ) {
254  abstractModel->setItemSettings( settings() );
255  }
256 
257  if ( model() ) {
258  qobject_cast<PhotoPluginModel*>( model() )->setLicenseValues( m_checkStateList.join(",") );
259  }
260 }
261 
262 void PhotoPlugin::checkNumberOfItems( quint32 number ) {
263  if ( number > maximumNumberOfItems ) {
264  setNumberOfItems( maximumNumberOfItems );
265  }
266 
267  readSettings();
268 }
269 
270 Q_EXPORT_PLUGIN2(PhotoPlugin, Marble::PhotoPlugin)
271 
272 #include "PhotoPlugin.moc"
Marble::AbstractDataPlugin::setNumberOfItems
void setNumberOfItems(quint32 number)
Set the number of items to be shown at the same time.
Definition: AbstractDataPlugin.cpp:151
Marble::PhotoPluginModel
Definition: PhotoPluginModel.h:24
Marble::AbstractDataPlugin::changedNumberOfItems
void changedNumberOfItems(quint32 number)
QDialog
Marble::RenderPlugin::eventFilter
bool eventFilter(QObject *, QEvent *)
Definition: RenderPlugin.cpp:209
MarbleModel.h
This file contains the headers for MarbleModel.
Marble::PluginAuthor
Definition: PluginInterface.h:28
Marble::AbstractDataPluginModel
An abstract data model (not based on QAbstractModel) for a AbstractDataPlugin.
Definition: AbstractDataPluginModel.h:45
Marble::PhotoPlugin::PhotoPlugin
PhotoPlugin()
Definition: PhotoPlugin.cpp:33
Marble::PhotoPlugin::initialize
void initialize()
Definition: PhotoPlugin.cpp:65
Marble::PhotoPlugin::description
QString description() const
Returns a user description of the plugin.
Definition: PhotoPlugin.cpp:93
Marble::AbstractDataPlugin
An abstract class for plugins that show data that has a geo coordinate.
Definition: AbstractDataPlugin.h:45
maximumNumberOfItems
const quint32 maximumNumberOfItems
Definition: PhotoPlugin.cpp:31
QObject
Marble::PhotoPlugin::name
QString name() const
Returns the user-visible name of the plugin.
Definition: PhotoPlugin.cpp:73
MarbleDebug.h
Marble::PhotoPlugin::copyrightYears
QString copyrightYears() const
Definition: PhotoPlugin.cpp:98
Marble::MarbleWidget
A widget class that displays a view of the earth.
Definition: MarbleWidget.h:102
Marble::PhotoPlugin::nameId
QString nameId() const
Returns the unique name of the plugin.
Definition: PhotoPlugin.cpp:83
Marble::PhotoPlugin::setSettings
virtual void setSettings(const QHash< QString, QVariant > &settings)
Set the settings of the item.
Definition: PhotoPlugin.cpp:197
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::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.
PhotoPluginModel.h
Marble::PhotoPluginModel::setMarbleWidget
void setMarbleWidget(MarbleWidget *widget)
Definition: PhotoPluginModel.cpp:152
Marble::PhotoPlugin::~PhotoPlugin
~PhotoPlugin()
Definition: PhotoPlugin.cpp:59
Marble::RenderPlugin::setVisible
void setVisible(bool visible)
settting visible
Definition: RenderPlugin.cpp:149
Marble::PhotoPlugin::settings
virtual QHash< QString, QVariant > settings() const
Definition: PhotoPlugin.cpp:187
Marble::PhotoPlugin
Definition: PhotoPlugin.h:33
Marble::AbstractDataPlugin::setModel
void setModel(AbstractDataPluginModel *model)
Set the model of the plugin.
Definition: AbstractDataPlugin.cpp:129
Q_EXPORT_PLUGIN2
#define Q_EXPORT_PLUGIN2(a, b)
Definition: marble_export.h:34
Marble::PhotoPlugin::version
QString version() const
Definition: PhotoPlugin.cpp:88
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
PhotoPlugin.h
Marble::PhotoPlugin::eventFilter
bool eventFilter(QObject *object, QEvent *event)
Definition: PhotoPlugin.cpp:208
MarbleWidget.h
This file contains the headers for MarbleWidget.
Marble::PhotoPlugin::icon
QIcon icon() const
Returns an icon for the plugin.
Definition: PhotoPlugin.cpp:110
Marble::PhotoPlugin::configDialog
QDialog * configDialog()
Returns a pointer to the configuration dialog of the plugin.
Definition: PhotoPlugin.cpp:115
Marble::PhotoPlugin::pluginAuthors
QList< PluginAuthor > pluginAuthors() const
Definition: PhotoPlugin.cpp:103
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::mDebug
QDebug mDebug()
a function to replace qDebug() in Marble library code
Definition: MarbleDebug.cpp:31
Marble::PhotoPlugin::guiString
QString guiString() const
String that should be displayed in GUI.
Definition: PhotoPlugin.cpp:78
Marble::RenderPlugin::setSettings
virtual void setSettings(const QHash< QString, QVariant > &settings)
Set the settings of the plugin.
Definition: RenderPlugin.cpp:193
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:38:52 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