author | treke <treke> | 2002-09-04 17:53:12 (UTC) |
---|---|---|
committer | treke <treke> | 2002-09-04 17:53:12 (UTC) |
commit | 605d854057eb470a1d75210193b82eb0b1ad6b53 (patch) (side-by-side diff) | |
tree | c411b661d5211fefbd83a7c8f63eef8c9cca72ee /noncore | |
parent | c35a5eabd8f5ed18e4216f6c88ee6794bacfb491 (diff) | |
download | opie-605d854057eb470a1d75210193b82eb0b1ad6b53.zip opie-605d854057eb470a1d75210193b82eb0b1ad6b53.tar.gz opie-605d854057eb470a1d75210193b82eb0b1ad6b53.tar.bz2 |
Major modifications to the User Interface
1) Bookmark support added, all options are stored on a per bookmark basis
2) 16 Bit color is now a supported bit depth for the server
-rw-r--r-- | noncore/comm/keypebble/keypebble.pro | 16 | ||||
-rw-r--r-- | noncore/comm/keypebble/krfbbuffer.cpp | 33 | ||||
-rw-r--r-- | noncore/comm/keypebble/krfbcanvas.cpp | 39 | ||||
-rw-r--r-- | noncore/comm/keypebble/krfbcanvas.h | 6 | ||||
-rw-r--r-- | noncore/comm/keypebble/krfbconnection.cpp | 272 | ||||
-rw-r--r-- | noncore/comm/keypebble/krfbconnection.h | 19 | ||||
-rw-r--r-- | noncore/comm/keypebble/krfbdecoder.cpp | 3 | ||||
-rw-r--r-- | noncore/comm/keypebble/krfblogin.cpp | 8 | ||||
-rw-r--r-- | noncore/comm/keypebble/krfboptions.cpp | 56 | ||||
-rw-r--r-- | noncore/comm/keypebble/krfboptions.h | 31 | ||||
-rw-r--r-- | noncore/comm/keypebble/krfbserver.cpp | 39 | ||||
-rw-r--r-- | noncore/comm/keypebble/kvnc.cpp | 168 | ||||
-rw-r--r-- | noncore/comm/keypebble/kvnc.h | 14 | ||||
-rw-r--r-- | noncore/comm/keypebble/kvncbookmarkdlg.cpp | 220 | ||||
-rw-r--r-- | noncore/comm/keypebble/kvncconndlg.cpp | 75 | ||||
-rw-r--r-- | noncore/comm/keypebble/kvncconnectdlg.cpp | 79 | ||||
-rw-r--r-- | noncore/comm/keypebble/kvncconnectdlg.h | 39 | ||||
-rw-r--r-- | noncore/comm/keypebble/kvncoptionsdlg.cpp | 54 | ||||
-rw-r--r-- | noncore/comm/keypebble/kvncoptionsdlg.h | 30 | ||||
-rw-r--r-- | noncore/comm/keypebble/main.cpp | 4 |
20 files changed, 682 insertions, 523 deletions
diff --git a/noncore/comm/keypebble/keypebble.pro b/noncore/comm/keypebble/keypebble.pro index a102381..1017133 100644 --- a/noncore/comm/keypebble/keypebble.pro +++ b/noncore/comm/keypebble/keypebble.pro @@ -9,7 +9,8 @@ HEADERS = d3des.h \ krfblogin.h \ - krfboptions.h \ + krfbserver.h \ krfbserverinfo.h \ kvnc.h \ - kvncconnectdlg.h \ - kvncoptionsdlg.h \ + kvncconndlg.h \ + kvncbookmarkdlg.h \ + version.h \ vncauth.h @@ -22,8 +23,9 @@ SOURCES = d3des.c \ krfblogin.cpp \ - krfboptions.cpp \ + krfbserver.cpp \ kvnc.cpp \ - kvncconnectdlg.cpp \ - kvncoptionsdlg.cpp \ + kvncconndlg.cpp \ + kvncbookmarkdlg.cpp \ main.cpp -INTERFACES = vncoptionsbase.ui +INTERFACES = kvncconndlgbase.ui \ + kvncbookmarkdlgbase.ui TARGET = keypebble diff --git a/noncore/comm/keypebble/krfbbuffer.cpp b/noncore/comm/keypebble/krfbbuffer.cpp index 4885261..5a52f31 100644 --- a/noncore/comm/keypebble/krfbbuffer.cpp +++ b/noncore/comm/keypebble/krfbbuffer.cpp @@ -152,3 +152,34 @@ void KRFBBuffer::drawRawRectChunk( void *data, } - } + } else if (decoder->format->bpp == 16 ) { + + CARD16 *d = (CARD16 *) data; + + uint r,g,b; + + for ( int j = 0; j < h; j++ ) { + for ( int i = 0; i < w ; i++ ) { + CARD16 pixel = d[ j * w + i ]; + pixel = Swap16IfLE( pixel ); + + r = pixel; + r = r >> decoder->format->redShift; + r = r & redMax; + + g = pixel; + g = g >> decoder->format->greenShift; + g = g & greenMax; + + b = pixel; + b = b >> decoder->format->blueShift; + b = b & blueMax; + + r = ( r * 255 ) / redMax; + g = ( g * 255 ) / greenMax; + b = ( b * 255 ) / blueMax; + + ulong *p = ( ulong * ) img.scanLine( j ) + i; + *p = qRgb( r,g,b ); + } + } + } else { diff --git a/noncore/comm/keypebble/krfbcanvas.cpp b/noncore/comm/keypebble/krfbcanvas.cpp index f74ab7b..8b56795 100644 --- a/noncore/comm/keypebble/krfbcanvas.cpp +++ b/noncore/comm/keypebble/krfbcanvas.cpp @@ -1,5 +1,4 @@ -#include "kvncconnectdlg.h" #include "krfbconnection.h" #include "krfbcanvas.h" -#include "krfboptions.h" +#include "krfbserver.h" #include "krfbbuffer.h" @@ -7,2 +6,3 @@ #include <qpe/config.h> +#include <qpe/qpeapplication.h> @@ -20,4 +20,2 @@ KRFBCanvas::KRFBCanvas( QWidget *parent, const char *name ) connection_ = new KRFBConnection(); - connect( connection_, SIGNAL( passwordRequired( KRFBConnection * ) ), - this, SLOT( passwordRequired( KRFBConnection * ) ) ); connect( connection_, SIGNAL( loggedIn() ), @@ -26,2 +24,3 @@ KRFBCanvas::KRFBCanvas( QWidget *parent, const char *name ) loggedIn_ = false; + QPEApplication::setStylusOperation(viewport(), QPEApplication::RightOnHold); @@ -35,12 +34,13 @@ KRFBCanvas::~KRFBCanvas() -void KRFBCanvas::openConnection() + +void KRFBCanvas::openConnection(KRFBServer server) { - KVNCConnectDlg dlg( connection_, this, "connect dialog" ); - if ( dlg.exec() ) { - QCString host = dlg.hostname().latin1(); - password = dlg.password(); - connection_->connectTo( host, dlg.display() ); - } + + + QCString host = server.hostname.latin1(); + password=server.password; + connection_->connectTo( server); } + void KRFBCanvas::openURL( const QUrl &url ) @@ -54,6 +54,4 @@ void KRFBCanvas::openURL( const QUrl &url ) int display = url.port(); - if ( url.hasPassword() ) - connection_->setPassword( url.password().latin1() ); - connection_->connectTo( host, display ); +// connection_->connectTo( host, display ); } @@ -71,6 +69,2 @@ void KRFBCanvas::closeConnection() -void KRFBCanvas::passwordRequired( KRFBConnection *con ) -{ - con->setPassword( password.latin1() ); -} @@ -169 +163,10 @@ void KRFBCanvas::clipboardChanged() } +void KRFBCanvas::sendCtlAltDel( void) +{ + + qDebug("Here"); + if ( loggedIn_ ) { + connection_->buffer()->keyPressEvent( &QKeyEvent(QEvent::KeyPress,Qt::Key_Delete, 0x7f,ControlButton|AltButton)); + // connection_->buffer()->keyPressEvent( &QKeyEvent(QEvent::KeyRelease,Qt::Key_Delete, 0x7f,ControlButton|AltButton)); + } +} diff --git a/noncore/comm/keypebble/krfbcanvas.h b/noncore/comm/keypebble/krfbcanvas.h index 7864f1c..cd3047c 100644 --- a/noncore/comm/keypebble/krfbcanvas.h +++ b/noncore/comm/keypebble/krfbcanvas.h @@ -9,2 +9,3 @@ class KRFBConnection; +class KRFBServer; @@ -25,6 +26,6 @@ public: public slots: - void openConnection(); + + void openConnection (KRFBServer); void openURL( const QUrl & ); void closeConnection(); - void passwordRequired( KRFBConnection * ); @@ -32,2 +33,3 @@ public slots: void bell(); + void sendCtlAltDel(void); diff --git a/noncore/comm/keypebble/krfbconnection.cpp b/noncore/comm/keypebble/krfbconnection.cpp index c51f18a..389c836 100644 --- a/noncore/comm/keypebble/krfbconnection.cpp +++ b/noncore/comm/keypebble/krfbconnection.cpp @@ -7,3 +7,3 @@ #include "krfblogin.h" -#include "krfboptions.h" +#include "krfbserver.h" #include "krfbdecoder.h" @@ -12,12 +12,12 @@ KRFBConnection::KRFBConnection( QObject *parent ) - : QObject( parent, "KRFBConnection" ) + : QObject( parent, "KRFBConnection" ) { - portBase_ = 5900; - currentState_ = Disconnected; - sock = 0; - minData_ = 0; - options_ = new KRFBOptions(); - updater = 0; - decoder_ = 0; - buffer_ = 0; + portBase_ = 5900; + currentState_ = Disconnected; + sock = 0; + minData_ = 0; + options_ = new KRFBServer(); + updater = 0; + decoder_ = 0; + buffer_ = 0; } @@ -26,27 +26,26 @@ KRFBConnection::~KRFBConnection() { - if ( ( currentState_ != Disconnected ) && ( currentState_ != Disconnecting ) && sock ) { - disconnectDone(); - } - delete options_; + if ( ( currentState_ != Disconnected ) && ( currentState_ != Disconnecting ) && sock ) { + disconnectDone(); + } + delete options_; } -void KRFBConnection::connectTo( const QCString &host, int display ) +void KRFBConnection::connectTo( KRFBServer server) { - if ( currentState_ != Disconnected ); - disconnect(); + if ( currentState_ != Disconnected ) + disconnect(); + + (*options_)=server; - this->host_= host; - this->display_ = display; + sock = new QSocket( this, "rfbSocket" ); + CHECK_PTR( sock ); - sock = new QSocket( this, "rfbSocket" ); - CHECK_PTR( sock ); + // Connect to something to notice connection or error + connect( sock, SIGNAL( error( int ) ), SLOT( gotSocketError( int ) ) ); + connect( sock, SIGNAL( connected() ), SLOT( gotSocketConnection() ) ); - // Connect to something to notice connection or error - connect( sock, SIGNAL( error( int ) ), SLOT( gotSocketError( int ) ) ); - connect( sock, SIGNAL( connected() ), SLOT( gotSocketConnection() ) ); + qWarning( "Connecting..." ); - qWarning( "Connecting..." ); - - currentState_ = Connecting; - sock->connectToHost( host_, portBase_ + display_ ); + currentState_ = Connecting; + sock->connectToHost( options_->hostname.latin1(), portBase_ + options_->display ); } @@ -55,15 +54,15 @@ void KRFBConnection::disconnect() { - qWarning( "Disconnecting from server" ); + qWarning( "Disconnecting from server" ); - if ( ( currentState_ != Disconnected ) - && ( currentState_ != Disconnecting ) - && sock ) { - currentState_ = Disconnecting; + if ( ( currentState_ != Disconnected ) + && ( currentState_ != Disconnecting ) + && sock ) { + currentState_ = Disconnecting; - connect( sock, SIGNAL( delayedCloseFinished() ), SLOT( disconnectDone() ) ); - sock->close(); + connect( sock, SIGNAL( delayedCloseFinished() ), SLOT( disconnectDone() ) ); + sock->close(); - if ( sock->state() != QSocket::Closing ) - disconnectDone(); - } + if ( sock->state() != QSocket::Closing ) + disconnectDone(); + } } @@ -72,11 +71,10 @@ void KRFBConnection::disconnectDone() { - qWarning( "KRFBConnection disconnected" ); - currentState_ = Disconnected; - delete sock; - sock = 0; - minData_ = 0; - delete updater; - delete decoder_; - delete buffer_; - emit disconnected(); + currentState_ = Disconnected; + delete sock; + sock = 0; + minData_ = 0; + delete updater; + delete decoder_; + delete buffer_; + emit disconnected(); } @@ -85,11 +83,11 @@ void KRFBConnection::gotSocketConnection() { - currentState_ = LoggingIn; + currentState_ = LoggingIn; - qWarning( "Connected, logging in..." ); + qWarning( "Connected, logging in..." ); - static QString statusMsg = tr( "Connected" ); - emit statusChanged( statusMsg ); + static QString statusMsg = tr( "Connected" ); + emit statusChanged( statusMsg ); - // Do some login stuff - login = new KRFBLogin( this ); + // Do some login stuff + login = new KRFBLogin( this ); } @@ -98,24 +96,24 @@ void KRFBConnection::gotRFBConnection() { - qWarning( "Logged into server" ); + qWarning( "Logged into server" ); - currentState_ = Connected; - emit connected(); + currentState_ = Connected; + emit connected(); - // Create the decoder and start doing stuff - decoder_ = new KRFBDecoder( this ); - CHECK_PTR( decoder_ ); + // Create the decoder and start doing stuff + decoder_ = new KRFBDecoder( this ); + CHECK_PTR( decoder_ ); - buffer_ = new KRFBBuffer( decoder_, this, "RFB Buffer" ); - CHECK_PTR( buffer_ ); - decoder_->setBuffer( buffer_ ); + buffer_ = new KRFBBuffer( decoder_, this, "RFB Buffer" ); + CHECK_PTR( buffer_ ); + decoder_->setBuffer( buffer_ ); - connect( decoder_, SIGNAL( status( const QString & ) ), - this, SIGNAL( statusChanged( const QString & ) ) ); - emit loggedIn(); + connect( decoder_, SIGNAL( status( const QString & ) ), + this, SIGNAL( statusChanged( const QString & ) ) ); + emit loggedIn(); - decoder_->start(); + decoder_->start(); - updater = new QTimer; - connect( updater, SIGNAL( timeout() ), SLOT( updateTimer() ) ); - updater->start( options_->updateRate ); + updater = new QTimer; + connect( updater, SIGNAL( timeout() ), SLOT( updateTimer() ) ); + updater->start( options_->updateRate ); } @@ -124,35 +122,35 @@ void KRFBConnection::gotSocketError( int err ) { - currentState_ = Error; - - // Do some error handling stuff - qWarning( "KRFBConnection: Socket error %d", err ); - - static QString refused = tr( "Connection Refused" ); - static QString host = tr( "Host not found" ); - static QString read = tr( "Read Error: QSocket reported an error reading\n" - "data, the remote host has probably dropped the\n" - "connection." ); - static QString confused = tr( "QSocket reported an invalid error code" ); - - QString msg; - switch ( err ) { - case QSocket::ErrConnectionRefused: - msg = refused; - break; - case QSocket::ErrHostNotFound: - msg = host; - break; - case QSocket::ErrSocketRead: - msg = read; - break; - default: - msg = confused; - }; - - QObject::disconnect( sock, SIGNAL( readyRead() ), this, SLOT( gotMoreData() ) ); - delete sock; - sock = 0; - currentState_ = Disconnected; - - emit error( msg ); + currentState_ = Error; + + // Do some error handling stuff + qWarning( "KRFBConnection: Socket error %d", err ); + + static QString refused = tr( "Connection Refused" ); + static QString host = tr( "Host not found" ); + static QString read = tr( "Read Error: QSocket reported an error reading\n" + "data, the remote host has probably dropped the\n" + "connection." ); + static QString confused = tr( "QSocket reported an invalid error code" ); + + QString msg; + switch ( err ) { + case QSocket::ErrConnectionRefused: + msg = refused; + break; + case QSocket::ErrHostNotFound: + msg = host; + break; + case QSocket::ErrSocketRead: + msg = read; + break; + default: + msg = confused; + }; + + QObject::disconnect( sock, SIGNAL( readyRead() ), this, SLOT( gotMoreData() ) ); + delete sock; + sock = 0; + currentState_ = Disconnected; + + emit error( msg ); } @@ -161,9 +159,9 @@ void KRFBConnection::gotMoreData() { - assert( minData_ > 0 ); + assert( minData_ > 0 ); - if ( sock->size() >= minData_ ) { - minData_ = 0; - QObject::disconnect( sock, SIGNAL( readyRead() ), this, SLOT( gotMoreData() ) ); - emit gotEnoughData(); - } + if ( sock->size() >= minData_ ) { + minData_ = 0; + QObject::disconnect( sock, SIGNAL( readyRead() ), this, SLOT( gotMoreData() ) ); + emit gotEnoughData(); + } } @@ -172,16 +170,15 @@ void KRFBConnection::waitForData( unsigned int sz ) { - assert( minData_ == 0 ); - assert( sz > 0 ); - assert( currentState_ != Error ); - - if ( sock->size() >= sz ) { - // qWarning( "No need to wait for data" ); - emit gotEnoughData(); - } - else { - // qWarning( "Waiting for %u bytes", sz ); - - minData_ = sz; - connect( sock, SIGNAL( readyRead() ), SLOT( gotMoreData() ) ); - } + assert( minData_ == 0 ); + assert( sz > 0 ); + assert( currentState_ != Error ); + + if ( sock->size() >= sz ) { + // qWarning( "No need to wait for data" ); + emit gotEnoughData(); + } + else { + // qWarning( "Waiting for %u bytes", sz ); + minData_ = sz; + connect( sock, SIGNAL( readyRead() ), SLOT( gotMoreData() ) ); + } } @@ -190,3 +187,3 @@ int KRFBConnection::read( void *buf, int sz ) { - return sock->readBlock( (char *) buf, sz ); + return sock->readBlock( (char *) buf, sz ); } @@ -195,3 +192,3 @@ int KRFBConnection::write( void *buf, int sz ) { - return sock->writeBlock( (const char *) buf, sz ); + return sock->writeBlock( (const char *) buf, sz ); } @@ -200,3 +197,3 @@ KRFBConnection::State KRFBConnection::state() const { - return currentState_; + return currentState_; } @@ -205,3 +202,3 @@ void KRFBConnection::setPortBase( int base ) { - portBase_ = base; + portBase_ = base; } @@ -210,8 +207,3 @@ int KRFBConnection::portBase() const { - return portBase_; -} - -void KRFBConnection::setPassword( const QCString &pass ) -{ - this->pass_ = pass; + return portBase_; } @@ -220,3 +212,3 @@ void KRFBConnection::updateTimer() { - decoder_->sendUpdateRequest( true ); + decoder_->sendUpdateRequest( true ); } @@ -225,3 +217,3 @@ void KRFBConnection::refresh() { - decoder_->sendUpdateRequest( false ); + decoder_->sendUpdateRequest( false ); } @@ -230,3 +222,3 @@ void KRFBConnection::sendCutText( const QString &text ) { - decoder_->sendCutEvent( text ); + decoder_->sendCutEvent( text ); } @@ -235,8 +227,8 @@ const QUrl &KRFBConnection::url() { - url_.setProtocol( "vnc" ); - url_.setPort( display() ); - url_.setHost( host() ); - url_.setPath( "/" ); + url_.setProtocol( "vnc" ); + url_.setPort( display() ); + url_.setHost( host() ); + url_.setPath( "/" ); - return url_; + return url_; } diff --git a/noncore/comm/keypebble/krfbconnection.h b/noncore/comm/keypebble/krfbconnection.h index fe477c1..a8d3457 100644 --- a/noncore/comm/keypebble/krfbconnection.h +++ b/noncore/comm/keypebble/krfbconnection.h @@ -8,2 +8,3 @@ #include <qcstring.h> +#include "krfbserver.h" #include <qurl.h> @@ -12,3 +13,3 @@ class KRFBLogin; class KRBUpdateHandler; -class KRFBOptions; +class KRFBServer; class QSocket; @@ -47,3 +48,3 @@ public: //* Get the options for this connection - KRFBOptions *options() const { return options_; }; + KRFBServer *options() const { return options_; }; @@ -59,7 +60,4 @@ public: - //* Set the password which will be used to login - void setPassword( const QCString &pass ); - //* Open a connection - void connectTo( const QCString &host, int display ); + void connectTo( KRFBServer); @@ -69,6 +67,6 @@ public: //* Get the host - const QCString host() const { return host_; }; + const QCString host() const { return options_->hostname.latin1(); }; //* Get the display - int display() const { return display_; }; + int display() const { return options_->display; }; @@ -135,6 +133,3 @@ private: private: - QCString host_; int portBase_; - int display_; - QCString pass_; QSocket *sock; @@ -145,3 +140,3 @@ private: KRFBDecoder *decoder_; - KRFBOptions *options_; + KRFBServer *options_; KRFBBuffer *buffer_; diff --git a/noncore/comm/keypebble/krfbdecoder.cpp b/noncore/comm/keypebble/krfbdecoder.cpp index 174dd7b..a964c09 100644 --- a/noncore/comm/keypebble/krfbdecoder.cpp +++ b/noncore/comm/keypebble/krfbdecoder.cpp @@ -1,3 +1,3 @@ #include "krfbconnection.h" -#include "krfboptions.h" +#include "krfbserver.h" #include "krfbserverinfo.h" @@ -798,2 +798,3 @@ void KRFBDecoder::sendKeyReleaseEvent( QKeyEvent *event ) + int KRFBDecoder::toKeySym( QKeyEvent *k ) diff --git a/noncore/comm/keypebble/krfblogin.cpp b/noncore/comm/keypebble/krfblogin.cpp index cc3a8fa..0d2a205 100644 --- a/noncore/comm/keypebble/krfblogin.cpp +++ b/noncore/comm/keypebble/krfblogin.cpp @@ -54,4 +54,2 @@ KRFBLogin::KRFBLogin( KRFBConnection *con ) - connect( this, SIGNAL( passwordRequired( KRFBConnection * ) ), - con, SIGNAL( passwordRequired( KRFBConnection * ) ) ); @@ -185,3 +183,3 @@ void KRFBLogin::getPassword() // Last chance to enter a password - if ( con->pass_.isNull() ) { + if ( con->options_->password.isNull() ) { qWarning( "krfblogin needs a password" ); @@ -190,3 +188,3 @@ void KRFBLogin::getPassword() - if ( con->pass_.isNull() ) { + if ( con->options_->password.isNull() ) { QString msg = tr( "Error: This server requires a password, but none " @@ -198,3 +196,3 @@ void KRFBLogin::getPassword() - vncEncryptBytes( (unsigned char *) challenge, con->pass_.data() ); + vncEncryptBytes( (unsigned char *) challenge, QCString(con->options_->password.latin1()).data() ); con->write( challenge, ChallengeLength ); diff --git a/noncore/comm/keypebble/krfboptions.cpp b/noncore/comm/keypebble/krfboptions.cpp deleted file mode 100644 index 8c4320b..0000000 --- a/noncore/comm/keypebble/krfboptions.cpp +++ b/dev/null @@ -1,56 +0,0 @@ -#include <qpe/config.h> -#include <qpe/qpeapplication.h> -#include "krfboptions.h" - -KRFBOptions::KRFBOptions() -{ - readSettings(); -} - -KRFBOptions::~KRFBOptions() -{ - writeSettings(); -} - -void KRFBOptions::readSettings() -{ - Config config( "keypebble" ); - config.setGroup("Settings"); - hexTile = config.readBoolEntry( "HexTile", 0 ); - corre = config.readBoolEntry( "CORRE", 0 ); - rre = config.readBoolEntry( "RRE", 0 ); - copyrect = config.readBoolEntry( "CopyRect", 1 ); - colors256 = config.readBoolEntry( "Colors256", 0 ); - shared = config.readBoolEntry( "Shared", 0 ); - readOnly = config.readBoolEntry( "ReadOnly", 0 ); - updateRate = config.readNumEntry( "UpdateRate", 50 ); - deIconify = config.readBoolEntry( "DeIconify", 0 ); -} - -void KRFBOptions::writeSettings() -{ - Config config( "keypebble" ); - config.setGroup("Settings"); - config.writeEntry( "HexTile", hexTile ); - config.writeEntry( "CORRE", corre ); - config.writeEntry( "RRE", rre ); - config.writeEntry( "CopyRect", copyrect ); - config.writeEntry( "Colors256", colors256 ); - config.writeEntry( "Shared", shared ); - config.writeEntry( "ReadOnly", readOnly ); - config.writeEntry( "UpdateRate", updateRate ); - config.writeEntry( "DeIconify", deIconify ); -} - -int KRFBOptions::encodings() -{ - // Initially one because we always support raw encoding - int count = 1; - - count += hexTile ? 1 : 0; - count += corre ? 1 : 0; - count += rre ? 1 : 0; - count += copyrect ? 1 : 0; - - return count; -} diff --git a/noncore/comm/keypebble/krfboptions.h b/noncore/comm/keypebble/krfboptions.h deleted file mode 100644 index fd2b65c..0000000 --- a/noncore/comm/keypebble/krfboptions.h +++ b/dev/null @@ -1,31 +0,0 @@ -// -*- c++ -*- - -#ifndef KRFBOPTIONS_H -#define KRFBOPTIONS_H - -class Config; - -class KRFBOptions -{ -public: - KRFBOptions(); - ~KRFBOptions(); - - int encodings(); - void readSettings(); - void writeSettings(); - - bool hexTile; - bool corre; - bool rre; - bool copyrect; - - bool colors256; - bool shared; - bool readOnly; - bool deIconify; - - int updateRate; -}; - -#endif // KRFBOPTIONS_H diff --git a/noncore/comm/keypebble/krfbserver.cpp b/noncore/comm/keypebble/krfbserver.cpp new file mode 100644 index 0000000..5775f09 --- a/dev/null +++ b/noncore/comm/keypebble/krfbserver.cpp @@ -0,0 +1,39 @@ +#include <qpe/config.h> +#include <qpe/qpeapplication.h> +#include "krfbserver.h" + +KRFBServer::KRFBServer() +{ + QString name; + QString hostname; + QString password; + display=0; + + hexTile=0; + corre=0; + rre=0; + copyrect=1; + + colors256=1; + shared=0; + readOnly=0; + deIconify=0; + + updateRate=0; +} +KRFBServer::~KRFBServer() +{ +} + +int KRFBServer::encodings() +{ + // Initially one because we always support raw encoding + int count = 1; + + count += hexTile ? 1 : 0; + count += corre ? 1 : 0; + count += rre ? 1 : 0; + count += copyrect ? 1 : 0; + + return count; +} diff --git a/noncore/comm/keypebble/kvnc.cpp b/noncore/comm/keypebble/kvnc.cpp index 43cffc5..aa46e2f 100644 --- a/noncore/comm/keypebble/kvnc.cpp +++ b/noncore/comm/keypebble/kvnc.cpp @@ -12,4 +12,10 @@ #include <qmessagebox.h> +#include <qspinbox.h> +#include <qlistbox.h> +#include <qlineedit.h> #include <qpe/qpeapplication.h> #include <qpe/global.h> +#include <qpe/qpetoolbar.h> +#include <qpe/resource.h> + #include <assert.h> @@ -18,4 +24,11 @@ #include "krfbcanvas.h" -#include "kvncoptionsdlg.h" #include "krfbconnection.h" +#include "kvncconndlg.h" +#include "krfbserver.h" + +static int u_id = 1; +static int get_unique_id() +{ + return u_id++; +} @@ -50,5 +63,15 @@ KVNC::KVNC( const char *name ) : QMainWindow( 0, name ) - canvas = new KRFBCanvas( this, "canvas" ); - setCentralWidget( canvas ); + stack = new QWidgetStack( this ); + setCentralWidget( stack ); + bookmarkSelector=new KVNCBookmarkDlg(); + stack->addWidget(bookmarkSelector,get_unique_id()); + stack->raiseWidget( bookmarkSelector ); + + canvas = new KRFBCanvas( stack, "canvas" ); + stack->addWidget(canvas,get_unique_id()); + setCentralWidget( stack ); + + connect( bookmarkSelector->bookmarkList, SIGNAL(doubleClicked(QListBoxItem *)), + this, SLOT(openConnection(QListBoxItem *)) ); connect( canvas->connection(), SIGNAL(statusChanged(const QString &)), @@ -68,3 +91,24 @@ KVNC::KVNC( const char *name ) : QMainWindow( 0, name ) - QTimer::singleShot( 0, canvas, SLOT(openConnection()) ); + stack->raiseWidget( bookmarkSelector ); + + + QPEToolBar *bar = new QPEToolBar( this ); + + QAction *n = new QAction( tr( "New Connection" ), Resource::loadPixmap( "new" ), + QString::null, 0, this, 0 ); + connect( n, SIGNAL( activated() ), + this, SLOT( newConnection() ) ); + n->addTo( bar ); + + QAction *o = new QAction( tr( "Open Bookmark" ), Resource::loadPixmap( "edit" ), + QString::null, 0, this, 0 ); + connect( o, SIGNAL( activated() ), + this, SLOT( openConnection() ) ); + o->addTo( bar ); + + QAction *d = new QAction( tr( "Delete Bookmark" ), Resource::loadPixmap( "trash" ), + QString::null, 0, this, 0 ); + connect( d, SIGNAL( activated() ), + this, SLOT( deleteBookmark() ) ); + d->addTo( bar ); } @@ -73,7 +117,43 @@ KVNC::~KVNC() { + +} + +void KVNC::newConnection() +{ + curServer=new KRFBServer; + + KVNCConnDlg dlg( curServer,this); + dlg.showMaximized(); + if ( dlg.exec()) { + if (!curServer->name.isEmpty()) + bookmarkSelector->addBookmark(curServer); + canvas->openConnection(*curServer); + } else + curServer=0; +} + +void KVNC::openConnection( QString name) +{ + curServer=bookmarkSelector->getServer(name); + + if (curServer) { + KVNCConnDlg dlg( curServer,this); + dlg.showMaximized(); + + if ( dlg.exec() ) { + canvas->openConnection(*curServer); + bookmarkSelector->writeBookmarks(); + } else + curServer=0; + } +} + +void KVNC::openConnection( void ) +{ + openConnection( bookmarkSelector->selectedBookmark()); } -void KVNC::openURL( const QUrl &url ) +void KVNC::openConnection( QListBoxItem * item) { - canvas->openURL( url ); + openConnection(item->text()); } @@ -90,10 +170,7 @@ void KVNC::setupActions() - optionsAction = new QAction( tr("Settings"), QString::null, 0, 0 ); - connect( optionsAction, SIGNAL(activated()), this, SLOT( showOptions() ) ); - optionsAction->addTo( cornerMenu ); - - connectAction = new QAction( tr("Connect..."), QString::null, 0, 0 ); - connect( connectAction, SIGNAL(activated()), - canvas, SLOT( openConnection() ) ); - connectAction->addTo( cornerMenu ); + ctlAltDelAction = new QAction( tr("Send Contrl-Alt-Delete"), QString::null, 0, 0 ); + connect( ctlAltDelAction, SIGNAL(activated()), + canvas, SLOT( sendCtlAltDel() ) ); + ctlAltDelAction->addTo( cornerMenu ); + ctlAltDelAction->setEnabled( false ); @@ -108,22 +185,27 @@ void KVNC::toggleFullScreen() { - if ( fullscreen ) { - canvas->releaseKeyboard(); - canvas->reparent( this, 0, QPoint(0,0), false ); - canvas->setFrameStyle( QFrame::Panel | QFrame::Sunken ); - setCentralWidget( canvas ); - canvas->show(); - fullScreenAction->setText( tr("Full Screen") ); - } else { - canvas->setFrameStyle( QFrame::NoFrame ); - canvas->reparent( 0,WStyle_Tool | WStyle_Customize | WStyle_StaysOnTop, - QPoint(0,0),false); - canvas->resize(qApp->desktop()->width(), qApp->desktop()->height()); - canvas->raise(); - canvas->setFocus(); - canvas->grabKeyboard(); - canvas->show(); - - fullScreenAction->setText( tr("Stop Full Screen") ); - } - + if ( fullscreen ) { + canvas->releaseKeyboard(); + canvas->reparent( stack, 0, QPoint(0,0), false ); + canvas->setFrameStyle( QFrame::Panel | QFrame::Sunken ); + setCentralWidget( stack ); + stack->addWidget(canvas,get_unique_id()); + stack->raiseWidget(canvas); + canvas->show(); + stack->show(); + fullScreenAction->setText( tr("Full Screen") ); + } else { + canvas->setFrameStyle( QFrame::NoFrame ); + stack->removeWidget(canvas); + canvas->reparent( 0,WStyle_Tool | WStyle_Customize | WStyle_StaysOnTop, + QPoint(0,0),false); + canvas->resize(qApp->desktop()->width(), qApp->desktop()->height()); + canvas->raise(); + canvas->setFocus(); + canvas->grabKeyboard(); + canvas->show(); + + fullScreenAction->setText( tr("Stop Full Screen") ); + } + + fullscreen = !fullscreen; @@ -151,5 +233,6 @@ void KVNC::connected() statusMessage( msg ); - connectAction->setEnabled( false ); + ctlAltDelAction->setEnabled(true); disconnectAction->setEnabled( true ); fullScreenAction->setEnabled( true ); + stack->raiseWidget(canvas); } @@ -164,7 +247,11 @@ void KVNC::disconnected() { + + if ( fullscreen ) + toggleFullScreen(); static QString msg = tr( "Connection closed" ); statusMessage( msg ); - connectAction->setEnabled( true ); + ctlAltDelAction->setEnabled(false); disconnectAction->setEnabled( false ); fullScreenAction->setEnabled( false ); + stack->raiseWidget(bookmarkSelector); } @@ -181,10 +268,5 @@ void KVNC::error( const QString &msg ) } - -void KVNC::showOptions() +void KVNC::deleteBookmark(void) { - KVNCOptionsDlg *wdg = new KVNCOptionsDlg( canvas->connection()->options(), this ); - wdg->showMaximized(); - wdg->exec(); - delete wdg; + bookmarkSelector->deleteBookmark(bookmarkSelector->selectedBookmark()); } - diff --git a/noncore/comm/keypebble/kvnc.h b/noncore/comm/keypebble/kvnc.h index 92666c5..6e0a385 100644 --- a/noncore/comm/keypebble/kvnc.h +++ b/noncore/comm/keypebble/kvnc.h @@ -7,2 +7,4 @@ #include <qurl.h> +#include <qwidgetstack.h> +#include "kvncbookmarkdlg.h" @@ -27,6 +29,9 @@ public: public slots: + void newConnection(); + void deleteBookmark(); + void openConnection(QListBoxItem *); + void openConnection(QString); + void openConnection(void); void toggleFullScreen(); - void openURL( const QUrl & ); void closeConnection(); - void showOptions(); @@ -52,3 +57,8 @@ private: QAction *disconnectAction; + QAction *ctlAltDelAction;; QAction *connectAction; + + KVNCBookmarkDlg * bookmarkSelector; + QWidgetStack * stack; + KRFBServer * curServer; }; diff --git a/noncore/comm/keypebble/kvncbookmarkdlg.cpp b/noncore/comm/keypebble/kvncbookmarkdlg.cpp new file mode 100644 index 0000000..1f97d13 --- a/dev/null +++ b/noncore/comm/keypebble/kvncbookmarkdlg.cpp @@ -0,0 +1,220 @@ +#include <qframe.h> +#include <qvbox.h> +#include <qcheckbox.h> +#include <qspinbox.h> +#include <qlabel.h> +#include <qlayout.h> +#include <qwhatsthis.h> +#include <qfile.h> +#include <qdir.h> +#include <qstring.h> +#include <qapplication.h> +#include <qlineedit.h> +#include <qtextstream.h> +#include <qpushbutton.h> +#include <qlistbox.h> +#include <qpe/config.h> +#include <qpe/global.h> +#include "krfbserver.h" +#include "kvncbookmarkdlg.h" + +KVNCBookmarkDlg::KVNCBookmarkDlg( QWidget * parent=0, const char * name=0, WFlags f=0 ) + +: KVNCBookmarkDlgBase( parent, name,f) +{ + readBookmarks(); + refresh(); + +} + +KVNCBookmarkDlg::~KVNCBookmarkDlg() +{ +} + +void KVNCBookmarkDlg::addBookmark(KRFBServer * server) +{ + if (server) { + servers.append(server); + bookmarkList->insertItem(server->name); + writeBookmarks(); + refresh(); + } +} + +void KVNCBookmarkDlg::deleteBookmark(QString name) +{ + KRFBServer * server=0; + for ( server=servers.first(); server != 0; server=servers.next() ) { + if (server->name==name) { + servers.remove(servers.at()); + writeBookmarks(); + refresh(); + return; + } + } +} +KRFBServer *KVNCBookmarkDlg::getServer(QString name) +{ + KRFBServer * server=0; + for ( server=servers.first(); server != 0; server=servers.next() ) { + if (server->name==name) + + return server; + } + return 0; +} + + +/* + Note that the degree of protection offered by the encryption here is + only sufficient to avoid the most casual observation of the configuration + files. People with access to the files can write down the contents and + decrypt it using this source code. + + Conceivably, and at some burden to the user, this encryption could + be improved. +*/ +QString KVNCBookmarkDlg::encipher(const QString& plain) +{ + // mainly, we make it long + QString cipher; + int mix=28730492; + for (int i=0; i<(int)plain.length(); i++) { + int u = plain[i].unicode(); + int c = u ^ mix; + QString x = QString::number(c,36); + cipher.append(QChar('a'+x.length())); + cipher.append(x); + mix *= u; + } + return cipher; +} + +QString KVNCBookmarkDlg::decipher(const QString& cipher) +{ + QString plain; + int mix=28730492; + for (int i=0; i<(int)cipher.length();) { + int l = cipher[i].unicode()-'a'; + QString x = cipher.mid(i+1,l); i+=l+1; + int u = x.toInt(0,36) ^ mix; + plain.append(QChar(u)); + mix *= u; + } + return plain; +} + +void KVNCBookmarkDlg::readBookmarks(void) +{ + QFile f(QDir::homeDirPath() + QString("/Applications/keypebble/bookmarks")); + + QStringList entry; + QString key, val; + KRFBServer * server=0; + + if ( f.open(IO_ReadOnly) ) { + QTextStream t( &f ); + QString s; + int n = 1; + while ( !t.eof() ) { + s = t.readLine(); + + + entry=QStringList::split('=',s); + key=entry[0].stripWhiteSpace().lower(); + val=entry[1].stripWhiteSpace(); + + if (key=="server") { + + if (server){ + servers.append(server); + server=0; + } + server = new KRFBServer(); + + if (!server) + return; + server->name=val; + + } + else if (key=="hostname") + server->hostname=val; + else if (key=="password") + server->password=decipher(val); + else if (key=="display") + server->display=val.toInt(); + else if (key=="hextile") + server->hexTile=val.toInt(); + else if (key=="corre") + server->corre=val.toInt(); + else if (key=="rre") + server->rre=val.toInt(); + else if (key=="copyrect") + server->copyrect=val.toInt(); + else if (key=="colors256") + server->colors256=val.toInt(); + else if (key=="shared") + server->shared=val.toInt(); + else if (key=="readonly") + server->readOnly=val.toInt(); + else if (key=="deiconify") + server->deIconify=val.toInt(); + else if (key=="updaterate") + server->updateRate=val.toInt(); + + } + if (server){ + servers.append(server); + server=0; + } + f.close(); + } +} + +void KVNCBookmarkDlg::writeBookmarks(void) +{ + QString filename=Global::applicationFileName("keypebble","bookmarks"); + + QFile f(filename); + + QString key, val; + KRFBServer * server=0; + + if ( f.open(IO_ReadWrite) ) { + QTextStream t( &f ); + QString s; + int n = 1; + KRFBServer *server; + + for ( server=servers.first(); server != 0; server=servers.next() ) { + qDebug(server->name); + t << "server=" << server->name << '\n'; + t << "\thostname=" << server->hostname << '\n'; + t << "\tpassword=" << encipher(server->password )<< '\n'; + t << "\tdisplay=" << server->display << '\n'; + t << "\thextile=" << server->hexTile << '\n'; + t << "\tcorre=" << server->corre << '\n'; + t << "\trre=" << server->rre << '\n'; + t << "\tcopyrect=" << server->copyrect << '\n'; + t << "\tshared=" << server->shared << '\n'; + t << "\treadonly=" << server->readOnly << '\n'; + t << "\tdeiconify=" << server->deIconify << '\n'; + t << "\tupdaterate=" << server->updateRate << '\n'; + + } + f.close(); + } +} +void KVNCBookmarkDlg::refresh(void) +{ + bookmarkList->clear(); + KRFBServer * server=0; + for ( server=servers.first(); server != 0; server=servers.next() ) { + bookmarkList->insertItem(server->name); + } +} + +QString KVNCBookmarkDlg::selectedBookmark() +{ + return bookmarkList->currentText(); +} diff --git a/noncore/comm/keypebble/kvncconndlg.cpp b/noncore/comm/keypebble/kvncconndlg.cpp new file mode 100644 index 0000000..6873feb --- a/dev/null +++ b/noncore/comm/keypebble/kvncconndlg.cpp @@ -0,0 +1,75 @@ +#include <qframe.h> +#include <qvbox.h> +#include <qcheckbox.h> +#include <qspinbox.h> +#include <qlabel.h> +#include <qlayout.h> +#include <qwhatsthis.h> +#include <qapplication.h> +#include <qlineedit.h> +#include <qpushbutton.h> +#include "krfbserver.h" + +#include "kvncconndlg.h" + +KVNCConnDlg::KVNCConnDlg( KRFBServer *options, + QWidget *parent, char *name, bool modal ) +: KVNCConnDlgBase( parent, name, modal ) +{ + this->options=options; + tmpOptions=*options; + + serverHostname->setText(options->hostname); + serverDisplay->setValue(options->display); + serverPassword->setText(options->password); + serverBookmark->setText(options->name); + + hex->setChecked( options->hexTile ); + corre->setChecked( options->corre ); + rre->setChecked( options->rre ); + copyRect->setChecked( options->copyrect ); + + // TODO + hex->setEnabled( false ); + corre->setEnabled( false ); + rre->setEnabled( false ); + // /TODO + + deIconify->setChecked( options->deIconify ); + bit->setChecked( options->colors256 ); + shared->setChecked( options->shared ); + timeBox->setValue( options->updateRate ); + + +} + +KVNCConnDlg::~KVNCConnDlg() +{ +} + +void KVNCConnDlg::accept() +{ + save(); + QDialog::accept(); +} + +void KVNCConnDlg::save() +{ + tmpOptions.hexTile = hex->isChecked(); + tmpOptions.corre = corre->isChecked(); + tmpOptions.rre = rre->isChecked(); + tmpOptions.copyrect = copyRect->isChecked(); + tmpOptions.deIconify = deIconify->isChecked(); + tmpOptions.colors256 = bit->isChecked(); + tmpOptions.shared = shared->isChecked(); + tmpOptions.hostname = serverHostname->text(); + tmpOptions.password = serverPassword->text(); + tmpOptions.display = serverDisplay->value(); + tmpOptions.name = serverBookmark->text(); + + if (!serverBookmark->text().isEmpty()) { + if ( options) { + *options=tmpOptions; + } + } +} diff --git a/noncore/comm/keypebble/kvncconnectdlg.cpp b/noncore/comm/keypebble/kvncconnectdlg.cpp deleted file mode 100644 index 467cebf..0000000 --- a/noncore/comm/keypebble/kvncconnectdlg.cpp +++ b/dev/null @@ -1,79 +0,0 @@ -#include <qstring.h> -#include <qlayout.h> -#include <qframe.h> -#include <qspinbox.h> -#include <qcombobox.h> -#include <qlabel.h> -#include <qfont.h> - -#include <assert.h> - -#include "krfbconnection.h" -#include "kvncoptionsdlg.h" -#include "kvncconnectdlg.h" - - -KVNCConnectDlg::KVNCConnectDlg( KRFBConnection *con, - QWidget *parent, const char *name ) - : QDialog( parent, name, true ) -{ - setCaption( tr("Connect to VNC server") ); - assert( con ); - this->con = con; - - QGridLayout *inner = new QGridLayout( this, 3, 2, 6 ); - - QLabel *label = new QLabel( tr("Host Name:"), - this , "hostLabel"); - hostNameCombo = new QComboBox( true, this ); - hostNameCombo->setInsertionPolicy( QComboBox::AtTop ); - hostNameCombo->setMaxCount( 10 ); - hostNameCombo->insertItem( "localhost" ); - hostNameCombo->setFocus(); - - inner->addWidget( label, 0, 0 ); - inner->addWidget( hostNameCombo, 0, 1 ); - - label = new QLabel( tr("Display Number:"), this, "displayNumber" ); - displayNumberEdit = new QSpinBox( this ); - - inner->addWidget( label, 1, 0 ); - inner->addWidget( displayNumberEdit, 1, 1 ); - - // if ( viewer->display() != -1 ) { - // displayNumberEdit->setValue( viewer->display() ); - displayNumberEdit->setValue( 1 ); - // } - - label = new QLabel( tr("Password:"), this ); - inner->addWidget( label, 2, 0 ); - - passwordEdit = new QLineEdit( this ); - passwordEdit->setEchoMode( QLineEdit::Password ); - inner->addWidget( passwordEdit, 2, 1 ); - - inner->setColStretch( 0, 0 ); - inner->setColStretch( 1, 15 ); -} - - -void KVNCConnectDlg::accept() -{ - int dis; - // viewer->setHost(hostNameCombo->currentText()); - QString temp = displayNumberEdit->text(); - if(temp.isEmpty()) - dis = -1; - else - dis = temp.toUInt(); - // viewer->setDisplay(dis); - QDialog::accept(); -} - -void KVNCConnectDlg::options() -{ - KVNCOptionsDlg *wdg = new KVNCOptionsDlg( con->options(), this ); - wdg->exec(); - delete wdg; -} - diff --git a/noncore/comm/keypebble/kvncconnectdlg.h b/noncore/comm/keypebble/kvncconnectdlg.h deleted file mode 100644 index cf34aab..0000000 --- a/noncore/comm/keypebble/kvncconnectdlg.h +++ b/dev/null @@ -1,39 +0,0 @@ -// -*- c++ -*- - -#ifndef KVNCCONNECTDLG_H -#define KVNCCONNECTDLG_H - -#include <qdialog.h> -#include <qspinbox.h> -#include <qcombobox.h> -#include <qlineedit.h> -#include <qurl.h> - -class KRFBConnection; - -class KVNCConnectDlg : public QDialog -{ - Q_OBJECT - -public: - KVNCConnectDlg( KRFBConnection *con, - QWidget *parent = 0, const char *name = 0 ); - - QString hostname() { return hostNameCombo->currentText(); }; - int display() { return displayNumberEdit->value(); }; - QString password() const { return passwordEdit->text(); } - -protected: - void accept(); - -protected slots: - void options(); - -private: - QComboBox *hostNameCombo; - QSpinBox *displayNumberEdit; - QLineEdit *passwordEdit; - KRFBConnection *con; -}; - -#endif // KVNCCONNECTDLG_H diff --git a/noncore/comm/keypebble/kvncoptionsdlg.cpp b/noncore/comm/keypebble/kvncoptionsdlg.cpp deleted file mode 100644 index 9d61c7b..0000000 --- a/noncore/comm/keypebble/kvncoptionsdlg.cpp +++ b/dev/null @@ -1,54 +0,0 @@ -#include <qframe.h> -#include <qvbox.h> -#include <qcheckbox.h> -#include <qspinbox.h> -#include <qlabel.h> -#include <qlayout.h> -#include <qwhatsthis.h> -#include <qapplication.h> -#include "krfboptions.h" - -#include "kvncoptionsdlg.h" - -KVNCOptionsDlg::KVNCOptionsDlg( KRFBOptions *options, - QWidget *parent, char *name, bool modal ) - : VncOptionsBase( parent, name, modal ) -{ - this->options = options; - - hex->setChecked( options->hexTile ); - corre->setChecked( options->corre ); - rre->setChecked( options->rre ); - copyRect->setChecked( options->copyrect ); - - // TODO - hex->setEnabled( false ); - corre->setEnabled( false ); - rre->setEnabled( false ); - // /TODO - - deIconify->setChecked( options->deIconify ); - bit->setChecked( options->colors256 ); - shared->setChecked( options->shared ); - timeBox->setValue( options->updateRate ); -} - -KVNCOptionsDlg::~KVNCOptionsDlg() -{ -} - -void KVNCOptionsDlg::accept() -{ - options->hexTile = hex->isChecked(); - options->corre = corre->isChecked(); - options->rre = rre->isChecked(); - options->copyrect = copyRect->isChecked(); - options->deIconify = deIconify->isChecked(); - options->colors256 = bit->isChecked(); - options->shared = shared->isChecked(); - options->updateRate = timeBox->value(); - options->writeSettings(); - - QDialog::accept(); -} - diff --git a/noncore/comm/keypebble/kvncoptionsdlg.h b/noncore/comm/keypebble/kvncoptionsdlg.h deleted file mode 100644 index a166490..0000000 --- a/noncore/comm/keypebble/kvncoptionsdlg.h +++ b/dev/null @@ -1,30 +0,0 @@ -// -*- c++ -*- - -#ifndef KVNCOPTIONSDIALOG_H -#define KVNCOPTIONSDIALOG_H - -#include "vncoptionsbase.h" - -class KRFBOptions; - -class KVNCOptionsDlg : public VncOptionsBase -{ -Q_OBJECT - -public: - KVNCOptionsDlg( KRFBOptions *options, - QWidget *parent = 0, char *name = 0, bool modal = true ); - ~KVNCOptionsDlg(); - -protected: - void accept(); - -private: - KRFBOptions *options; -}; - -#endif // KVNCOPTIONSDIALOG_H - - - - diff --git a/noncore/comm/keypebble/main.cpp b/noncore/comm/keypebble/main.cpp index ee3cd79..bc7782c 100644 --- a/noncore/comm/keypebble/main.cpp +++ b/noncore/comm/keypebble/main.cpp @@ -12,6 +12,4 @@ int main( int argc, char **argv ) - if ( argc > 1 ) - view->openURL( QUrl(argv[1]) ); - return app.exec(); } + |