From bc88219d0a9cf935d90c88fe75e238e86c675937 Mon Sep 17 00:00:00 2001 From: zecke Date: Sat, 28 Sep 2002 18:29:02 +0000 Subject: io_layer take Profile instead of Config Profile added including some Config like stuff io_serial getBaud -> baud a default for gcc3 later tabdwidget will be our central widget profileconfig I needed groups() and clearAll that's pretty much it --- (limited to 'noncore/apps/opie-console') 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 @@ -5,7 +5,7 @@ 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 @@ -4,12 +4,13 @@ #include #include +#include "profile.h" + /** * This is the base class for IO Layers * It will used to sent and recv data( QByteArray ) * it */ -class Config; class IOLayer : public QObject { Q_OBJECT public: @@ -32,7 +33,7 @@ public: * the currently set group stores the profile/session * information */ - IOLayer( const Config& ); + IOLayer( const Profile& ); /** * destructor 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 @@ -4,7 +4,7 @@ #include #include "io_serial.h" -IOSerial::IOSerial(const Config &config) : IOLayer(config) { +IOSerial::IOSerial(const Profile &config) : IOLayer(config) { m_fd = 0; reload(config); } @@ -46,7 +46,7 @@ bool IOSerial::open() { tcgetattr(m_fd, &tty); /* Baud rate */ - int speed = getBaud(m_baud); + int speed = baud(m_baud); if (speed == -1) { emit error(Refuse, tr("Invalid baud rate")); } @@ -57,15 +57,16 @@ bool IOSerial::open() { if (m_dbits == 7 && (m_parity == ParitySpace || m_parity == ParityMark)) { m_dbits = 8; } - + /* Data bits */ switch (m_dbits) { case 5: tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS5; break; case 6: tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS6; break; case 7: tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS7; break; case 8: tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS8; break; + default: break; } - + /* Raw, no echo mode */ tty.c_iflag = IGNBRK; tty.c_lflag = 0; @@ -78,7 +79,7 @@ bool IOSerial::open() { } else { tty.c_cflag &= ~CSTOPB; } - + tty.c_cc[VMIN] = 1; tty.c_cc[VTIME] = 5; @@ -87,19 +88,19 @@ bool IOSerial::open() { tty.c_iflag |= IXON | IXOFF; else tty.c_iflag &= ~(IXON|IXOFF|IXANY); - + if (m_flow & FlowHW) tty.c_cflag |= CRTSCTS; else tty.c_cflag &= ~CRTSCTS; - + /* 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); @@ -115,7 +116,7 @@ bool IOSerial::open() { } } -void IOSerial::reload(const Config &config) { +void IOSerial::reload(const Profile &config) { m_device = config.readEntry("Device", SERIAL_DEFAULT_DEVICE); m_baud = config.readNumEntry("Baud", SERIAL_DEFAULT_BAUD); m_parity = config.readNumEntry("Parity", SERIAL_DEFAULT_PARITY); @@ -124,7 +125,7 @@ void IOSerial::reload(const Config &config) { m_flow = config.readNumEntry("Flow", SERIAL_DEFAULT_FLOW); } -int IOSerial::getBaud(int baud) const { +int IOSerial::baud(int baud) const { switch (baud) { case 300: return B300; break; case 600: return B600; break; 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 @@ -29,10 +29,10 @@ public: FlowHW = 0x01, FlowSW = 0x02 }; - - IOSerial(const Config &); + + IOSerial(const Profile &); ~IOSerial(); - + QString identifier() const; QString name() const; signals: @@ -42,9 +42,9 @@ public slots: void send(const QByteArray &); bool open(); void close(); - void reload(const Config &); + void reload(const Profile &); protected: - int getBaud(int baud) const; + int baud(int baud) const; protected slots: void dataArrived(); void errorOccured(); 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 @@ -11,7 +11,7 @@ MainWindow::MainWindow() { m_factory = new MetaFactory(); m_sessions.setAutoDelete( TRUE ); - m_curSession = -1; + m_curSession = 0; initUI(); } @@ -23,6 +23,8 @@ void MainWindow::initUI() { m_bar = new QMenuBar( m_tool ); m_console = new QPopupMenu( this ); + m_sessionsPop= new QPopupMenu( this ); + m_settings = new QPopupMenu( this ); /* * new Action for new sessions @@ -33,17 +35,55 @@ void MainWindow::initUI() { connect(a, SIGNAL(activated() ), this, SLOT(slotNew() ) ); - a = new QAction(); - a->setText( tr("New from Session") ); + + /* + * connect action + */ m_connect = new QAction(); m_connect->setText( tr("Connect") ); m_connect->addTo( m_console ); connect(m_connect, SIGNAL(activated() ), this, SLOT(slotConnect() ) ); + + /* + * 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 ); + } MainWindow::~MainWindow() { delete m_factory; @@ -60,3 +100,24 @@ Session* MainWindow::currentSession() { QList MainWindow::sessions() { return m_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 @@ -38,9 +38,14 @@ public: * the session list */ QList sessions(); -protected slots: + +private slots: void slotNew(); void slotConnect(); + void slotDisconnect(); + void slotTerminate(); + void slotConfigure(); + private: void initUI(); /** @@ -62,11 +67,11 @@ private: QMenuBar* m_bar; QPopupMenu* m_console; QPopupMenu* m_settings; - QPopupMenu* m_newsession; + QPopupMenu* m_sessionsPop; QAction* m_connect; QAction* m_disconnect; 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,4 +1,4 @@ - +#include #include "metafactory.h" MetaFactory::MetaFactory() { @@ -42,3 +42,17 @@ QStringList MetaFactory::fileTransferLayers()const { } return list; } +IOLayer* MetaFactory::newIOLayer( const QString& str,const Profile& prof ) { + IOLayer* lay = 0l; + + QMap::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 @@ -13,14 +13,14 @@ #include "io_layer.h" #include "file_layer.h" - +#include "profile.h" class MetaFactory { public: typedef QWidget* (*configWidget)(QWidget* parent); - typedef IOLayer* (*iolayer)(const Config& ); + typedef IOLayer* (*iolayer)(const Profile& ); typedef FileTransferLayer* (*filelayer)(IOLayer*); - + MetaFactory(); ~MetaFactory(); @@ -33,6 +33,8 @@ public: QStringList ioLayers()const; QStringList configWidgets()const; QStringList fileTransferLayers()const; + IOLayer* newIOLayer( const QString&,const Profile& ); + private: QMap m_confFact; QMap m_layerFact; 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 @@ -5,12 +5,21 @@ HEADERS = io_layer.h io_serial.h \ file_layer.h \ metafactory.h \ session.h \ - mainwindow.h + mainwindow.h \ + profile.h \ + profileconfig.h \ + profilemanager.h \ + configwidget.h \ + tabwidget.h SOURCES = io_layer.cpp io_serial.cpp \ file_layer.cpp main.cpp \ metafactory.cpp \ session.cpp \ - mainwindow.cpp + mainwindow.cpp \ + profile.cpp \ + profileconfig.cpp \ + profilemanager.cpp \ + tabwidget.cpp INTERFACES = INCLUDEPATH += $(OPIEDIR)/include DEPENDPATH += $(OPIEDIR)/include 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 +#include +#include +#include +/** + * 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 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 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 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::ConstIterator it; + it= Config::groups.begin(); + + for (; it != Config::groups.end(); ++it ) + list << it.key(); + + + return list; + +} +void ProfileConfig::clearAll() { + QMap::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 +#include + +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 + +#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 + +#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 @@ -4,23 +4,35 @@ #include "file_layer.h" #include "session.h" -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 ) { } Session::~Session() { delete m_layer; delete m_widget; } +QString Session::name()const { + return m_name; +} QWidget* Session::widget() { return m_widget; } IOLayer* Session::layer() { return m_layer; } +void Session::setName( const QString& na){ + m_name = na; +} void Session::setWidget( QWidget* wid ) { + delete m_widget; m_widget = 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 @@ -16,10 +16,16 @@ public: * c'tor with widget and layer * ownership get's transfered */ - Session( QWidget* widget, IOLayer* ); + Session(); + Session( const QString&, QWidget* widget, IOLayer* ); ~Session(); /** + * return the name of the session + */ + QString name()const; + + /** * return the widget */ QWidget* widget(); @@ -30,10 +36,13 @@ public: IOLayer* layer(); void setWidget( QWidget* widget ); void setIOLayer( IOLayer* ); + void setName( const QString& ); private: + QString m_name; QWidget* m_widget; IOLayer* m_layer; + }; #endif 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::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 +#include + +#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 m_map; +}; + +#endif -- cgit v0.9.0.2