OK, disabled warnings for the moment :)
[quassel.git] / src / qtui / mainwin.cpp
index 817a762..a45bfc1 100644 (file)
@@ -32,6 +32,8 @@
 #include "settingsdlg.h"
 #include "signalproxy.h"
 #include "topicwidget.h"
+#include "inputwidget.h"
+#include "verticaldock.h"
 #include "uisettings.h"
 
 #include "selectionmodelsynchronizer.h"
@@ -58,6 +60,7 @@ MainWin::MainWin(QtUi *_gui, QWidget *parent) : QMainWindow(parent), gui(_gui) {
 
 void MainWin::init() {
   Client::signalProxy()->attachSignal(this, SIGNAL(requestBacklog(BufferInfo, QVariant, QVariant)));
+  Client::signalProxy()->attachSignal(this, SIGNAL(disconnectFromNetwork(NetworkId)));
   ui.bufferWidget->init();
 
   show();
@@ -117,32 +120,42 @@ void MainWin::init() {
     showServerList();
   }
   
+  // DOCK OPTIONS
   setDockNestingEnabled(true);
-  
-  
-  // new Topic Stuff... should be probably refactored out into a separate method
-  
+
   setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea);
   setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
 
   setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea);
   setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);
 
+  // new Topic Stuff... should be probably refactored out into a separate method
+  VerticalDock *topicDock = new VerticalDock(tr("Topic"), this);
+  topicDock->setObjectName("TopicDock");
+  TopicWidget *topicwidget = new TopicWidget(topicDock);
+  topicDock->setWidget(topicwidget);
 
-  QDockWidget *dock = new QDockWidget(tr("Topic Dock"), this);
-  dock->setObjectName("TopicDock");
-  dock->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
+  Client::bufferModel()->mapProperty(1, Qt::DisplayRole, topicwidget, "topic");
 
-  TopicWidget *topicwidget = new TopicWidget(dock);
-  dock->setWidget(topicwidget);
+  addDockWidget(Qt::TopDockWidgetArea, topicDock);
 
-  Client::bufferModel()->mapProperty(1, Qt::DisplayRole, topicwidget, "topic");
+  ui.menuViews->addAction(topicDock->toggleViewAction());
 
-  addDockWidget(Qt::TopDockWidgetArea, dock);
+  // NEW INPUT WIDGET -- damn init() needs a cleanup
+  VerticalDock *inputDock = new VerticalDock(tr("Inputline"), this);
+  inputDock->setObjectName("InputDock");
+  InputWidget *inputWidget = new InputWidget(inputDock);
+  inputDock->setWidget(inputWidget);
 
-  ui.menuViews->addAction(dock->toggleViewAction());
+  addDockWidget(Qt::BottomDockWidgetArea, inputDock);
+
+  ui.menuViews->addAction(inputDock->toggleViewAction());
 
+  inputWidget->setModel(Client::bufferModel());
+  inputWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
 
+  ui.bufferWidget->setFocusProxy(inputWidget);
+  
   // attach the BufferWidget to the PropertyMapper
   ui.bufferWidget->setModel(Client::bufferModel());
   ui.bufferWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
@@ -181,7 +194,9 @@ void MainWin::setupMenus() {
   connect(ui.actionEditIdentities, SIGNAL(triggered()), serverListDlg, SLOT(editIdentities()));
   connect(ui.actionSettingsDlg, SIGNAL(triggered()), this, SLOT(showSettingsDlg()));
   connect(ui.actionDebug_Console, SIGNAL(triggered()), this, SLOT(showDebugConsole()));
+  connect(ui.actionDisconnectNet, SIGNAL(triggered()), this, SLOT(disconnectFromNet()));
   connect(ui.actionAboutQt, SIGNAL(triggered()), QApplication::instance(), SLOT(aboutQt()));
+
 }
 
 void MainWin::setupViews() {
@@ -217,13 +232,13 @@ QDockWidget *MainWin::addBufferView(const QString &viewname, QAbstractItemModel
 }
 
 void MainWin::setupSettingsDlg() {
-#ifdef SPUTDEV
-  connect(settingsDlg, SIGNAL(finished(int)), QApplication::instance(), SLOT(quit()));  // FIXME
-#endif
 
   settingsDlg->registerSettingsPage(new FontsSettingsPage(settingsDlg));
   settingsDlg->registerSettingsPage(new IdentitiesSettingsPage(settingsDlg));
-  //settingsDlg->registerSettingsPage(new NetworksSettingsPage(settingsDlg));
+#ifdef SPUTDEV
+  settingsDlg->registerSettingsPage(new NetworksSettingsPage(settingsDlg));
+  connect(settingsDlg, SIGNAL(finished(int)), QApplication::instance(), SLOT(quit()));  // FIXME
+#endif
 }
 
 void MainWin::connectedToCore() {
@@ -306,7 +321,10 @@ void MainWin::systrayActivated( QSystemTrayIcon::ActivationReason activationReas
     else
       hide();
   }
-  
-  
-  
-}
\ No newline at end of file
+}
+
+void MainWin::disconnectFromNet() {
+  int i = QInputDialog::getInteger(this, tr("Disconnect from Network"), tr("Enter network id:"));
+  emit disconnectFromNetwork(NetworkId(i));
+}
+