-rw-r--r-- | noncore/apps/opie-console/io_layer.cpp | 2 | ||||
-rw-r--r-- | noncore/apps/opie-console/io_layer.h | 5 | ||||
-rw-r--r-- | noncore/apps/opie-console/io_serial.cpp | 21 | ||||
-rw-r--r-- | noncore/apps/opie-console/io_serial.h | 10 | ||||
-rw-r--r-- | noncore/apps/opie-console/mainwindow.cpp | 67 | ||||
-rw-r--r-- | noncore/apps/opie-console/mainwindow.h | 11 | ||||
-rw-r--r-- | noncore/apps/opie-console/metafactory.cpp | 16 | ||||
-rw-r--r-- | noncore/apps/opie-console/metafactory.h | 8 | ||||
-rw-r--r-- | noncore/apps/opie-console/opie-console.pro | 13 | ||||
-rw-r--r-- | noncore/apps/opie-console/profile.cpp | 59 | ||||
-rw-r--r-- | noncore/apps/opie-console/profile.h | 66 | ||||
-rw-r--r-- | noncore/apps/opie-console/profileconfig.cpp | 35 | ||||
-rw-r--r-- | noncore/apps/opie-console/profileconfig.h | 17 | ||||
-rw-r--r-- | noncore/apps/opie-console/profilemanager.cpp | 62 | ||||
-rw-r--r-- | noncore/apps/opie-console/profilemanager.h | 30 | ||||
-rw-r--r-- | noncore/apps/opie-console/session.cpp | 16 | ||||
-rw-r--r-- | noncore/apps/opie-console/session.h | 11 | ||||
-rw-r--r-- | noncore/apps/opie-console/tabwidget.cpp | 28 | ||||
-rw-r--r-- | noncore/apps/opie-console/tabwidget.h | 28 |
19 files changed, 472 insertions, 33 deletions
diff --git a/noncore/apps/opie-console/io_layer.cpp b/noncore/apps/opie-console/io_layer.cpp index ca1deb8..563a252 100644 --- a/noncore/apps/opie-console/io_layer.cpp +++ b/noncore/apps/opie-console/io_layer.cpp @@ -7,3 +7,3 @@ IOLayer::IOLayer() -IOLayer::IOLayer(const Config &) +IOLayer::IOLayer(const Profile &) : QObject() diff --git a/noncore/apps/opie-console/io_layer.h b/noncore/apps/opie-console/io_layer.h index 537c851..2f1ceef 100644 --- a/noncore/apps/opie-console/io_layer.h +++ b/noncore/apps/opie-console/io_layer.h @@ -6,2 +6,4 @@ +#include "profile.h" + /** @@ -11,3 +13,2 @@ */ -class Config; class IOLayer : public QObject { @@ -34,3 +35,3 @@ public: */ - IOLayer( const Config& ); + IOLayer( const Profile& ); diff --git a/noncore/apps/opie-console/io_serial.cpp b/noncore/apps/opie-console/io_serial.cpp index c9155d1..b495f39 100644 --- a/noncore/apps/opie-console/io_serial.cpp +++ b/noncore/apps/opie-console/io_serial.cpp @@ -6,3 +6,3 @@ -IOSerial::IOSerial(const Config &config) : IOLayer(config) { +IOSerial::IOSerial(const Profile &config) : IOLayer(config) { m_fd = 0; @@ -48,3 +48,3 @@ bool IOSerial::open() { /* Baud rate */ - int speed = getBaud(m_baud); + int speed = baud(m_baud); if (speed == -1) { @@ -59,3 +59,3 @@ bool IOSerial::open() { } - + /* Data bits */ @@ -66,4 +66,5 @@ bool IOSerial::open() { case 8: tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS8; break; + default: break; } - + /* Raw, no echo mode */ @@ -80,3 +81,3 @@ bool IOSerial::open() { } - + tty.c_cc[VMIN] = 1; @@ -89,3 +90,3 @@ bool IOSerial::open() { tty.c_iflag &= ~(IXON|IXOFF|IXANY); - + if (m_flow & FlowHW) @@ -94,3 +95,3 @@ bool IOSerial::open() { tty.c_cflag &= ~CRTSCTS; - + /* Parity */ @@ -101,3 +102,3 @@ bool IOSerial::open() { tty.c_cflag |= (PARENB | PARODD); - + /* Set the changes */ @@ -117,3 +118,3 @@ bool IOSerial::open() { -void IOSerial::reload(const Config &config) { +void IOSerial::reload(const Profile &config) { m_device = config.readEntry("Device", SERIAL_DEFAULT_DEVICE); @@ -126,3 +127,3 @@ void IOSerial::reload(const Config &config) { -int IOSerial::getBaud(int baud) const { +int IOSerial::baud(int baud) const { switch (baud) { diff --git a/noncore/apps/opie-console/io_serial.h b/noncore/apps/opie-console/io_serial.h index 1d34411..521dac6 100644 --- a/noncore/apps/opie-console/io_serial.h +++ b/noncore/apps/opie-console/io_serial.h @@ -31,6 +31,6 @@ public: }; - - IOSerial(const Config &); + + IOSerial(const Profile &); ~IOSerial(); - + QString identifier() const; @@ -44,5 +44,5 @@ public slots: void close(); - void reload(const Config &); + void reload(const Profile &); protected: - int getBaud(int baud) const; + int baud(int baud) const; protected slots: diff --git a/noncore/apps/opie-console/mainwindow.cpp b/noncore/apps/opie-console/mainwindow.cpp index e9b5eda..1ae4a20 100644 --- a/noncore/apps/opie-console/mainwindow.cpp +++ b/noncore/apps/opie-console/mainwindow.cpp @@ -13,3 +13,3 @@ MainWindow::MainWindow() { m_sessions.setAutoDelete( TRUE ); - m_curSession = -1; + m_curSession = 0; @@ -25,2 +25,4 @@ void MainWindow::initUI() { m_console = new QPopupMenu( this ); + m_sessionsPop= new QPopupMenu( this ); + m_settings = new QPopupMenu( this ); @@ -35,5 +37,7 @@ void MainWindow::initUI() { - a = new QAction(); - a->setText( tr("New from Session") ); + + /* + * connect action + */ m_connect = new QAction(); @@ -44,4 +48,40 @@ void MainWindow::initUI() { + + /* + * disconnect action + */ + m_disconnect = new QAction(); + m_disconnect->setText( tr("Disconnect") ); + m_disconnect->addTo( m_console ); + connect(m_disconnect, SIGNAL(activated() ), + this, SLOT(slotDisconnect() ) ); + + /* + * terminate action + */ + m_terminate = new QAction(); + m_terminate->setText( tr("Terminate") ); + m_terminate->addTo( m_console ); + connect(m_disconnect, SIGNAL(activated() ), + this, SLOT(slotTerminate() ) ); + + /* + * the settings action + */ + m_setProfiles = new QAction(); + m_setProfiles->setText( tr("Configure Profiles") ); + m_setProfiles->addTo( m_settings ); + connect( m_setProfiles, SIGNAL(activated() ), + this, SLOT(slotConfigure() ) ); + + /* insert the submenu */ + m_console->insertItem(tr("New from Profile"), m_sessionsPop, + -1, 0); + + /* insert the connection menu */ m_bar->insertItem( tr("Connection"), m_console ); + /* the settings menu */ + m_bar->insertItem( tr("Settings"), m_settings ); + } @@ -62 +102,22 @@ QList<Session> MainWindow::sessions() { } +void MainWindow::slotNew() { + qWarning("New Connection"); +} +void MainWindow::slotConnect() { + if ( currentSession() ) + currentSession()->layer()->open(); +} +void MainWindow::slotDisconnect() { + if ( currentSession() ) + currentSession()->layer()->close(); +} +void MainWindow::slotTerminate() { + if ( currentSession() ) + currentSession()->layer()->close(); + delete m_curSession; + m_curSession = 0l; + /* FIXME move to the next session */ +} +void MainWindow::slotConfigure() { + qWarning("configure"); +} diff --git a/noncore/apps/opie-console/mainwindow.h b/noncore/apps/opie-console/mainwindow.h index db3a653..b6a8419 100644 --- a/noncore/apps/opie-console/mainwindow.h +++ b/noncore/apps/opie-console/mainwindow.h @@ -40,5 +40,10 @@ public: QList<Session> sessions(); -protected slots: + +private slots: void slotNew(); void slotConnect(); + void slotDisconnect(); + void slotTerminate(); + void slotConfigure(); + private: @@ -64,3 +69,3 @@ private: QPopupMenu* m_settings; - QPopupMenu* m_newsession; + QPopupMenu* m_sessionsPop; QAction* m_connect; @@ -68,3 +73,3 @@ private: QAction* m_terminate; - QAction* m_set; + QAction* m_setProfiles; diff --git a/noncore/apps/opie-console/metafactory.cpp b/noncore/apps/opie-console/metafactory.cpp index bef6ec7..754f34c 100644 --- a/noncore/apps/opie-console/metafactory.cpp +++ b/noncore/apps/opie-console/metafactory.cpp @@ -1,2 +1,2 @@ - +#include <qpe/config.h> #include "metafactory.h" @@ -44 +44,15 @@ QStringList MetaFactory::fileTransferLayers()const { } +IOLayer* MetaFactory::newIOLayer( const QString& str,const Profile& prof ) { + IOLayer* lay = 0l; + + QMap<QString, iolayer>::Iterator it; + it = m_layerFact.find( str ); + if ( it != m_layerFact.end() ) { + lay = (*(it.data()))(prof); + /* + iolayer laye = it.data(); + lay = (*laye )(conf);*/ + } + + return lay; +} diff --git a/noncore/apps/opie-console/metafactory.h b/noncore/apps/opie-console/metafactory.h index aae9391..bdd2ad2 100644 --- a/noncore/apps/opie-console/metafactory.h +++ b/noncore/apps/opie-console/metafactory.h @@ -15,3 +15,3 @@ #include "file_layer.h" - +#include "profile.h" @@ -20,5 +20,5 @@ public: typedef QWidget* (*configWidget)(QWidget* parent); - typedef IOLayer* (*iolayer)(const Config& ); + typedef IOLayer* (*iolayer)(const Profile& ); typedef FileTransferLayer* (*filelayer)(IOLayer*); - + MetaFactory(); @@ -35,2 +35,4 @@ public: QStringList fileTransferLayers()const; + IOLayer* newIOLayer( const QString&,const Profile& ); + private: diff --git a/noncore/apps/opie-console/opie-console.pro b/noncore/apps/opie-console/opie-console.pro index 4a1180f..e045a48 100644 --- a/noncore/apps/opie-console/opie-console.pro +++ b/noncore/apps/opie-console/opie-console.pro @@ -7,3 +7,8 @@ HEADERS = io_layer.h io_serial.h \ session.h \ - mainwindow.h + mainwindow.h \ + profile.h \ + profileconfig.h \ + profilemanager.h \ + configwidget.h \ + tabwidget.h SOURCES = io_layer.cpp io_serial.cpp \ @@ -12,3 +17,7 @@ SOURCES = io_layer.cpp io_serial.cpp \ session.cpp \ - mainwindow.cpp + mainwindow.cpp \ + profile.cpp \ + profileconfig.cpp \ + profilemanager.cpp \ + tabwidget.cpp INTERFACES = diff --git a/noncore/apps/opie-console/profile.cpp b/noncore/apps/opie-console/profile.cpp new file mode 100644 index 0000000..b730218 --- a/dev/null +++ b/noncore/apps/opie-console/profile.cpp @@ -0,0 +1,59 @@ +#include "profile.h" + +Profile::Profile() { + +} +Profile::Profile( const QString& name, + const QString& iolayerName, + int background, + int foreground, + int terminal ) + : m_name( name ), m_ioLayer( iolayerName ), m_back( background ), + m_fore( foreground ), m_terminal( terminal ) +{ +} +Profile::Profile( const Profile& prof ) +{ + (*this) = prof; +} +Profile &Profile::operator=( const Profile& prof ) { + m_name = prof.m_name; + m_ioLayer = prof.m_ioLayer; + m_back = prof.m_back; + m_fore = prof.m_fore; + m_terminal = prof.m_terminal; + + return *this; +} +Profile::~Profile() { +} +QString Profile::name()const { + return m_name; +} +QString Profile::ioLayerName()const { + return m_ioLayer; +} +int Profile::foreground()const { + return m_fore; +} +int Profile::background()const { + return m_back; +} +int Profile::terminal()const { + return m_terminal; +} +void Profile::setName( const QString& str ) { + m_name = str; +} +void Profile::setIOLayer( const QString& name ) { + m_ioLayer = name; +} +void Profile::setBackground( int back ) { + m_back = back; +} +void Profile::setForeground( int fore ) { + m_fore = fore; +} +void Profile::setTerminal( int term ) { + m_terminal = term; +} diff --git a/noncore/apps/opie-console/profile.h b/noncore/apps/opie-console/profile.h new file mode 100644 index 0000000..8adc0bd --- a/dev/null +++ b/noncore/apps/opie-console/profile.h @@ -0,0 +1,66 @@ +#ifndef OPIE_PROFILE_H +#define OPIE_PROFILE_H + +#include <qmap.h> +#include <qstring.h> +#include <qstringlist.h> +#include <qvaluelist.h> +/** + * A session will be generated from a saved + * profile. A profile contains the iolayername + * a name. + * We can generate a Session from a Profile + * No configuration is contained here.... + */ +class Profile { +public: + typedef QValueList<Profile> ValueList; + enum Color { Black = 0, + White, + Gray }; + enum Terminal {VT102 = 0 }; + enum Font { Micro = 0, Small, Medium }; + Profile(); + Profile( const QString& name, + const QString& iolayerName, + int background, + int foreground, + int terminal); + Profile( const Profile& ); + Profile &operator=( const Profile& ); + + ~Profile(); + QString name()const; + QString ioLayerName()const; + int foreground()const; + int background()const; + int terminal()const; + + /* + * config stuff + */ + QMap<QString, QString> conf(); + void clearConf(); + void writeEntry( const QString& key, const QString& value ); + void writeEntry( const QString& key, int num ); + void writeEntry( const QString& key, bool b ); + void writeEntry( const QString& key, const QStringList&, const QChar& ); + QString readEntry( const QString& key, const QString& deflt = QString::null)const; + int readNumEntry( const QString& key, int = -1 )const; + bool readBoolEntry( const QString& key, bool = FALSE )const; + + void setName( const QString& ); + void setIOLayer( const QString& ); + void setBackground( int back ); + void setForeground( int fore ); + void setTerminal( int term ); +private: + QMap<QString, QString> m_conf; + QString m_name; + QString m_ioLayer; + int m_back; + int m_fore; + int m_terminal; +}; + +#endif diff --git a/noncore/apps/opie-console/profileconfig.cpp b/noncore/apps/opie-console/profileconfig.cpp new file mode 100644 index 0000000..8b16920 --- a/dev/null +++ b/noncore/apps/opie-console/profileconfig.cpp @@ -0,0 +1,35 @@ + +#include "profileconfig.h" + +ProfileConfig::ProfileConfig( const QString& prof ) + : Config( prof ) +{ +} +ProfileConfig::~ProfileConfig() { + +} +QStringList ProfileConfig::groups()const { + QStringList list; + QMap<QString, ConfigGroup>::ConstIterator it; + it= Config::groups.begin(); + + for (; it != Config::groups.end(); ++it ) + list << it.key(); + + + return list; + +} +void ProfileConfig::clearAll() { + QMap<QString, ConfigGroup>::ConstIterator it; + it = Config::groups.begin(); + + for ( ; it != Config::groups.end(); ++it ) + clearGroup( it.key() ); +} +void ProfileConfig::clearGroup( const QString& str ) { + QString cur =git.key(); + setGroup( str ); + Config::clearGroup(); + setGroup( cur ); +} diff --git a/noncore/apps/opie-console/profileconfig.h b/noncore/apps/opie-console/profileconfig.h new file mode 100644 index 0000000..e2e149c --- a/dev/null +++ b/noncore/apps/opie-console/profileconfig.h @@ -0,0 +1,17 @@ + +#ifndef OPIE_PROFILE_CONFIG_H +#define OPIE_PROFILE_CONFIG_H + +#include <qpe/config.h> +#include <qstringlist.h> + +class ProfileConfig : public Config { +public: + ProfileConfig( const QString& prof ); + ~ProfileConfig(); + QStringList groups()const; + void clearGroup( const QString& ); + void clearAll(); + +}; +#endif diff --git a/noncore/apps/opie-console/profilemanager.cpp b/noncore/apps/opie-console/profilemanager.cpp new file mode 100644 index 0000000..db36686 --- a/dev/null +++ b/noncore/apps/opie-console/profilemanager.cpp @@ -0,0 +1,62 @@ + +#include <qpe/config.h> + +#include "metafactory.h" +#include "profileconfig.h" +#include "profilemanager.h" + +ProfileManager::ProfileManager( MetaFactory* fact ) + : m_fact( fact ) +{ + +} +ProfileManager::~ProfileManager() { + +} +void ProfileManager::load() { + m_list.clear(); + ProfileConfig conf("opie-console-profiles"); + QStringList groups = conf.groups(); + QStringList::Iterator it; + + /* + * for each profile + */ + /* + * QAsciiDict Parsing FIXME + */ + for ( it = groups.begin(); it != groups.end(); ++it ) { + conf.setGroup( (*it) ); + Profile prof; + prof.setName( conf.readEntry("name") ); + prof.setIOLayer( conf.readEntry("iolayer") ); + prof.setBackground( conf.readNumEntry("back") ); + prof.setForeground( conf.readNumEntry("fore") ); + prof.setTerminal( conf.readNumEntry("terminal") ); + + m_list.append( prof ); + } + +} +Profile::ValueList ProfileManager::all()const { + return m_list; +} +Session* ProfileManager::fromProfile( const Profile& prof) { + Session* session = new Session(); + session->setName( prof.name() ); + session->setIOLayer(m_fact->newIOLayer(prof.ioLayerName(), + prof) ); + /* + * FIXME + * load emulation + * load widget + * set colors + fonts + */ + return session; +} +void ProfileManager::save( ) { + m_list.clear(); + ProfileConfig conf("opie-console-profiles"); + Session* se= 0l; + // FIXME save +} diff --git a/noncore/apps/opie-console/profilemanager.h b/noncore/apps/opie-console/profilemanager.h new file mode 100644 index 0000000..d4d0fd0 --- a/dev/null +++ b/noncore/apps/opie-console/profilemanager.h @@ -0,0 +1,30 @@ +#ifndef OPIE_PROFILE_MANAGER_H +#define OPIE_PROFILE_MANAGER_H + +#include <qlist.h> + +#include "session.h" +#include "profile.h" + +class MetaFactory; +class ConfigWidget; +class ProfileManager { +public: + ProfileManager(MetaFactory*); + ~ProfileManager(); + + void load(); + Profile::ValueList all()const; + void clear(); + /** + * also replaces the item + */ + void add( const Profile& prof ); + void remove( const Profile& prof ); + Session* fromProfile( const Profile& ); + void save(); +private: + MetaFactory* m_fact; + Profile::ValueList m_list; +}; +#endif diff --git a/noncore/apps/opie-console/session.cpp b/noncore/apps/opie-console/session.cpp index 4198fdc..d32b340 100644 --- a/noncore/apps/opie-console/session.cpp +++ b/noncore/apps/opie-console/session.cpp @@ -6,4 +6,8 @@ -Session::Session( QWidget* widget, IOLayer* lay) - : m_widget( widget ), m_layer( lay ) +Session::Session() { + m_widget = 0l; + m_layer = 0l; +} +Session::Session( const QString& na, QWidget* widget, IOLayer* lay) + : m_name( na ), m_widget( widget ), m_layer( lay ) { @@ -14,2 +18,5 @@ Session::~Session() { } +QString Session::name()const { + return m_name; +} QWidget* Session::widget() { @@ -20,3 +27,7 @@ IOLayer* Session::layer() { } +void Session::setName( const QString& na){ + m_name = na; +} void Session::setWidget( QWidget* wid ) { + delete m_widget; m_widget = wid; @@ -24,2 +35,3 @@ void Session::setWidget( QWidget* wid ) { void Session::setIOLayer( IOLayer* lay ) { + delete m_layer; m_layer = lay; diff --git a/noncore/apps/opie-console/session.h b/noncore/apps/opie-console/session.h index 3978e1b..44b5fc8 100644 --- a/noncore/apps/opie-console/session.h +++ b/noncore/apps/opie-console/session.h @@ -18,3 +18,4 @@ public: */ - Session( QWidget* widget, IOLayer* ); + Session(); + Session( const QString&, QWidget* widget, IOLayer* ); ~Session(); @@ -22,2 +23,7 @@ public: /** + * return the name of the session + */ + QString name()const; + + /** * return the widget @@ -32,6 +38,9 @@ public: void setIOLayer( IOLayer* ); + void setName( const QString& ); private: + QString m_name; QWidget* m_widget; IOLayer* m_layer; + }; diff --git a/noncore/apps/opie-console/tabwidget.cpp b/noncore/apps/opie-console/tabwidget.cpp new file mode 100644 index 0000000..6091aa2 --- a/dev/null +++ b/noncore/apps/opie-console/tabwidget.cpp @@ -0,0 +1,28 @@ + +#include "tabwidget.h" + +TabWidget::TabWidget( QWidget* parent, const char* name ) + : QTabWidget( parent, name ) +{ + connect(this, SIGNAL(currentChanged(QWidget*) ), + this, SLOT(slotCurChanged(QWidget*) ) ); +} +TabWidget::~TabWidget() { +} +void TabWidget::add( Session* ses ) { + if ( !ses->widget() ) return; + addTab( ses->widget(), ses->name() ); + m_map.insert( ses->widget(), ses ); +} +void TabWidget::remove( Session* ses ) { + m_map.remove( ses->widget() ); + removePage( ses->widget() ); +} +void TabWidget::slotCurChanged( QWidget* wid ) { + QMap<QWidget*, Session*>::Iterator it; + it = m_map.find(wid ); + if (it == m_map.end() ) + return; + + emit activated( it.data() ); +} diff --git a/noncore/apps/opie-console/tabwidget.h b/noncore/apps/opie-console/tabwidget.h new file mode 100644 index 0000000..d5d4be3 --- a/dev/null +++ b/noncore/apps/opie-console/tabwidget.h @@ -0,0 +1,28 @@ +#ifndef OPIE_TAB_WIDGET_H +#define OPIE_TAB_WIDGET_H + +#include <qmap.h> +#include <qtabwidget.h> + +#include "session.h" +/** + * This is our central tab widget + * we can add sessions here + */ +class TabWidget : QTabWidget{ + Q_OBJECT +public: + TabWidget(QWidget *parent, const char* name ); + ~TabWidget(); + void add( Session* ); + void remove( Session* ); + +signals: + void activated(Session* ses ); +private slots: + void slotCurChanged( QWidget* wid ); +private: + QMap<QWidget*, Session*> m_map; +}; + +#endif |