예제 #1
0
	void GlooxCLEntry::addToPrivacyList (bool add)
	{
		const auto& jid = GetJID ();

		auto lists = Account_->GetClientConnection ()->GetPrivacyListsManager ();

		auto current = lists->GetCurrentList ();
		auto items = current.GetItems ();
		for (const auto& item : items)
		{
			if (item.GetType () != PrivacyListItem::TJid)
				continue;

			if (item.GetValue () != jid)
				continue;

			if ((item.GetAction () == PrivacyListItem::AAllow && !add) ||
				(item.GetAction () == PrivacyListItem::ADeny && add))
				return;

			if (!add)
			{
				items.removeAll (item);
				break;
			}
		}
		if (add)
			items.append (PrivacyListItem (jid, PrivacyListItem::TJid));

		if (items.size () == current.GetItems ().size ())
			return;

		current.SetItems (items);
		lists->SetList (current);
	}
예제 #2
0
void PrivacyList::fromXml(const QDomElement& el)
{
	//qDebug("privacy.cpp: Parsing privacy list");
	if (el.isNull() || el.tagName() != "list") {
		qWarning("privacy.cpp: Invalid root tag for privacy list.");
		return;
	}

	setName(el.attribute("name"));
	for(QDomNode n = el.firstChild(); !n.isNull(); n = n.nextSibling()) {
		QDomElement e = n.toElement();
		if (!e.isNull())
			items_.append(PrivacyListItem(e));
	}

	qSort(items_);
}
예제 #3
0
QList<PrivacyListItem> MySqlStorage::getPrivacyList(QString jid, QString privacyListName)
{
    QSqlQuery query;
    query.prepare("SELECT ptype, pvalue, action, iorder, child FROM qjabberd_privacylist WHERE user_id = :user_id AND privacyListName = :privacyListName");
    query.bindValue(":user_id", getUserId(jid));
    query.bindValue(":privacyListName", privacyListName);
    query.exec();

    QList<PrivacyListItem> itemList;
    while (query.next())
    {
        itemList << PrivacyListItem(query.value(0).toString(),
                                    query.value(1).toString(),
                                    query.value(2).toString(),
                                    query.value(3).toInt(),
                                    QJsonDocument::fromJson(query.value(4).toByteArray()).object().value("childs").toVariant().toStringList().toSet());
    }

    qSort(itemList.begin(), itemList.end());
    return itemList;
}