void RSPermissionMatrixWidget::mousePressEvent(QMouseEvent *e) { std::cerr << "mouse pressed at x=" << e->x() << ", y=" << e->y() << std::endl; uint32_t service_id ; RsPeerId peer_id ; if(computeServiceAndPeer(e->x(),e->y(),service_id,peer_id)) { std::cerr << "Peer id: " << peer_id << ", service: " << service_id << std::endl; // make sure the service is not globally disabled RsServicePermissions serv_perms ; rsServiceControl->getServicePermissions(service_id,serv_perms) ; if(!serv_perms.mDefaultAllowed) return ; switchPermission(service_id,peer_id) ; update() ; } else if(computeServiceGlobalSwitch(e->x(),e->y(),service_id)) { switchPermission(service_id) ; update(); } else QFrame::mousePressEvent(e) ; }
void RSPermissionMatrixWidget::mouseMoveEvent(QMouseEvent *e) { uint32_t service_id ; RsPeerId peer_id ; if(computeServiceAndPeer(e->x(),e->y(),service_id,peer_id)) { if(_current_service_id != service_id || _current_peer_id != peer_id) { _current_service_id = service_id ; _current_peer_id = peer_id ; // redraw! update() ; } } else if(computeServiceGlobalSwitch(e->x(),e->y(),service_id)) { peer_id.clear() ; if(_current_service_id != service_id || _current_peer_id != peer_id) { _current_service_id = service_id ; _current_peer_id = peer_id ; // redraw! update() ; } } else { service_id = ~0 ; peer_id.clear() ; } }