Pressing enter in the topic line now sets the channel topic.
[quassel.git] / src / qtui / mainwin.cpp
index 5b43087..e6f3a54 100644 (file)
@@ -254,6 +254,8 @@ void MainWin::setupTopicWidget() {
   VerticalDock *dock = new VerticalDock(tr("Topic"), this);
   dock->setObjectName("TopicDock");
   TopicWidget *topicwidget = new TopicWidget(dock);
+  connect(topicwidget, SIGNAL(topicChanged(const QString &)), this, SLOT(changeTopic(const QString &)));
+
   dock->setWidget(topicwidget);
 
   Client::bufferModel()->mapProperty(1, Qt::DisplayRole, topicwidget, "topic");
@@ -266,9 +268,8 @@ void MainWin::setupTopicWidget() {
 void MainWin::setupSystray() {
   systray = new QSystemTrayIcon(this);
   systray->setIcon(QIcon(":/icons/quassel-icon.png"));
-
-  QString toolTip("Left click to minimize the Quassel Client to tray");
-  systray->setToolTip(toolTip);
+//  systray->setToolTip("left click to minimize the quassel client to tray");
+//  systray->setToolTip(toolTip);
 
   systrayMenu = new QMenu(this);
   systrayMenu->addAction(ui.actionAboutQuassel);
@@ -298,11 +299,20 @@ void MainWin::changeEvent(QEvent *event) {
       QtUiSettings s;
       if(s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnMinimize").toBool()) {
         toggleVisibility();
+        event->ignore();
       }
     }
   }
 }
 
+// FIXME this should be made prettier...
+void MainWin::changeTopic(const QString &topic) {
+  BufferId id = ui.bufferWidget->currentBuffer();
+  if(!id.isValid()) return;
+  Buffer *buffer = Client::buffer(id);
+  if(buffer) Client::userInput(buffer->bufferInfo(), QString("/topic %1").arg(topic));
+}
+
 void MainWin::connectedToCore() {
   foreach(BufferInfo id, Client::allBufferInfos()) {
     emit requestBacklog(id, 1000, -1);
@@ -374,7 +384,7 @@ void MainWin::systrayActivated( QSystemTrayIcon::ActivationReason activationReas
 }
 
 void MainWin::toggleVisibility() {
-  if(isHidden() || !isActiveWindow()) {
+  if(isHidden() /*|| !isActiveWindow()*/) {
     show();
     if(isMinimized())
       if (isMaximized())
@@ -383,9 +393,11 @@ void MainWin::toggleVisibility() {
         showNormal();
 
     raise();
-    activateWindow();
+    setFocus(Qt::ActiveWindowFocusReason);
+    // activateWindow();
   } else {
     if(systray->isSystemTrayAvailable ()) {
+      clearFocus();
       hide();
       if(!systray->isVisible()) {
         systray->show();