Beispiel #1
0
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();
    }
}
Beispiel #2
0
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
}
Beispiel #3
0
//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 );

}
Beispiel #4
0
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);
}