author | spiralman <spiralman> | 2002-08-03 03:25:31 (UTC) |
---|---|---|
committer | spiralman <spiralman> | 2002-08-03 03:25:31 (UTC) |
commit | 7d4b246bc728b73e9d38e110619222dd89c1fd1c (patch) (unidiff) | |
tree | 7e6fbb8bbb106967993fa786a917fccde43970f3 /noncore/net | |
parent | 4005263f7c64a631f4df9aeece83321ba818160d (diff) | |
download | opie-7d4b246bc728b73e9d38e110619222dd89c1fd1c.zip opie-7d4b246bc728b73e9d38e110619222dd89c1fd1c.tar.gz opie-7d4b246bc728b73e9d38e110619222dd89c1fd1c.tar.bz2 |
fixed relative links (except from forward and back buttons), added initial image code (not working), changes to chunked encoding (still not working, might be a qsocket issue)
-rw-r--r-- | noncore/net/ubrowser/httpcomm.cpp | 43 | ||||
-rw-r--r-- | noncore/net/ubrowser/httpcomm.h | 6 | ||||
-rw-r--r-- | noncore/net/ubrowser/httpfactory.cpp | 25 | ||||
-rw-r--r-- | noncore/net/ubrowser/httpfactory.h | 1 |
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 | |||
@@ -39,12 +39,14 @@ void HttpComm::setUp(QString *newName) | |||
39 | name = newName; | 39 | name = newName; |
40 | } | 40 | } |
41 | 41 | ||
42 | void HttpComm::setStuff(QString newHost, QString newPortS, QString newFile, QTextDrag *newText) | 42 | void HttpComm::setStuff(QString newHost, QString newPortS, QString newFile, QTextDrag *newText, QImageDrag *newImage, bool newIsImage) |
43 | { | 43 | { |
44 | host = newHost; | 44 | host = newHost; |
45 | portS = newPortS; | 45 | portS = newPortS; |
46 | file = newFile; | 46 | file = newFile; |
47 | text = newText; | 47 | text = newText; |
48 | isImage = newIsImage; | ||
49 | image = newImage; | ||
48 | } | 50 | } |
49 | 51 | ||
50 | void HttpComm::hostFound() | 52 | void HttpComm::hostFound() |
@@ -70,12 +72,15 @@ void HttpComm::connected() | |||
70 | 72 | ||
71 | void HttpComm::incoming() | 73 | void 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 | ||
81 | if(headerRead == false) | 86 | if(headerRead == false) |
@@ -132,6 +137,7 @@ void HttpComm::incoming() | |||
132 | } | 137 | } |
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 |
137 | if(j != 0) | 143 | if(j != 0) |
@@ -188,7 +194,10 @@ void HttpComm::incoming() | |||
188 | printf("%s", newTQstring.latin1() ); | 194 | printf("%s", newTQstring.latin1() ); |
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; |
194 | } | 203 | } |
@@ -197,11 +206,13 @@ void HttpComm::incoming() | |||
197 | { | 206 | { |
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(); |
202 | } | 212 | } |
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; |
207 | bRead+=tempQString.length(); | 218 | bRead+=tempQString.length(); |
@@ -227,7 +238,10 @@ void HttpComm::incoming() | |||
227 | printf("%s", newTQstring.latin1() ); | 238 | printf("%s", newTQstring.latin1() ); |
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; |
233 | } | 247 | } |
@@ -236,11 +250,13 @@ void HttpComm::incoming() | |||
236 | { | 250 | { |
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(); |
241 | } | 256 | } |
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; |
246 | bRead+=tempQString.length(); | 262 | bRead+=tempQString.length(); |
@@ -308,10 +324,19 @@ void HttpComm::processBody() | |||
308 | 324 | ||
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 | |||
@@ -20,6 +20,8 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |||
20 | #include <qstringlist.h> | 20 | #include <qstringlist.h> |
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> |
25 | 27 | ||
@@ -29,7 +31,7 @@ Q_OBJECT | |||
29 | public: | 31 | 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(); |
35 | public slots: | 37 | public slots: |
@@ -49,9 +51,11 @@ private: | |||
49 | unsigned int length; | 51 | unsigned int length; |
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; |
54 | bool lengthset; | 57 | bool lengthset; |
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 | |||
@@ -22,6 +22,7 @@ HttpFactory::HttpFactory(QTextBrowser *newBrowser):QMimeSourceFactory() | |||
22 | text = new QTextDrag; | 22 | text = new QTextDrag; |
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 | ||
27 | const QMimeSource * HttpFactory::data(const QString &abs_name) const | 28 | const QMimeSource * HttpFactory::data(const QString &abs_name) const |
@@ -30,7 +31,7 @@ const QMimeSource * HttpFactory::data(const QString &abs_name) const | |||
30 | 31 | ||
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); |
36 | 37 | ||
@@ -46,7 +47,8 @@ const QMimeSource * HttpFactory::data(const QString &abs_name) const | |||
46 | } | 47 | } |
47 | else | 48 | else |
48 | { | 49 | { |
49 | return 0; | 50 | name.prepend(browser->context()); |
51 | name = name.remove(0, 7); | ||
50 | } | 52 | } |
51 | 53 | ||
52 | addrEnd = name.find('/'); | 54 | addrEnd = name.find('/'); |
@@ -77,14 +79,25 @@ const QMimeSource * HttpFactory::data(const QString &abs_name) const | |||
77 | { | 79 | { |
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 | ||
90 | const QMimeSource * HttpFactory::data(const QString &abs_or_rel_name, const QString & context) const | 103 | const QMimeSource * HttpFactory::data(const QString &abs_or_rel_name, const QString & context) const |
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 | |||
@@ -34,5 +34,6 @@ private: | |||
34 | QSocket *socket; | 34 | QSocket *socket; |
35 | HttpComm *comm; | 35 | HttpComm *comm; |
36 | QTextDrag *text; | 36 | QTextDrag *text; |
37 | QImageDrag *image; | ||
37 | QTextBrowser *browser; | 38 | QTextBrowser *browser; |
38 | }; | 39 | }; |