summaryrefslogtreecommitdiff
Side-by-side diff
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)
}
-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;
};