File indexing completed on 2025-02-16 04:49:22

0001 /*
0002     SPDX-FileCopyrightText: 2015-2024 Laurent Montel <montel@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "job/mergecontacts.h"
0010 #include "kaddressbookmergelib_export.h"
0011 #include <Akonadi/Item>
0012 #include <QWidget>
0013 class QPushButton;
0014 class KTreeWidgetSearchLineWidget;
0015 namespace KAddressBookGrantlee
0016 {
0017 class GrantleeContactViewer;
0018 }
0019 namespace Akonadi
0020 {
0021 class CollectionComboBox;
0022 }
0023 namespace KABMergeContacts
0024 {
0025 class ResultDuplicateTreeWidget;
0026 class MergeContactLoseInformationWarning;
0027 
0028 struct MergeConflictResult {
0029     Akonadi::Item::List list;
0030     MergeContacts::ConflictInformations conflictInformation;
0031 };
0032 
0033 class KADDRESSBOOKMERGELIB_EXPORT SearchDuplicateResultWidget : public QWidget
0034 {
0035     Q_OBJECT
0036 public:
0037     explicit SearchDuplicateResultWidget(QWidget *parent = nullptr);
0038     ~SearchDuplicateResultWidget() override;
0039     void setContacts(const QList<Akonadi::Item::List> &lstItem);
0040 
0041 Q_SIGNALS:
0042     void contactMerged(const Akonadi::Item &item);
0043     void mergeDone();
0044     void customizeMergeContact(const QList<KABMergeContacts::MergeConflictResult> &, const Akonadi::Collection &col);
0045 
0046 private:
0047     void slotMergeContact();
0048     void slotMergeDone(const Akonadi::Item &item);
0049     void slotUpdateMergeButton();
0050 
0051     void slotAutomaticMerging();
0052     void slotCustomizeMergingContacts();
0053     void mergeContact();
0054     void slotCustomContextMenuRequested(const QPoint &);
0055     void slotExpandAll();
0056     void slotCollapseAll();
0057     void slotSelectAll();
0058     void slotDeselectAll();
0059     QList<MergeConflictResult> mResultConflictList;
0060     QList<Akonadi::Item::List> mListContactToMerge;
0061     ResultDuplicateTreeWidget *const mResultTreeWidget;
0062     KAddressBookGrantlee::GrantleeContactViewer *const mContactViewer;
0063     QPushButton *mMergeContact = nullptr;
0064     Akonadi::CollectionComboBox *mCollectionCombobox = nullptr;
0065     MergeContactLoseInformationWarning *const mMergeContactWarning;
0066     KTreeWidgetSearchLineWidget *mSearchInResultLineEdit = nullptr;
0067     int mIndexListContact = 0;
0068 };
0069 }
0070 Q_DECLARE_TYPEINFO(KABMergeContacts::MergeConflictResult, Q_RELOCATABLE_TYPE);