fixes #484 - issues with ssl status indicator
[quassel.git] / src / qtui / mainwin.cpp
index 01fb3b7..78f8d38 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-08 by the Quassel Project                          *
+ *   Copyright (C) 2005-09 by the Quassel Project                          *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -116,20 +116,6 @@ MainWin::MainWin(QWidget *parent)
 
   installEventFilter(new JumpKeyHandler(this));
 
-#ifndef HAVE_KDE
-    QtUi::registerNotificationBackend(new TaskbarNotificationBackend(this));
-    QtUi::registerNotificationBackend(new SystrayNotificationBackend(this));
-#  ifdef HAVE_PHONON
-    QtUi::registerNotificationBackend(new PhononNotificationBackend(this));
-#  endif
-#  ifdef HAVE_DBUS
-    QtUi::registerNotificationBackend(new DesktopNotificationBackend(this));
-#  endif
-
-#else /* HAVE_KDE */
-    QtUi::registerNotificationBackend(new KNotificationBackend(this));
-#endif /* HAVE_KDE */
-
   QtUiApplication* app = qobject_cast<QtUiApplication*> qApp;
   connect(app, SIGNAL(saveStateToSession(const QString&)), SLOT(saveStateToSession(const QString&)));
   connect(app, SIGNAL(saveStateToSessionSettings(SessionSettings&)), SLOT(saveStateToSessionSettings(SessionSettings&)));
@@ -166,6 +152,20 @@ void MainWin::init() {
   setupSystray();
   setupTitleSetter();
 
+#ifndef HAVE_KDE
+  QtUi::registerNotificationBackend(new TaskbarNotificationBackend(this));
+  QtUi::registerNotificationBackend(new SystrayNotificationBackend(this));
+#  ifdef HAVE_PHONON
+  QtUi::registerNotificationBackend(new PhononNotificationBackend(this));
+#  endif
+#  ifdef HAVE_DBUS
+  QtUi::registerNotificationBackend(new DesktopNotificationBackend(this));
+#  endif
+
+#else /* HAVE_KDE */
+  QtUi::registerNotificationBackend(new KNotificationBackend(this));
+#endif /* HAVE_KDE */
+
   // restore mainwin state
   restoreState(s.value("MainWinState").toByteArray());
 
@@ -315,6 +315,7 @@ void MainWin::addBufferView(BufferViewConfig *config) {
   //create the view and initialize it's filter
   BufferView *view = new BufferView(dock);
   view->setFilteredModel(Client::bufferModel(), config);
+  view->installEventFilter(_inputWidget->inputLine()); // for key presses
   view->show();
 
   Client::bufferModel()->synchronizeView(view);
@@ -414,20 +415,20 @@ void MainWin::setupInputWidget() {
   VerticalDock *dock = new VerticalDock(tr("Inputline"), this);
   dock->setObjectName("InputDock");
 
-  InputWidget *inputWidget = new InputWidget(dock);
-  dock->setWidget(inputWidget);
+  _inputWidget = new InputWidget(dock);
+  dock->setWidget(_inputWidget);
 
   addDockWidget(Qt::BottomDockWidgetArea, dock);
 
   _viewMenu->addAction(dock->toggleViewAction());
   dock->toggleViewAction()->setText(tr("Show Input Line"));
 
-  inputWidget->setModel(Client::bufferModel());
-  inputWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
+  _inputWidget->setModel(Client::bufferModel());
+  _inputWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
 
-  _bufferWidget->setFocusProxy(inputWidget);
+  _bufferWidget->setFocusProxy(_inputWidget);
 
-  inputWidget->inputLine()->installEventFilter(_bufferWidget);
+  _inputWidget->inputLine()->installEventFilter(_bufferWidget);
 }
 
 void MainWin::setupTopicWidget() {
@@ -457,13 +458,12 @@ void MainWin::setupStatusBar() {
   connect(Client::messageProcessor(), SIGNAL(progressUpdated(int, int)), msgProcessorStatusWidget, SLOT(setProgress(int, int)));
 
   // Core Lag:
-  updateLagIndicator(0);
+  updateLagIndicator();
   statusBar()->addPermanentWidget(coreLagLabel);
   coreLagLabel->hide();
   connect(Client::signalProxy(), SIGNAL(lagUpdated(int)), this, SLOT(updateLagIndicator(int)));
 
   // SSL indicator
-  connect(Client::instance(), SIGNAL(securedConnection()), this, SLOT(securedConnection()));
   sslLabel->setPixmap(QPixmap());
   statusBar()->addPermanentWidget(sslLabel);
   sslLabel->hide();
@@ -552,8 +552,11 @@ void MainWin::setConnectedState() {
   if(!Client::internalCore())
     statusBar()->showMessage(tr("Connected to core."));
 
-  if(sslLabel->width() == 0)
+  if(Client::signalProxy()->isSecure()) {
+    sslLabel->setPixmap(SmallIcon("security-high"));
+  } else {
     sslLabel->setPixmap(SmallIcon("security-low"));
+  }
 
   sslLabel->setVisible(!Client::internalCore());
   coreLagLabel->setVisible(!Client::internalCore());
@@ -573,13 +576,12 @@ void MainWin::saveLayout() {
 }
 
 void MainWin::updateLagIndicator(int lag) {
-  coreLagLabel->setText(QString(tr("Core Lag: %1 msec")).arg(lag));
-}
-
-
-void MainWin::securedConnection() {
-  // todo: make status bar entry
-  sslLabel->setPixmap(SmallIcon("security-high"));
+  QString text = tr("Core Lag: %1");
+  if(lag == -1)
+    text = text.arg('-');
+  else
+    text = text.arg("%1 msec").arg(lag);
+  coreLagLabel->setText(text);
 }
 
 void MainWin::disconnectedFromCore() {
@@ -613,6 +615,7 @@ void MainWin::setDisconnectedState() {
   statusBar()->showMessage(tr("Not connected to core."));
   sslLabel->setPixmap(QPixmap());
   sslLabel->hide();
+  updateLagIndicator();
   coreLagLabel->hide();
   updateIcon();
 }