The code which realizes functionality " Control of selected clients "
control group in Control Panel has been added.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@436 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/rfb/VNCSConnectionST.cxx b/rfb/VNCSConnectionST.cxx
index dce1a56..41e4eb3 100644
--- a/rfb/VNCSConnectionST.cxx
+++ b/rfb/VNCSConnectionST.cxx
@@ -34,7 +34,8 @@
   : sock(s), reverseConnection(reverse), server(server_),
     image_getter(server->useEconomicTranslate),
     drawRenderedCursor(false), removeRenderedCursor(false),
-    pointerEventTime(0), accessRights(AccessDefault)
+    pointerEventTime(0), accessRights(AccessDefault),
+    startTime(time(0))
 {
   setStreams(&sock->inStream(), &sock->outStream());
   peerEndpoint.buf = sock->getPeerEndpoint();
@@ -56,7 +57,6 @@
   }
 
   server->clients.push_front(this);
-  startTime = time(0);
 }
 
 
@@ -341,6 +341,7 @@
 
   // - Mark the entire display as "dirty"
   updates.add_changed(server->pb->getRect());
+  startTime = time(0);
 }
 
 void VNCSConnectionST::queryConnection(const char* userName)
@@ -674,3 +675,28 @@
   result[24] = '\0';
   return result; 
 }
+
+void VNCSConnectionST::setStatus(int status)
+{
+  switch (status) {
+  case 0:
+    accessRights = accessRights | AccessPtrEvents | AccessKeyEvents | AccessView;
+    break;
+  case 1:
+    accessRights = accessRights & !(AccessPtrEvents | AccessKeyEvents) | AccessView;
+    break;
+  case 2:
+    accessRights = accessRights & !(AccessPtrEvents | AccessKeyEvents | AccessView);
+    break;
+  }
+}
+int VNCSConnectionST::getStatus()
+{
+  if ((accessRights & (AccessPtrEvents | AccessKeyEvents | AccessView)) == 0x0007)
+    return 0;
+  if ((accessRights & (AccessPtrEvents | AccessKeyEvents | AccessView)) == 0x0001)
+    return 1;
+  if ((accessRights & (AccessPtrEvents | AccessKeyEvents | AccessView)) == 0x0000)
+    return 2;
+  return 4;
+}
\ No newline at end of file