File indexing completed on 2024-04-21 05:25:29

0001 /*
0002  *   SPDX-FileCopyrightText: 2021 Nicolas Fella <nicolas.fella@gmx.de>
0003  *
0004  *   SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 #pragma once
0008 
0009 #include <QImage>
0010 #include <QObject>
0011 
0012 #include <KContacts/Addressee>
0013 #include <KContacts/Email>
0014 #include <KContacts/Impp>
0015 #include <KContacts/PhoneNumber>
0016 #include <KContacts/Picture>
0017 
0018 #include <KSharedConfig>
0019 #include <memory>
0020 
0021 class QFileDialog;
0022 class QQuickWindow;
0023 
0024 class ContactController : public QObject
0025 {
0026     Q_OBJECT
0027 
0028     Q_PROPERTY(QString lastPersonUri READ lastPersonUri WRITE setLastPersonUri NOTIFY lastPersonUriChanged)
0029 
0030 public:
0031     ContactController();
0032 
0033     QString lastPersonUri() const;
0034     void setLastPersonUri(const QString &lastPersonUri);
0035 
0036     Q_INVOKABLE void saveWindowGeometry(QQuickWindow *window);
0037     Q_INVOKABLE KContacts::Addressee addresseeFromVCard(const QByteArray &vcard);
0038     Q_INVOKABLE QByteArray addresseeToVCard(const KContacts::Addressee &addressee);
0039     Q_INVOKABLE KContacts::Addressee emptyAddressee();
0040     Q_INVOKABLE KContacts::Picture preparePhoto(const QUrl &url);
0041     Q_INVOKABLE KContacts::Email createEmail(const QString &email);
0042     Q_INVOKABLE KContacts::PhoneNumber createPhoneNumber(const QString &number);
0043     Q_INVOKABLE KContacts::Impp createImpp(const QString &address);
0044 
0045 Q_SIGNALS:
0046     void lastPersonUriChanged();
0047 
0048 private:
0049     KConfig m_dataResource;
0050 };