summaryrefslogtreecommitdiff
authorspiralman <spiralman>2003-03-21 21:59:58 (UTC)
committer spiralman <spiralman>2003-03-21 21:59:58 (UTC)
commit07a03b603d964b07d2866e04f480014fadcf1570 (patch) (side-by-side diff)
treebcc0b9c9a91855a21ec6dc777eb9ca803bf1b2f4
parentd1d55108ecc8c913267122014aa2f139be947299 (diff)
downloadopie-07a03b603d964b07d2866e04f480014fadcf1570.zip
opie-07a03b603d964b07d2866e04f480014fadcf1570.tar.gz
opie-07a03b603d964b07d2866e04f480014fadcf1570.tar.bz2
fixed commandline argument reading, made ubrowser a "document-oriented application" (implemented setDocument, etc)
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/ubrowser/httpfactory.cpp40
-rw-r--r--noncore/net/ubrowser/main.cpp4
-rw-r--r--noncore/net/ubrowser/mainview.cpp24
-rw-r--r--noncore/net/ubrowser/mainview.h2
4 files changed, 44 insertions, 26 deletions
diff --git a/noncore/net/ubrowser/httpfactory.cpp b/noncore/net/ubrowser/httpfactory.cpp
index 154d5d0..b57149f 100644
--- a/noncore/net/ubrowser/httpfactory.cpp
+++ b/noncore/net/ubrowser/httpfactory.cpp
@@ -30,25 +30,25 @@ const QMimeSource * HttpFactory::data(const QString &abs_name) const
printf("HttpFactory::data: using absolute data func\n");
int port=80, addrEnd, portSep;
QString host, file, portS, name, tempString;
bool done=false, isText=true;
// comm->setUp((QString *)&abs_name);
name = abs_name;
// name = name.lower();
name = name.stripWhiteSpace();
- printf("%s\n", name.latin1());
+// printf("%s\n", name.latin1());
if(name.startsWith("http://"))
{
name = name.remove(0, 7);
}
else
{
name.prepend(browser->context());
name = name.remove(0, 7);
}
addrEnd = name.find('/');
@@ -64,25 +64,25 @@ const QMimeSource * HttpFactory::data(const QString &abs_name) const
host.truncate(addrEnd);
file.remove(0, addrEnd);
portSep = host.find(':');
if(portSep != -1)
{
portS=host;
host.truncate(portSep);
portS.remove(0, portSep+1);
port = portS.toInt();
}
- printf("%s %s %d\n", host.latin1(), file.latin1(), port);
+// printf("%s %s %d\n", host.latin1(), file.latin1(), port);
if(port == 80)
{
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, image, isImage);
@@ -98,25 +98,25 @@ const QMimeSource * HttpFactory::data(const QString &abs_name) const
QMessageBox *mb = new QMessageBox("Error!",
"couldnt find ip address",
QMessageBox::NoIcon,
QMessageBox::Ok,
QMessageBox::NoButton,
QMessageBox::NoButton);
mb->exec();
perror("HttpFactory::data:");
return 0;
}
QByteArray data;
- printf( "HttpFactory::data: %s\n", inet_ntoa(*((struct in_addr *)serverInfo->h_addr )) );
+// printf( "HttpFactory::data: %s\n", inet_ntoa(*((struct in_addr *)serverInfo->h_addr )) );
QString request("GET " + file + " HTTP/1.1\r\nHost: " + host + ':' + portS + "\r\nConnection: close\r\n\r\n");
con = socket( AF_INET, SOCK_STREAM, 0 );
if( con == -1 )
{
QMessageBox *mb = new QMessageBox("Error!",
"couldnt create socket",
QMessageBox::NoIcon,
QMessageBox::Ok,
QMessageBox::NoButton,
QMessageBox::NoButton);
@@ -136,26 +136,26 @@ const QMimeSource * HttpFactory::data(const QString &abs_name) const
"couldnt connect to socket",
QMessageBox::NoIcon,
QMessageBox::Ok,
QMessageBox::NoButton,
QMessageBox::NoButton);
mb->exec();
perror("HttpFactory::data:");
return 0;
}
bytesSent = send( con, request.latin1(), request.length(), 0);
- printf("HttpFactory::data: bytes written: %d out of: %d\n", bytesSent, request.length() );
- printf("HttpFactory::data: request sent:\n%s", request.latin1());
+// printf("HttpFactory::data: bytes written: %d out of: %d\n", bytesSent, request.length() );
+// printf("HttpFactory::data: request sent:\n%s", request.latin1());
data = this->processResponse( con, isText );
::close( con );
if(isText)
{
text->setText( QString( data ) );
return text;
}
else
{
@@ -207,66 +207,66 @@ const QByteArray HttpFactory::processResponse( int sockfd, bool &isText ) const
if( chunked )
{
return recieveChunked( sockfd );
} else {
return recieveNormal( sockfd, dataLength );
}
done = true;
}
if( currentLine.contains( "Transfer-Encoding: chunked", false) >= 1 )
{
chunked = true;
- printf( "HttpFactory::processResponse: chunked encoding\n" );
+// printf( "HttpFactory::processResponse: chunked encoding\n" );
}
if( currentLine.contains( "Content-Type: text", false ) >= 1 )
{
isText = true;
- printf( "HttpFactory::processResponse: content type text\n" );
+// printf( "HttpFactory::processResponse: content type text\n" );
if( currentLine.contains( "html", false ) >= 1)
{
browser->setTextFormat(Qt::RichText);
- printf( "HttpFactory::processResponse: content type html\n" );
+// printf( "HttpFactory::processResponse: content type html\n" );
}
}
if( currentLine.contains( "Content-Type: image", false ) >= 1 )
{
isText = false;
- printf( "HttpFactory::processResponse: content type image\n" );
+// printf( "HttpFactory::processResponse: content type image\n" );
}
if( currentLine.contains( "Content-Length", false ) >= 1 )
{
currentLine.remove( 0, 16 );
dataLength = currentLine.toInt();
- printf( "HttpFactory::processResponse: content length: %d\n", dataLength );
+// printf( "HttpFactory::processResponse: content length: %d\n", dataLength );
}
if( currentLine.contains( "404", false ) >= 1 )
{
- printf( "HttpFactory::processResponse: 404 error\n" );
+// printf( "HttpFactory::processResponse: 404 error\n" );
return 0;
}
currentLine = "";
- printf("HttpFactory::processResponse: reseting currentLine: %s\n", currentLine.latin1() );
+// printf("HttpFactory::processResponse: reseting currentLine: %s\n", currentLine.latin1() );
}
}
}
const QByteArray HttpFactory::recieveNormal( int sockfd, int dataLen ) const
{
- printf( "HttpFactory::recieveNormal: recieving w/out chunked encoding\n" );
+// printf( "HttpFactory::recieveNormal: recieving w/out chunked encoding\n" );
QByteArray data( dataLen );
QByteArray temp( dataLen );
int recieved, i;
recieved = recv( sockfd, temp.data(), temp.size(), 0 );
// printf( "HttpFactory::recieveNormal: found some data: %s\n", (char *)temp.data() );
for( i = 0; i < recieved; i++ )
{
data[i] = temp[i];
}
dataLen -= recieved;
@@ -274,50 +274,50 @@ const QByteArray HttpFactory::recieveNormal( int sockfd, int dataLen ) const
{
recieved = recv( sockfd, temp.data(), temp.size(), 0 );
dataLen -= recieved;
// printf( "HttpFactory::recieveNormal: found some more data: %s\n", (char *)temp.data() );
for( int j = 0; j < recieved; j++ )
{
data[i] = temp[j];
i++;
}
temp.fill('\0');
}
- printf( "HttpFactory::recieveNormal: end of data\n" );
+// printf( "HttpFactory::recieveNormal: end of data\n" );
return data;
}
const QByteArray HttpFactory::recieveChunked( int sockfd ) const
{
- printf( "HttpFactory::recieveChunked: recieving data with chunked encoding\n" );
+// printf( "HttpFactory::recieveChunked: recieving data with chunked encoding\n" );
QByteArray data;
QByteArray temp( 1 );
int recieved, i = 0, cSize = 0;
QString cSizeS;
// printf( "HttpFactory::recieveChunked: temp.size(): %d\n", temp.size() );
recv( sockfd, temp.data(), temp.size(), 0 );
while( *(temp.data()) != '\n' && *(temp.data()) != ';' )
{
// printf( "HttpFactory::recieveChunked: temp.size(): %d\n", temp.size() );
// printf( "HttpFactory::recieveChunked: temp.data(): %c\n", temp[0] );
cSizeS += temp[0];
recv( sockfd, temp.data(), temp.size(), 0 );
}
- printf( "HttpFactory::recieveChunked: cSizeS: %s\n", cSizeS.latin1() );
+// printf( "HttpFactory::recieveChunked: cSizeS: %s\n", cSizeS.latin1() );
cSize = cSizeS.toInt( 0, 16 );
- printf( "HttpFactory::recieveChunked: first chunk of size: %d\n", cSize );
+// printf( "HttpFactory::recieveChunked: first chunk of size: %d\n", cSize );
if( *(temp.data()) == ';' )
{
while( *(temp.data()) != '\n' )
{
recv( sockfd, temp.data(), temp.size(), 0 );
}
}
temp.fill( '\0', cSize );
data.fill( '\0', cSize );
@@ -346,31 +346,31 @@ const QByteArray HttpFactory::recieveChunked( int sockfd ) const
{
recv( sockfd, temp.data(), temp.size(), 0 );
}
recv( sockfd, temp.data(), temp.size(), 0 );
while( *(temp.data()) != '\n' && *(temp.data()) != ';' )
{
// printf( "HttpFactory::recieveChunked: temp.size(): %d\n", temp.size() );
// printf( "HttpFactory::recieveChunked: temp.data(): %d\n", temp[0] );
cSizeS += temp[0];
recv( sockfd, temp.data(), temp.size(), 0 );
}
- printf( "HttpFactory::recieveChunked: cSizeS: %s\n", cSizeS.latin1() );
+// printf( "HttpFactory::recieveChunked: cSizeS: %s\n", cSizeS.latin1() );
cSize = cSizeS.toInt( 0, 16 );
- printf( "HttpFactory::recieveChunked: next chunk of size: %d\n", cSize );
+// printf( "HttpFactory::recieveChunked: next chunk of size: %d\n", cSize );
if( *(temp.data()) == ';' )
{
while( *(temp.data()) != '\n' )
{
recv( sockfd, temp.data(), temp.size(), 0 );
}
}
temp.fill( '\0', cSize );
data.resize( data.size() + cSize );
}
- printf( "HttpFactory::recieveChunked: end of data\n" );
+// printf( "HttpFactory::recieveChunked: end of data\n" );
return data;
}
diff --git a/noncore/net/ubrowser/main.cpp b/noncore/net/ubrowser/main.cpp
index fe0f243..e4a873d 100644
--- a/noncore/net/ubrowser/main.cpp
+++ b/noncore/net/ubrowser/main.cpp
@@ -14,16 +14,16 @@ You should have received a copy of the GNU General Public License along with thi
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <qpe/qpeapplication.h>
#include "mainview.h"
int main( int argc, char **argv )
{
QPEApplication a( argc, argv );
MainView w;
- a.setMainWidget( &w );
- w.showMaximized();
+// a.setMainWidget( &w );
+ a.showMainDocumentWidget( &w );
return a.exec();
}
diff --git a/noncore/net/ubrowser/mainview.cpp b/noncore/net/ubrowser/mainview.cpp
index d3f4c57..f68c5db 100644
--- a/noncore/net/ubrowser/mainview.cpp
+++ b/noncore/net/ubrowser/mainview.cpp
@@ -24,24 +24,25 @@ MainView::MainView(QWidget *parent, const char *name) : QMainWindow(parent, name
setToolBarsMovable( false );
QPEToolBar *toolbar = new QPEToolBar(this, "toolbar");
back = new QToolButton(Resource::loadPixmap("ubrowser/back"), 0, 0, 0, 0, toolbar, "back");
forward = new QToolButton(Resource::loadPixmap("ubrowser/forward"), 0, 0, 0, 0, toolbar, "forward");
home = new QToolButton(Resource::loadPixmap("ubrowser/home"), 0, 0, 0, 0, toolbar, "home");
location = new QComboBox(true, toolbar, "location");
go = new QToolButton(Resource::loadPixmap("ubrowser/go"), 0, 0, 0, 0, toolbar, "go");
toolbar->setStretchableWidget(location);
toolbar->setHorizontalStretchable(true);
+ location->setAutoCompletion( true );
addToolBar(toolbar);
browser = new QTextBrowser(this, "browser");
setCentralWidget(browser);
//make the button take you to the location
connect(go, SIGNAL(clicked()), this, SLOT(goClicked()) );
connect(location->lineEdit(), SIGNAL(returnPressed()), this, SLOT(goClicked()) );
//make back, forward and home do their thing (isnt QTextBrowser great?)
connect(back, SIGNAL(clicked()), browser, SLOT(backward()) );
@@ -52,30 +53,37 @@ MainView::MainView(QWidget *parent, const char *name) : QMainWindow(parent, name
//this doesnt seem to work, but doesnt break anything either...
connect(browser, SIGNAL(backwardAvailable(bool)), back, SLOT(setOn(bool)) );
connect(browser, SIGNAL(forwardAvailable(bool)), forward, SLOT(setOn(bool)) );
//notify me when the text of the browser has changed (like when the user clicks a link)
connect(browser, SIGNAL(textChanged()), this, SLOT(textChanged()) );
http = new HttpFactory(browser);
if( qApp->argc() > 1 )
{
char **argv = qApp->argv();
- QString *argv1 = new QString( argv[1] );
- if( !argv1->startsWith( "http://" ) && !argv1->startsWith( "/" ) )
+ int i = 0;
+ QString *openfile = new QString( argv[0] );
+ while( openfile->contains( "ubrowser" ) == 0 && i < qApp->argc() )
{
- argv1->insert( 0, QDir::currentDirPath()+"/" );
+ i++;
+ *openfile = argv[i];
}
- location->setEditText( *argv1 );
+ *openfile = argv[i+1];
+ if( !openfile->startsWith( "http://" ) && !openfile->startsWith( "/" ) )
+ {
+ openfile->insert( 0, QDir::currentDirPath()+"/" );
+ }
+ location->setEditText( *openfile );
goClicked();
}
}
void MainView::goClicked()
{
location->insertItem( location->currentText() );
if(location->currentText().startsWith("http://") )
{
location->setEditText(location->currentText().lower());
browser->setMimeSourceFactory(http);
@@ -94,12 +102,20 @@ void MainView::textChanged()
{
if(browser->documentTitle().isNull())
{
setCaption(browser->source() + " - uBrowser");
}
else
{
setCaption(browser->documentTitle() + " - uBrowser");
}
location->setEditText(browser->source());
}
+
+void MainView::setDocument( const QString& applnk_filename )
+{
+ DocLnk *file = new DocLnk( applnk_filename );
+
+ location->setEditText( file->file() );
+ goClicked();
+}
diff --git a/noncore/net/ubrowser/mainview.h b/noncore/net/ubrowser/mainview.h
index 1a9b0db..20e2c70 100644
--- a/noncore/net/ubrowser/mainview.h
+++ b/noncore/net/ubrowser/mainview.h
@@ -7,44 +7,46 @@ License as published by the Free Software Foundation; either version 2 of the Li
version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <qpe/resource.h>
#include <qpe/qpetoolbar.h>
+#include <qpe/applnk.h>
#include <qapplication.h>
#include <qmainwindow.h>
#include <qwidget.h>
#include <qtextbrowser.h>
#include <qtoolbutton.h>
#include <qcombobox.h>
#include <qlayout.h>
#include <qlineedit.h>
#include <qdir.h>
#include <stdio.h>
#include "httpfactory.h"
class MainView : public QMainWindow
{
Q_OBJECT
public:
MainView(QWidget *parent=0, const char *name=0);
public slots:
void goClicked();
void textChanged();
+ void setDocument( const QString& applnk_filename );
private:
QToolButton *back;
QToolButton *forward;
QToolButton *home;
QToolButton *go;
QComboBox *location;
QTextBrowser *browser;
HttpFactory *http;
};