Added nicklist for QuasselTopia. Various cosmetic and visual fixes.
[quassel.git] / src / qtopia / qtopiamainwin.cpp
index 1991da9..02bbe71 100644 (file)
 #include "qtopiamainwin.h"
 
 #include "buffertreemodel.h"
+#include "bufferviewwidget.h"
+#include "nicklistwidget.h"
 #include "chatline.h"
 #include "coreconnectdlg.h"
 #include "global.h"
 #include "mainwidget.h"
 #include "message.h"
-#include "qtopiagui.h"
+#include "qtopiaui.h"
 #include "signalproxy.h"
 
+#include <Qtopia>
+#include <QSoftMenuBar>
+
+#define DEBUGMODE
+
 // This constructor is the first thing to be called for a Qtopia app, so we do the init stuff
 // here (rather than in a main.cpp).
 QtopiaMainWin::QtopiaMainWin(QWidget *parent, Qt::WFlags flags) : QMainWindow(parent, flags) {
@@ -43,10 +50,9 @@ QtopiaMainWin::QtopiaMainWin(QWidget *parent, Qt::WFlags flags) : QMainWindow(pa
 
   QCoreApplication::setOrganizationDomain("quassel-irc.org");
   QCoreApplication::setApplicationName("Quassel IRC");
-  QCoreApplication::setOrganizationName("Quassel IRC Development Team");
+  QCoreApplication::setOrganizationName("Quassel IRC Team");
 
-  //Style::init();
-  QtopiaGui *gui = new QtopiaGui(this);
+  QtopiaUi *gui = new QtopiaUi(this);
   Client::init(gui);
 
   setWindowTitle("Quassel IRC");
@@ -56,11 +62,18 @@ QtopiaMainWin::QtopiaMainWin(QWidget *parent, Qt::WFlags flags) : QMainWindow(pa
   mainWidget = new MainWidget(this);
   setCentralWidget(mainWidget);
 
-  QToolBar *toolBar = new QToolBar(this);
+  BufferTreeModel *model = Client::bufferModel();
+  connect(model, SIGNAL(bufferSelected(Buffer *)), this, SLOT(showBuffer(Buffer *)));
+
+  toolBar = new QToolBar(this);
   toolBar->setIconSize(QSize(16, 16));
-  toolBar->addAction(QIcon(":icon/trash"), "Trash");
   addToolBar(toolBar);
 
+  bufferViewWidget = new BufferViewWidget(this);
+  nickListWidget = new NickListWidget(this);
+
+  setupActions();
+
   init();
   //gui->init();
 
@@ -69,7 +82,6 @@ QtopiaMainWin::QtopiaMainWin(QWidget *parent, Qt::WFlags flags) : QMainWindow(pa
 // at this point, client is fully initialized
 void QtopiaMainWin::init() {
   Client::signalProxy()->attachSignal(this, SIGNAL(requestBacklog(BufferInfo, QVariant, QVariant)));
-  connect(Client::bufferModel(), SIGNAL(bufferSelected(Buffer *)), this, SLOT(showBuffer(Buffer *)));
 
   CoreConnectDlg *dlg = new CoreConnectDlg(this);
   //setCentralWidget(dlg);
@@ -82,15 +94,42 @@ QtopiaMainWin::~QtopiaMainWin() {
 
 }
 
+void QtopiaMainWin::closeEvent(QCloseEvent *event) {
+#ifndef DEBUGMODE
+  QMessageBox *box = new QMessageBox(QMessageBox::Question, tr("Quit Quassel IRC?"), tr("Do you really want to quit Quassel IRC?"),
+                                     QMessageBox::Cancel, this);
+  QAbstractButton *quit = box->addButton(tr("Quit"), QMessageBox::AcceptRole);
+  box->exec();
+  if(box->clickedButton() == quit) event->accept();
+  else event->ignore();
+  box->deleteLater();
+#else
+  event->accept();
+#endif
+}
+
+void QtopiaMainWin::setupActions() {
+  showBuffersAction = toolBar->addAction(QIcon(":icon/options-hide"), "Show Buffers", this, SLOT(showBufferView()));  // FIXME provide real icon
+  showNicksAction = toolBar->addAction(QIcon(":icon/list"), "Show Nicks", this, SLOT(showNickList()));
+
+  QMenu *menu = new QMenu(this);
+  menu->addAction(showBuffersAction);
+  menu->addAction(showNicksAction);
+  QSoftMenuBar::addMenuTo(this, menu);
+}
+
 void QtopiaMainWin::connectedToCore() {
   foreach(BufferInfo id, Client::allBufferInfos()) {
     emit requestBacklog(id, 100, -1);
   }
+
+#ifdef DEBUGMODE
   // FIXME just for testing: select first available buffer
-  if(Client::allBufferInfos().count()) {
-    Buffer *b = Client::buffer(Client::allBufferInfos()[0]);
+  if(Client::allBufferInfos().count() > 1) {
+    Buffer *b = Client::buffer(Client::allBufferInfos()[1]);
     Client::bufferModel()->selectBuffer(b);
   }
+#endif
 }
 
 void QtopiaMainWin::disconnectedFromCore() {
@@ -105,5 +144,18 @@ AbstractUiMsg *QtopiaMainWin::layoutMsg(const Message &msg) {
 
 void QtopiaMainWin::showBuffer(Buffer *b) {
   mainWidget->setBuffer(b);
+  bufferViewWidget->hide();
+  nickListWidget->setBuffer(b);
+
+}
+
+void QtopiaMainWin::showBufferView() {
+  bufferViewWidget->showMaximized();
 
 }
+
+void QtopiaMainWin::showNickList() {
+  nickListWidget->showMaximized();
+}
+
+