[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