/* KPeople - Duplicates SPDX-FileCopyrightText: 2013 Franck Arrecot SPDX-License-Identifier: LGPL-2.1-or-later */ #ifndef MERGEDIALOG_H #define MERGEDIALOG_H #include #include class QStandardItem; class KJob; class MergeDialogPrivate; namespace KPeople { class PersonsModel; class Match; /*! * \class KPeople::MergeDialog * \inmodule KPeopleWidgets * \inheaderfile KPeople/Widgets/MergeDialog * * \brief The merge dialog will be used to provide a GUI to attempt to * figure out what contacts should be merged. * * By properly merging contacts, the user will end up with having more * information on each person. * * \since 5.8 */ class KPEOPLEWIDGETS_EXPORT MergeDialog : public QDialog { Q_OBJECT public: /*! * \enum KPeople::MergeDialog::Role * * \value NameRole * \value UriRole * \value PixmapRole * \value MergeReasonRole */ enum Role { NameRole = Qt::DisplayRole, UriRole = Qt::UserRole + 1, PixmapRole, MergeReasonRole, }; /*! * */ explicit MergeDialog(QWidget *parent = nullptr); ~MergeDialog() override; /*! * Specifies which PersonsModel will be used to look for duplicates. * * \a model is the PersonsModel to use * */ void setPersonsModel(PersonsModel *model); private Q_SLOTS: KPEOPLEWIDGETS_NO_EXPORT void searchForDuplicates(); KPEOPLEWIDGETS_NO_EXPORT void searchForDuplicatesFinished(KJob *); KPEOPLEWIDGETS_NO_EXPORT void onMergeButtonClicked(); private: KPEOPLEWIDGETS_NO_EXPORT QStandardItem *itemMergeContactFromMatch(bool parent, const KPeople::Match &match); KPEOPLEWIDGETS_NO_EXPORT void feedDuplicateModelFromMatches(const QList &matches); MergeDialogPrivate *const d_ptr; Q_DECLARE_PRIVATE(MergeDialog) }; } #endif // MERGEDIALOG_H