summaryrefslogtreecommitdiff
path: root/noncore/net/ubrowser/httpcomm.cpp
authorspiralman <spiralman>2002-08-03 03:25:31 (UTC)
committer spiralman <spiralman>2002-08-03 03:25:31 (UTC)
commit7d4b246bc728b73e9d38e110619222dd89c1fd1c (patch) (side-by-side diff)
tree7e6fbb8bbb106967993fa786a917fccde43970f3 /noncore/net/ubrowser/httpcomm.cpp
parent4005263f7c64a631f4df9aeece83321ba818160d (diff)
downloadopie-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)
Diffstat (limited to 'noncore/net/ubrowser/httpcomm.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/ubrowser/httpcomm.cpp43
1 files changed, 34 insertions, 9 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
@@ -36,18 +36,20 @@ HttpComm::HttpComm(QSocket *newSocket, QTextBrowser *newBrowser):QObject()
void HttpComm::setUp(QString *newName)
{
name = 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;
portS = newPortS;
file = newFile;
text = newText;
+ isImage = newIsImage;
+ image = newImage;
}
void HttpComm::hostFound()
{
printf("HttpComm::hostFound: host found\n");
}
@@ -67,18 +69,21 @@ void HttpComm::connected()
chunked=false;
lengthset=false;
}
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;
if(headerRead == false)
{
for(i=0; i<ba; i++)
{
@@ -129,12 +134,13 @@ void HttpComm::incoming()
processBody();
socket->close();
}
}
else
{
+ int startclength=0;
QString tempQString = tempString;
//remove the http header, if one exists
if(j != 0)
{
tempQString.remove(0, j+1);
printf("HttpComm::incoming: removing http header. Result: \n%s", tempQString.latin1());
@@ -185,26 +191,31 @@ void HttpComm::incoming()
bRead+=newTQstring.length();
body+=newTQstring;
printf("HttpComm::incoming: start new body piece 1: \n");
printf("%s", newTQstring.latin1() );
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;
}
//the chunk extends beyond the current data;
else
{
if(tempQString.length() <= ba)
{
+ printf("HttpComm::incoming: not truncating tempQString\n");
body+=tempQString;
bRead+=tempQString.length();
}
else
{
+ printf("HttpComm::incoming: truncating tempQString\n");
tempQString.truncate(ba);
body+=tempQString;
bRead+=tempQString.length();
}
printf("HttpComm::incoming: start new body piece 2: \n");
printf("%s", tempQString.latin1() );
@@ -224,26 +235,31 @@ void HttpComm::incoming()
bRead+=newTQstring.length();
body+=newTQstring;
printf("HttpComm::incoming: start new body piece 3: \n");
printf("%s", newTQstring.latin1() );
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;
}
//the chunk extends beyond the current data;
else
{
if(tempQString.length() <= ba)
{
+ printf("HttpComm::incoming: not truncating tempQString\n");
body+=tempQString;
bRead+=tempQString.length();
}
else
{
+ printf("HttpComm::incoming: truncating tempQString\n");
tempQString.truncate(ba);
body+=tempQString;
bRead+=tempQString.length();
}
printf("HttpComm::incoming: start new body piece 4: \n");
printf("%s", tempQString.latin1() );
@@ -305,13 +321,22 @@ void HttpComm::processBody()
// printf("HttpComm::processBody: end body\n");
int lastSlash = file.findRev('/');
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();
+ }
}