1
0
Fork 0
forked from blue/squawk

backend adapter for vCard phones list

This commit is contained in:
Blue 2019-11-05 21:55:21 +03:00
parent 5bbacad84a
commit c1c1de1b7b
6 changed files with 281 additions and 98 deletions

View file

@ -1347,36 +1347,7 @@ void Core::Account::onVCardReceived(const QXmppVCardIq& card)
}
Shared::VCard vCard;
vCard.setFullName(card.fullName());
vCard.setFirstName(card.firstName());
vCard.setMiddleName(card.middleName());
vCard.setLastName(card.lastName());
vCard.setBirthday(card.birthday());
vCard.setNickName(card.nickName());
vCard.setDescription(card.description());
vCard.setUrl(card.url());
QXmppVCardOrganization org = card.organization();
vCard.setOrgName(org.organization());
vCard.setOrgRole(org.role());
vCard.setOrgUnit(org.unit());
vCard.setOrgTitle(org.title());
QList<QXmppVCardEmail> emails = card.emails();
std::deque<Shared::VCard::Email>& myEmails = vCard.getEmails();
for (const QXmppVCardEmail& em : emails) {
Shared::VCard::Email mEm(em.address());
QXmppVCardEmail::Type et = em.type();
if (et & QXmppVCardEmail::Preferred) {
mEm.prefered = true;
}
if (et & QXmppVCardEmail::Home && !(et & QXmppVCardEmail::Work)) {
mEm.role = Shared::VCard::Email::home;
} else if (!(et & QXmppVCardEmail::Home) && et & QXmppVCardEmail::Work) {
mEm.role = Shared::VCard::Email::work;
}
myEmails.emplace_back(mEm);
}
initializeVCard(vCard, card);
if (item->hasAvatar()) {
if (!item->isAvatarAutoGenerated()) {
@ -1480,19 +1451,8 @@ void Core::Account::onOwnVCardReceived(const QXmppVCardIq& card)
ownVCardRequestInProgress = false;
Shared::VCard vCard;
vCard.setFullName(card.fullName());
vCard.setFirstName(card.firstName());
vCard.setMiddleName(card.middleName());
vCard.setLastName(card.lastName());
vCard.setBirthday(card.birthday());
vCard.setNickName(card.nickName());
vCard.setDescription(card.description());
vCard.setUrl(card.url());
QXmppVCardOrganization org = card.organization();
vCard.setOrgName(org.organization());
vCard.setOrgRole(org.role());
vCard.setOrgUnit(org.unit());
vCard.setOrgTitle(org.title());
initializeVCard(vCard, card);
if (avatarType.size() > 0) {
vCard.setAvatarType(Shared::Avatar::valid);
vCard.setAvatarPath(path + "avatar." + avatarType);
@ -1500,24 +1460,6 @@ void Core::Account::onOwnVCardReceived(const QXmppVCardIq& card)
vCard.setAvatarType(Shared::Avatar::empty);
}
QList<QXmppVCardEmail> emails = card.emails();
std::deque<Shared::VCard::Email>& myEmails = vCard.getEmails();
for (const QXmppVCardEmail& em : emails) {
Shared::VCard::Email mEm(em.address());
QXmppVCardEmail::Type et = em.type();
if (et & QXmppVCardEmail::Preferred) {
mEm.prefered = true;
}
if (et & QXmppVCardEmail::Home && !(et & QXmppVCardEmail::Work)) {
mEm.role = Shared::VCard::Email::home;
} else if (!(et & QXmppVCardEmail::Home) && et & QXmppVCardEmail::Work) {
mEm.role = Shared::VCard::Email::work;
}
myEmails.emplace_back(mEm);
}
emit receivedVCard(getLogin() + "@" + getServer(), vCard);
}
@ -1555,41 +1497,7 @@ void Core::Account::requestVCard(const QString& jid)
void Core::Account::uploadVCard(const Shared::VCard& card)
{
QXmppVCardIq iq;
iq.setFullName(card.getFullName());
iq.setFirstName(card.getFirstName());
iq.setMiddleName(card.getMiddleName());
iq.setLastName(card.getLastName());
iq.setNickName(card.getNickName());
iq.setBirthday(card.getBirthday());
iq.setDescription(card.getDescription());
iq.setUrl(card.getUrl());
QXmppVCardOrganization org;
org.setOrganization(card.getOrgName());
org.setUnit(card.getOrgUnit());
org.setRole(card.getOrgRole());
org.setTitle(card.getOrgTitle());
iq.setOrganization(org);
const std::deque<Shared::VCard::Email>& myEmails = card.getEmails();
QList<QXmppVCardEmail> emails;
for (const Shared::VCard::Email& mEm : myEmails) {
QXmppVCardEmail em;
QXmppVCardEmail::Type t = QXmppVCardEmail::Internet;
if (mEm.prefered) {
t = t | QXmppVCardEmail::Preferred;
}
if (mEm.role == Shared::VCard::Email::home) {
t = t | QXmppVCardEmail::Home;
} else if (mEm.role == Shared::VCard::Email::work) {
t = t | QXmppVCardEmail::Work;
}
em.setType(t);
em.setAddress(mEm.address);
emails.push_back(em);
}
iq.setEmails(emails);
initializeQXmppVCard(iq, card);
bool avatarChanged = false;
if (card.getAvatarType() == Shared::Avatar::empty) {