void TorrifyWindow::changeTorIdentity() { auto index = ui->treeView->currentIndex(); if (index != QModelIndex() && index.parent() == QModelIndex()) { auto tor = reinterpret_cast<TorInstance*>(ui->treeView->currentIndex().internalPointer()); if (tor) tor->updateIdentity(); updateUI(); } }
AgentWindow::AgentWindow(Agent *agent, QWidget *parent) : QWidget(parent) , ui(new Ui::AgentWindow) , mAgent(agent) , mHexy(nullptr) , mCameraAction(new QAction(tr("Camera"), this)) , mPairingAction(new QAction(tr("Pair"), this)) , mHardwareAction(new QAction(tr("Configure HW"), this)) , mPlanAction(new QAction(tr("Plan"), this)) , mOnlineAction(new QAction(tr("Online"), this)) , mShowOnlineButtonAction(new QAction(tr("Online Button"), this)) , mShowFaceAction(new QAction(tr("Show Face"), this)) , mShowLogAction(new QAction(tr("Show Log"), this)) , mShowStatsAction(new QAction(tr("Show Stats"), this)) , mShowBirthCertificateAction(new QAction(tr("Show Birth Certificate"), this)) , mUnbirthAction(new QAction(tr("Unbirth!"), this)) { OC_METHODGATE(); ui->setupUi(this); updateIdentity(); if(nullptr!=mAgent) { //Settings &s=agent->settings(); ui->widgetHardware->configure(poseMapping()); //Select correct starting page QWidget *startPage=ui->pageRunning; ui->widgetDelivery->reset(); ui->stackedWidget->setCurrentWidget(mAgent->keyStore().fileExists()?startPage:ui->pageDelivery); if(!QObject::connect(ui->widgetDelivery, &AgentDeliveryWizard::done, [=](bool pairNow) { updateIdentity(); ui->stackedWidget->setCurrentWidget(pairNow?ui->pagePairing:startPage); } ) ) { qWarning()<<"ERROR: Could not connect "; } if(!connect(ui->widgetPairing, &PairingWizard::done, [=]() { ui->stackedWidget->setCurrentWidget(startPage); } )) { qWarning()<<"ERROR: Could not connect "; } if(!connect(ui->widgetHardware, &HardwareWizard::done, [=]() { ui->stackedWidget->setCurrentWidget(startPage); } )) { qWarning()<<"ERROR: Could not connect "; } mAgent->setHookCommsSignals(*this, true); mAgent->hookColorSignals(*ui->widgetFace); ui->widgetFace->hookSignals(*this); ui->widgetPlanEditor->configure("agent.plan"); prepareMenu(); updateFaceVisibility(); updateOnlineStatus(); //QString text="Hello, my name is "+mAgent->name()+". I am an octomy agent. What is your bidding master?"; //QString text="Hello, my name is Bodhi. I am an octomy agent. What is your bidding master? 00 0 01010 010 010 010 010101 "; PortableID id=mAgent->localNodeAssociate()->toPortableID(); new OneOffSpeech(id, text); } #ifdef Q_OS_ANDROID showFullScreen(); #endif }
//SipPhoneProxy::SipPhoneProxy(QObject *parent) : QObject(parent) SipPhoneProxy::SipPhoneProxy(QString localAddress, const QString& sipURI, const QString& userName, const QString& password, QObject *parent) : QObject(parent) { //_formIdentity = NULL; //_formSip = NULL; //_formAudio = NULL; registrations = NULL; int listenPort = 5060; bool looseRoute = false; bool strictRoute = false; _pSipClient = NULL; _pSipUser = NULL; // _audioForSettings = NULL; _pSipAuthentication = NULL; //_pCallAudio = NULL; _pWorkWidget = NULL; _pWorkWidgetContainer = NULL; _pSipRegister = NULL; //atomId = 0; _pSubscribeTimer = NULL; _subscribeExpiresTime = 0; registrations = NULL; _isOnline = false; _buttonSetOffline = false; _setSubscribeOffline = false; _useStunProxy = false; _stunProxyUri = ""; //quitTimer = NULL; FRegAsInitiator = true; //QSettings settings; //Sip::setLocalAddress( settings.value( "/settings/dissipate_addr", Sip::getLocalAddress() ).toString() ); Sip::setLocalAddress( (localAddress == "") ? Sip::getLocalAddress() : localAddress ); //QString socketTypeStr = settings.value( "/settings/General/SocketMode", "UDP" ).toString(); //listenPort = settings.value( "/settings/General/ListenPort", 5060 ).toInt(); QString socketTypeStr = "UDP"; listenPort = gListenPort; // Инициализируем SIP клиент (Терминал пользователя) _pSipClient = new SipClient( 0, 0, listenPort, looseRoute, strictRoute, socketTypeStr ); //QString p = "/settings/Registration/"; QString uriStr = sipURI;// settings.value(p + "SipUri" ).toString(); //if( settings.value( p + "UseProxyDial", "Yes" ).toString() == "Yes" ) //{ // _pSipClient->setUseProxyDial( true ); //} //else //{ // _pSipClient->setUseProxyDial( false ); //} _pSipClient->setUseProxyDial( true ); //if( settings.value( "/settings/Symmetric/Signalling", "Yes" ).toString() == "Yes" ) //{ // _pSipClient->setSymmetricMode( true ); //} _pSipClient->setSymmetricMode( true ); //QString hvstr = settings.value( "/settings/Symmetric/hideviamode", "NoHide" ).toString(); //if( hvstr == "NoHide" ) //{ // _pSipClient->setHideViaMode( SipClient::DontHideVia ); //} //else if( hvstr == "HideHop" ) //{ // _pSipClient->setHideViaMode( SipClient::HideHop ); //} //else if( hvstr == "HideRoute" ) //{ // _pSipClient->setHideViaMode( SipClient::HideRoute ); //} _pSipClient->setHideViaMode( SipClient::DontHideVia ); // Создаем пользователя для SIP-клиента (_pSipClient). // Пользователь идентифицируется по URI из настроек (uriStr) SipUri userURI = SipUri( uriStr ); userURI.setProxyUsername(userName); userURI.setPassword(password); //_pSipUser = new SipUser( _pSipClient, SipUri( uriStr ) ); _pSipUser = new SipUser( _pSipClient, userURI ); //connect( _pSipClient, SIGNAL( updateSubscribes() ), this, SLOT( updateSubscribes() ) ); connect( _pSipClient, SIGNAL( incomingSubscribe( SipCallMember *, bool ) ), this, SLOT( incomingSubscribe( SipCallMember *, bool ) ) ); connect( _pSipClient, SIGNAL( incomingCall( SipCall *, QString ) ), this, SLOT( incomingCall( SipCall *, QString ) ) ); connect( _pSipClient, SIGNAL( hideCallWidget( SipCall * ) ), this, SLOT( hideCallWidget( SipCall * ) ) ); //connect( _pSipClient, SIGNAL( incomingInstantMessage( SipMessage * ) ), this, SLOT( incomingInstantMessage( SipMessage * ) ) ); // То, что болтается KPhoneView _pSipRegister = 0; _buttonSetOffline = false; _setSubscribeOffline = false; // Объект аутентификации. Используется для запроса пароля в случае если его нет или он не верен. // Для этого в объекте есть слот: authRequest // Здесь только инициализация. Использование в других ф-иях _pSipAuthentication = new KSipAuthentication(); //atomId = 1000; //p = "/settings/local/"; //_subscribeExpiresTime = settings.value( p + "SubscribeExpiresTime", constSubscribeExpiresTime ).toInt(); _subscribeExpiresTime = constSubscribeExpiresTime; if( _subscribeExpiresTime == 0 ) { _subscribeExpiresTime = -1; } _pSubscribeTimer = new QTimer( this ); connect( _pSubscribeTimer, SIGNAL( timeout() ), this, SLOT( localStatusUpdate() ) ); //isOnline = false; //p = "/settings/presence/"; //int count = 0; //label.setNum( count ); //label = p + "/Rejected" + label; //QString s = settings.readEntry( label, "" ); //while( !s.isEmpty() ) //{ // rejectedContactList.append( s ); // label.setNum( ++count ); // label = p + "/Rejected" + label; // s = settings.readEntry( label, "" ); //} // Объект CallAudio создается для изменения настроек Audio (что-то тут не чисто... не правильно как-то) //_audioForSettings = new CallAudio(); if( uriStr != QString::null ) { //QString p = "/settings/Registration/"; //QString userdefaultproxy = settings.value( p + "SipServer", "" ).toString(); QString userdefaultproxy = ""; if( userdefaultproxy.toLower() == "sip:" ) { userdefaultproxy = ""; } updateIdentity(_pSipUser); //view->updateIdentity( user ); _pSipClient->updateIdentity( _pSipUser, userdefaultproxy ); } //registrations = new RSipRegistrations(_pSipClient, this, this); ////_formIdentity = new RIdentityForm( _client, view, this, getUserPrefix() ); ////view->identities( registrations ); //identities( registrations ); //if( registrations->getUseStun() ) //{ // //view->setStunSrv( registrations->getStunSrv() ); // setStunSrv( registrations->getStunSrv() ); // _pSipClient->sendStunRequest( registrations->getStunSrv() ); // QTimer *stun_timer = new QTimer( this ); // connect( stun_timer, SIGNAL( timeout() ), this, SLOT( stun_timerTick() ) ); // p = "/settings/Registration/"; // int timeout = settings.value( p + "RequestPeriod", constStunRequestPeriod ).toInt(); // if( timeout > 0 ) // { // stun_timer->start( timeout * 1000 ); // } //} //QTimer *timer = new QTimer( this ); //connect( timer, SIGNAL( timeout() ), this, SLOT( timerTick() ) ); //timer->start( 20 ); }
void AgentWindow::prepareMenu() { OC_METHODGATE(); Settings *s=(nullptr!=mAgent)?(&mAgent->settings()):nullptr; // Camera ////////////////// mCameraAction->setStatusTip(tr("Do the camera dance")); mCameraAction->setIcon(QIcon(":/icons/eye.svg")); connect(mCameraAction, &QAction::triggered, this, &AgentWindow::onStartCameraPairing); mMenu.addAction(mCameraAction); // Pairing wizard ////////////////// mPairingAction->setStatusTip(tr("Do the pairing dance")); mPairingAction->setIcon(QIcon(":/icons/pair.svg")); connect(mPairingAction, &QAction::triggered, this, &AgentWindow::onStartPairing); mMenu.addAction(mPairingAction); // Hardware wizard ////////////////// mHardwareAction->setStatusTip(tr("Connect to the body of the robot")); mHardwareAction->setIcon(QIcon(":/icons/actuator_control.svg")); connect(mHardwareAction, &QAction::triggered, this, &AgentWindow::onStartHardware); mMenu.addAction(mHardwareAction); // Plan editor ////////////////// mPlanAction->setStatusTip(tr("Do the planning dance")); mPlanAction->setIcon(QIcon(":/icons/mandate.svg")); connect(mPlanAction, &QAction::triggered, this, &AgentWindow::onStartPlanEditor); mMenu.addAction(mPlanAction); // Online status ////////////////// mOnlineAction->setStatusTip(tr("Toggle availability of Agent")); mOnlineAction->setCheckable(true); if(nullptr!=s) { mOnlineAction->setChecked(s->getCustomSettingBool("octomy.online")); } connect(mOnlineAction, &QAction::triggered, this, &AgentWindow::onOnlineChanged); mMenu.addAction(mOnlineAction); // Online button ////////////////// mShowOnlineButtonAction->setStatusTip(tr("Show connect button in main screen")); mShowOnlineButtonAction->setCheckable(true); if(nullptr!=s) { mShowOnlineButtonAction->setChecked(s->getCustomSettingBool("octomy.online.show")); } connect(mShowOnlineButtonAction, &QAction::triggered, this, &AgentWindow::onOnlineButtonVisibilityChanged); mMenu.addAction(mShowOnlineButtonAction); // Show Face ////////////////// mShowFaceAction->setStatusTip(tr("Show face in main screen")); mShowFaceAction->setCheckable(true); if(nullptr!=s) { mShowFaceAction->setChecked(s->getCustomSettingBool("octomy.face")); } connect(mShowFaceAction, &QAction::triggered, this, &AgentWindow::onFaceVisibilityChanged); mMenu.addAction(mShowFaceAction); // Show Log scroll ////////////////// mShowLogAction->setStatusTip(tr("Show log in main screen")); mShowLogAction->setCheckable(true); if(nullptr!=s) { mShowLogAction->setChecked(s->getCustomSettingBool("octomy.debug.log")); } connect(mShowLogAction, &QAction::triggered, this, &AgentWindow::onLogVisibilityChanged); mMenu.addAction(mShowLogAction); // Show Stats ////////////////// mShowStatsAction->setStatusTip(tr("Show stats in main screen")); mShowStatsAction->setCheckable(true); if(nullptr!=s) { mShowStatsAction->setChecked(s->getCustomSettingBool("octomy.debug.stats")); } connect(mShowStatsAction, &QAction::triggered, this, &AgentWindow::onStatsVisibilityChanged); mMenu.addAction(mShowStatsAction); // Show birth certificate /////////////////////////// mShowBirthCertificateAction->setStatusTip(tr("Show the birth certificate of this agent")); mShowBirthCertificateAction->setIcon(QIcon(":/icons/certificate.svg")); connect(mShowBirthCertificateAction, &QAction::triggered, this, &AgentWindow::onStartShowBirthCertificate); mMenu.addAction(mShowBirthCertificateAction); // Unbirth ////////////////// mUnbirthAction->setStatusTip(tr("Delete the identity of this agent to restart birth")); mUnbirthAction->setIcon(QIcon(":/icons/kill.svg")); connect(mUnbirthAction, &QAction::triggered, this, [=]() { if(nullptr!=mAgent) { QMessageBox::StandardButton reply = QMessageBox::question(this, "Unbirth", "Are you sure you want to DELETE the personality of this robot forever?", QMessageBox::No|QMessageBox::Yes); if (QMessageBox::Yes==reply) { QSharedPointer<NodeAssociate> assID=mAgent->nodeIdentity(); if(nullptr!=assID) { mAgent->peers().removeParticipant(assID->id()); } else { qWarning()<<"WARNING: there was no assID during unbirth"; } mAgent->peers().save(); mAgent->keyStore().clear(); updateIdentity(); ui->widgetDelivery->reset(); ui->stackedWidget->setCurrentWidget(ui->pageDelivery); qDebug()<<"UNBIRTHED!"; } } }); mMenu.addAction(mUnbirthAction); }