author | harlekin <harlekin> | 2002-10-15 22:03:01 (UTC) |
---|---|---|
committer | harlekin <harlekin> | 2002-10-15 22:03:01 (UTC) |
commit | ce953c24f809385088905ffd02f6d6187d0a4f12 (patch) (side-by-side diff) | |
tree | 19f10579ebd5870cf38940d624c97111ea8137b3 | |
parent | 676be5604cbdb3213c00775e0ff66f4e766f8dcb (diff) | |
download | opie-ce953c24f809385088905ffd02f6d6187d0a4f12.zip opie-ce953c24f809385088905ffd02f6d6187d0a4f12.tar.gz opie-ce953c24f809385088905ffd02f6d6187d0a4f12.tar.bz2 |
next isConnected try
-rw-r--r-- | noncore/apps/opie-console/MyPty.h | 2 | ||||
-rw-r--r-- | noncore/apps/opie-console/default.cpp | 2 | ||||
-rw-r--r-- | noncore/apps/opie-console/io_layer.h | 2 | ||||
-rw-r--r-- | noncore/apps/opie-console/io_serial.cpp | 8 | ||||
-rw-r--r-- | noncore/apps/opie-console/io_serial.h | 3 | ||||
-rw-r--r-- | noncore/apps/opie-console/mainwindow.cpp | 8 | ||||
-rw-r--r-- | noncore/apps/opie-console/session.cpp | 7 | ||||
-rw-r--r-- | noncore/apps/opie-console/session.h | 2 |
8 files changed, 19 insertions, 15 deletions
diff --git a/noncore/apps/opie-console/MyPty.h b/noncore/apps/opie-console/MyPty.h index ad271df..81abad5 100644 --- a/noncore/apps/opie-console/MyPty.h +++ b/noncore/apps/opie-console/MyPty.h @@ -43,33 +43,33 @@ public: QString name()const; QBitArray supports()const; public slots: /*! having a `run' separate from the constructor allows to make the necessary connections to the signals and slots of the instance before starting the execution of the client. */ void start(); int run(const char* pgm, QStrList & args , const char* term, int addutmp); bool open(); void close(); void reload( const Profile& ); void setSize(int lines, int columns); void error(); - + bool isConnected() { return true; }; signals: /*! emitted when the client program terminates. \param status the wait(2) status code of the terminated client program. */ void done(int status); /*! emitted when a new block of data comes in. \param s - the data \param len - the length of the block */ void received(const QByteArray&); public slots: diff --git a/noncore/apps/opie-console/default.cpp b/noncore/apps/opie-console/default.cpp index 64c9542..8b905e1 100644 --- a/noncore/apps/opie-console/default.cpp +++ b/noncore/apps/opie-console/default.cpp @@ -37,33 +37,33 @@ extern "C" { } // Layer stuff IOLayer* newSerialLayer( const Profile& prof) { return new IOSerial( prof ); } IOLayer* newBTLayer( const Profile& prof ) { return new IOBt( prof ); } IOLayer* newIrDaLayer( const Profile& prof ) { return new IOIrda( prof ); } IOLayer* newModemLayer( const Profile& prof ) { return new IOModem( prof ); } IOLayer* newConsole( const Profile& prof ) { - return new MyPty(prof ); + return new MyPty( prof ); } // Connection Widgets ProfileDialogWidget* newSerialWidget( const QString& str, QWidget* wid ) { return new SerialConfigWidget( str, wid ); } ProfileDialogWidget* newIrDaWidget( const QString& str, QWidget* wid ) { return new IrdaConfigWidget( str, wid ); } ProfileDialogWidget* newModemWidget( const QString& str, QWidget* wid ) { return new ModemConfigWidget(str, wid ); } ProfileDialogWidget* newBTWidget( const QString& str, QWidget* wid ) { return new BTConfigWidget(str, wid ); } ProfileDialogWidget* newConsoleWid( const QString& str, QWidget* wid ) { diff --git a/noncore/apps/opie-console/io_layer.h b/noncore/apps/opie-console/io_layer.h index 4977e94..d5f7eab 100644 --- a/noncore/apps/opie-console/io_layer.h +++ b/noncore/apps/opie-console/io_layer.h @@ -66,32 +66,34 @@ public: * device */ virtual int rawIO()const; /** * will close the rawIO stuff * and will listen to it's data again... */ virtual void closeRawIO(int); /** * What does the IOLayer support? * Bits are related to features */ virtual QBitArray supports()const = 0; + virtual bool isConnected() = 0; + signals: /** * received input as QCString */ virtual void received( const QByteArray& ); /** * an error occured * int for the error number * and QString for a text */ virtual void error( int, const QString& ); virtual void closed(); public slots: /** diff --git a/noncore/apps/opie-console/io_serial.cpp b/noncore/apps/opie-console/io_serial.cpp index c10d5a8..b89a53b 100644 --- a/noncore/apps/opie-console/io_serial.cpp +++ b/noncore/apps/opie-console/io_serial.cpp @@ -1,51 +1,54 @@ #include <fcntl.h> #include <termios.h> #include <errno.h> #include <unistd.h> #include "io_serial.h" IOSerial::IOSerial(const Profile &config) : IOLayer(config) { m_read = 0l; m_error = 0l; m_fd = 0; + m_connected = false; reload(config); } IOSerial::~IOSerial() { if (m_fd) { close(); } } void IOSerial::send(const QByteArray &data) { if (m_fd) { write(m_fd, data.data(), data.size()); } else { emit error(Refuse, tr("Not connected")); } } void IOSerial::close() { if (m_fd) { delete m_read; delete m_error; ::close(m_fd); m_fd = 0; + m_connected = false; } else { + m_connected = false; emit error(Refuse, tr("Not connected")); } } bool IOSerial::open() { if (!m_fd) { struct termios tty; m_fd = ::open(m_device, O_RDWR | O_NOCTTY | O_NONBLOCK); if (m_fd < 0) { emit error(CouldNotOpen, strerror(errno)); return FALSE; } tcgetattr(m_fd, &tty); /* Baud rate */ int speed = baud(m_baud); @@ -98,32 +101,33 @@ bool IOSerial::open() { /* Parity */ tty.c_cflag &= ~(PARENB | PARODD); if (m_parity & ParityEven) tty.c_cflag |= PARENB; else if (m_parity & ParityOdd) tty.c_cflag |= (PARENB | PARODD); /* Set the changes */ tcsetattr(m_fd, TCSANOW, &tty); /* Notifications on read & errors */ m_read = new QSocketNotifier(m_fd, QSocketNotifier::Read, this); m_error = new QSocketNotifier(m_fd, QSocketNotifier::Exception, this); connect(m_read, SIGNAL(activated(int)), this, SLOT(dataArrived())); connect(m_error, SIGNAL(activated(int)), this, SLOT(errorOccured())); + m_connected = false; return TRUE; } else { emit error(Refuse, tr("Device is already connected")); m_fd = 0; return FALSE; } } void IOSerial::reload(const Profile &config) { m_device = config.readEntry("Device", SERIAL_DEFAULT_DEVICE); m_baud = config.readNumEntry("Speed", SERIAL_DEFAULT_BAUD); m_parity = config.readNumEntry("Parity", SERIAL_DEFAULT_PARITY); m_dbits = config.readNumEntry("DataBits", SERIAL_DEFAULT_DBITS); m_sbits = config.readNumEntry("StopBits", SERIAL_DEFAULT_SBITS); m_flow = config.readNumEntry("Flow", SERIAL_DEFAULT_FLOW); @@ -181,16 +185,20 @@ int IOSerial::rawIO()const { }; void IOSerial::closeRawIO(int fd) { if (m_read ) connect(m_read, SIGNAL(activated(int)), this, SLOT(dataArrived())); if (m_error ) connect(m_error, SIGNAL(activated(int)), this, SLOT(errorOccured())); ::close( fd ); } QBitArray IOSerial::supports()const { QBitArray ar(3); ar[0] = ar[2] = 0; ar[1] = 1; return ar; } + +bool IOSerial::isConnected() { + return m_connected; +} diff --git a/noncore/apps/opie-console/io_serial.h b/noncore/apps/opie-console/io_serial.h index b1d1be1..7a1ea1d 100644 --- a/noncore/apps/opie-console/io_serial.h +++ b/noncore/apps/opie-console/io_serial.h @@ -25,43 +25,46 @@ public: ParityMark }; enum Flow { FlowHW = 0x01, FlowSW = 0x02 }; IOSerial(const Profile &); ~IOSerial(); QString identifier() const; QString name() const; int rawIO()const; void closeRawIO(int fd ); QBitArray supports()const; + bool isConnected(); /*signals: void received(const QByteArray &); void error(int, const QString &); */ public slots: void send(const QByteArray &); bool open(); void close(); void reload(const Profile &); protected: int baud(int baud) const; protected slots: void dataArrived(); void errorOccured(); protected: QSocketNotifier *m_read; QSocketNotifier *m_error; QString m_device; int m_baud; int m_parity; int m_dbits; int m_sbits; int m_flow; int m_fd; + bool m_connected; + }; #endif /* OPIE_IO_SERIAL */ diff --git a/noncore/apps/opie-console/mainwindow.cpp b/noncore/apps/opie-console/mainwindow.cpp index d3b6c8a..4326609 100644 --- a/noncore/apps/opie-console/mainwindow.cpp +++ b/noncore/apps/opie-console/mainwindow.cpp @@ -192,33 +192,33 @@ void MainWindow::initUI() { /* insert the connection menu */ m_bar->insertItem( tr("Connection"), m_console ); /* the scripts menu */ m_bar->insertItem( tr("Scripts"), m_scripts ); /* the settings menu */ m_bar->insertItem( tr("Settings"), m_settings ); /* and the keyboard */ m_keyBar = new QToolBar(this); addToolBar( m_keyBar, "Keyboard", QMainWindow::Top, TRUE ); m_keyBar->setHorizontalStretchable( TRUE ); m_keyBar->hide(); m_kb = new FunctionKeyboard(m_keyBar); - connect(m_kb, SIGNAL(keyPressed(ushort, ushort, bool, bool, bool)), + connect(m_kb, SIGNAL(keyPressed(ushort, ushort, bool, bool, bool)), this, SLOT(slotKeyReceived(ushort, ushort, bool, bool, bool))); m_connect->setEnabled( false ); m_disconnect->setEnabled( false ); m_terminate->setEnabled( false ); m_transfer->setEnabled( false ); m_recordScript->setEnabled( false ); m_saveScript->setEnabled( false ); m_runScript->setEnabled( false ); m_fullscreen->setEnabled( false ); m_closewindow->setEnabled( false ); /* * connect to the menu activation @@ -426,34 +426,34 @@ void MainWindow::slotTransfer() dlg.showMaximized(); dlg.exec(); } } void MainWindow::slotOpenKeb(bool state) { if (state) m_keyBar->show(); else m_keyBar->hide(); } void MainWindow::slotSessionChanged( Session* ses ) { qWarning("changed!"); if ( ses ) { m_curSession = ses; - - if ( m_curSession->isConnected() ) { + qDebug(QString("is connected : %1").arg( m_curSession->layer()->isConnected() ) ); + if ( m_curSession->layer()->isConnected() ) { m_connect->setEnabled( false ); m_disconnect->setEnabled( true ); } else { m_connect->setEnabled( true ); m_disconnect->setEnabled( false ); } } } void MainWindow::slotFullscreen() { if ( m_isFullscreen ) { ( m_curSession->widgetStack() )->reparent( m_consoleWindow, 0, QPoint(0,0), false ); ( m_curSession->widgetStack() )->setFrameStyle( QFrame::Panel | QFrame::Sunken ); setCentralWidget( m_consoleWindow ); ( m_curSession->widgetStack() )->show(); @@ -476,19 +476,19 @@ void MainWindow::slotFullscreen() { } m_isFullscreen = !m_isFullscreen; } void MainWindow::slotKeyReceived(ushort u, ushort q, bool, bool, bool) { qWarning("received key event! relay to TE widget"); if ( m_curSession ) { QKeyEvent ke(QEvent::KeyPress, q, u, 0); ke.ignore(); // where should i send this event? doesnt work sending it here - QApplication::sendEvent((QObject *)m_curSession->widgetStack(), &ke); + QApplication::sendEvent((QObject *)m_curSession->widgetStack(), &ke); } } diff --git a/noncore/apps/opie-console/session.cpp b/noncore/apps/opie-console/session.cpp index aad100d..2ce6872 100644 --- a/noncore/apps/opie-console/session.cpp +++ b/noncore/apps/opie-console/session.cpp @@ -38,47 +38,43 @@ EmulationHandler* Session::emulationHandler() { } QWidget* Session::widget() { if (!m_emu ) return 0l; return m_emu->widget(); } /* WidgetLayer* Session::emulationWidget() { return m_widLay; } */ void Session::connect() { if ( !m_layer || !m_emu ) return; - m_connected = true; - QObject::connect(m_layer, SIGNAL(received(const QByteArray&) ), m_emu, SLOT(recv(const QByteArray&) ) ); QObject::connect(m_emu, SIGNAL(send(const QByteArray&) ), m_layer, SLOT(send(const QByteArray&) ) ); } void Session::disconnect() { if ( !m_layer || !m_emu ) return; - m_connected = false; - QObject::disconnect(m_layer, SIGNAL(received(const QByteArray&) ), m_emu, SLOT(recv(const QByteArray&) ) ); QObject::disconnect(m_emu, SIGNAL(send(const QByteArray&) ), m_layer, SLOT(send(const QByteArray&) ) ); } void Session::setName( const QString& na){ m_name = na; } void Session::setWidgetStack( QWidgetStack* wid ) { delete m_emu; m_emu = 0l; delete m_widget; /* the EmulationLayer was destroyed... */ @@ -87,19 +83,16 @@ void Session::setWidgetStack( QWidgetStack* wid ) { void Session::setIOLayer( IOLayer* lay ) { delete m_layer; m_layer = lay; } void Session::setEmulationHandler( EmulationHandler* lay ) { delete m_emu; m_emu = lay; } /* void Session::setEmulationWidget( WidgetLayer* lay ) { delete m_widLay; m_widLay = lay; } */ -bool Session::isConnected() { - return m_connected; -} diff --git a/noncore/apps/opie-console/session.h b/noncore/apps/opie-console/session.h index ff92df3..83b2046 100644 --- a/noncore/apps/opie-console/session.h +++ b/noncore/apps/opie-console/session.h @@ -47,28 +47,26 @@ public: * connects the data flow from * the IOLayer to the EmulationLayer */ void connect(); /* * disconnect the dataflow * this will be done for ft */ void disconnect(); void setWidgetStack( QWidgetStack* widget ); void setEmulationHandler( EmulationHandler* lay ); void setIOLayer( IOLayer* ); void setName( const QString& ); - bool isConnected(); - private: QString m_name; QWidgetStack* m_widget; IOLayer* m_layer; EmulationHandler* m_emu; bool m_connected; }; #endif |