summaryrefslogtreecommitdiff
path: root/noncore/unsupported/ubrowser
authormickeyl <mickeyl>2004-11-08 10:38:01 (UTC)
committer mickeyl <mickeyl>2004-11-08 10:38:01 (UTC)
commit9eaf9b69dd95fc20133f2bdff1b624ff9257c420 (patch) (unidiff)
tree4bed7aad0433f50ee004828e904dbc2837715772 /noncore/unsupported/ubrowser
parent18875a0d90d0425c066e6fa2cda81a6140fe8606 (diff)
downloadopie-9eaf9b69dd95fc20133f2bdff1b624ff9257c420.zip
opie-9eaf9b69dd95fc20133f2bdff1b624ff9257c420.tar.gz
opie-9eaf9b69dd95fc20133f2bdff1b624ff9257c420.tar.bz2
move ubroser to unsupported
Diffstat (limited to 'noncore/unsupported/ubrowser') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/unsupported/ubrowser/.cvsignore4
-rw-r--r--noncore/unsupported/ubrowser/config.in4
-rw-r--r--noncore/unsupported/ubrowser/gnu-license-header15
-rw-r--r--noncore/unsupported/ubrowser/httpfactory.cpp376
-rw-r--r--noncore/unsupported/ubrowser/httpfactory.h51
-rw-r--r--noncore/unsupported/ubrowser/main.cpp26
-rw-r--r--noncore/unsupported/ubrowser/mainview.cpp121
-rw-r--r--noncore/unsupported/ubrowser/mainview.h53
-rw-r--r--noncore/unsupported/ubrowser/new_chunked_algo_thoughts12
-rw-r--r--noncore/unsupported/ubrowser/old_chunked_algo57
-rw-r--r--noncore/unsupported/ubrowser/opie-ubrowser.control10
-rw-r--r--noncore/unsupported/ubrowser/ubrowser.pro11
12 files changed, 740 insertions, 0 deletions
diff --git a/noncore/unsupported/ubrowser/.cvsignore b/noncore/unsupported/ubrowser/.cvsignore
new file mode 100644
index 0000000..93b952d
--- a/dev/null
+++ b/noncore/unsupported/ubrowser/.cvsignore
@@ -0,0 +1,4 @@
1Makefile*
2moc_*
3.moc
4.obj
diff --git a/noncore/unsupported/ubrowser/config.in b/noncore/unsupported/ubrowser/config.in
new file mode 100644
index 0000000..55f2825
--- a/dev/null
+++ b/noncore/unsupported/ubrowser/config.in
@@ -0,0 +1,4 @@
1 config UBROWSER
2 boolean "opie-ubrowser (a very small web brower)"
3 default "n"
4 depends ( LIBQPE || LIBQPE-X11 )
diff --git a/noncore/unsupported/ubrowser/gnu-license-header b/noncore/unsupported/ubrowser/gnu-license-header
new file mode 100644
index 0000000..9973e8c
--- a/dev/null
+++ b/noncore/unsupported/ubrowser/gnu-license-header
@@ -0,0 +1,15 @@
1/*
2Opie-uBrowser. a very small web browser, using on QTextBrowser for html display/parsing
3Copyright (C) 2002 Thomas Stephens
4
5This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public
6License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later
7version.
8
9This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
10implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
11Public License for more details.
12
13You should have received a copy of the GNU General Public License along with this program; if not, write to the Free
14Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15*/ \ No newline at end of file
diff --git a/noncore/unsupported/ubrowser/httpfactory.cpp b/noncore/unsupported/ubrowser/httpfactory.cpp
new file mode 100644
index 0000000..369f206
--- a/dev/null
+++ b/noncore/unsupported/ubrowser/httpfactory.cpp
@@ -0,0 +1,376 @@
1/*
2Opie-uBrowser. a very small web browser, using on QTextBrowser for html display/parsing
3Copyright (C) 2002 Thomas Stephens
4
5This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public
6License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later
7version.
8
9This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
10implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
11Public License for more details.
12
13You should have received a copy of the GNU General Public License along with this program; if not, write to the Free
14Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15*/
16
17#include "httpfactory.h"
18
19HttpFactory::HttpFactory(QTextBrowser *newBrowser):QMimeSourceFactory()
20{
21 //socket = new QSocket;
22 text = new QTextDrag;
23 browser=newBrowser;
24 //comm = new HttpComm(socket, browser);
25 image = new QImageDrag;
26}
27
28const QMimeSource * HttpFactory::data(const QString &abs_name) const
29{
30 printf("HttpFactory::data: using absolute data func\n");
31
32 int port=80, addrEnd, portSep;
33 QString host, file, portS, name, tempString;
34 bool done=false, isText=true;
35
36 //comm->setUp((QString *)&abs_name);
37
38 name = abs_name;
39 //name = name.lower();
40 name = name.stripWhiteSpace();
41
42 //printf("%s\n", name.latin1());
43
44 if(name.startsWith("http://"))
45 {
46 name = name.remove(0, 7);
47 }
48 else
49 {
50 name.prepend(browser->context());
51 name = name.remove(0, 7);
52 }
53
54 addrEnd = name.find('/');
55 if(addrEnd == -1)
56 {
57 name += '/';
58 addrEnd = name.length()-1;
59 }
60
61 host = name;
62 file = name;
63
64 host.truncate(addrEnd);
65 file.remove(0, addrEnd);
66
67 portSep = host.find(':');
68 if(portSep != -1)
69 {
70 portS=host;
71 host.truncate(portSep);
72 portS.remove(0, portSep+1);
73 port = portS.toInt();
74 }
75
76 //printf("%s %s %d\n", host.latin1(), file.latin1(), port);
77
78 if(port == 80)
79 {
80 portS="80";
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 //}
87
88 //comm->setStuff(host, portS, file, text, image, isImage);
89
90 //socket->connectToHost(host, port);
91
92 int con, bytesSent;
93 struct sockaddr_in serverAddr;
94 struct hostent * serverInfo = gethostbyname( host.latin1() );
95
96 if( serverInfo == NULL )
97 {
98 QMessageBox *mb = new QMessageBox(QObject::tr("Error!"),
99 QObject::tr("IP-Address not found"),
100 QMessageBox::NoIcon,
101 QMessageBox::Ok,
102 QMessageBox::NoButton,
103 QMessageBox::NoButton);
104 mb->exec();
105 perror("HttpFactory::data:");
106 return 0;
107 }
108
109 QByteArray data;
110 //printf( "HttpFactory::data: %s\n", inet_ntoa(*((struct in_addr *)serverInfo->h_addr )) );
111
112 QString request("GET " + file + " HTTP/1.1\r\nHost: " + host + ':' + portS + "\r\nConnection: close\r\n\r\n");
113
114 con = socket( AF_INET, SOCK_STREAM, 0 );
115 if( con == -1 )
116 {
117 QMessageBox *mb = new QMessageBox(QObject::tr("Error!"),
118 QObject::tr("Error creating socket"),
119 QMessageBox::NoIcon,
120 QMessageBox::Ok,
121 QMessageBox::NoButton,
122 QMessageBox::NoButton);
123 mb->exec();
124 perror("HttpFactory::data:");
125 return 0;
126 }
127
128 serverAddr.sin_family = AF_INET;
129 serverAddr.sin_port = htons( port );
130 serverAddr.sin_addr.s_addr = inet_addr( inet_ntoa(*((struct in_addr *)serverInfo->h_addr )) );
131 memset( &(serverAddr.sin_zero), '\0', 8 );
132
133 if(::connect( con, (struct sockaddr *)&serverAddr, sizeof(struct sockaddr)) == -1 )
134 {
135 QMessageBox *mb = new QMessageBox(QObject::tr("Error!"),
136 QObject::tr("Error connecting to socket"),
137 QMessageBox::NoIcon,
138 QMessageBox::Ok,
139 QMessageBox::NoButton,
140 QMessageBox::NoButton);
141 mb->exec();
142 perror("HttpFactory::data:");
143 return 0;
144 }
145
146
147 bytesSent = send( con, request.latin1(), request.length(), 0);
148 //printf("HttpFactory::data: bytes written: %d out of: %d\n", bytesSent, request.length() );
149 //printf("HttpFactory::data: request sent:\n%s", request.latin1());
150
151 data = this->processResponse( con, isText );
152
153 ::close( con );
154
155 if(isText)
156 {
157 text->setText( QString( data ) );
158 return text;
159 }
160 else
161 {
162 image->setImage( QImage( data ) );
163 return image;
164 }
165}
166
167const QMimeSource * HttpFactory::data(const QString &abs_or_rel_name, const QString & context) const
168{
169 printf("HttpFactory::data: using relative data func\n");
170
171 if(abs_or_rel_name.startsWith(context))
172 {
173 return data(abs_or_rel_name);
174 }
175 else
176 {
177 return data(context + abs_or_rel_name);
178 }
179
180 return 0;
181}
182
183const QByteArray HttpFactory::processResponse( int sockfd, bool &isText ) const
184{
185 QByteArray inputBin( 1 );
186 QByteArray conClosedErr( 27 );
187 char conClosedErrMsg[] = "Connection to server closed";
188 QString currentLine;
189 bool done=false, chunked=false;
190 int dataLength = 0;
191
192 for( int i = 0; i < 27; i++)
193 {
194 conClosedErr[i] = conClosedErrMsg[i];
195 }
196
197 while( !done )
198 {
199 recv( sockfd, inputBin.data(), inputBin.size(), 0 );
200 currentLine += *(inputBin.data());
201
202 if( *(inputBin.data()) == '\n' )
203 {
204 if( currentLine.isEmpty() || currentLine.startsWith( "\r") )
205 {
206 printf( "HttpFactory::processResponse: end of header\n" );
207 if( chunked )
208 {
209 return recieveChunked( sockfd );
210 } else {
211 return recieveNormal( sockfd, dataLength );
212 }
213 done = true;
214 }
215
216 if( currentLine.contains( "Transfer-Encoding: chunked", false) >= 1 )
217 {
218 chunked = true;
219 // printf( "HttpFactory::processResponse: chunked encoding\n" );
220 }
221
222 if( currentLine.contains( "Content-Type: text", false ) >= 1 )
223 {
224 isText = true;
225 // printf( "HttpFactory::processResponse: content type text\n" );
226 if( currentLine.contains( "html", false ) >= 1)
227 {
228 browser->setTextFormat(Qt::RichText);
229 // printf( "HttpFactory::processResponse: content type html\n" );
230 }
231 }
232
233 if( currentLine.contains( "Content-Type: image", false ) >= 1 )
234 {
235 isText = false;
236 // printf( "HttpFactory::processResponse: content type image\n" );
237 }
238
239 if( currentLine.contains( "Content-Length", false ) >= 1 )
240 {
241 currentLine.remove( 0, 16 );
242 dataLength = currentLine.toInt();
243 // printf( "HttpFactory::processResponse: content length: %d\n", dataLength );
244 }
245
246 if( currentLine.contains( "404", false ) >= 1 )
247 {
248 // printf( "HttpFactory::processResponse: 404 error\n" );
249 return 0;
250 }
251
252 currentLine = "";
253 // printf("HttpFactory::processResponse: reseting currentLine: %s\n", currentLine.latin1() );
254 }
255 }
256}
257
258const QByteArray HttpFactory::recieveNormal( int sockfd, int dataLen ) const
259{
260 //printf( "HttpFactory::recieveNormal: recieving w/out chunked encoding\n" );
261
262 QByteArray data( dataLen );
263 QByteArray temp( dataLen );
264 int recieved, i;
265
266 recieved = recv( sockfd, temp.data(), temp.size(), 0 );
267 //printf( "HttpFactory::recieveNormal: found some data: %s\n", (char *)temp.data() );
268 for( i = 0; i < recieved; i++ )
269 {
270 data[i] = temp[i];
271 }
272 dataLen -= recieved;
273 while( dataLen > 0 )
274 {
275 recieved = recv( sockfd, temp.data(), temp.size(), 0 );
276 dataLen -= recieved;
277 // printf( "HttpFactory::recieveNormal: found some more data: %s\n", (char *)temp.data() );
278 for( int j = 0; j < recieved; j++ )
279 {
280 data[i] = temp[j];
281 i++;
282 }
283 temp.fill('\0');
284 }
285
286 //printf( "HttpFactory::recieveNormal: end of data\n" );
287 return data;
288}
289
290const QByteArray HttpFactory::recieveChunked( int sockfd ) const
291{
292 //printf( "HttpFactory::recieveChunked: recieving data with chunked encoding\n" );
293
294 QByteArray data;
295 QByteArray temp( 1 );
296 int recieved, i = 0, cSize = 0;
297 QString cSizeS;
298
299 //printf( "HttpFactory::recieveChunked: temp.size(): %d\n", temp.size() );
300 recv( sockfd, temp.data(), temp.size(), 0 );
301 while( *(temp.data()) != '\n' && *(temp.data()) != ';' )
302 {
303 // printf( "HttpFactory::recieveChunked: temp.size(): %d\n", temp.size() );
304 // printf( "HttpFactory::recieveChunked: temp.data(): %c\n", temp[0] );
305 cSizeS += temp[0];
306 recv( sockfd, temp.data(), temp.size(), 0 );
307 }
308
309 //printf( "HttpFactory::recieveChunked: cSizeS: %s\n", cSizeS.latin1() );
310 cSize = cSizeS.toInt( 0, 16 );
311 //printf( "HttpFactory::recieveChunked: first chunk of size: %d\n", cSize );
312
313 if( *(temp.data()) == ';' )
314 {
315 while( *(temp.data()) != '\n' )
316 {
317 recv( sockfd, temp.data(), temp.size(), 0 );
318 }
319 }
320
321 temp.fill( '\0', cSize );
322 data.fill( '\0', cSize );
323
324 while( cSize > 0 )
325 {
326 while( cSize > 0 )
327 {
328 recieved = recv( sockfd, temp.data(), temp.size(), 0 );
329 cSize -= recieved;
330 for( int j = 0; j < recieved; j++ )
331 {
332 data[i] = temp[j];
333 i++;
334 }
335 temp.fill('\0', cSize);
336 }
337
338 // printf( "HttpFactory::recieveChunked: current data:\n%s", data.data() );
339
340 temp.fill('\0', 1);
341 cSizeS = "";
342 cSize = 0;
343
344 recv( sockfd, temp.data(), temp.size(), 0 );
345 if( *(temp.data()) == '\r' )
346 {
347 recv( sockfd, temp.data(), temp.size(), 0 );
348 }
349 recv( sockfd, temp.data(), temp.size(), 0 );
350 while( *(temp.data()) != '\n' && *(temp.data()) != ';' )
351 {
352 // printf( "HttpFactory::recieveChunked: temp.size(): %d\n", temp.size() );
353 // printf( "HttpFactory::recieveChunked: temp.data(): %d\n", temp[0] );
354 cSizeS += temp[0];
355 recv( sockfd, temp.data(), temp.size(), 0 );
356 }
357
358 // printf( "HttpFactory::recieveChunked: cSizeS: %s\n", cSizeS.latin1() );
359 cSize = cSizeS.toInt( 0, 16 );
360 // printf( "HttpFactory::recieveChunked: next chunk of size: %d\n", cSize );
361
362 if( *(temp.data()) == ';' )
363 {
364 while( *(temp.data()) != '\n' )
365 {
366 recv( sockfd, temp.data(), temp.size(), 0 );
367 }
368 }
369
370 temp.fill( '\0', cSize );
371 data.resize( data.size() + cSize );
372 }
373
374 //printf( "HttpFactory::recieveChunked: end of data\n" );
375 return data;
376}
diff --git a/noncore/unsupported/ubrowser/httpfactory.h b/noncore/unsupported/ubrowser/httpfactory.h
new file mode 100644
index 0000000..ec59ebb
--- a/dev/null
+++ b/noncore/unsupported/ubrowser/httpfactory.h
@@ -0,0 +1,51 @@
1/*
2Opie-uBrowser. a very small web browser, using on QTextBrowser for html display/parsing
3Copyright (C) 2002 Thomas Stephens
4
5This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public
6License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later
7version.
8
9This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
10implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
11Public License for more details.
12
13You should have received a copy of the GNU General Public License along with this program; if not, write to the Free
14Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15*/
16
17#include <qmime.h>
18//#include <qsocket.h>
19#include <qstring.h>
20#include <qdragobject.h>
21#include <qtextbrowser.h>
22#include <qmessagebox.h>
23
24#include <stdio.h>
25
26#include <sys/types.h>
27#include <sys/socket.h>
28#include <unistd.h>
29#include <netinet/in.h>
30#include <netdb.h>
31#include <arpa/inet.h>
32
33//#include "httpcomm.h"
34
35class HttpFactory : public QMimeSourceFactory
36{
37public:
38 HttpFactory(QTextBrowser *newBrowser);
39 const QMimeSource * data(const QString &abs_name) const;
40 const QMimeSource * data(const QString &abs_or_rel_name, const QString & context) const;
41private:
42 //QSocket *socket;
43 //HttpComm *comm;
44 QTextDrag *text;
45 QImageDrag *image;
46 QTextBrowser *browser;
47
48 const QByteArray processResponse( int sockfd, bool &isText) const;
49 const QByteArray recieveNormal( int sockfd, int dataLen ) const;
50 const QByteArray recieveChunked( int sockfd ) const;
51};
diff --git a/noncore/unsupported/ubrowser/main.cpp b/noncore/unsupported/ubrowser/main.cpp
new file mode 100644
index 0000000..0736f1f
--- a/dev/null
+++ b/noncore/unsupported/ubrowser/main.cpp
@@ -0,0 +1,26 @@
1/*
2Opie-uBrowser. a very small web browser, using on QTextBrowser for html display/parsing
3Copyright (C) 2002 Thomas Stephens
4
5This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public
6License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later
7version.
8
9This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
10implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
11Public License for more details.
12
13You should have received a copy of the GNU General Public License along with this program; if not, write to the Free
14Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15*/
16
17#include <qpe/qpeapplication.h>
18
19#include "mainview.h"
20
21#include <opie2/oapplicationfactory.h>
22
23
24using namespace Opie::Core;
25OPIE_EXPORT_APP( OApplicationFactory<MainView> )
26
diff --git a/noncore/unsupported/ubrowser/mainview.cpp b/noncore/unsupported/ubrowser/mainview.cpp
new file mode 100644
index 0000000..f299b54
--- a/dev/null
+++ b/noncore/unsupported/ubrowser/mainview.cpp
@@ -0,0 +1,121 @@
1/*
2Opie-uBrowser. a very small web browser, using on QTextBrowser for html display/parsing
3Copyright (C) 2002 Thomas Stephens
4
5This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public
6License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later
7version.
8
9This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
10implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
11Public License for more details.
12
13You should have received a copy of the GNU General Public License along with this program; if not, write to the Free
14Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15*/
16
17
18#include "mainview.h"
19
20MainView::MainView(QWidget *parent, const char *name, WFlags fl) : QMainWindow(parent, name, fl)
21{
22 setIcon( Resource::loadPixmap( "remote" ) );
23 setCaption(tr("uBrowser"));
24
25 setToolBarsMovable( false );
26
27 QToolBar *toolbar = new QToolBar(this, "toolbar");
28 back = new QToolButton(Resource::loadPixmap("ubrowser/back"), 0, 0, 0, 0, toolbar, "back");
29 forward = new QToolButton(Resource::loadPixmap("ubrowser/forward"), 0, 0, 0, 0, toolbar, "forward");
30 home = new QToolButton(Resource::loadPixmap("ubrowser/home"), 0, 0, 0, 0, toolbar, "home");
31 location = new QComboBox(true, toolbar, "location");
32 go = new QToolButton(Resource::loadPixmap("ubrowser/go"), 0, 0, 0, 0, toolbar, "go");
33
34 toolbar->setStretchableWidget(location);
35 toolbar->setHorizontalStretchable(true);
36 location->setAutoCompletion( true );
37
38 addToolBar(toolbar);
39
40 browser = new QTextBrowser(this, "browser");
41 setCentralWidget(browser);
42
43//make the button take you to the location
44 connect(go, SIGNAL(clicked()), this, SLOT(goClicked()) );
45 connect(location->lineEdit(), SIGNAL(returnPressed()), this, SLOT(goClicked()) );
46
47//make back, forward and home do their thing (isnt QTextBrowser great?)
48 connect(back, SIGNAL(clicked()), browser, SLOT(backward()) );
49 connect(forward, SIGNAL(clicked()), browser, SLOT(forward()) );
50 connect(home, SIGNAL(clicked()), browser, SLOT(home()) );
51
52//make back and forward buttons be enabled, only when you can go back or forward (again, i love QTextBrowser)
53//this doesnt seem to work, but doesnt break anything either...
54 connect(browser, SIGNAL(backwardAvailable(bool)), back, SLOT(setOn(bool)) );
55 connect(browser, SIGNAL(forwardAvailable(bool)), forward, SLOT(setOn(bool)) );
56
57//notify me when the text of the browser has changed (like when the user clicks a link)
58 connect(browser, SIGNAL(textChanged()), this, SLOT(textChanged()) );
59
60 http = new HttpFactory(browser);
61
62 if( qApp->argc() > 1 )
63 {
64 char **argv = qApp->argv();
65 int i = 0;
66 QString *openfile = new QString( argv[0] );
67 while( openfile->contains( "ubrowser" ) == 0 && i < qApp->argc() )
68 {
69 i++;
70 *openfile = argv[i];
71 }
72 *openfile = argv[i+1];
73 if( !openfile->startsWith( "http://" ) && !openfile->startsWith( "/" ) )
74 {
75 openfile->insert( 0, QDir::currentDirPath()+"/" );
76 }
77 location->setEditText( *openfile );
78 goClicked();
79 }
80}
81
82void MainView::goClicked()
83{
84 location->insertItem( location->currentText() );
85
86 if(location->currentText().startsWith("http://") )
87 {
88 location->setEditText(location->currentText().lower());
89 browser->setMimeSourceFactory(http);
90 printf("MainView::goClicked: using http source factory\n");
91 }
92 else
93 {
94 browser->setMimeSourceFactory(QMimeSourceFactory::defaultFactory());
95 printf("MainView::goClicked: using default source factory\n");
96 }
97
98 browser->setSource(location->currentText());
99}
100
101void MainView::textChanged()
102{
103 if(browser->documentTitle().isNull())
104 {
105 setCaption( tr("%1 - uBrowser").arg( browser->source() ) );
106 }
107 else
108 {
109 setCaption(tr(" - uBrowser").arg( browser->documentTitle() ));
110 }
111
112 location->setEditText(browser->source());
113}
114
115void MainView::setDocument( const QString& applnk_filename )
116{
117 DocLnk *file = new DocLnk( applnk_filename );
118
119 location->setEditText( file->file() );
120 goClicked();
121}
diff --git a/noncore/unsupported/ubrowser/mainview.h b/noncore/unsupported/ubrowser/mainview.h
new file mode 100644
index 0000000..7ce890c
--- a/dev/null
+++ b/noncore/unsupported/ubrowser/mainview.h
@@ -0,0 +1,53 @@
1/*
2Opie-uBrowser. a very small web browser, using on QTextBrowser for html display/parsing
3Copyright (C) 2002 Thomas Stephens
4
5This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public
6License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later
7version.
8
9This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
10implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
11Public License for more details.
12
13You should have received a copy of the GNU General Public License along with this program; if not, write to the Free
14Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15*/
16
17#include <qpe/resource.h>
18#include <qtoolbar.h>
19#include <qpe/applnk.h>
20
21#include <qapplication.h>
22#include <qmainwindow.h>
23#include <qwidget.h>
24#include <qtextbrowser.h>
25#include <qtoolbutton.h>
26#include <qcombobox.h>
27#include <qlayout.h>
28#include <qlineedit.h>
29#include <qdir.h>
30
31#include <stdio.h>
32
33#include "httpfactory.h"
34
35class MainView : public QMainWindow
36{
37 Q_OBJECT
38public:
39 static QString appName() { return QString::fromLatin1("ubrowser"); }
40 MainView(QWidget *parent=0, const char *name=0, WFlags fl = 0);
41public slots:
42 void goClicked();
43 void textChanged();
44 void setDocument( const QString& applnk_filename );
45private:
46 QToolButton *back;
47 QToolButton *forward;
48 QToolButton *home;
49 QToolButton *go;
50 QComboBox *location;
51 QTextBrowser *browser;
52 HttpFactory *http;
53};
diff --git a/noncore/unsupported/ubrowser/new_chunked_algo_thoughts b/noncore/unsupported/ubrowser/new_chunked_algo_thoughts
new file mode 100644
index 0000000..8ca9318
--- a/dev/null
+++ b/noncore/unsupported/ubrowser/new_chunked_algo_thoughts
@@ -0,0 +1,12 @@
1use a switch case, with each case being one potential way that the data is when the function is entered, or
2another one exits.
3
4while(!done)
5{
6 switch(status)
7 {
8 case chunk header:
9 case after chunk header:
10 case no chunk header:
11 }
12} \ No newline at end of file
diff --git a/noncore/unsupported/ubrowser/old_chunked_algo b/noncore/unsupported/ubrowser/old_chunked_algo
new file mode 100644
index 0000000..9b4ccda
--- a/dev/null
+++ b/noncore/unsupported/ubrowser/old_chunked_algo
@@ -0,0 +1,57 @@
1readchunk:
2 if(semi != 0)
3 {
4 printf("HttpComm::incoming: semi !=0\n");
5 QString newBody = tempString;
6 if(i != 0)
7 {
8 printf("HttpComm::incoming: striping header2\n");
9 newBody.remove(0,i);
10 }
11 newBody=newBody.remove(0, semi);
12 if(newBody.length() > clength)
13 {
14 newBody.truncate(clength);
15 nextChunk = true;
16 }
17 body += newBody;
18 bRead += newBody.length();
19 printf("HttpComm::incoming: start body chunk1\n");
20 printf("%s", newBody.latin1());
21 printf("\nHttpComm::incoming: end body chunk\n");
22 printf("HttpComm::incoming: bRead: %d\n", bRead);
23 if(nextChunk)
24 {
25 QString tmpQString = tempString;
26 tmpQString=tmpQString.remove(0, clength);
27 tempString = (char *)tmpQString.latin1();
28 lengthset=false;
29 goto topchunk;
30 }
31 }
32 else
33 {
34 if( (bRead + ba) > clength)
35 {
36 // int bRead2=bRead;
37 for(; bRead < clength; bRead++)
38 {
39 body+=tempString[j];
40 // bRead++;
41 }
42 }
43 else
44 {
45 body += tempString;
46 bRead += ba;
47 }
48 printf("HttpComm::incoming: start body chunk2\n");
49 printf("%s", tempString);
50 printf("\nHttpComm::incoming: end body chunk\n");
51 printf("HttpComm::incoming: bRead: %d\n", bRead);
52 }
53 if(bRead >= clength)
54 {
55 printf("HttpComm::incoming: end chunk\n");
56 lengthset=false;
57 } \ No newline at end of file
diff --git a/noncore/unsupported/ubrowser/opie-ubrowser.control b/noncore/unsupported/ubrowser/opie-ubrowser.control
new file mode 100644
index 0000000..cf96888
--- a/dev/null
+++ b/noncore/unsupported/ubrowser/opie-ubrowser.control
@@ -0,0 +1,10 @@
1Package: opie-ubrowser
2Files: bin/ubrowser apps/Applications/ubrowser.desktop pics/ubrowser/*.png plugins/application/libubrowser.so*
3Priority: optional
4Section: opie/applications
5Maintainer: Thomas Stephens <spiralman@softhome.net>
6Architecture: arm
7Version: 0.1-$SUB_VERSION
8Depends: task-opie-minimal
9License: GPL
10Description: A very small web browser
diff --git a/noncore/unsupported/ubrowser/ubrowser.pro b/noncore/unsupported/ubrowser/ubrowser.pro
new file mode 100644
index 0000000..bcdb4f4
--- a/dev/null
+++ b/noncore/unsupported/ubrowser/ubrowser.pro
@@ -0,0 +1,11 @@
1 CONFIG +=qt warn_on quick-app
2 HEADERS = mainview.h httpfactory.h
3 SOURCES = main.cpp mainview.cpp httpfactory.cpp
4 INCLUDEPATH+=../../../include
5 DEPENDPATH+=../../../include
6 LIBS += -lqpe
7TARGET = ubrowser
8
9
10
11include ( $(OPIEDIR)/include.pro )