Diffstat (limited to 'noncore/apps/opie-console/profilemanager.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/apps/opie-console/profilemanager.cpp | 44 |
1 files changed, 35 insertions, 9 deletions
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,23 +1,26 @@ #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 ) { } ProfileManager::~ProfileManager() { } void ProfileManager::load() { m_list.clear(); qWarning("load"); ProfileConfig conf("opie-console-profiles"); @@ -38,43 +41,66 @@ void ProfileManager::load() { prof.setBackground( conf.readNumEntry("back") ); prof.setForeground( conf.readNumEntry("fore") ); prof.setTerminal( conf.readNumEntry("terminal") ); prof.setConf( conf.items( (*it) ) ); /* now add it */ m_list.append( prof ); } } 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() ); conf.writeEntry( "name", (*it).name() ); conf.writeEntry( "iolayer", QString::fromUtf8( (*it).ioLayerName() ) ); conf.writeEntry( "term", QString::fromUtf8( (*it).terminalName() ) ); conf.writeEntry( "back", (*it).background() ); conf.writeEntry( "fore", (*it).foreground() ); conf.writeEntry( "terminal", (*it).terminal() ); /* now the config stuff */ QMap<QString, QString> map = (*it).conf(); |