summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/opensearch/suggestionparser.cpp38
-rw-r--r--src/urlbar/listitem.cpp36
-rw-r--r--src/urlbar/listitem.h20
-rw-r--r--src/urlbar/urlresolver.cpp4
4 files changed, 77 insertions, 21 deletions
diff --git a/src/opensearch/suggestionparser.cpp b/src/opensearch/suggestionparser.cpp
index 01581bf9..02f99644 100644
--- a/src/opensearch/suggestionparser.cpp
+++ b/src/opensearch/suggestionparser.cpp
@@ -53,38 +53,38 @@ ResponseList XMLParser::parse(const QByteArray &resp)
m_reader.clear();
m_reader.addData(resp);
-
- while (!m_reader.isStartElement() && !m_reader.atEnd())
- {
- m_reader.readNext();
- }
- while (!(m_reader.isEndElement() && m_reader.name() == QL1S("SearchSuggestion")) && !m_reader.atEnd())
+ while (!m_reader.atEnd() && !m_reader.hasError())
{
- m_reader.readNext();
-
- if (!m_reader.isStartElement())
- continue;
+ QXmlStreamReader::TokenType token = m_reader.readNext();
+
+ if (m_reader.isStartDocument()) continue;
- if (m_reader.name() == QL1S("Item"))
+ if (m_reader.isStartElement() && m_reader.name() == QL1S("Item"))
{
QString title;
QString url;
QString image;
QString description;
- while (!m_reader.isEndElement() && !m_reader.atEnd())
+ m_reader.readNext();
+
+ while(!(m_reader.isEndElement() && m_reader.name() == "Item"))
{
- m_reader.readNext();
+ if(m_reader.isStartElement())
+ {
+ if (m_reader.name() == QL1S("Text")) title = m_reader.readElementText();
+ if (m_reader.name() == QL1S("Url")) url = m_reader.readElementText();
+ if (m_reader.name() == QL1S("Image")) image = m_reader.attributes().value("source").toString();
+ if (m_reader.name() == QL1S("Description")) description = m_reader.readElementText();
+ }
- if (m_reader.name() == QL1S("Text")) title = m_reader.readElementText();
- if (m_reader.name() == QL1S("Url")) url = m_reader.readElementText();
- if (m_reader.name() == QL1S("Image")) image = m_reader.readElementText();
- if (m_reader.name() == QL1S("Description")) description = m_reader.readElementText();
+ m_reader.readNext();
}
-
rlist << Response(url, title, image, description);
}
+
+ m_reader.readNext();
}
return rlist;
@@ -124,7 +124,7 @@ ResponseList JSONParser::parse(const QByteArray &resp)
ResponseList rlist;
QStringList responsePartsList;
qScriptValueToSequence(responseParts.property(1), responsePartsList);
-
+
foreach(QString s, responsePartsList)
{
rlist << Response(QString(), s, QString());
diff --git a/src/urlbar/listitem.cpp b/src/urlbar/listitem.cpp
index 374d9cca..219c7072 100644
--- a/src/urlbar/listitem.cpp
+++ b/src/urlbar/listitem.cpp
@@ -42,6 +42,8 @@
// KDE Includes
#include <KIcon>
#include <KAction>
+#include <kio/jobclasses.h>
+#include <kio/scheduler.h>
// Qt Includes
#include <QActionGroup>
@@ -329,6 +331,36 @@ PreviewLabel::PreviewLabel(const QString &url, int width, int height, QWidget *p
}
}
+// ---------------------------------------------------------------
+
+
+ImageLabel::ImageLabel(const QString &url, int width, int height, QWidget *parent)
+ : QLabel(parent),
+ m_width(width),
+ m_height(height)
+{
+ setFixedSize(width, height);
+ KIO::TransferJob *job = KIO::get(KUrl(url), KIO::NoReload, KIO::HideProgressInfo);
+ connect(job, SIGNAL(data(KIO::Job *, const QByteArray &)),
+ this, SLOT(slotData(KIO::Job*, const QByteArray&)));
+ connect(job, SIGNAL(result(KJob *)),
+ this, SLOT(slotResult(KJob *)));
+}
+
+
+void ImageLabel::slotData(KIO::Job *job, const QByteArray &data)
+{
+ Q_UNUSED(job);
+ m_data.append(data);
+}
+
+void ImageLabel::slotResult(KJob *job)
+{
+ QPixmap pix;
+ if (!pix.loadFromData(m_data))
+ kDebug() << "error while loading image: ";
+ setPixmap(pix.scaled(m_width, m_height, Qt::KeepAspectRatio, Qt::SmoothTransformation));
+}
// ---------------------------------------------------------------
@@ -491,7 +523,7 @@ VisualSuggestionListItem::VisualSuggestionListItem(const UrlSearchItem &item, co
QLabel *previewLabelIcon = new QLabel(this);
previewLabelIcon->setFixedSize(45, 33);
- new PreviewLabel(item.image, 38, 29, previewLabelIcon);
+ new ImageLabel(item.image, 38, 29, previewLabelIcon);
IconLabel* icon = new IconLabel(item.url, previewLabelIcon);
icon->move(27, 16);
hLayout->addWidget(previewLabelIcon);
@@ -501,7 +533,7 @@ VisualSuggestionListItem::VisualSuggestionListItem(const UrlSearchItem &item, co
QString query = SearchEngine::extractQuery(text);
vLayout->addWidget(new TextLabel(item.title, query, this));
- vLayout->addWidget(new TextLabel("aaa aa", query, this));
+ vLayout->addWidget(new TextLabel("<i>"+item.description+"</i>", query, this));
hLayout->addLayout(vLayout);
diff --git a/src/urlbar/listitem.h b/src/urlbar/listitem.h
index c662bc24..ab12917a 100644
--- a/src/urlbar/listitem.h
+++ b/src/urlbar/listitem.h
@@ -234,6 +234,26 @@ public:
// -------------------------------------------------------------------------
+class ImageLabel : public QLabel
+{
+ Q_OBJECT
+
+public:
+ ImageLabel(const QString &url, int width, int height, QWidget *parent);
+
+private:
+ int m_width;
+ int m_height;
+ QByteArray m_data;
+
+private slots:
+ void slotData(KIO::Job* job, const QByteArray& data);
+ void slotResult(KJob* job);
+};
+
+
+// -------------------------------------------------------------------------
+
class BrowseListItem : public ListItem
{
diff --git a/src/urlbar/urlresolver.cpp b/src/urlbar/urlresolver.cpp
index a7c63969..7429adce 100644
--- a/src/urlbar/urlresolver.cpp
+++ b/src/urlbar/urlresolver.cpp
@@ -409,10 +409,14 @@ void UrlResolver::suggestionsReceived(const QString &text, const ResponseList &s
Q_FOREACH(const Response &i, suggestions)
{
<<<<<<< HEAD
+<<<<<<< HEAD
UrlSearchItem gItem(UrlSearchItem::Suggestion, SearchEngine::buildQuery(UrlResolver::searchEngine(), s), s);
=======
UrlSearchItem gItem(UrlSearchItem::Suggestion, i.title, i.title);
>>>>>>> add an xml parser to the opensearch engine.
+=======
+ UrlSearchItem gItem(UrlSearchItem::Suggestion, i.url, i.title, i.image, i.description);
+>>>>>>> Images in visual suggestion are now displayed !!
sugList << gItem;
}
emit suggestionsReady(sugList, _typedString);