summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (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,4 +1,6 @@
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
@@ -19,15 +21,17 @@ 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
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
@@ -3,4 +3,5 @@
#include "serialconfigwidget.h"
#include "terminalwidget.h"
+#include "vt102emulation.h"
#include "default.h"
@@ -45,4 +46,9 @@ extern "C" {
}
+ // VT Emulations
+ EmulationLayer* newVT102( Widget* wid ) {
+ return new Vt102Emulation( wid );
+ }
+
};
@@ -62,4 +68,5 @@ Default::Default( MetaFactory* fact ) {
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
@@ -4,4 +4,6 @@
#include "metafactory.h"
+class Widget;
+
extern "C" {
FileTransferLayer* newSZTransfer(IOLayer*);
@@ -18,4 +20,6 @@ extern "C" {
ProfileDialogWidget* newTerminalWidget(const QString&, QWidget* );
+
+ EmulationLayer* newVT102( Widget* );
};
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
@@ -27,5 +27,5 @@
#define EMULATION_LAYER_H
-#include "widget.h"
+#include "widget_layer.h"
#include "screen.h"
#include <qtimer.h>
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
@@ -628,4 +628,5 @@ static QDict<KeyTrans> * path2keymap = 0L;
KeyTrans* KeyTrans::find(int numb)
{
+ loadAll();
KeyTrans* res = numb2keymap->find(numb);
return res ? res : numb2keymap->find(0);
@@ -634,4 +635,5 @@ KeyTrans* KeyTrans::find(int numb)
KeyTrans* KeyTrans::find(const char* path)
{
+ loadAll();
KeyTrans* res = path2keymap->find(path);
return res ? res : numb2keymap->find(0);
@@ -640,4 +642,5 @@ KeyTrans* KeyTrans::find(const char* path)
int KeyTrans::count()
{
+ loadAll();
return numb2keymap->count();
}
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
@@ -6,7 +6,9 @@
#include <qtoolbar.h>
+#include "profileeditordialog.h"
#include "configdialog.h"
#include "default.h"
#include "metafactory.h"
+#include "profile.h"
#include "profilemanager.h"
#include "mainwindow.h"
@@ -110,5 +112,7 @@ ProfileManager* MainWindow::manager() {
return m_manager;
}
-
+TabWidget* MainWindow::tabWidget() {
+ return m_consoleWindow;
+}
void MainWindow::populateProfiles() {
m_sessionsPop->clear();
@@ -138,4 +142,10 @@ QList<Session> MainWindow::sessions() {
void MainWindow::slotNew() {
qWarning("New Connection");
+ ProfileEditorDialog dlg(factory() );
+ int ret = dlg.exec();
+
+ if ( ret == QDialog::Accepted ) {
+ create( dlg.profile() );
+ }
}
@@ -153,6 +163,6 @@ void MainWindow::slotTerminate() {
if ( currentSession() )
currentSession()->layer()->close();
- delete m_curSession;
- m_curSession = 0l;
+
+ slotClose();
/* FIXME move to the next session */
}
@@ -171,10 +181,36 @@ void MainWindow::slotConfigure() {
}
}
-
+/*
+ * 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
@@ -18,5 +18,5 @@ class MetaFactory;
class TabWidget;
class ProfileManager;
-
+class Profile;
class MainWindow : public QMainWindow {
Q_OBJECT
@@ -46,4 +46,5 @@ public:
*/
ProfileManager* manager();
+ TabWidget* tabWidget();
private slots:
@@ -59,4 +60,5 @@ private:
void initUI();
void populateProfiles();
+ void create( const Profile& );
/**
* the current session
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
@@ -31,4 +31,10 @@ void MetaFactory::addFileTransferLayer( const QCString& 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;
@@ -63,4 +69,12 @@ QStringList MetaFactory::fileTransferLayers()const {
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 ) {
@@ -102,4 +116,15 @@ ProfileDialogWidget *MetaFactory::newTerminalPlugin( const QString& str, QWidget
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];
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
@@ -16,5 +16,7 @@
#include "profile.h"
#include "profiledialogwidget.h"
+#include "emulation_layer.h"
+class Widget;
class MetaFactory {
public:
@@ -22,4 +24,5 @@ public:
typedef IOLayer* (*iolayer)(const Profile& );
typedef FileTransferLayer* (*filelayer)(IOLayer*);
+ typedef EmulationLayer* (*emulationLayer)(Widget* );
MetaFactory();
@@ -51,12 +54,29 @@ public:
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* );
/*
@@ -80,4 +100,5 @@ private:
QMap<QString, iolayer> m_layerFact;
QMap<QString, filelayer> m_fileFact;
+ QMap<QString, emulationLayer> m_emu;
};
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
@@ -3,7 +3,10 @@
#include <qfile.h>
+#include <qlayout.h>
+#include <qwidgetstack.h>
#include <qpe/config.h>
+#include "widget.h"
#include "metafactory.h"
#include "profileconfig.h"
@@ -52,15 +55,38 @@ 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;
}
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
@@ -23,5 +23,5 @@ public:
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();
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
@@ -3,22 +3,31 @@
#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;
}
@@ -26,9 +35,35 @@ 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;
}
@@ -37,2 +72,10 @@ void Session::setIOLayer( IOLayer* lay ) {
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
@@ -2,7 +2,9 @@
#define OPIE_SESSION_H
-#include <qwidget.h>
+#include <qwidgetstack.h>
class IOLayer;
+class EmulationLayer;
+class Widget;
/**
* This is a Session. A session contains
@@ -18,5 +20,5 @@ public:
*/
Session();
- Session( const QString&, QWidget* widget, IOLayer* );
+ Session( const QString&, QWidgetStack* widget, IOLayer* );
~Session();
@@ -27,7 +29,11 @@ public:
/**
- * return the widget
+ * return the widgetstack
+ * this is used to be semi modal
+ * for FileTransfer
+ *
+ * semi modal == SessionModal
*/
- QWidget* widget();
+ QWidgetStack* widgetStack();
/**
@@ -35,5 +41,23 @@ public:
*/
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& );
@@ -41,6 +65,8 @@ public:
private:
QString m_name;
- QWidget* m_widget;
+ QWidgetStack* m_widget;
IOLayer* m_layer;
+ EmulationLayer* m_emLay;
+ Widget* m_widLay;
};
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
@@ -3,5 +3,5 @@
TabWidget::TabWidget( QWidget* parent, const char* name )
- : OTabWidget( parent, name ) {
+ : QTabWidget( parent, name ) {
connect(this, SIGNAL( currentChanged(QWidget*) ),
this, SLOT( slotCurChanged(QWidget*) ) );
@@ -12,12 +12,15 @@ 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() );
}
@@ -31,4 +34,10 @@ void TabWidget::slotCurChanged( QWidget* wid ) {
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
@@ -3,5 +3,5 @@
#include <qmap.h>
-#include <opie/otabwidget.h>
+#include <qtabwidget.h>
#include "session.h"
@@ -10,5 +10,5 @@
* we can add sessions here
*/
-class TabWidget : public OTabWidget{
+class TabWidget : public QTabWidget{
Q_OBJECT
public:
@@ -17,4 +17,5 @@ public:
void add( Session* );
void remove( Session* );
+ void setCurrent( Session* );
signals:
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
@@ -623,5 +623,5 @@ void Vt102Emulation::sendString(const char* s)
}
-void Vt102Emulation::sendString(const QByteArray s)
+void Vt102Emulation::sendString(const QByteArray& s)
{
emit sndBlock( s );
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
@@ -87,5 +87,5 @@ public:
* sends a list of bytes to the IOLayer
*/
- void sendString(const QByteArray);
+ void sendString(const QByteArray&);
/**