[Marble-commits] KDE/kdeedu/marble/src
Bastian Holst
bastianholst at gmx.de
Sun Jul 12 21:04:36 CEST 2009
SVN commit 995445 by bholst:
Improvements to Marbles WikipediaPlugin:
* added function to MarbleLocale to get the language code.
* smaller wikipedia icons.
* (de)activating thumbnails now has effect instantly.
* other languages than english are now supported.
M +30 -0 lib/MarbleLocale.cpp
M +3 -0 lib/MarbleLocale.h
M +6 -23 lib/TinyWebBrowser.cpp
M +26 -5 plugins/render/wikipedia/WikipediaItem.cpp
M +7 -0 plugins/render/wikipedia/WikipediaItem.h
M +5 -0 plugins/render/wikipedia/WikipediaModel.cpp
M +1 -0 plugins/render/wikipedia/WikipediaModel.h
M +15 -1 plugins/render/wikipedia/WikipediaPlugin.cpp
M +2 -0 plugins/render/wikipedia/WikipediaPlugin.h
--- trunk/KDE/kdeedu/marble/src/lib/MarbleLocale.cpp #995444:995445
@@ -62,4 +62,34 @@
return d->m_measureSystem;
}
+QString MarbleLocale::languageCode() {
+ const QString lang = qgetenv( "LANG" );
+ QString code;
+
+ if ( lang.isEmpty() || lang == "POSIX" || lang == "C" )
+ code = "en";
+ else
+ code = lang;
+ return code;
}
+
+QString MarbleLocale::simpleLanguageCode() {
+ const QString lang = languageCode();
+ QString code;
+
+ int index = lang.indexOf ( '_' );
+ if ( index != -1 ) {
+ code = lang.left ( index );
+ }
+ else {
+ index = lang.indexOf ( '@' );
+ if ( index != -1 )
+ code = lang.left ( index );
+ else
+ code = lang;
+ }
+
+ return code;
+}
+
+}
--- trunk/KDE/kdeedu/marble/src/lib/MarbleLocale.h #995444:995445
@@ -40,6 +40,9 @@
void setMeasureSystem( Marble::MeasureSystem measureSystem );
Marble::MeasureSystem measureSystem() const;
+ static QString languageCode();
+ static QString simpleLanguageCode();
+
private:
Q_DISABLE_COPY( MarbleLocale )
MarbleLocalePrivate * const d;
--- trunk/KDE/kdeedu/marble/src/lib/TinyWebBrowser.cpp #995444:995445
@@ -10,9 +10,10 @@
// Copyright 2008 Simon Hausmann <hausmann at kde.org>"
//
-
+// Self
#include "TinyWebBrowser.h"
+// Qt
#include <QtCore/QFileInfo>
#include <QtCore/QUrl>
#include <QtCore/QDebug>
@@ -21,37 +22,19 @@
#include <QtGui/QPrintDialog>
#include <QtGui/QPrinter>
#include <QtGui/QTextFrame>
+
+// Marble
#include "HttpDownloadManager.h"
#include "CacheStoragePolicy.h"
#include "MarbleDirs.h"
+#include "MarbleLocale.h"
using namespace Marble;
static QString guessWikipediaDomain()
{
- const QString lang = qgetenv ( "LANG" );
- QString code;
+ const QString code = MarbleLocale::simpleLanguageCode();
- if ( lang.isEmpty() || lang == "POSIX" || lang == "C" )
- code = "en";
- else
- {
-
- int index = lang.indexOf ( '_' );
- if ( index != -1 )
- {
- code = lang.left ( index );
- }
- else
- {
- index = lang.indexOf ( '@' );
- if ( index != -1 )
- code = lang.left ( index );
- else
- code = lang;
- }
- }
-
return QString ( "http://%1.wikipedia.org/" ).arg ( code );
}
--- trunk/KDE/kdeedu/marble/src/plugins/render/wikipedia/WikipediaItem.cpp #995444:995445
@@ -27,14 +27,15 @@
using namespace Marble;
// The Wikipedia icon is not a square
-const QRect wikiIconRect( 0, 0, 47, 40 );
+const QRect wikiIconRect( 0, 0, 32, 27 );
const QSize miniWikiIconSize( 22, 19 );
const int miniWikiIconBorder = 3;
WikipediaItem::WikipediaItem( QObject *parent )
: AbstractDataPluginItem( parent ),
m_browser( 0 ),
- m_wikiIcon()
+ m_wikiIcon(),
+ m_settings()
{
m_action = new QAction( this );
connect( m_action, SIGNAL( triggered() ), this, SLOT( openBrowser() ) );
@@ -63,7 +64,7 @@
if ( type == "thumbnail" ) {
m_thumbnail.load( url );
- setSize( m_thumbnail.size() );
+ updateSize();
}
}
@@ -77,7 +78,7 @@
Q_UNUSED( renderPos )
Q_UNUSED( layer )
- if ( m_thumbnail.isNull() ) {
+ if ( !showThumbnail() ) {
m_wikiIcon.paint( painter, wikiIconRect );
}
else {
@@ -152,9 +153,29 @@
void WikipediaItem::setIcon( const QIcon& icon ) {
m_action->setIcon( icon );
m_wikiIcon = icon;
- if ( m_thumbnail.isNull() ) {
+
+ updateSize();
+}
+
+void WikipediaItem::setSettings( QHash<QString, QVariant> settings ) {
+ if ( settings != m_settings ) {
+ m_settings = settings;
+ updateSize();
+ update();
+ }
+}
+
+void WikipediaItem::updateSize() {
+ if ( showThumbnail() ) {
+ setSize( m_thumbnail.size() );
+ }
+ else {
setSize( wikiIconRect.size() );
}
}
+bool WikipediaItem::showThumbnail() {
+ return m_settings.value( "showThumbnails", false ).toBool() && !m_thumbnail.isNull();
+}
+
#include "WikipediaItem.moc"
--- trunk/KDE/kdeedu/marble/src/plugins/render/wikipedia/WikipediaItem.h #995444:995445
@@ -13,6 +13,7 @@
#include "AbstractDataPluginItem.h"
+#include <QtCore/QHash>
#include <QtCore/QUrl>
#include <QtGui/QPixmap>
#include <QtGui/QIcon>
@@ -62,11 +63,16 @@
QAction *action();
void setIcon( const QIcon& icon );
+
+ void setSettings( QHash<QString, QVariant> settings );
public Q_SLOTS:
void openBrowser();
private:
+ void updateSize();
+ bool showThumbnail();
+
QUrl m_url;
QUrl m_thumbnailImageUrl;
QWebView *m_browser;
@@ -74,6 +80,7 @@
QPixmap m_thumbnail;
QIcon m_wikiIcon;
+ QHash<QString, QVariant> m_settings;
};
}
--- trunk/KDE/kdeedu/marble/src/plugins/render/wikipedia/WikipediaModel.cpp #995444:995445
@@ -20,6 +20,7 @@
#include "MarbleDataFacade.h"
#include "MarbleDirs.h"
#include "WikipediaItem.h"
+#include "MarbleLocale.h"
// Qt
#include <QtCore/QDebug>
@@ -38,6 +39,8 @@
m_showThumbnail( true )
{
m_wikipediaIcon.addFile( MarbleDirs::path( "svg/wikipedia.svg" ) );
+
+ m_languageCode = MarbleLocale::simpleLanguageCode();
}
WikipediaModel::~WikipediaModel() {
@@ -67,6 +70,8 @@
geonamesUrl += QString::number( box.west() * RAD2DEG );
geonamesUrl += "&maxRows=";
geonamesUrl += QString::number( number );
+ geonamesUrl += "&lang=";
+ geonamesUrl += m_languageCode;
downloadDescriptionFile( QUrl( geonamesUrl ) );
}
--- trunk/KDE/kdeedu/marble/src/plugins/render/wikipedia/WikipediaModel.h #995444:995445
@@ -50,6 +50,7 @@
private:
QIcon m_wikipediaIcon;
+ QString m_languageCode;
bool m_showThumbnail;
};
--- trunk/KDE/kdeedu/marble/src/plugins/render/wikipedia/WikipediaPlugin.cpp #995444:995445
@@ -66,6 +66,8 @@
this, SLOT( writeSettings() ) );
connect( this, SIGNAL( changedNumberOfItems( quint32 ) ),
this, SLOT( setDialogNumberOfItems( quint32 ) ) );
+ connect( this, SIGNAL( settingsChanged( QString ) ),
+ this, SLOT( updateItemSettings() ) );
}
WikipediaPlugin::~WikipediaPlugin() {
@@ -78,6 +80,7 @@
// Ensure that all settings get forwarded to the model.
readSettings();
setModel( model );
+ updateItemSettings();
}
QString WikipediaPlugin::name() const {
@@ -132,7 +135,11 @@
void WikipediaPlugin::readSettings() {
setNumberOfItems( m_settings.value( "numberOfItems", 15 ).toUInt() );
setDialogNumberOfItems( numberOfItems() );
- setShowThumbnails( m_settings.value( "showThumbnails", true ).toBool() );
+ if ( !m_settings.contains( "showThumbnails" ) ) {
+ m_settings.insert( "showThumbnails", true );
+ }
+
+ setShowThumbnails( m_settings.value( "showThumbnails" ).toBool() );
}
void WikipediaPlugin::writeSettings() {
@@ -160,7 +167,14 @@
}
}
+void WikipediaPlugin::updateItemSettings() {
+ AbstractDataPluginModel *abstractModel = model();
+ if( abstractModel != 0 ) {
+ abstractModel->setItemSettings( m_settings );
+ }
+}
+
Q_EXPORT_PLUGIN2(WikipediaPlugin, Marble::WikipediaPlugin)
#include "WikipediaPlugin.moc"
--- trunk/KDE/kdeedu/marble/src/plugins/render/wikipedia/WikipediaPlugin.h #995444:995445
@@ -64,6 +64,8 @@
void setDialogNumberOfItems( quint32 number );
+ void updateItemSettings();
+
private:
QIcon m_icon;
PluginAboutDialog *m_aboutDialog;
More information about the Marble-commits
mailing list