File indexing completed on 2024-05-12 15:44:26

0001 /*
0002     Abstract class to load a monitor changes for a single contact
0003     SPDX-FileCopyrightText: 2013 David Edmundson <davidedmundson@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.1-or-later
0006 */
0007 
0008 #include "defaultcontactmonitor_p.h"
0009 
0010 DefaultContactMonitor::DefaultContactMonitor(const QString &contactUri, const AllContactsMonitorPtr &allContactsWatcher)
0011     : ContactMonitor(contactUri)
0012     , m_allContactsMonitor(allContactsWatcher)
0013 {
0014     connect(allContactsWatcher.data(), &AllContactsMonitor::contactAdded, this, &DefaultContactMonitor::onContactAdded);
0015     connect(allContactsWatcher.data(), &AllContactsMonitor::contactRemoved, this, &DefaultContactMonitor::onContactRemoved);
0016     connect(allContactsWatcher.data(), &AllContactsMonitor::contactChanged, this, &DefaultContactMonitor::onContactChanged);
0017 
0018     const QMap<QString, AbstractContact::Ptr> &contacts = m_allContactsMonitor->contacts();
0019     QMap<QString, AbstractContact::Ptr>::const_iterator it = contacts.constFind(contactUri);
0020     if (it != contacts.constEnd()) {
0021         setContact(it.value());
0022     }
0023 }
0024 
0025 void DefaultContactMonitor::onContactAdded(const QString &id, const AbstractContact::Ptr &contact)
0026 {
0027     if (id == contactUri()) {
0028         setContact(contact);
0029     }
0030 }
0031 
0032 void DefaultContactMonitor::onContactChanged(const QString &id, const AbstractContact::Ptr &contact)
0033 {
0034     if (id == contactUri()) {
0035         setContact(contact);
0036     }
0037 }
0038 
0039 void DefaultContactMonitor::onContactRemoved(const QString &id)
0040 {
0041     if (id == contactUri()) {
0042         setContact(AbstractContact::Ptr());
0043     }
0044 }
0045 
0046 #include "moc_defaultcontactmonitor_p.cpp"