summaryrefslogtreecommitdiff
path: root/noncore
Side-by-side diff
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-console/PLANS12
-rw-r--r--noncore/apps/opie-console/default.cpp7
-rw-r--r--noncore/apps/opie-console/default.h4
-rw-r--r--noncore/apps/opie-console/emulation_layer.h2
-rw-r--r--noncore/apps/opie-console/keytrans.cpp3
-rw-r--r--noncore/apps/opie-console/mainwindow.cpp48
-rw-r--r--noncore/apps/opie-console/mainwindow.h4
-rw-r--r--noncore/apps/opie-console/metafactory.cpp25
-rw-r--r--noncore/apps/opie-console/metafactory.h21
-rw-r--r--noncore/apps/opie-console/profilemanager.cpp44
-rw-r--r--noncore/apps/opie-console/profilemanager.h2
-rw-r--r--noncore/apps/opie-console/session.cpp49
-rw-r--r--noncore/apps/opie-console/session.h38
-rw-r--r--noncore/apps/opie-console/tabwidget.cpp21
-rw-r--r--noncore/apps/opie-console/tabwidget.h5
-rw-r--r--noncore/apps/opie-console/vt102emulation.cpp2
-rw-r--r--noncore/apps/opie-console/vt102emulation.h2
17 files changed, 248 insertions, 41 deletions
diff --git a/noncore/apps/opie-console/PLANS b/noncore/apps/opie-console/PLANS
index 8f6b807..0ec45cb 100644
--- a/noncore/apps/opie-console/PLANS
+++ b/noncore/apps/opie-console/PLANS
@@ -1,10 +1,12 @@
can we please get a working serial connection for now? if that works
i can test file transfers and stuff. -hash
+sure. I finished the ConfigDialog and now doing the Profile->Session
+stuff. Then you just need to click Open -zecke
From a UNIX point of view we want to do something like minicom
with a better GUI.
It should feature some terminal emulation vt100/102, ansi,
filetransfer via {x,y,z}modem, and some sort of session management.
Besides this requirement we would like to be able to execute 'scripts'
in a session.
A script would just write to the TEmulation and then be sent via
@@ -13,22 +15,24 @@ Then we would like to send keys? Do we want that?
We want a modular architecture which might support plugins in
the future
(Almost) DONE:
Framework
Serial IOLayer
Saving and Restoring Profiles
+ConfigDialog Framework
+FilesendingLayer - hash
TASKS in progress:
Profile->Session and MainWidget --- Harlekin
-FilesendingLayer - hash
IOLayer - wazlaf
-Configuration - josef
TE - ibotty
-
-OPEN tasks:
Session->Profile - hash
Scripting - wazlaf
+
+OPEN tasks:
+Irda ConfigWidget
+BT ConfigWidget
Keys - open
IRDA-Layer - open
Bluetooth-Layer - open
diff --git a/noncore/apps/opie-console/default.cpp b/noncore/apps/opie-console/default.cpp
index d9a0557..da6f3e2 100644
--- a/noncore/apps/opie-console/default.cpp
+++ b/noncore/apps/opie-console/default.cpp
@@ -1,12 +1,13 @@
#include "io_serial.h"
#include "sz_transfer.h"
#include "serialconfigwidget.h"
#include "terminalwidget.h"
+#include "vt102emulation.h"
#include "default.h"
extern "C" {
// FILE Transfer Stuff
FileTransferLayer* newSZTransfer(IOLayer* lay) {
return new SzTransfer( SzTransfer::SZ, lay );
}
@@ -39,16 +40,21 @@ extern "C" {
return newSerialWidget(str, wid );
}
// Terminal Widget(s)
ProfileDialogWidget* newTerminalWidget(const QString& na, QWidget* wid) {
return new TerminalWidget(na, wid,0 );
}
+ // VT Emulations
+ EmulationLayer* newVT102( Widget* wid ) {
+ return new Vt102Emulation( wid );
+ }
+
};
Default::Default( MetaFactory* fact ) {
fact->addFileTransferLayer( "SZ", QObject::tr("Z-Modem"), newSZTransfer );
fact->addFileTransferLayer( "SY", QObject::tr("Y-Modem"), newSYTransfer );
fact->addFileTransferLayer( "SX", QObject::tr("X-Modem"), newSXTransfer );
fact->addIOLayerFactory( "serial", QObject::tr("Serial"), newSerialLayer );
@@ -56,12 +62,13 @@ Default::Default( MetaFactory* fact ) {
fact->addIOLayerFactory( "bt", QObject::tr("Bluetooth"), newBTLayer );
fact->addConnectionWidgetFactory( "serial", QObject::tr("Serial"), newSerialWidget );
fact->addConnectionWidgetFactory( "irda", QObject::tr("Infrared"), newIrDaWidget );
fact->addConnectionWidgetFactory( "bt", QObject::tr("Bluetooth"), newBTWidget );
fact->addTerminalWidgetFactory( "default", QObject::tr("Default Terminal"), newTerminalWidget );
+ fact->addEmulationLayer( "default", QObject::tr("Default Terminal"), newVT102 );
}
Default::~Default() {
}
diff --git a/noncore/apps/opie-console/default.h b/noncore/apps/opie-console/default.h
index ed78986..b9af898 100644
--- a/noncore/apps/opie-console/default.h
+++ b/noncore/apps/opie-console/default.h
@@ -1,27 +1,31 @@
#ifndef OPIE_DEFAULT_H
#define OPIE_DEFAULT_H
#include "metafactory.h"
+class Widget;
+
extern "C" {
FileTransferLayer* newSZTransfer(IOLayer*);
FileTransferLayer* newSYTransfer(IOLayer*);
FileTransferLayer* newSXTransfer(IOLayer*);
IOLayer* newSerialLayer(const Profile&);
IOLayer* newBTLayer(const Profile& );
IOLayer* newIrDaLayer(const Profile& );
ProfileDialogWidget* newSerialWidget(const QString&, QWidget* );
ProfileDialogWidget* newIrDaWidget (const QString&, QWidget* );
ProfileDialogWidget* newBTWidget (const QString&, QWidget* );
ProfileDialogWidget* newTerminalWidget(const QString&, QWidget* );
+
+ EmulationLayer* newVT102( Widget* );
};
class MetaFactory;
struct Default {
public:
Default(MetaFactory* );
~Default();
};
diff --git a/noncore/apps/opie-console/emulation_layer.h b/noncore/apps/opie-console/emulation_layer.h
index 0f54331..5781acc 100644
--- a/noncore/apps/opie-console/emulation_layer.h
+++ b/noncore/apps/opie-console/emulation_layer.h
@@ -21,17 +21,17 @@
/* */
/* Copyright (C) 2002 by opie developers <opie@handhelds.org> */
/* */
/* -------------------------------------------------------------------------- */
#ifndef EMULATION_LAYER_H
#define EMULATION_LAYER_H
-#include "widget.h"
+#include "widget_layer.h"
#include "screen.h"
#include <qtimer.h>
#include <stdio.h>
#include <qtextcodec.h>
#include "keytrans.h"
class EmulationLayer : public QObject
{ Q_OBJECT
diff --git a/noncore/apps/opie-console/keytrans.cpp b/noncore/apps/opie-console/keytrans.cpp
index d569ae0..5ea192e 100644
--- a/noncore/apps/opie-console/keytrans.cpp
+++ b/noncore/apps/opie-console/keytrans.cpp
@@ -622,28 +622,31 @@ KeyTransSymbols::KeyTransSymbols()
static int keytab_serial = 0; //FIXME: remove,localize
static QIntDict<KeyTrans> * numb2keymap = 0L;
static QDict<KeyTrans> * path2keymap = 0L;
KeyTrans* KeyTrans::find(int numb)
{
+ loadAll();
KeyTrans* res = numb2keymap->find(numb);
return res ? res : numb2keymap->find(0);
}
KeyTrans* KeyTrans::find(const char* path)
{
+ loadAll();
KeyTrans* res = path2keymap->find(path);
return res ? res : numb2keymap->find(0);
}
int KeyTrans::count()
{
+ loadAll();
return numb2keymap->count();
}
void KeyTrans::addKeyTrans()
{
this->numb = keytab_serial ++;
numb2keymap->insert(numb,this);
path2keymap->insert(path,this);
diff --git a/noncore/apps/opie-console/mainwindow.cpp b/noncore/apps/opie-console/mainwindow.cpp
index 3531478..aeb3742 100644
--- a/noncore/apps/opie-console/mainwindow.cpp
+++ b/noncore/apps/opie-console/mainwindow.cpp
@@ -1,18 +1,20 @@
#include <qaction.h>
#include <qmenubar.h>
#include <qlabel.h>
#include <qpopupmenu.h>
#include <qtoolbar.h>
+#include "profileeditordialog.h"
#include "configdialog.h"
#include "default.h"
#include "metafactory.h"
+#include "profile.h"
#include "profilemanager.h"
#include "mainwindow.h"
#include "tabwidget.h"
MainWindow::MainWindow() {
m_factory = new MetaFactory();
Default def(m_factory);
m_sessions.setAutoDelete( TRUE );
@@ -104,17 +106,19 @@ void MainWindow::initUI() {
m_consoleWindow = new TabWidget( this, "blah");
setCentralWidget( m_consoleWindow );
}
ProfileManager* MainWindow::manager() {
return m_manager;
}
-
+TabWidget* MainWindow::tabWidget() {
+ return m_consoleWindow;
+}
void MainWindow::populateProfiles() {
m_sessionsPop->clear();
Profile::ValueList list = manager()->all();
for (Profile::ValueList::Iterator it = list.begin(); it != list.end(); ++it ) {
m_sessionsPop->insertItem( (*it).name() );
}
}
@@ -132,49 +136,81 @@ Session* MainWindow::currentSession() {
}
QList<Session> MainWindow::sessions() {
return m_sessions;
}
void MainWindow::slotNew() {
qWarning("New Connection");
+ ProfileEditorDialog dlg(factory() );
+ int ret = dlg.exec();
+
+ if ( ret == QDialog::Accepted ) {
+ create( dlg.profile() );
+ }
}
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;
+
+ slotClose();
/* FIXME move to the next session */
}
void MainWindow::slotConfigure() {
qWarning("configure");
ConfigDialog conf( manager()->all(), factory() );
conf.showMaximized();
int ret = conf.exec();
if ( QDialog::Accepted == ret ) {
qWarning("conf %d", conf.list().count() );
manager()->setProfiles( conf.list() );
populateProfiles();
}
}
-
+/*
+ * we will remove
+ * this window from the tabwidget
+ * remove it from the list
+ * delete it
+ * and set the currentSession()
+ */
void MainWindow::slotClose() {
-}
+ if (!currentSession() )
+ return;
-void MainWindow::slotProfile( int ) {
+ tabWidget()->remove( currentSession() );
+ tabWidget()->setCurrent( m_sessions.first() );
+ m_sessions.remove( m_curSession );
+ delete m_curSession;
+ m_curSession = m_sessions.first();
+}
+/*
+ * We will get the name
+ * Then the profile
+ * and then we will make a profile
+ */
+void MainWindow::slotProfile( int id) {
+ Profile prof = manager()->profile( m_sessionsPop->text( id) );
+ create( prof );
+}
+void MainWindow::create( const Profile& prof ) {
+ Session *ses = manager()->fromProfile( prof, tabWidget() );
+ m_sessions.append( ses );
+ tabWidget()->add( ses );
+ m_curSession = ses;
}
diff --git a/noncore/apps/opie-console/mainwindow.h b/noncore/apps/opie-console/mainwindow.h
index 36eb3a7..7ef9c26 100644
--- a/noncore/apps/opie-console/mainwindow.h
+++ b/noncore/apps/opie-console/mainwindow.h
@@ -12,17 +12,17 @@
* actions supported by the gui
*/
class QToolBar;
class QMenuBar;
class QAction;
class MetaFactory;
class TabWidget;
class ProfileManager;
-
+class Profile;
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow();
~MainWindow();
/**
* our factory to generate IOLayer and so on
@@ -40,29 +40,31 @@ public:
* the session list
*/
QList<Session> sessions();
/**
*
*/
ProfileManager* manager();
+ TabWidget* tabWidget();
private slots:
void slotNew();
void slotConnect();
void slotDisconnect();
void slotTerminate();
void slotConfigure();
void slotClose();
void slotProfile(int);
private:
void initUI();
void populateProfiles();
+ void create( const Profile& );
/**
* the current session
*/
Session* m_curSession;
/**
* the session list
*/
diff --git a/noncore/apps/opie-console/metafactory.cpp b/noncore/apps/opie-console/metafactory.cpp
index 4501ec2..02a9f9b 100644
--- a/noncore/apps/opie-console/metafactory.cpp
+++ b/noncore/apps/opie-console/metafactory.cpp
@@ -25,16 +25,22 @@ void MetaFactory::addIOLayerFactory( const QCString& name,
m_layerFact.insert( str, lay );
}
void MetaFactory::addFileTransferLayer( const QCString& name,
const QString& str,
filelayer lay) {
m_strings.insert(str, name );
m_fileFact.insert( str, lay );
}
+void MetaFactory::addEmulationLayer( const QCString& name,
+ const QString& str,
+ emulationLayer em) {
+ m_strings.insert(str, name );
+ m_emu.insert( str, em );
+}
QStringList MetaFactory::ioLayers()const {
QStringList list;
QMap<QString, iolayer>::ConstIterator it;
for (it = m_layerFact.begin(); it != m_layerFact.end(); ++it ) {
list << it.key();
}
return list;
}
@@ -57,16 +63,24 @@ QStringList MetaFactory::terminalWidgets()const {
QStringList MetaFactory::fileTransferLayers()const {
QStringList list;
QMap<QString, filelayer>::ConstIterator it;
for ( it = m_fileFact.begin(); it != m_fileFact.end(); ++it ) {
list << it.key();
}
return list;
}
+QStringList MetaFactory::emulationLayers()const {
+ QStringList list;
+ QMap<QString, emulationLayer>::ConstIterator it;
+ for ( it = m_emu.begin(); it != m_emu.end(); ++it ) {
+ list << it.key();
+ }
+ 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);
@@ -96,16 +110,27 @@ ProfileDialogWidget *MetaFactory::newTerminalPlugin( const QString& str, QWidget
QMap<QString, configWidget>::Iterator it;
it = m_termFact.find( str );
if ( it != m_termFact.end() ) {
wid = (*(it.data() ) )(str,parent);
}
return wid;
}
+EmulationLayer* MetaFactory::newEmulationLayer( const QString& str, Widget* wid) {
+ EmulationLayer* lay = 0l;
+
+ QMap<QString, emulationLayer>::Iterator it;
+ it = m_emu.find( str );
+ if ( it != m_emu.end() ) {
+ lay = (*(it.data() ) )(wid);
+ }
+
+ return lay;
+}
QCString MetaFactory::internal( const QString& str )const {
return m_strings[str];
}
QString MetaFactory::external( const QCString& str )const {
QMap<QString, QCString>::ConstIterator it;
for ( it = m_strings.begin(); it != m_strings.end(); ++it ) {
if ( it.data() == str )
return it.key();
diff --git a/noncore/apps/opie-console/metafactory.h b/noncore/apps/opie-console/metafactory.h
index 3f7ddce..71c35a2 100644
--- a/noncore/apps/opie-console/metafactory.h
+++ b/noncore/apps/opie-console/metafactory.h
@@ -10,22 +10,25 @@
#include <qmap.h>
#include <qpe/config.h>
#include "io_layer.h"
#include "file_layer.h"
#include "profile.h"
#include "profiledialogwidget.h"
+#include "emulation_layer.h"
+class Widget;
class MetaFactory {
public:
typedef ProfileDialogWidget* (*configWidget)(const QString&, QWidget* parent);
typedef IOLayer* (*iolayer)(const Profile& );
typedef FileTransferLayer* (*filelayer)(IOLayer*);
+ typedef EmulationLayer* (*emulationLayer)(Widget* );
MetaFactory();
~MetaFactory();
/**
* add a ProfileDialogWidget to the factory
* name is the name shown to the user
*/
@@ -45,24 +48,41 @@ public:
/**
* adds a FileTransfer Layer
*/
void addFileTransferLayer( const QCString& name,
const QString&,
filelayer );
+ /**
+ * adds a Factory for Emulation to the Layer..
+ */
+ void addEmulationLayer ( const QCString& name,
+ const QString& uiString,
+ emulationLayer );
+
/* translated UI Strings */
QStringList ioLayers()const;
QStringList connectionWidgets()const;
+
+ /**
+ * Terminal Configuration widgets
+ */
QStringList terminalWidgets()const;
QStringList fileTransferLayers()const;
+ QStringList emulationLayers()const;
+
+ /**
+ * the generation...
+ */
IOLayer* newIOLayer( const QString&,const Profile& );
ProfileDialogWidget *newConnectionPlugin ( const QString&, QWidget* );
ProfileDialogWidget* newTerminalPlugin( const QString&, QWidget* );
+ EmulationLayer* newEmulationLayer(const QString&, Widget* );
/*
* internal takes the maybe translated
* public QString and maps it to the internal
* not translatable QCString
*/
QCString internal( const QString& )const;
@@ -74,12 +94,13 @@ public:
private:
QMap<QString, QCString> m_strings;
QMap<QString, configWidget> m_conFact;
QMap<QString, configWidget> m_termFact;
QMap<QString, iolayer> m_layerFact;
QMap<QString, filelayer> m_fileFact;
+ QMap<QString, emulationLayer> m_emu;
};
#endif
diff --git a/noncore/apps/opie-console/profilemanager.cpp b/noncore/apps/opie-console/profilemanager.cpp
index e66ebcc..dcf3cbd 100644
--- a/noncore/apps/opie-console/profilemanager.cpp
+++ b/noncore/apps/opie-console/profilemanager.cpp
@@ -1,15 +1,18 @@
#include <stdio.h>
#include <stdlib.h>
#include <qfile.h>
+#include <qlayout.h>
+#include <qwidgetstack.h>
#include <qpe/config.h>
+#include "widget.h"
#include "metafactory.h"
#include "profileconfig.h"
#include "profilemanager.h"
ProfileManager::ProfileManager( MetaFactory* fact )
: m_fact( fact )
{
@@ -46,27 +49,50 @@ void ProfileManager::load() {
}
void ProfileManager::clear() {
m_list.clear();
}
Profile::ValueList ProfileManager::all()const {
return m_list;
}
-Session* ProfileManager::fromProfile( const Profile& prof) {
+/*
+ * Our goal is to create a Session
+ * We will load the the IOLayer and EmulationLayer
+ * from the factory
+ * we will generate a QWidgetStack
+ * add a dummy widget with layout
+ * add "Widget" to the layout
+ * add the dummy to the stack
+ * raise the dummy
+ * call session->connect(=
+ * this way we only need to reparent
+ * in TabWidget
+ */
+Session* ProfileManager::fromProfile( const Profile& prof, QWidget* parent) {
Session* session = new Session();
session->setName( prof.name() );
- session->setIOLayer(m_fact->newIOLayer(prof.ioLayerName(),
- prof) );
- /*
- * FIXME
- * load emulation
- * load widget?
- * set colors + fonts
- */
+ /* translate the internal name to the external */
+ session->setIOLayer(m_fact->newIOLayer( m_fact->external(prof.ioLayerName()) ,
+ prof) );
+
+ QWidgetStack *stack = new QWidgetStack(parent);
+ session->setWidgetStack( stack );
+ QWidget* dummy = new QWidget(stack );
+ QHBoxLayout* lay = new QHBoxLayout(dummy );
+ stack->addWidget( dummy, 0 );
+ stack->raiseWidget( 0 );
+ Widget* wid = new Widget(dummy );
+ lay->addWidget( wid );
+
+ session->setEmulationWidget( wid );
+ session->setEmulationLayer( m_fact->newEmulationLayer( m_fact->external( prof.terminalName() ),
+ wid ) );
+ session->connect();
+
return session;
}
void ProfileManager::save( ) {
QFile::remove( (QString(getenv("HOME") )+ "/Settings/opie-console-profiles.conf" ) );
ProfileConfig conf("opie-console-profiles");
Profile::ValueList::Iterator it;
for (it = m_list.begin(); it != m_list.end(); ++it ) {
conf.setGroup( (*it).name() );
diff --git a/noncore/apps/opie-console/profilemanager.h b/noncore/apps/opie-console/profilemanager.h
index 1387247..33b7095 100644
--- a/noncore/apps/opie-console/profilemanager.h
+++ b/noncore/apps/opie-console/profilemanager.h
@@ -17,16 +17,16 @@ public:
Profile::ValueList all()const;
void clear();
/**
* also replaces the item
*/
void add( const Profile& prof );
void remove( const Profile& prof );
Profile profile(const QString& name )const;
- Session* fromProfile( const Profile& );
+ Session* fromProfile( const Profile& , QWidget* parent = 0l);
void setProfiles( const Profile::ValueList& );
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 d32b340..42b0583 100644
--- a/noncore/apps/opie-console/session.cpp
+++ b/noncore/apps/opie-console/session.cpp
@@ -1,38 +1,81 @@
#include "io_layer.h"
#include "file_layer.h"
+#include "widget.h"
+#include "emulation_layer.h"
#include "session.h"
+
Session::Session() {
m_widget = 0l;
m_layer = 0l;
+ m_widLay = 0l;
+ m_emLay = 0l;
}
-Session::Session( const QString& na, QWidget* widget, IOLayer* lay)
+Session::Session( const QString& na, QWidgetStack* widget, IOLayer* lay)
: m_name( na ), m_widget( widget ), m_layer( lay )
{
+ m_widLay = 0l;
+ m_emLay = 0l;
}
Session::~Session() {
delete m_layer;
+ delete m_emLay;
delete m_widget;
+ /* the widget layer should be deleted by the m_widget */
}
QString Session::name()const {
return m_name;
}
-QWidget* Session::widget() {
+QWidgetStack* Session::widgetStack() {
return m_widget;
}
IOLayer* Session::layer() {
return m_layer;
}
+EmulationLayer* Session::emulationLayer() {
+ return m_emLay;
+}
+Widget* Session::emulationWidget() {
+ return m_widLay;
+}
+void Session::connect() {
+ if ( !m_layer || !m_emLay )
+ return;
+
+ QObject::connect(m_layer, SIGNAL(received(const QByteArray&) ),
+ m_emLay, SLOT(onRcvBlock(const QByteArray&) ) );
+ QObject::connect(m_emLay, SIGNAL(sndBlock(const QByteArray&) ),
+ m_layer, SLOT(send(const QByteArray&) ) );
+}
+void Session::disconnect() {
+ if ( !m_layer || !m_emLay )
+ return;
+
+ QObject::disconnect(m_layer, SIGNAL(received(const QByteArray&) ),
+ m_emLay, SLOT(onRcvBlock(const QByteArray&) ) );
+ QObject::disconnect(m_emLay, SIGNAL(sndBlock(const QByteArray&) ),
+ m_layer, SLOT(send(const QByteArray&) ) );
+}
void Session::setName( const QString& na){
m_name = na;
}
-void Session::setWidget( QWidget* wid ) {
+void Session::setWidgetStack( QWidgetStack* wid ) {
delete m_widget;
+ /* the EmulationLayer was destroyed... */
+ delete m_emLay;
m_widget = wid;
}
void Session::setIOLayer( IOLayer* lay ) {
delete m_layer;
m_layer = lay;
}
+void Session::setEmulationLayer( EmulationLayer* lay ) {
+ delete m_emLay;
+ m_emLay = lay;
+}
+void Session::setEmulationWidget( Widget* lay ) {
+ delete m_widLay;
+ m_widLay = lay;
+}
diff --git a/noncore/apps/opie-console/session.h b/noncore/apps/opie-console/session.h
index 44b5fc8..c3673fc 100644
--- a/noncore/apps/opie-console/session.h
+++ b/noncore/apps/opie-console/session.h
@@ -1,48 +1,74 @@
#ifndef OPIE_SESSION_H
#define OPIE_SESSION_H
-#include <qwidget.h>
+#include <qwidgetstack.h>
class IOLayer;
+class EmulationLayer;
+class Widget;
/**
* This is a Session. A session contains
* a QWidget pointer and a IOLayer
* Imagine a session like a collection of what
* is needed to show your widget in a tab ;)
*/
class Session {
public:
/**
* c'tor with widget and layer
* ownership get's transfered
*/
Session();
- Session( const QString&, QWidget* widget, IOLayer* );
+ Session( const QString&, QWidgetStack* widget, IOLayer* );
~Session();
/**
* return the name of the session
*/
QString name()const;
/**
- * return the widget
+ * return the widgetstack
+ * this is used to be semi modal
+ * for FileTransfer
+ *
+ * semi modal == SessionModal
*/
- QWidget* widget();
+ QWidgetStack* widgetStack();
/**
* return the layer
*/
IOLayer* layer();
- void setWidget( QWidget* widget );
+
+ EmulationLayer* emulationLayer();
+ Widget* emulationWidget();
+
+ /*
+ * 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 setEmulationLayer( EmulationLayer* lay );
+ void setEmulationWidget( Widget* lay );
void setIOLayer( IOLayer* );
void setName( const QString& );
private:
QString m_name;
- QWidget* m_widget;
+ QWidgetStack* m_widget;
IOLayer* m_layer;
+ EmulationLayer* m_emLay;
+ Widget* m_widLay;
};
#endif
diff --git a/noncore/apps/opie-console/tabwidget.cpp b/noncore/apps/opie-console/tabwidget.cpp
index 783bf13..cfaef91 100644
--- a/noncore/apps/opie-console/tabwidget.cpp
+++ b/noncore/apps/opie-console/tabwidget.cpp
@@ -1,34 +1,43 @@
#include "tabwidget.h"
TabWidget::TabWidget( QWidget* parent, const char* name )
- : OTabWidget( parent, 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(), "console/konsole", ses->name() );
- m_map.insert( ses->widget(), ses );
+ if ( !ses->widgetStack() ) return;
+ qWarning("going to add it");
+ //reparent( ses->widgetStack(), QPoint() );
+ //addTab( ses->widgetStack(), "console/konsole", ses->name() );
+ addTab( ses->widgetStack(), ses->name() );
+ m_map.insert( ses->widgetStack(), ses );
}
void TabWidget::remove( Session* ses ) {
- m_map.remove( ses->widget() );
- removePage( ses->widget() );
+ m_map.remove( ses->widgetStack() );
+ removePage( ses->widgetStack() );
}
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() );
}
+void TabWidget::setCurrent( Session* ses ) {
+ if (!ses )
+ return;
+
+ showPage( ses->widgetStack() );
+}
diff --git a/noncore/apps/opie-console/tabwidget.h b/noncore/apps/opie-console/tabwidget.h
index a701488..42a00ec 100644
--- a/noncore/apps/opie-console/tabwidget.h
+++ b/noncore/apps/opie-console/tabwidget.h
@@ -1,26 +1,27 @@
#ifndef OPIE_TAB_WIDGET_H
#define OPIE_TAB_WIDGET_H
#include <qmap.h>
-#include <opie/otabwidget.h>
+#include <qtabwidget.h>
#include "session.h"
/**
* This is our central tab widget
* we can add sessions here
*/
-class TabWidget : public OTabWidget{
+class TabWidget : public QTabWidget{
Q_OBJECT
public:
TabWidget(QWidget *parent, const char* name );
~TabWidget();
void add( Session* );
void remove( Session* );
+ void setCurrent( Session* );
signals:
void activated(Session* ses );
private slots:
void slotCurChanged( QWidget* wid );
private:
QMap<QWidget*, Session*> m_map;
};
diff --git a/noncore/apps/opie-console/vt102emulation.cpp b/noncore/apps/opie-console/vt102emulation.cpp
index dc977f5..2220f4e 100644
--- a/noncore/apps/opie-console/vt102emulation.cpp
+++ b/noncore/apps/opie-console/vt102emulation.cpp
@@ -617,17 +617,17 @@ void Vt102Emulation::tau( int token, int p, int q )
void Vt102Emulation::sendString(const char* s)
{
QByteArray tmp;
tmp.setRawData( s, strlen( s ));
emit sndBlock( tmp);
}
-void Vt102Emulation::sendString(const QByteArray s)
+void Vt102Emulation::sendString(const QByteArray& s)
{
emit sndBlock( s );
}
// Replies ----------------------------------------------------------------- --
// This section copes with replies send as response to an enquiery control code.
diff --git a/noncore/apps/opie-console/vt102emulation.h b/noncore/apps/opie-console/vt102emulation.h
index 018835e..a3d0ae6 100644
--- a/noncore/apps/opie-console/vt102emulation.h
+++ b/noncore/apps/opie-console/vt102emulation.h
@@ -81,17 +81,17 @@ public:
/**
* receive a char from IOLayer
*/
void onRcvChar(int cc);
/**
* sends a list of bytes to the IOLayer
*/
- void sendString(const QByteArray);
+ void sendString(const QByteArray&);
/**
* @deprecated use QByteArray instead
* see sendString() above
*/
void sendString(const char *);
public: