Add initial implementation for showing and kicking connected clients
[quassel.git] / src / core / coresession.cpp
index 3782f71..635067a 100644 (file)
@@ -105,6 +105,8 @@ CoreSession::CoreSession(UserId uid, bool restoreState, QObject *parent)
     p->attachSlot(SIGNAL(changePassword(PeerPtr,QString,QString,QString)), this, SLOT(changePassword(PeerPtr,QString,QString,QString)));
     p->attachSignal(this, SIGNAL(passwordChanged(PeerPtr,bool)));
 
+    p->attachSlot(SIGNAL(kickClient(int)), this, SLOT(kickClient(int)));
+
     loadSettings();
     initScriptEngine();
 
@@ -717,3 +719,11 @@ void CoreSession::changePassword(PeerPtr peer, const QString &userName, const QS
 
     emit passwordChanged(peer, success);
 }
+
+void CoreSession::kickClient(int peerId) {
+    auto peer = signalProxy()->peerById(peerId);
+    if (!peer) {
+        qWarning() << "Invalid peer Id: " << peerId;
+    }
+    peer->close("Terminated by user action");
+}