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