summaryrefslogtreecommitdiff
path: root/noncore/apps/opie-console/mainwindow.cpp
Side-by-side diff
Diffstat (limited to 'noncore/apps/opie-console/mainwindow.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-console/mainwindow.cpp48
1 files changed, 42 insertions, 6 deletions
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,22 +1,24 @@
#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 );
m_curSession = 0;
m_manager = new ProfileManager( m_factory );
m_manager->load();
@@ -100,25 +102,27 @@ void MainWindow::initUI() {
*/
connect( m_sessionsPop, SIGNAL(activated( int ) ),
this, SLOT(slotProfile( int ) ) );
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() );
}
}
MainWindow::~MainWindow() {
delete m_factory;
manager()->save();
}
@@ -128,53 +132,85 @@ MetaFactory* MainWindow::factory() {
}
Session* MainWindow::currentSession() {
return m_curSession;
}
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;
}