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);