-rw-r--r-- | noncore/apps/opie-console/mainwindow.cpp | 13 | ||||
-rw-r--r-- | noncore/apps/opie-console/opie-console.pro | 8 | ||||
-rw-r--r-- | noncore/apps/opie-console/profileeditordialog.cpp | 20 | ||||
-rw-r--r-- | noncore/apps/opie-console/profileeditordialog.h | 28 | ||||
-rw-r--r-- | noncore/apps/opie-console/profilemanager.cpp | 15 | ||||
-rw-r--r-- | noncore/apps/opie-console/profilemanager.h | 2 | ||||
-rw-r--r-- | noncore/apps/opie-console/settings.ui | 23 |
7 files changed, 104 insertions, 5 deletions
diff --git a/noncore/apps/opie-console/mainwindow.cpp b/noncore/apps/opie-console/mainwindow.cpp index 3c1c8ea..88d5823 100644 --- a/noncore/apps/opie-console/mainwindow.cpp +++ b/noncore/apps/opie-console/mainwindow.cpp @@ -1,156 +1,167 @@ #include <qaction.h> #include <qmenubar.h> #include <qlabel.h> #include <qpopupmenu.h> #include <qtoolbar.h> +#include "configdialog.h" #include "metafactory.h" #include "profilemanager.h" #include "mainwindow.h" MainWindow::MainWindow() { m_factory = new MetaFactory(); m_sessions.setAutoDelete( TRUE ); m_curSession = 0; m_manager = new ProfileManager(m_factory); + m_manager->load(); initUI(); populateProfiles(); } void MainWindow::initUI() { setToolBarsMovable( FALSE ); m_tool = new QToolBar( this ); m_tool->setHorizontalStretchable( TRUE ); 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 */ QAction* a = new QAction(); a->setText( tr("New Connection") ); a->addTo( m_console ); connect(a, SIGNAL(activated() ), this, SLOT(slotNew() ) ); /* * 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() ) ); a = new QAction(); a->setText( tr("Close Window") ); a->addTo( m_console ); connect(a, SIGNAL(activated() ), this, SLOT(slotClose() ) ); /* * 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 ); /* * connect to the menu activation */ connect( m_sessionsPop, SIGNAL(activated(int) ), this, SLOT(slotProfile(int) ) ); } ProfileManager* MainWindow::manager() { return m_manager; } void MainWindow::populateProfiles() { - manager()->load(); + m_sessionsPop->clear(); Profile::ValueList list = manager()->all(); for (Profile::ValueList::Iterator it = list.begin(); it != list.end(); ++it ) { m_sessionsPop->insertItem( (*it).name() ); } } MainWindow::~MainWindow() { delete m_factory; } MetaFactory* MainWindow::factory() { return m_factory; } Session* MainWindow::currentSession() { return m_curSession; } 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"); + ConfigDialog conf( manager()->all() ); + conf.showMaximized(); + + int ret = conf.exec(); + + if ( QDialog::Accepted == ret ) { + manager()->setProfiles( conf.list() ); + populateProfiles(); + } } void MainWindow::slotClose() { } void MainWindow::slotProfile(int) { } diff --git a/noncore/apps/opie-console/opie-console.pro b/noncore/apps/opie-console/opie-console.pro index e045a48..9e44ab0 100644 --- a/noncore/apps/opie-console/opie-console.pro +++ b/noncore/apps/opie-console/opie-console.pro @@ -1,28 +1,30 @@ TEMPLATE = app CONFIG = qt warn_on release DESTDIR = $(OPIEDIR)/bin HEADERS = io_layer.h io_serial.h \ file_layer.h \ metafactory.h \ session.h \ mainwindow.h \ profile.h \ profileconfig.h \ profilemanager.h \ configwidget.h \ - tabwidget.h + tabwidget.h \ + configdialog.h SOURCES = io_layer.cpp io_serial.cpp \ file_layer.cpp main.cpp \ metafactory.cpp \ session.cpp \ mainwindow.cpp \ profile.cpp \ profileconfig.cpp \ profilemanager.cpp \ - tabwidget.cpp -INTERFACES = + tabwidget.cpp \ + configdialog.cpp +INTERFACES = configurebase.ui editbase.ui INCLUDEPATH += $(OPIEDIR)/include DEPENDPATH += $(OPIEDIR)/include LIBS += -lqpe -lopie TARGET = opie-console diff --git a/noncore/apps/opie-console/profileeditordialog.cpp b/noncore/apps/opie-console/profileeditordialog.cpp new file mode 100644 index 0000000..a4246e1 --- a/dev/null +++ b/noncore/apps/opie-console/profileeditordialog.cpp @@ -0,0 +1,20 @@ + +#include "profileeditordialog.h" + + +ProfileEditorDialog::ProfileEditorDialog( MetaFactory* fact, + const Profile& prof ) + : QDialog(0, 0, TRUE), m_fact( fact ), m_prof( prof ) +{ + initUI(); + /* now set the widgets */ +} +ProfileEditorDialog::ProfileEditorDialog( MetaFactory* fact ) + : QDialog(0, 0, TRUE), m_fact( fact ) +{ + +} +ProfileEditorDialog::~ProfileEditorDialog() { + +} + diff --git a/noncore/apps/opie-console/profileeditordialog.h b/noncore/apps/opie-console/profileeditordialog.h new file mode 100644 index 0000000..5ccc691 --- a/dev/null +++ b/noncore/apps/opie-console/profileeditordialog.h @@ -0,0 +1,28 @@ +#ifndef PROFILE_EDITOR_DIALOG +#define PROFILE_EDITOR_DIALOG + +#include <qdialog.h> + +#include "profile.h" + +class MetaFactory; +class EditBase; +class QTabWidget; +class QHBoxLayout; +class ProfileEditorDialog : public QDialog { + Q_OBJECT +public: + ProfileEditorDialog(MetaFactory* fact, + const Profile& prof ); + ProfileEditorDialog(MetaFactory* fact ); + Profile profile()const; +private: + void initUI(); + MetaFactory* m_fact; + EditBase* m_base; + QTabWidget* m_tab; + QHBoxLayout* m_lay; + Profile m_prof; +}; + +#endif diff --git a/noncore/apps/opie-console/profilemanager.cpp b/noncore/apps/opie-console/profilemanager.cpp index 24256a5..72a5117 100644 --- a/noncore/apps/opie-console/profilemanager.cpp +++ b/noncore/apps/opie-console/profilemanager.cpp @@ -1,80 +1,93 @@ #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(); qWarning("load"); ProfileConfig conf("opie-console-profiles"); QStringList groups = conf.groups(); QStringList::Iterator it; /* * for each profile */ for ( it = groups.begin(); it != groups.end(); ++it ) { qWarning("group " + (*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") ); 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) { 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( ) { ProfileConfig conf("opie-console-profiles"); conf.clearAll(); 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( "ioplayer", (*it).ioLayerName() ); 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(); QMap<QString, QString>::Iterator it; for ( it = map.begin(); it != map.end(); ++it ) { conf.writeEntry( it.key(), it.data() ); } } - // FIXME save +} +void ProfileManager::setProfiles( const Profile::ValueList& list ) { + m_list = list; +}; +Profile ProfileManager::profile( const QString& name )const { + Profile prof; + Profile::ValueList::ConstIterator it; + for ( it = m_list.begin(); it != m_list.end(); ++it ) { + if ( name == (*it).name() ) { + prof = (*it); + break; + } + } + return prof; } diff --git a/noncore/apps/opie-console/profilemanager.h b/noncore/apps/opie-console/profilemanager.h index d4d0fd0..1387247 100644 --- a/noncore/apps/opie-console/profilemanager.h +++ b/noncore/apps/opie-console/profilemanager.h @@ -1,30 +1,32 @@ #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 ); + Profile profile(const QString& name )const; Session* fromProfile( const Profile& ); + void setProfiles( const Profile::ValueList& ); void save(); private: MetaFactory* m_fact; Profile::ValueList m_list; }; #endif diff --git a/noncore/apps/opie-console/settings.ui b/noncore/apps/opie-console/settings.ui new file mode 100644 index 0000000..6944dd0 --- a/dev/null +++ b/noncore/apps/opie-console/settings.ui @@ -0,0 +1,23 @@ +<!DOCTYPE UI><UI> +<class>Settings</class> +<widget> + <class>QDialog</class> + <property stdset="1"> + <name>name</name> + <cstring>Settings</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>0</x> + <y>0</y> + <width>596</width> + <height>480</height> + </rect> + </property> + <property stdset="1"> + <name>caption</name> + <string>Settings</string> + </property> +</widget> +</UI> |