-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 @@ -40,5 +40,5 @@ void HttpComm::setUp(QString *newName) } -void HttpComm::setStuff(QString newHost, QString newPortS, QString newFile, QTextDrag *newText) +void HttpComm::setStuff(QString newHost, QString newPortS, QString newFile, QTextDrag *newText, QImageDrag *newImage, bool newIsImage) { host = newHost; @@ -46,4 +46,6 @@ void HttpComm::setStuff(QString newHost, QString newPortS, QString newFile, QTex file = newFile; text = newText; + isImage = newIsImage; + image = newImage; } @@ -71,10 +73,13 @@ void HttpComm::connected() void HttpComm::incoming() { - int ba=socket->bytesAvailable(), i=0, j=0, semi=0; + int ba=socket->size(), i=0, j=0, semi=0; char *tempString = new char [ba]; + int br = socket->readBlock(tempString, ba); + socket->flush(); bool nextChunk=false; bool done=false; - socket->readBlock(tempString, ba); printf("HttpComm::incoming: ba: %d\n", ba); + printf("HttpComm::incoming: bytes read from socket: %d\n", br); +// printf("HttpComm::incoming: tempString length: %d\n"); QString sclength; @@ -133,4 +138,5 @@ void HttpComm::incoming() else { + int startclength=0; QString tempQString = tempString; //remove the http header, if one exists @@ -189,5 +195,8 @@ void HttpComm::incoming() printf("HttpComm::incoming: end new body piece 1.\n"); status=0; - tempQString = tempQString.remove(0, clength); + tempQString = tempQString.remove(0, newTQstring.length()); + startclength = tempQString.find('\n'); + printf("HttpComm::incoming: startclength: %d\n", startclength); + tempQString = tempQString.remove(0, startclength+1); done=false; // break; @@ -198,4 +207,5 @@ void HttpComm::incoming() if(tempQString.length() <= ba) { + printf("HttpComm::incoming: not truncating tempQString\n"); body+=tempQString; bRead+=tempQString.length(); @@ -203,4 +213,5 @@ void HttpComm::incoming() else { + printf("HttpComm::incoming: truncating tempQString\n"); tempQString.truncate(ba); body+=tempQString; @@ -228,5 +239,8 @@ void HttpComm::incoming() printf("HttpComm::incoming: end new body piece 3.\n"); status=0; - tempQString = tempQString.remove(0, clength); + tempQString = tempQString.remove(0, newTQstring.length()); + startclength = tempQString.find('\n'); + printf("HttpComm::incoming: startclength, tempQString length: %d %d\n", startclength, tempQString.length()); + tempQString = tempQString.remove(0, startclength+1); done=false; // break; @@ -237,4 +251,5 @@ void HttpComm::incoming() if(tempQString.length() <= ba) { + printf("HttpComm::incoming: not truncating tempQString\n"); body+=tempQString; bRead+=tempQString.length(); @@ -242,4 +257,5 @@ void HttpComm::incoming() else { + printf("HttpComm::incoming: truncating tempQString\n"); tempQString.truncate(ba); body+=tempQString; @@ -309,9 +325,18 @@ void HttpComm::processBody() QString end = file; end.truncate(lastSlash+1); - QString context("http://"+host+':'+portS+end); + QString context = "http://"+host+':'+portS+end; printf("HttpComm::processBody: context: %s\n", context.latin1() ); - browser->setTextFormat(RichText); - browser->mimeSourceFactory()->setFilePath(context); - browser->setText(body, context); + if(!isImage) + { + browser->setTextFormat(RichText); + browser->mimeSourceFactory()->setFilePath(context); + browser->setText(body, context); + } + else + { + QImage tempImage(body.latin1()); + image->setImage(tempImage); + browser->update(); + } } 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 #include <qdragobject.h> #include <qtextbrowser.h> +#include <qcstring.h> +#include <qimage.h> #include <stdio.h> @@ -30,5 +32,5 @@ public: HttpComm(QSocket *newSocket, QTextBrowser *newBrowser); void setUp(QString *newName); - void setStuff(QString newHost, QString newPortS, QString newFile, QTextDrag *newText); + void setStuff(QString newHost, QString newPortS, QString newFile, QTextDrag *newText, QImageDrag *newImage, bool newIsImage); void parseHeader(); void processBody(); @@ -50,4 +52,5 @@ private: unsigned int bRead; QTextDrag *text; + QImageDrag *image; QTextBrowser *browser; bool chunked; @@ -55,3 +58,4 @@ private: unsigned int clength; int status; + bool isImage; }; 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() browser=newBrowser; comm = new HttpComm(socket, browser); + image = new QImageDrag; } @@ -31,5 +32,5 @@ const QMimeSource * HttpFactory::data(const QString &abs_name) const int port=80, addrEnd, portSep; QString host, file, portS, name, tempString; - bool done=false; + bool done=false, isImage=false; comm->setUp((QString *)&abs_name); @@ -47,5 +48,6 @@ const QMimeSource * HttpFactory::data(const QString &abs_name) const else { - return 0; + name.prepend(browser->context()); + name = name.remove(0, 7); } @@ -78,12 +80,23 @@ const QMimeSource * HttpFactory::data(const QString &abs_name) const portS="80"; } + + if(file.find(".png", file.length()-4) != -1 || file.find(".gif", file.length()-4) != -1 || file.find(".jpg", file.length()-4) != -1) + { + isImage=true; + } - comm->setStuff(host, portS, file, text); + comm->setStuff(host, portS, file, text, image, isImage); socket->connectToHost(host, port); - text->setText(""); - - return text; + if(!image) + { + text->setText(""); + return text; + } + else + { + return image; + } } 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: HttpComm *comm; QTextDrag *text; + QImageDrag *image; QTextBrowser *browser; }; |