File indexing completed on 2023-11-26 08:16:44

0001 /*
0002 * Copyright (C) 2012 David Edmundson <kde@davidedmundson.co.uk>
0003 *
0004 * This library is free software; you can redistribute it and/or
0005 * modify it under the terms of the GNU Lesser General Public
0006 * License as published by the Free Software Foundation; either
0007 * version 2.1 of the License, or (at your option) any later version.
0008 *
0009 * This library is distributed in the hope that it will be useful,
0010 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0012 * Lesser General Public License for more details.
0013 *
0014 * You should have received a copy of the GNU Lesser General Public
0015 * License along with this library; if not, write to the Free Software
0016 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
0017 */
0018 
0019 #ifndef KTP_CONTACTS_LIST_MODEL_H
0020 #define KTP_CONTACTS_LIST_MODEL_H
0021 
0022 #include <QAbstractListModel>
0023 #include <TelepathyQt/Types>
0024 
0025 #include <KTp/global-contact-manager.h>
0026 #include <KTp/Models/ktpmodels_export.h>
0027 
0028 namespace KTp
0029 {
0030 
0031 class KTPMODELS_EXPORT ContactsListModel : public QAbstractListModel
0032 {
0033     Q_OBJECT
0034 public:
0035     explicit ContactsListModel(QObject *parent = nullptr);
0036     ~ContactsListModel() override;
0037 
0038     void setAccountManager(const Tp::AccountManagerPtr &accountManager);
0039 
0040     int rowCount(const QModelIndex &parent) const override;
0041     QVariant data(const QModelIndex &index, int role) const override;
0042 
0043 Q_SIGNALS:
0044     void modelInitialized(bool success);
0045 
0046 private Q_SLOTS:
0047     void onContactsChanged(const Tp::Contacts &added, const Tp::Contacts &removed);
0048     void onChanged();
0049     void onConnectionDropped();
0050 
0051 private:
0052     Q_DISABLE_COPY(ContactsListModel)
0053     class Private;
0054     Private *d;
0055 
0056 };
0057 
0058 }
0059 #endif // CONTACTSLISTMODEL_H