#include "buffermodel.h"
#include "nicklistwidget.h"
#include "settingsdlg.h"
+#include "settingspagedlg.h"
#include "signalproxy.h"
#include "topicwidget.h"
#include "inputwidget.h"
connect(ui.actionAboutQt, SIGNAL(triggered()), QApplication::instance(), SLOT(aboutQt()));
actionEditNetworks = new QAction(QIcon(":/22x22/actions/configure"), tr("Edit &Networks..."), this);
- actionEditNetworks->setEnabled(false); // FIXME
ui.menuNetworks->addAction(actionEditNetworks);
+ connect(actionEditNetworks, SIGNAL(triggered()), this, SLOT(showNetworkDlg()));
}
void MainWin::setupViews() {
}
}
+void MainWin::showNetworkDlg() {
+ SettingsPageDlg dlg(new NetworksSettingsPage(this), this);
+ dlg.exec();
+}
+
void MainWin::clientNetworkCreated(NetworkId id) {
const Network *net = Client::network(id);
QAction *act = new QAction(net->networkName(), this);
foreach(QAction *a, networkActions) ui.menuNetworks->addAction(a);
ui.menuNetworks->addSeparator();
ui.menuNetworks->addAction(actionEditNetworks);
-
}
void MainWin::clientNetworkUpdated() {
}
void MainWin::clientNetworkRemoved(NetworkId id) {
- foreach(QAction *a, networkActions) {
- if(a->data().value<NetworkId>() == id) {
- a->deleteLater();
- break;
- }
+ QList<QAction *>::iterator actionIter = networkActions.begin();;
+ QAction *action;
+ while(actionIter != networkActions.end()) {
+ action = *actionIter;
+ if(action->data().value<NetworkId>() == id) {
+ action->deleteLater();
+ actionIter = networkActions.erase(actionIter);
+ } else
+ actionIter++;
}
}
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();
+}