summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-console/io_layer.cpp2
-rw-r--r--noncore/apps/opie-console/io_layer.h5
-rw-r--r--noncore/apps/opie-console/io_serial.cpp21
-rw-r--r--noncore/apps/opie-console/io_serial.h10
-rw-r--r--noncore/apps/opie-console/mainwindow.cpp67
-rw-r--r--noncore/apps/opie-console/mainwindow.h11
-rw-r--r--noncore/apps/opie-console/metafactory.cpp16
-rw-r--r--noncore/apps/opie-console/metafactory.h8
-rw-r--r--noncore/apps/opie-console/opie-console.pro13
-rw-r--r--noncore/apps/opie-console/profile.cpp59
-rw-r--r--noncore/apps/opie-console/profile.h66
-rw-r--r--noncore/apps/opie-console/profileconfig.cpp35
-rw-r--r--noncore/apps/opie-console/profileconfig.h17
-rw-r--r--noncore/apps/opie-console/profilemanager.cpp62
-rw-r--r--noncore/apps/opie-console/profilemanager.h30
-rw-r--r--noncore/apps/opie-console/session.cpp16
-rw-r--r--noncore/apps/opie-console/session.h11
-rw-r--r--noncore/apps/opie-console/tabwidget.cpp28
-rw-r--r--noncore/apps/opie-console/tabwidget.h28
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
@@ -6,5 +6,5 @@ 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
@@ -5,4 +5,6 @@
#include <qpe/config.h>
+#include "profile.h"
+
/**
* This is the base class for IO Layers
@@ -10,5 +12,4 @@
* it
*/
-class Config;
class IOLayer : public QObject {
Q_OBJECT
@@ -33,5 +34,5 @@ public:
* information
*/
- 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
@@ -5,5 +5,5 @@
#include "io_serial.h"
-IOSerial::IOSerial(const Config &config) : IOLayer(config) {
+IOSerial::IOSerial(const Profile &config) : IOLayer(config) {
m_fd = 0;
reload(config);
@@ -47,5 +47,5 @@ bool IOSerial::open() {
/* Baud rate */
- int speed = getBaud(m_baud);
+ int speed = baud(m_baud);
if (speed == -1) {
emit error(Refuse, tr("Invalid baud rate"));
@@ -58,5 +58,5 @@ bool IOSerial::open() {
m_dbits = 8;
}
-
+
/* Data bits */
switch (m_dbits) {
@@ -65,6 +65,7 @@ bool IOSerial::open() {
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;
@@ -79,5 +80,5 @@ bool IOSerial::open() {
tty.c_cflag &= ~CSTOPB;
}
-
+
tty.c_cc[VMIN] = 1;
tty.c_cc[VTIME] = 5;
@@ -88,10 +89,10 @@ bool IOSerial::open() {
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);
@@ -100,5 +101,5 @@ bool IOSerial::open() {
else if (m_parity & ParityOdd)
tty.c_cflag |= (PARENB | PARODD);
-
+
/* Set the changes */
tcsetattr(m_fd, TCSANOW, &tty);
@@ -116,5 +117,5 @@ 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);
@@ -125,5 +126,5 @@ void IOSerial::reload(const Config &config) {
}
-int IOSerial::getBaud(int baud) const {
+int IOSerial::baud(int baud) const {
switch (baud) {
case 300: return B300; 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
@@ -30,8 +30,8 @@ public:
FlowSW = 0x02
};
-
- IOSerial(const Config &);
+
+ IOSerial(const Profile &);
~IOSerial();
-
+
QString identifier() const;
QString name() const;
@@ -43,7 +43,7 @@ public slots:
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();
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
@@ -12,5 +12,5 @@ MainWindow::MainWindow() {
m_factory = new MetaFactory();
m_sessions.setAutoDelete( TRUE );
- m_curSession = -1;
+ m_curSession = 0;
initUI();
@@ -24,4 +24,6 @@ void MainWindow::initUI() {
m_bar = new QMenuBar( m_tool );
m_console = new QPopupMenu( this );
+ m_sessionsPop= new QPopupMenu( this );
+ m_settings = new QPopupMenu( this );
/*
@@ -34,7 +36,9 @@ void MainWindow::initUI() {
this, SLOT(slotNew() ) );
- a = new QAction();
- a->setText( tr("New from Session") );
+
+ /*
+ * connect action
+ */
m_connect = new QAction();
m_connect->setText( tr("Connect") );
@@ -43,6 +47,42 @@ void MainWindow::initUI() {
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() {
@@ -61,2 +101,23 @@ QList<Session> 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
@@ -39,7 +39,12 @@ public:
*/
QList<Session> sessions();
-protected slots:
+
+private slots:
void slotNew();
void slotConnect();
+ void slotDisconnect();
+ void slotTerminate();
+ void slotConfigure();
+
private:
void initUI();
@@ -63,9 +68,9 @@ private:
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,3 +1,3 @@
-
+#include <qpe/config.h>
#include "metafactory.h"
@@ -43,2 +43,16 @@ QStringList MetaFactory::fileTransferLayers()const {
return list;
}
+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
@@ -14,12 +14,12 @@
#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();
@@ -34,4 +34,6 @@ public:
QStringList configWidgets()const;
QStringList fileTransferLayers()const;
+ IOLayer* newIOLayer( const QString&,const Profile& );
+
private:
QMap<QString, configWidget> m_confFact;
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
@@ -6,10 +6,19 @@ HEADERS = io_layer.h io_serial.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
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
@@ -5,6 +5,10 @@
#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 )
{
}
@@ -13,4 +17,7 @@ Session::~Session() {
delete m_widget;
}
+QString Session::name()const {
+ return m_name;
+}
QWidget* Session::widget() {
return m_widget;
@@ -19,8 +26,13 @@ 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
@@ -17,8 +17,14 @@ public:
* 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
*/
@@ -31,8 +37,11 @@ public:
void setWidget( QWidget* widget );
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