You can now jump to buffers with the keyboard. Select the buffer of
authorMarcus Eggenberger <egs@quassel-irc.org>
Mon, 4 Feb 2008 22:25:46 +0000 (22:25 +0000)
committerMarcus Eggenberger <egs@quassel-irc.org>
Mon, 4 Feb 2008 22:25:46 +0000 (22:25 +0000)
choice with the mouse and hit ctrl + [0-9] to bind that buffer to a
key. Jump to that buffer using alt + [0-9].
Not persistent yet :(

src/qtui/mainwin.cpp
src/qtui/mainwin.h
src/uisupport/inputline.cpp
src/uisupport/inputline.h
version.inc

index e88dd35..3d4c12d 100644 (file)
@@ -399,3 +399,38 @@ void MainWin::connectOrDisconnectFromNet() {
   if(net->connectionState() == Network::Disconnected) net->requestConnect();
   else net->requestDisconnect();
 }
+
+void MainWin::keyPressEvent(QKeyEvent *event) {
+#ifdef Q_WS_MAC
+  int bindModifier = Qt::ControlModifier | Qt::AltModifier;
+  int jumpModifier = Qt::ControlModifier;
+#else
+  int bindModifier = Qt::ControlModifier;
+  int jumpModifier = Qt::AltModifier;
+#endif
+
+  if(Qt::Key_0 <= event->key() && event->key() <= Qt::Key_9) {
+    if(event->modifiers() ==  bindModifier) {
+      QModelIndex bufferIdx = Client::bufferModel()->standardSelectionModel()->currentIndex();
+      NetworkId netId = bufferIdx.data(NetworkModel::NetworkIdRole).value<NetworkId>();
+      const Network *net = Client::network(netId);
+      if(!net)
+       return;
+      QString bufferName = bufferIdx.sibling(bufferIdx.row(), 0).data().toString();
+
+      _keyboardJump[event->key()] = bufferIdx;
+      statusBar()->showMessage(tr("Bound Buffer %1::%2 to Key %3").arg(net->networkName()).arg(bufferName).arg(event->key() - Qt::Key_0), 10000);
+      event->accept();
+    }
+    
+    else if(event->modifiers() == jumpModifier && _keyboardJump.contains(event->key())) {
+      Client::bufferModel()->standardSelectionModel()->setCurrentIndex(_keyboardJump[event->key()], QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
+      event->accept();
+    }
+    
+    else {
+      event->ignore();
+    }
+  }
+  event->ignore();
+}
index e285896..277e4e8 100644 (file)
@@ -52,6 +52,7 @@ class MainWin : public QMainWindow {
 
   protected:
     void closeEvent(QCloseEvent *event);
+    virtual void keyPressEvent(QKeyEvent *event);
 
   protected slots:
     void connectedToCore();
@@ -93,6 +94,7 @@ class MainWin : public QMainWindow {
 
     void enableMenus();
 
+    QHash<int, QModelIndex> _keyboardJump;
     QSystemTrayIcon *systray;
 
     CoreConnectDlg *coreConnectDlg;
index 7511e07..1d23faa 100644 (file)
@@ -28,12 +28,25 @@ InputLine::InputLine(QWidget *parent)
 {
   connect(this, SIGNAL(returnPressed()), this, SLOT(enter()));
   tabComplete = new TabCompleter(this);
+
+#ifdef Q_WS_MAC
+  bindModifier = Qt::ControlModifier | Qt::AltModifier;
+  jumpModifier = Qt::ControlModifier;
+#else
+  bindModifier = Qt::ControlModifier;
+  jumpModifier = Qt::AltModifier;
+#endif
 }
 
 InputLine::~InputLine() {
 }
 
 void InputLine::keyPressEvent(QKeyEvent * event) {
+  if(event->modifiers() == jumpModifier || event->modifiers() == bindModifier) {
+    event->ignore();
+    return;
+  }
+  
   if(event->key() == Qt::Key_Tab) { // Tabcomplete
     tabComplete->complete();
     event->accept();
index 802eae2..936e1bd 100644 (file)
@@ -51,6 +51,9 @@ class InputLine : public QLineEdit {
     QStringList nickList;
 
     TabCompleter *tabComplete;
+
+    int bindModifier;
+    int jumpModifier;
 };
 
 #endif
index c0abd2d..3ee32ef 100644 (file)
@@ -5,7 +5,7 @@
 
   quasselVersion = "0.2.0-pre";
   quasselDate = "2008-02-04";
-  quasselBuild = 456;
+  quasselBuild = 457;
 
   //! Minimum client build number the core needs
   clientBuildNeeded = 456;