summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/ubrowser/httpcomm.cpp43
-rw-r--r--noncore/net/ubrowser/httpcomm.h6
-rw-r--r--noncore/net/ubrowser/httpfactory.cpp25
-rw-r--r--noncore/net/ubrowser/httpfactory.h1
4 files changed, 59 insertions, 16 deletions
diff --git a/noncore/net/ubrowser/httpcomm.cpp b/noncore/net/ubrowser/httpcomm.cpp
index 3c14053..4f189ce 100644
--- a/noncore/net/ubrowser/httpcomm.cpp
+++ b/noncore/net/ubrowser/httpcomm.cpp
@@ -40,5 +40,5 @@ void HttpComm::setUp(QString *newName)
40} 40}
41 41
42void HttpComm::setStuff(QString newHost, QString newPortS, QString newFile, QTextDrag *newText) 42void HttpComm::setStuff(QString newHost, QString newPortS, QString newFile, QTextDrag *newText, QImageDrag *newImage, bool newIsImage)
43{ 43{
44 host = newHost; 44 host = newHost;
@@ -46,4 +46,6 @@ void HttpComm::setStuff(QString newHost, QString newPortS, QString newFile, QTex
46 file = newFile; 46 file = newFile;
47 text = newText; 47 text = newText;
48 isImage = newIsImage;
49 image = newImage;
48} 50}
49 51
@@ -71,10 +73,13 @@ void HttpComm::connected()
71void HttpComm::incoming() 73void HttpComm::incoming()
72{ 74{
73 int ba=socket->bytesAvailable(), i=0, j=0, semi=0; 75 int ba=socket->size(), i=0, j=0, semi=0;
74 char *tempString = new char [ba]; 76 char *tempString = new char [ba];
77 int br = socket->readBlock(tempString, ba);
78 socket->flush();
75 bool nextChunk=false; 79 bool nextChunk=false;
76 bool done=false; 80 bool done=false;
77 socket->readBlock(tempString, ba);
78 printf("HttpComm::incoming: ba: %d\n", ba); 81 printf("HttpComm::incoming: ba: %d\n", ba);
82 printf("HttpComm::incoming: bytes read from socket: %d\n", br);
83 //printf("HttpComm::incoming: tempString length: %d\n");
79 QString sclength; 84 QString sclength;
80 85
@@ -133,4 +138,5 @@ void HttpComm::incoming()
133 else 138 else
134 { 139 {
140 int startclength=0;
135 QString tempQString = tempString; 141 QString tempQString = tempString;
136 //remove the http header, if one exists 142 //remove the http header, if one exists
@@ -189,5 +195,8 @@ void HttpComm::incoming()
189 printf("HttpComm::incoming: end new body piece 1.\n"); 195 printf("HttpComm::incoming: end new body piece 1.\n");
190 status=0; 196 status=0;
191 tempQString = tempQString.remove(0, clength); 197 tempQString = tempQString.remove(0, newTQstring.length());
198 startclength = tempQString.find('\n');
199 printf("HttpComm::incoming: startclength: %d\n", startclength);
200 tempQString = tempQString.remove(0, startclength+1);
192 done=false; 201 done=false;
193 // break; 202 // break;
@@ -198,4 +207,5 @@ void HttpComm::incoming()
198 if(tempQString.length() <= ba) 207 if(tempQString.length() <= ba)
199 { 208 {
209 printf("HttpComm::incoming: not truncating tempQString\n");
200 body+=tempQString; 210 body+=tempQString;
201 bRead+=tempQString.length(); 211 bRead+=tempQString.length();
@@ -203,4 +213,5 @@ void HttpComm::incoming()
203 else 213 else
204 { 214 {
215 printf("HttpComm::incoming: truncating tempQString\n");
205 tempQString.truncate(ba); 216 tempQString.truncate(ba);
206 body+=tempQString; 217 body+=tempQString;
@@ -228,5 +239,8 @@ void HttpComm::incoming()
228 printf("HttpComm::incoming: end new body piece 3.\n"); 239 printf("HttpComm::incoming: end new body piece 3.\n");
229 status=0; 240 status=0;
230 tempQString = tempQString.remove(0, clength); 241 tempQString = tempQString.remove(0, newTQstring.length());
242 startclength = tempQString.find('\n');
243 printf("HttpComm::incoming: startclength, tempQString length: %d %d\n", startclength, tempQString.length());
244 tempQString = tempQString.remove(0, startclength+1);
231 done=false; 245 done=false;
232 // break; 246 // break;
@@ -237,4 +251,5 @@ void HttpComm::incoming()
237 if(tempQString.length() <= ba) 251 if(tempQString.length() <= ba)
238 { 252 {
253 printf("HttpComm::incoming: not truncating tempQString\n");
239 body+=tempQString; 254 body+=tempQString;
240 bRead+=tempQString.length(); 255 bRead+=tempQString.length();
@@ -242,4 +257,5 @@ void HttpComm::incoming()
242 else 257 else
243 { 258 {
259 printf("HttpComm::incoming: truncating tempQString\n");
244 tempQString.truncate(ba); 260 tempQString.truncate(ba);
245 body+=tempQString; 261 body+=tempQString;
@@ -309,9 +325,18 @@ void HttpComm::processBody()
309 QString end = file; 325 QString end = file;
310 end.truncate(lastSlash+1); 326 end.truncate(lastSlash+1);
311 QString context("http://"+host+':'+portS+end); 327 QString context = "http://"+host+':'+portS+end;
312 printf("HttpComm::processBody: context: %s\n", context.latin1() ); 328 printf("HttpComm::processBody: context: %s\n", context.latin1() );
313 329
314 browser->setTextFormat(RichText); 330 if(!isImage)
315 browser->mimeSourceFactory()->setFilePath(context); 331 {
316 browser->setText(body, context); 332 browser->setTextFormat(RichText);
333 browser->mimeSourceFactory()->setFilePath(context);
334 browser->setText(body, context);
335 }
336 else
337 {
338 QImage tempImage(body.latin1());
339 image->setImage(tempImage);
340 browser->update();
341 }
317} 342}
diff --git a/noncore/net/ubrowser/httpcomm.h b/noncore/net/ubrowser/httpcomm.h
index c20fe72..d6f63fc 100644
--- a/noncore/net/ubrowser/httpcomm.h
+++ b/noncore/net/ubrowser/httpcomm.h
@@ -21,4 +21,6 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21#include <qdragobject.h> 21#include <qdragobject.h>
22#include <qtextbrowser.h> 22#include <qtextbrowser.h>
23#include <qcstring.h>
24#include <qimage.h>
23 25
24#include <stdio.h> 26#include <stdio.h>
@@ -30,5 +32,5 @@ public:
30 HttpComm(QSocket *newSocket, QTextBrowser *newBrowser); 32 HttpComm(QSocket *newSocket, QTextBrowser *newBrowser);
31 void setUp(QString *newName); 33 void setUp(QString *newName);
32 void setStuff(QString newHost, QString newPortS, QString newFile, QTextDrag *newText); 34 void setStuff(QString newHost, QString newPortS, QString newFile, QTextDrag *newText, QImageDrag *newImage, bool newIsImage);
33 void parseHeader(); 35 void parseHeader();
34 void processBody(); 36 void processBody();
@@ -50,4 +52,5 @@ private:
50 unsigned int bRead; 52 unsigned int bRead;
51 QTextDrag *text; 53 QTextDrag *text;
54 QImageDrag *image;
52 QTextBrowser *browser; 55 QTextBrowser *browser;
53 bool chunked; 56 bool chunked;
@@ -55,3 +58,4 @@ private:
55 unsigned int clength; 58 unsigned int clength;
56 int status; 59 int status;
60 bool isImage;
57}; 61};
diff --git a/noncore/net/ubrowser/httpfactory.cpp b/noncore/net/ubrowser/httpfactory.cpp
index 92718fb..50a3c9a 100644
--- a/noncore/net/ubrowser/httpfactory.cpp
+++ b/noncore/net/ubrowser/httpfactory.cpp
@@ -23,4 +23,5 @@ HttpFactory::HttpFactory(QTextBrowser *newBrowser):QMimeSourceFactory()
23 browser=newBrowser; 23 browser=newBrowser;
24 comm = new HttpComm(socket, browser); 24 comm = new HttpComm(socket, browser);
25 image = new QImageDrag;
25} 26}
26 27
@@ -31,5 +32,5 @@ const QMimeSource * HttpFactory::data(const QString &abs_name) const
31 int port=80, addrEnd, portSep; 32 int port=80, addrEnd, portSep;
32 QString host, file, portS, name, tempString; 33 QString host, file, portS, name, tempString;
33 bool done=false; 34 bool done=false, isImage=false;
34 35
35 comm->setUp((QString *)&abs_name); 36 comm->setUp((QString *)&abs_name);
@@ -47,5 +48,6 @@ const QMimeSource * HttpFactory::data(const QString &abs_name) const
47 else 48 else
48 { 49 {
49 return 0; 50 name.prepend(browser->context());
51 name = name.remove(0, 7);
50 } 52 }
51 53
@@ -78,12 +80,23 @@ const QMimeSource * HttpFactory::data(const QString &abs_name) const
78 portS="80"; 80 portS="80";
79 } 81 }
82
83 if(file.find(".png", file.length()-4) != -1 || file.find(".gif", file.length()-4) != -1 || file.find(".jpg", file.length()-4) != -1)
84 {
85 isImage=true;
86 }
80 87
81 comm->setStuff(host, portS, file, text); 88 comm->setStuff(host, portS, file, text, image, isImage);
82 89
83 socket->connectToHost(host, port); 90 socket->connectToHost(host, port);
84 91
85 text->setText(""); 92 if(!image)
86 93 {
87 return text; 94 text->setText("");
95 return text;
96 }
97 else
98 {
99 return image;
100 }
88} 101}
89 102
diff --git a/noncore/net/ubrowser/httpfactory.h b/noncore/net/ubrowser/httpfactory.h
index bb7615b..1802f56 100644
--- a/noncore/net/ubrowser/httpfactory.h
+++ b/noncore/net/ubrowser/httpfactory.h
@@ -35,4 +35,5 @@ private:
35 HttpComm *comm; 35 HttpComm *comm;
36 QTextDrag *text; 36 QTextDrag *text;
37 QImageDrag *image;
37 QTextBrowser *browser; 38 QTextBrowser *browser;
38}; 39};