コード例 #1
0
void YaPrivacyManager::listReceived(const PrivacyList& list)
{
	QStringList previouslyBlockedContacts = blockedContacts();

	if (lists_.contains(list.name()))
		*lists_[list.name()] = list;
	else
		lists_[list.name()] = new PrivacyList(list);

	if (list.name() == BLOCKED_LIST_NAME)
		invalidateBlockedListCache();

	QStringList currentlyBlockedContacts = blockedContacts();
	QStringList updatedContacts;
	updatedContacts += findDifferences(previouslyBlockedContacts, currentlyBlockedContacts);
	updatedContacts += findDifferences(currentlyBlockedContacts, previouslyBlockedContacts);

	foreach(QString contact, updatedContacts) {
		emit simulateContactOffline(contact);

		if (!isContactBlocked(contact)) {
			if (isAuthorized(contact)) {
				JT_Presence* p = new JT_Presence(account_->client()->rootTask());
				p->pres(processJid(contact), account_->status());
				p->go(true);
			}

			{
				JT_Presence* p = new JT_Presence(account_->client()->rootTask());
				p->probe(processJid(contact));
				p->go(true);
			}
		}
	}
コード例 #2
0
	void AddToBlockedRunner::AddToList (const QString& name, PrivacyList list, bool activate)
	{
		deleteLater ();

		if (list.GetName ().isEmpty ())
			list.SetName (name);

		auto items = list.GetItems ();

		const auto& presentIds = QSet<QString>::fromList (Util::Map (items, &PrivacyListItem::GetValue));

		bool modified = false;
		for (const auto& id : Ids_)
		{
			if (presentIds.contains (id))
				continue;

			items.prepend ({ id, PrivacyListItem::Type::Jid });
			modified = true;
		}

		if (!modified)
			return;

		list.SetItems (items);

		const auto plm = Conn_->GetPrivacyListsManager ();
		plm->SetList (list);
		if (activate)
			plm->ActivateList (list.GetName (), PrivacyListsManager::ListType::Default);
	}
コード例 #3
0
 virtual void handlePrivacyList( const std::string& name, const PrivacyList& items )
 {
   printf( "received list: %s\n", name.c_str() );
   PrivacyListHandler::PrivacyList::const_iterator it = items.begin();
   for( ; it != items.end(); it++ )
   {
     printf( "item: type: %d, action: %d, packetType: %d, value: %s\n",
             (*it).type(), (*it).action(), (*it).packetType(), (*it).value().c_str() );
   }
 }
コード例 #4
0
void PrivacyManager::block_getDefaultList_success ( const PrivacyList& l_ )
{
	PrivacyList l = l_;
	disconnect ( this,SIGNAL (defaultListAvailable(PrivacyList)),this,SLOT (block_getDefault_success(PrivacyList)) );
	disconnect ( this,SIGNAL (defaultListError()),this,SLOT (block_getDefault_error()) );
	block_waiting_ = false;
	while ( !block_targets_.isEmpty() )
		l.insertItem ( 0,PrivacyListItem::blockItem ( block_targets_.takeFirst() ) );
	changeList ( l );
}
コード例 #5
0
void AccountModifyDlg::updateBlockedContacts(const PrivacyList& l)
{
	privacyInitialized = true;
	privacyModel.setList(l);
	lb_customPrivacy->setVisible(!l.onlyBlockItems());
	setPrivacyTabEnabled(true);
}
コード例 #6
0
ファイル: privacydlg.cpp プロジェクト: Masterblaster0815/psi
void PrivacyDlg::refreshList(const PrivacyList& list)
{
	if (list.name() == ui_.cb_lists->currentText()) {
		rememberSettings();
		model_.setList(list);
		setWidgetsEnabled(true);
	}
}
コード例 #7
0
void PrivacyManager::getDefault_listReceived ( const PrivacyList& l )
{
	if ( l.name() == getDefault_default_ && getDefault_waiting_ ) {
		disconnect ( this,SIGNAL (listReceived(PrivacyList)),this,SLOT (getDefault_listReceived(PrivacyList)) );
		disconnect ( this,SIGNAL (listError()),this,SLOT (getDefault_listError()) );
		getDefault_waiting_ = false;
		emit defaultListAvailable ( l );
	}
}
コード例 #8
0
ファイル: privacydlg.cpp プロジェクト: Vitozz/psi
void PrivacyDlg::renameList()
{
	QString newName = QInputDialog::getText(this, tr("Rename List"), tr("Input new name"));
	if(newName.isEmpty()) {
		return;
	}
	PrivacyList tmp = model_.list();
	model_.list().setName(newName);
	tmp.clear();
	manager_->changeList(model_.list());
	if(ui_.cb_default->currentText() == tmp.name()) {
		manager_->changeDefaultList(newName);
	}
	if(ui_.cb_active->currentText() == tmp.name()) {
		manager_->changeActiveList(newName);
	}
	manager_->changeList(tmp);
	manager_->requestListNames();
}
コード例 #9
0
	void PrivacyListsConfigDialog::handleGotList (const PrivacyList& list)
	{
		disconnect (Manager_,
				SIGNAL (gotList (const PrivacyList&)),
				this,
				SLOT (handleGotList (const PrivacyList&)));
		Ui_.StatusLabel_->setText (QString ());

		ReinitModel ();

		Lists_ [list.GetName ()] = list;

		QList<PrivacyListItem> items = list.GetItems ();
		if (!items.isEmpty () && items.last ().GetType () == PrivacyListItem::TNone)
		{
			const PrivacyListItem& item = items.takeLast ();
			Ui_.DefaultPolicy_->setCurrentIndex (item.GetAction () == PrivacyListItem::AAllow ? 0 : 1);
		}

		Q_FOREACH (const PrivacyListItem& item, items)
			Model_->appendRow (ToRow (item));
	}
コード例 #10
0
ファイル: glooxclentry.cpp プロジェクト: MellonQ/leechcraft
	void GlooxCLEntry::checkIsBlocked (const PrivacyList& list)
	{
		const auto& items = list.GetItems ();

		const auto& jid = GetJID ();
		const auto pos = std::find_if (items.begin (), items.end (),
				[&jid] (const PrivacyListItem& item)
				{
					return item.GetType () == PrivacyListItem::TJid &&
							item.GetAction () == PrivacyListItem::ADeny &&
							item.GetValue () == jid;
				});
		BlockContact_->setChecked (pos != items.end ());
	}
コード例 #11
0
void MockPrivacyManager::changeList(const PrivacyList& list)
{
	qDebug() << "changeList(" << list.name() << ")";
}