• 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
WikipediaItem.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 "WikipediaItem.h"
13 
14 // Qt
15 #include <QAction>
16 #include <QIcon>
17 #include <QPainter>
18 #include <QPixmap>
19 #include <QMouseEvent>
20 #include <QWebView>
21 
22 // Marble
23 #include "MarbleDebug.h"
24 #include "ViewportParams.h"
25 #include "TinyWebBrowser.h"
26 #include "MarbleWidget.h"
27 #include "MarbleModel.h"
28 #include "RenderPlugin.h"
29 #include "PluginManager.h"
30 #include "layers/PopupLayer.h"
31 
32 using namespace Marble;
33 /* TRANSLATOR Marble::WikipediaItem */
34 
35 // The Wikipedia icon is not a square
36 const QRect wikiIconRect( 0, 0, 22, 19 );
37 const QSize miniWikiIconSize( 22, 19 );
38 const int miniWikiIconBorder = 3;
39 
40 WikipediaItem::WikipediaItem( MarbleWidget* widget, QObject *parent )
41  : AbstractDataPluginItem( parent ),
42  m_marbleWidget( widget ),
43  m_rank( 0.0 ),
44  m_browser( 0 ),
45  m_wikiIcon(),
46  m_showThumbnail( false )
47 {
48  m_action = new QAction( this );
49  connect( m_action, SIGNAL(triggered()), this, SLOT(openBrowser()) );
50  setCacheMode( ItemCoordinateCache );
51 }
52 
53 WikipediaItem::~WikipediaItem()
54 {
55  delete m_browser;
56 }
57 
58 QString WikipediaItem::name() const
59 {
60  return id();
61 }
62 
63 void WikipediaItem::setName( const QString& name )
64 {
65  setId( name );
66  updateToolTip();
67 }
68 
69 bool WikipediaItem::initialized() const
70 {
71  return true;
72 }
73 
74 void WikipediaItem::addDownloadedFile( const QString& url, const QString& type )
75 {
76  if ( type == "thumbnail" ) {
77  m_thumbnail.load( url );
78  updateSize();
79  emit updated();
80  }
81 }
82 
83 bool WikipediaItem::operator<( const AbstractDataPluginItem *other ) const
84 {
85  WikipediaItem const * otherItem = dynamic_cast<WikipediaItem const *>( other );
86  return otherItem ? m_rank > otherItem->m_rank : id() < other->id();
87 }
88 
89 void WikipediaItem::paint( QPainter *painter )
90 {
91  if ( !showThumbnail() ) {
92  m_wikiIcon.paint( painter, wikiIconRect );
93  }
94  else {
95  painter->drawPixmap( 0, 0, m_thumbnail );
96  QSize minSize = miniWikiIconSize;
97  minSize *= 2;
98  QSize thumbnailSize = m_thumbnail.size();
99 
100  if ( thumbnailSize.width() >= minSize.width()
101  && thumbnailSize.height() >= minSize.height() )
102  {
103  QRect wikiRect( QPoint( 0, 0 ), miniWikiIconSize );
104  wikiRect.moveBottomRight( QPoint( m_thumbnail.width() - miniWikiIconBorder,
105  m_thumbnail.height() - miniWikiIconBorder ) );
106  m_wikiIcon.paint( painter, wikiRect );
107  }
108  }
109 }
110 
111 qreal WikipediaItem::longitude() const
112 {
113  return coordinate().longitude();
114 }
115 
116 void WikipediaItem::setLongitude( qreal longitude )
117 {
118  GeoDataCoordinates updatedCoordinates = coordinate();
119  updatedCoordinates.setLongitude( longitude );
120  setCoordinate( updatedCoordinates );
121 }
122 
123 qreal WikipediaItem::latitude() const
124 {
125  return coordinate().latitude();
126 }
127 
128 void WikipediaItem::setLatitude( qreal latitude )
129 {
130  GeoDataCoordinates updatedCoordinates = coordinate();
131  updatedCoordinates.setLatitude( latitude );
132  setCoordinate( updatedCoordinates );
133 }
134 
135 QUrl WikipediaItem::url() const
136 {
137  return m_url;
138 }
139 
140 void WikipediaItem::setUrl( const QUrl& url )
141 {
142  m_url = url;
143 }
144 
145 QUrl WikipediaItem::thumbnailImageUrl() const
146 {
147  return m_thumbnailImageUrl;
148 }
149 
150 void WikipediaItem::setThumbnailImageUrl( const QUrl& thumbnailImageUrl )
151 {
152  m_thumbnailImageUrl = thumbnailImageUrl;
153 }
154 
155 QString WikipediaItem::summary() const
156 {
157  return m_summary;
158 }
159 
160 void WikipediaItem::setSummary( const QString& summary )
161 {
162  m_summary = summary;
163  updateToolTip();
164 }
165 
166 QAction *WikipediaItem::action()
167 {
168  m_action->setText( id() );
169  return m_action;
170 }
171 
172 void WikipediaItem::openBrowser( )
173 {
174  if ( m_marbleWidget ) {
175  PopupLayer* popup = m_marbleWidget->popupLayer();
176  popup->setCoordinates( coordinate(), Qt::AlignRight | Qt::AlignVCenter );
177  popup->setSize( QSizeF( 500, 550 ) );
178  popup->setUrl( url() );
179  popup->popup();
180  } else {
181  if ( !m_browser ) {
182  m_browser = new TinyWebBrowser();
183  }
184  m_browser->load( url() );
185  m_browser->show();
186  }
187 }
188 
189 void WikipediaItem::setIcon( const QIcon& icon )
190 {
191  m_action->setIcon( icon );
192  m_wikiIcon = icon;
193 
194  updateSize();
195 }
196 
197 void WikipediaItem::setSettings( const QHash<QString, QVariant>& settings )
198 {
199  const bool showThumbnail = settings.value( "showThumbnails", false ).toBool();
200 
201  if ( showThumbnail != m_showThumbnail ) {
202  m_showThumbnail = showThumbnail;
203  updateSize();
204  updateToolTip();
205  update();
206  }
207 }
208 
209 void WikipediaItem::setRank( double rank )
210 {
211  m_rank = rank;
212 }
213 
214 double WikipediaItem::rank() const
215 {
216  return m_rank;
217 }
218 
219 void WikipediaItem::updateSize()
220 {
221  if ( showThumbnail() ) {
222  setSize( m_thumbnail.size() );
223  }
224  else {
225  setSize( wikiIconRect.size() );
226  }
227 }
228 
229 void WikipediaItem::updateToolTip()
230 {
231  QString toolTip;
232  toolTip += "<html><head><meta name=\"qrichtext\" content=\"1\" />";
233  toolTip += "<style type=\"text/css\">\\np, li { white-space: pre-wrap; }\\n</style></head>";
234  toolTip += "<body style=\" font-family:'Sans Serif'; font-size:9pt; font-weight:400; ";
235  toolTip += "font-style:normal;\"><p style=\" margin-top:0px; margin-bottom:0px; ";
236  toolTip += "margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">";
237  if ( summary().isEmpty() ) {
238  toolTip += "%1";
239  toolTip += "</p></body></html>\n";
240  setToolTip( toolTip.arg( name() ) );
241  }
242  else {
243  toolTip += tr( "<b>%1</b><br>%2", "Title:\nSummary" );
244  toolTip += "</p></body></html>\n";
245  setToolTip( toolTip.arg( name() ).arg( summary() ) );
246  }
247 }
248 
249 bool WikipediaItem::showThumbnail() const
250 {
251  return m_showThumbnail && !m_thumbnail.isNull();
252 }
253 
254 #include "WikipediaItem.moc"
QAction::setText
void setText(const QString &text)
Marble::WikipediaItem::longitude
qreal longitude() const
Definition: WikipediaItem.cpp:111
QPixmap::size
QSize size() const
Marble::GeoDataCoordinates
A 3d point representation.
Definition: GeoDataCoordinates.h:52
QRect::size
QSize size() const
TinyWebBrowser.h
QWebView::load
void load(const QUrl &url)
QSize::width
int width() const
QRect::moveBottomRight
void moveBottomRight(const QPoint &position)
QPixmap::width
int width() const
Marble::TinyWebBrowser
This class provides a tiny web browser based on QWebView (WebKit).
Definition: TinyWebBrowser.h:35
Marble::MarbleGraphicsItem::setSize
void setSize(const QSizeF &size)
Set the size of the item.
Definition: MarbleGraphicsItem.cpp:197
Marble::WikipediaItem::setLongitude
void setLongitude(qreal longitude)
Definition: WikipediaItem.cpp:116
Marble::WikipediaItem::operator<
bool operator<(const AbstractDataPluginItem *other) const
Definition: WikipediaItem.cpp:83
Marble::AbstractDataPluginItem
Definition: AbstractDataPluginItem.h:28
MarbleModel.h
This file contains the headers for MarbleModel.
Marble::AbstractDataPluginItem::setId
void setId(const QString &id)
Definition: AbstractDataPluginItem.cpp:86
QAction::setIcon
void setIcon(const QIcon &icon)
Marble::WikipediaItem::url
QUrl url() const
Definition: WikipediaItem.cpp:135
Marble::PopupLayer
The PopupLayer class.
Definition: PopupLayer.h:34
Marble::AbstractDataPluginItem::toolTip
QString toolTip() const
Returns the item's tool tip.
Definition: AbstractDataPluginItem.cpp:71
Marble::WikipediaItem::setName
void setName(const QString &name)
Definition: WikipediaItem.cpp:63
Marble::PopupLayer::popup
void popup()
Make the dialog pop up.
Definition: PopupLayer.cpp:117
QPoint
Marble::WikipediaItem::action
QAction * action()
Returns the action of this specific item.
Definition: WikipediaItem.cpp:166
Marble::GeoDataCoordinates::latitude
qreal latitude(GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian) const
retrieves the latitude of the GeoDataCoordinates object use the unit parameter to switch between Radi...
Definition: GeoDataCoordinates.cpp:751
WikipediaItem.h
MarbleDebug.h
QObject::tr
QString tr(const char *sourceText, const char *disambiguation, int n)
Marble::AbstractDataPluginItem::id
QString id() const
Definition: AbstractDataPluginItem.cpp:81
Marble::MarbleWidget::popupLayer
PopupLayer * popupLayer()
Definition: MarbleWidget.cpp:1226
Marble::MarbleWidget
A widget class that displays a view of the earth.
Definition: MarbleWidget.h:104
Marble::WikipediaItem::WikipediaItem
WikipediaItem(MarbleWidget *widget, QObject *parent)
Definition: WikipediaItem.cpp:40
Marble::WikipediaItem::name
QString name() const
Definition: WikipediaItem.cpp:58
Marble::WikipediaItem::addDownloadedFile
void addDownloadedFile(const QString &url, const QString &type)
Definition: WikipediaItem.cpp:74
QRect
QHash< QString, QVariant >
QObject
Marble::WikipediaItem::setSettings
void setSettings(const QHash< QString, QVariant > &settings)
Set the settings of the item.
Definition: WikipediaItem.cpp:197
QPainter::drawPixmap
void drawPixmap(const QRectF &target, const QPixmap &pixmap, const QRectF &source)
QPainter
Marble::MarbleGraphicsItem::ItemCoordinateCache
Definition: MarbleGraphicsItem.h:41
Marble::WikipediaItem::setThumbnailImageUrl
void setThumbnailImageUrl(const QUrl &thumbnailImageUrl)
Definition: WikipediaItem.cpp:150
Marble::WikipediaItem::setUrl
void setUrl(const QUrl &url)
Definition: WikipediaItem.cpp:140
Marble::WikipediaItem
Definition: WikipediaItem.h:29
QString
QPixmap::load
bool load(const QString &fileName, const char *format, QFlags< Qt::ImageConversionFlag > flags)
QIcon::paint
void paint(QPainter *painter, const QRect &rect, QFlags< Qt::AlignmentFlag > alignment, Mode mode, State state) const
Marble::WikipediaItem::~WikipediaItem
~WikipediaItem()
Definition: WikipediaItem.cpp:53
Marble::WikipediaItem::thumbnailImageUrl
QUrl thumbnailImageUrl() const
Definition: WikipediaItem.cpp:145
QHash::value
const T value(const Key &key) const
QPixmap::isNull
bool isNull() const
Marble::GeoDataCoordinates::longitude
qreal longitude(GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian) const
retrieves the longitude of the GeoDataCoordinates object use the unit parameter to switch between Rad...
Definition: GeoDataCoordinates.cpp:739
QSize
QUrl
QPixmap::height
int height() const
Marble::GeoDataCoordinates::setLatitude
void setLatitude(qreal lat, GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian)
set the longitude in a GeoDataCoordinates object
Definition: GeoDataCoordinates.cpp:699
ViewportParams.h
This file contains the headers for ViewportParams.
Marble::WikipediaItem::setSummary
void setSummary(const QString &summary)
Definition: WikipediaItem.cpp:160
Marble::GeoDataCoordinates::setLongitude
void setLongitude(qreal lon, GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian)
set the longitude in a GeoDataCoordinates object
Definition: GeoDataCoordinates.cpp:679
Marble::WikipediaItem::setRank
void setRank(double rank)
Set a popularity rank.
Definition: WikipediaItem.cpp:209
Marble::WikipediaItem::paint
void paint(QPainter *painter)
Paints the item in item coordinates.
Definition: WikipediaItem.cpp:89
PopupLayer.h
Marble::WikipediaItem::rank
double rank() const
Definition: WikipediaItem.cpp:214
QSizeF
Marble::MarbleGraphicsItem::setCacheMode
void setCacheMode(CacheMode mode)
Set the cache mode of the item.
Definition: MarbleGraphicsItem.cpp:159
Marble::PopupLayer::setUrl
void setUrl(const QUrl &url)
Sets URL of the browser.
Definition: PopupLayer.cpp:139
RenderPlugin.h
PluginManager.h
QAction
Marble::BillboardGraphicsItem::coordinate
GeoDataCoordinates coordinate() const
Definition: BillboardGraphicsItem.cpp:93
QSize::height
int height() const
Marble::WikipediaItem::setLatitude
void setLatitude(qreal latitude)
Definition: WikipediaItem.cpp:128
Marble::MarbleGraphicsItem::update
void update()
Marks the item and all parent items as invalid.
Definition: MarbleGraphicsItem.cpp:167
wikiIconRect
const QRect wikiIconRect(0, 0, 22, 19)
MarbleWidget.h
This file contains the headers for MarbleWidget.
Marble::PopupLayer::setCoordinates
void setCoordinates(const GeoDataCoordinates &coordinates, Qt::Alignment alignment)
Sets coordinates.
Definition: PopupLayer.cpp:133
QWidget::show
void show()
miniWikiIconBorder
const int miniWikiIconBorder
Definition: WikipediaItem.cpp:38
Marble::WikipediaItem::openBrowser
void openBrowser()
Definition: WikipediaItem.cpp:172
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
Marble::WikipediaItem::summary
QString summary() const
Definition: WikipediaItem.cpp:155
Marble::BillboardGraphicsItem::setCoordinate
void setCoordinate(const GeoDataCoordinates &coordinates)
Definition: BillboardGraphicsItem.cpp:98
Marble::WikipediaItem::setIcon
void setIcon(const QIcon &icon)
Definition: WikipediaItem.cpp:189
Marble::AbstractDataPluginItem::setToolTip
void setToolTip(const QString &toolTip)
Set the tool tip for the item.
Definition: AbstractDataPluginItem.cpp:76
miniWikiIconSize
const QSize miniWikiIconSize(22, 19)
QString::arg
QString arg(qlonglong a, int fieldWidth, int base, const QChar &fillChar) const
Marble::PopupLayer::setSize
void setSize(const QSizeF &size)
Sets size of popup item.
Definition: PopupLayer.cpp:163
QIcon
Marble::AbstractDataPluginItem::updated
void updated()
Marble::WikipediaItem::latitude
qreal latitude() const
Definition: WikipediaItem.cpp:123
Marble::WikipediaItem::initialized
bool initialized() const
Definition: WikipediaItem.cpp:69
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