diff options
Diffstat (limited to 'TelepathyQt4Yell/Models/contact-model-item.cpp')
-rw-r--r-- | TelepathyQt4Yell/Models/contact-model-item.cpp | 209 |
1 files changed, 0 insertions, 209 deletions
diff --git a/TelepathyQt4Yell/Models/contact-model-item.cpp b/TelepathyQt4Yell/Models/contact-model-item.cpp deleted file mode 100644 index 9e1986c..0000000 --- a/TelepathyQt4Yell/Models/contact-model-item.cpp +++ /dev/null @@ -1,209 +0,0 @@ -/* - * This file is part of TelepathyQt4Yell Models - * - * Copyright (C) 2010 Collabora Ltd. <http://www.collabora.co.uk/> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include <TelepathyQt4Yell/Models/ContactModelItem> - -#include "TelepathyQt4Yell/Models/_gen/contact-model-item.moc.hpp" - -#include <TelepathyQt4Yell/Models/AccountsModel> -#include <TelepathyQt4Yell/CallChannel> -#include <TelepathyQt4Yell/ContactCapabilities> -#include <TelepathyQt4Yell/RequestableChannelClassSpec> - -#include <TelepathyQt4/AvatarData> -#include <TelepathyQt4/ContactManager> -#include <TelepathyQt4/ContactCapabilities> - -#include <QImage> - -namespace Tpy -{ - -struct TELEPATHY_QT4_YELL_MODELS_NO_EXPORT ContactModelItem::Private -{ - Private(const Tp::ContactPtr &contact) - : mContact(contact), - mCallContactCaps(contact->capabilities().allClassSpecs(), - contact->capabilities().isSpecificToContact()) - { - } - - Tp::ContactPtr mContact; - Tpy::ContactCapabilities mCallContactCaps; -}; - -ContactModelItem::ContactModelItem(const Tp::ContactPtr &contact) - : mPriv(new Private(contact)) -{ - - connect(contact.data(), - SIGNAL(aliasChanged(QString)), - SLOT(onChanged())); - connect(contact.data(), - SIGNAL(avatarTokenChanged(QString)), - SLOT(onChanged())); - connect(contact.data(), - SIGNAL(avatarDataChanged(Tp::AvatarData)), - SLOT(onChanged())); - connect(contact.data(), - SIGNAL(presenceChanged(Tp::Presence)), - SLOT(onChanged())); - connect(contact.data(), - SIGNAL(capabilitiesChanged(Tp::ContactCapabilities)), - SLOT(onChanged())); - connect(contact.data(), - SIGNAL(capabilitiesChanged(Tp::ContactCapabilities)), - SLOT(onCapabilitiesChanged())); - connect(contact.data(), - SIGNAL(locationUpdated(Tp::LocationInfo)), - SLOT(onChanged())); - connect(contact.data(), - SIGNAL(infoFieldsChanged(Tp::Contact::InfoFields)), - SLOT(onChanged())); - connect(contact.data(), - SIGNAL(subscriptionStateChanged(Tp::Contact::PresenceState)), - SLOT(onChanged())); - connect(contact.data(), - SIGNAL(publishStateChanged(Tp::Contact::PresenceState,QString)), - SLOT(onChanged())); - connect(contact.data(), - SIGNAL(blockStatusChanged(bool)), - SLOT(onChanged())); -} - -ContactModelItem::~ContactModelItem() -{ - delete mPriv; -} - -QVariant ContactModelItem::data(int role) const -{ - switch (role) - { - case AccountsModel::ItemRole: - return QVariant::fromValue( - const_cast<QObject *>( - static_cast<const QObject *>(this))); - case AccountsModel::IdRole: - return mPriv->mContact->id(); - case Qt::DisplayRole: - case AccountsModel::AliasRole: - return mPriv->mContact->alias(); - case AccountsModel::PresenceStatusRole: - return mPriv->mContact->presence().status(); - case AccountsModel::PresenceTypeRole: - return mPriv->mContact->presence().type(); - case AccountsModel::PresenceMessageRole: - return mPriv->mContact->presence().statusMessage(); - case AccountsModel::SubscriptionStateRole: - return mPriv->mContact->subscriptionState(); - case AccountsModel::PublishStateRole: - return mPriv->mContact->publishState(); - case AccountsModel::BlockedRole: - return mPriv->mContact->isBlocked(); - case AccountsModel::GroupsRole: - return mPriv->mContact->groups(); - case AccountsModel::AvatarRole: - return mPriv->mContact->avatarData().fileName; - case Qt::DecorationRole: - return QImage(mPriv->mContact->avatarData().fileName); - case AccountsModel::TextChatCapabilityRole: - return mPriv->mContact->capabilities().textChats(); - case AccountsModel::StreamedMediaCallCapabilityRole: - return mPriv->mContact->capabilities().streamedMediaCalls(); - case AccountsModel::StreamedMediaAudioCallCapabilityRole: - return mPriv->mContact->capabilities().streamedMediaAudioCalls(); - case AccountsModel::StreamedMediaVideoCallCapabilityRole: - return mPriv->mContact->capabilities().streamedMediaVideoCalls(); - case AccountsModel::StreamedMediaVideoCallWithAudioCapabilityRole: - return mPriv->mContact->capabilities().streamedMediaVideoCallsWithAudio(); - case AccountsModel::StreamedMediaUpgradeCallCapabilityRole: - return mPriv->mContact->capabilities().upgradingStreamedMediaCalls(); - case AccountsModel::MediaCallCapabilityRole: - return mPriv->mCallContactCaps.mediaCalls(); - case AccountsModel::AudioCallCapabilityRole: - return mPriv->mCallContactCaps.audioCalls(); - case AccountsModel::VideoCallCapabilityRole: - return mPriv->mCallContactCaps.videoCalls(); - case AccountsModel::VideoCallWithAudioCapabilityRole: - return mPriv->mCallContactCaps.videoCallsWithAudio(); - case AccountsModel::UpgradeCallCapabilityRole: - return mPriv->mCallContactCaps.upgradingCalls(); - case AccountsModel::FileTransferCapabilityRole: { - foreach (const Tp::RequestableChannelClassSpec &rccSpec, mPriv->mContact->capabilities().allClassSpecs()) { - if (rccSpec.supports(Tp::RequestableChannelClassSpec::fileTransfer())) { - return true; - } - } - return false; - } - default: - break; - } - - return QVariant(); -} - -bool ContactModelItem::setData(int role, const QVariant &value) -{ - switch (role) { - case AccountsModel::PublishStateRole: { - Tp::Contact::PresenceState state; - state = (Tp::Contact::PresenceState) value.toInt(); - switch (state) { - case Tp::Contact::PresenceStateYes: - // authorize the contact and request its presence publication - mPriv->mContact->authorizePresencePublication(); - mPriv->mContact->requestPresenceSubscription(); - return true; - case Tp::Contact::PresenceStateNo: { - // reject the presence publication and remove the contact - mPriv->mContact->removePresencePublication(); - QList<Tp::ContactPtr> contacts; - contacts << mPriv->mContact; - mPriv->mContact->manager()->removeContacts(contacts); - return true; - } - default: - return false; - } - } - default: - return false; - } -} - -void ContactModelItem::onChanged() -{ - emit changed(this); -} - -Tp::ContactPtr ContactModelItem::contact() const -{ - return mPriv->mContact; -} - -void ContactModelItem::onCapabilitiesChanged() -{ - mPriv->mCallContactCaps.updateRequestableChannelClasses(mPriv->mContact->capabilities().allClassSpecs().bareClasses()); - emit capabilitiesChanged(); -} - -} |