From ed9d2b80aa3fa7a190a2be2989215935cdf09b8d Mon Sep 17 00:00:00 2001
From: Andrea Diamantini <adjam7@gmail.com>
Date: Wed, 29 Sep 2010 17:02:39 +0200
Subject: HACK: fix Chinese sites encoding, as suggested by Weng Xuetian in bug
 #251264 and by... Wikipedia!! ;)

CCBUG: 251264

Xeng, does this fix your issue?
---
 src/webpage.cpp | 19 ++++++++++++++++---
 src/webpage.h   |  5 +++--
 2 files changed, 19 insertions(+), 5 deletions(-)

(limited to 'src')

diff --git a/src/webpage.cpp b/src/webpage.cpp
index 07f961c5..9be0d3c9 100644
--- a/src/webpage.cpp
+++ b/src/webpage.cpp
@@ -207,6 +207,7 @@ WebPage::WebPage(QWidget *parent)
 
     // ----- last stuffs
     connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(manageNetworkErrors(QNetworkReply*)));
+    connect(this, SIGNAL(loadStarted()), this, SLOT(loadStarted()));
     connect(this, SIGNAL(loadFinished(bool)), this, SLOT(loadFinished(bool)));
 
     // protocol handler signals
@@ -471,17 +472,29 @@ void WebPage::handleUnsupportedContent(QNetworkReply *reply)
 }
 
 
+void WebPage::loadStarted()
+{
+    // HACK: 
+    // Chinese encoding Fix. See BUG: 251264
+    // Use gb18030 instead of gb2312
+    if(settings()->defaultTextEncoding() == QL1S("gb2312"))
+    {
+        settings()->setDefaultTextEncoding( QL1S("gb18030") );
+    }    
+}
+
 void WebPage::loadFinished(bool ok)
 {
     Q_UNUSED(ok);
-    Application::iconManager()->provideIcon(this, _loadingUrl);
 
+    // Provide site icon. Can this be moved to loadStarted??
+    Application::iconManager()->provideIcon(this, _loadingUrl);
 
+    // Apply adblock manager hiding rules
     Application::adblockManager()->applyHidingRules(this);
 
-    QStringList list = ReKonfig::walletBlackList();
-
     // KWallet Integration
+    QStringList list = ReKonfig::walletBlackList();
     if (wallet()
             && !list.contains(mainFrame()->url().toString())
        )
diff --git a/src/webpage.h b/src/webpage.h
index 5b79275a..b6e0c531 100644
--- a/src/webpage.h
+++ b/src/webpage.h
@@ -58,7 +58,7 @@ public:
     inline bool isOnRekonqPage() const { return _isOnRekonqPage; };
     inline void setIsOnRekonqPage(bool b) { _isOnRekonqPage = b; };
 
-public slots:
+public Q_SLOTS:
     void downloadAllContentsWithKGet(QPoint);
 
     virtual void downloadRequest(const QNetworkRequest &request);
@@ -71,9 +71,10 @@ protected:
                                          const QNetworkRequest &request,
                                          NavigationType type);
 
-private slots:
+private Q_SLOTS:
     void handleUnsupportedContent(QNetworkReply *reply);
     void manageNetworkErrors(QNetworkReply *reply);
+    void loadStarted();
     void loadFinished(bool);
     void showSSLInfo(QPoint);
     void updateImage(bool ok);
-- 
cgit v1.2.1