~ubuntu-branches/ubuntu/trusty/hedgewars/trusty-proposed

« back to all changes in this revision

Viewing changes to QTfrontend/ui/widget/databrowser.cpp

  • Committer: Package Import Robot
  • Author(s): Dmitry E. Oboukhov
  • Date: 2011-11-20 18:31:17 UTC
  • mfrom: (1.2.12)
  • Revision ID: package-import@ubuntu.com-20111120183117-pjhz1n2pvnmxa246
Tags: 0.9.17-1
* [Paul Wise]
 * Mention the homing bee in the package description (Closes: #577092)
 * Also install the hwengine desktop file (LP: #811770)
 * Depend on ttf-dejavu-core since it is smaller
 * Depend on ttf-wqy-zenhei instead of embedding a copy of it
* [Dmitry E. Oboukhov]
 * New upstream version.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <QNetworkAccessManager>
 
2
#include <QNetworkRequest>
 
3
#include <QNetworkReply>
 
4
#include <QDebug>
 
5
#include <QUrl>
 
6
 
 
7
#include "databrowser.h"
 
8
 
 
9
const QNetworkRequest::Attribute typeAttribute = (QNetworkRequest::Attribute)(QNetworkRequest::User + 1);
 
10
const QNetworkRequest::Attribute urlAttribute = (QNetworkRequest::Attribute)(QNetworkRequest::User + 2);
 
11
 
 
12
DataBrowser::DataBrowser(QWidget *parent) :
 
13
    QTextBrowser(parent)
 
14
{
 
15
 
 
16
    manager = new QNetworkAccessManager(this);
 
17
}
 
18
 
 
19
QVariant DataBrowser::loadResource(int type, const QUrl & name)
 
20
{
 
21
    if(type == QTextDocument::ImageResource || type == QTextDocument::StyleSheetResource)
 
22
    {
 
23
        if(resources.contains(name.toString()))
 
24
        {
 
25
            return resources.take(name.toString());
 
26
        }
 
27
        else
 
28
            if(!requestedResources.contains(name.toString()))
 
29
            {
 
30
                qDebug() << "Requesting resource" << name.toString();
 
31
                requestedResources.insert(name.toString());
 
32
 
 
33
                QNetworkRequest newRequest(QUrl("http://www.hedgewars.org" + name.toString()));
 
34
                newRequest.setAttribute(typeAttribute, type);
 
35
                newRequest.setAttribute(urlAttribute, name);
 
36
 
 
37
                QNetworkReply *reply = manager->get(newRequest);
 
38
                connect(reply, SIGNAL(finished()), this, SLOT(resourceDownloaded()));
 
39
            }
 
40
    }
 
41
 
 
42
    return QVariant();
 
43
}
 
44
 
 
45
void DataBrowser::resourceDownloaded()
 
46
{
 
47
    QNetworkReply * reply = qobject_cast<QNetworkReply *>(sender());
 
48
 
 
49
    if(reply)
 
50
    {
 
51
        int type = reply->request().attribute(typeAttribute).toInt();
 
52
        QUrl url = reply->request().attribute(urlAttribute).toUrl();
 
53
        resources.insert(url.toString(), reply->readAll());
 
54
        document()->addResource(type, reply->request().url(), QVariant());
 
55
        update();
 
56
    }
 
57
}