• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdepim API Reference
  • KDE Home
  • Contact Us
 

kaddressbook

  • sources
  • kde-4.14
  • kdepim
  • kaddressbook
  • merge
  • searchduplicate
searchandmergecontactduplicatecontactdialog.cpp
Go to the documentation of this file.
1 /*
2  Copyright (c) 2014-2015 Montel Laurent <montel@kde.org>
3 
4  This program is free software; you can redistribute it and/or modify it
5  under the terms of the GNU General Public License, version 2, as
6  published by the Free Software Foundation.
7 
8  This program is distributed in the hope that it will be useful, but
9  WITHOUT ANY WARRANTY; without even the implied warranty of
10  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11  General Public License for more details.
12 
13  You should have received a copy of the GNU General Public License along
14  with this program; if not, write to the Free Software Foundation, Inc.,
15  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16 */
17 
18 
19 #include "searchandmergecontactduplicatecontactdialog.h"
20 
21 
22 #include "mergecontactselectinformationtabwidget.h"
23 #include "merge/searchduplicate/searchduplicateresultwidget.h"
24 #include "merge/widgets/mergecontactshowresulttabwidget.h"
25 #include "merge/widgets/mergecontacterrorlabel.h"
26 #include "merge/job/searchpotentialduplicatecontactjob.h"
27 
28 #include <KLocalizedString>
29 #include <KSharedConfig>
30 #include <KConfigGroup>
31 #include <KGlobal>
32 
33 #include <QStackedWidget>
34 #include <QLabel>
35 
36 using namespace KABMergeContacts;
37 
38 SearchAndMergeContactDuplicateContactDialog::SearchAndMergeContactDuplicateContactDialog(QWidget *parent)
39  : KDialog(parent)
40 {
41  setCaption( i18n( "Select Contacts to merge" ) );
42  setButtons( Close );
43  mStackedWidget = new QStackedWidget(this);
44  mStackedWidget->setObjectName(QLatin1String("stackedwidget"));
45 
46  mSearchResult = new SearchDuplicateResultWidget;
47  mSearchResult->setObjectName(QLatin1String("mergecontact"));
48  mStackedWidget->addWidget(mSearchResult);
49  connect(mSearchResult, SIGNAL(contactMerged(Akonadi::Item)), this, SLOT(slotContactMerged(Akonadi::Item)));
50  connect(mSearchResult, SIGNAL(mergeDone()), this, SLOT(slotMergeDone()));
51  connect(mSearchResult, SIGNAL(customizeMergeContact(QVector<KABMergeContacts::MergeConflictResult>,Akonadi::Collection)),
52  this, SLOT(slotCustomizeMergeContacts(QVector<KABMergeContacts::MergeConflictResult>,Akonadi::Collection)));
53 
54  mNoContactSelected = new KABMergeContacts::MergeContactErrorLabel(MergeContactErrorLabel::NoContactSelected, this);
55  mNoContactSelected->setObjectName(QLatin1String("nocontactselected"));
56  mStackedWidget->addWidget(mNoContactSelected);
57 
58  mNoDuplicateContactFound = new KABMergeContacts::MergeContactErrorLabel(MergeContactErrorLabel::NoContactDuplicatesFound, this);
59  mNoDuplicateContactFound->setObjectName(QLatin1String("nocontactduplicatesfound"));
60  mStackedWidget->addWidget(mNoDuplicateContactFound);
61 
62  mMergeContactResult = new MergeContactShowResultTabWidget(this);
63  mMergeContactResult->setObjectName(QLatin1String("mergecontactresult"));
64  mStackedWidget->addWidget(mMergeContactResult);
65 
66  mNoEnoughContactSelected = new KABMergeContacts::MergeContactErrorLabel(MergeContactErrorLabel::NotEnoughContactsSelected, this);
67  mNoEnoughContactSelected->setObjectName(QLatin1String("noenoughcontactselected"));
68  mStackedWidget->addWidget(mNoEnoughContactSelected);
69  mStackedWidget->setCurrentWidget(mNoContactSelected);
70 
71  mSelectInformation = new KABMergeContacts::MergeContactSelectInformationTabWidget(this);
72  mSelectInformation->setObjectName(QLatin1String("selectioninformation"));
73  mStackedWidget->addWidget(mSelectInformation);
74 
75  setMainWidget(mStackedWidget);
76  readConfig();
77 }
78 
79 SearchAndMergeContactDuplicateContactDialog::~SearchAndMergeContactDuplicateContactDialog()
80 {
81  writeConfig();
82 }
83 
84 void SearchAndMergeContactDuplicateContactDialog::searchPotentialDuplicateContacts(const Akonadi::Item::List &list)
85 {
86  if (list.isEmpty()) {
87  mStackedWidget->setCurrentWidget(mNoContactSelected);
88  } else if (list.count() < 2){
89  mStackedWidget->setCurrentWidget(mNoEnoughContactSelected);
90  } else {
91  SearchPotentialDuplicateContactJob *job = new SearchPotentialDuplicateContactJob(list, this);
92  connect(job,SIGNAL(finished(QList<Akonadi::Item::List>)), this, SLOT(slotDuplicateFound(QList<Akonadi::Item::List>)));
93  job->start();
94  }
95 }
96 
97 void SearchAndMergeContactDuplicateContactDialog::readConfig()
98 {
99  KConfigGroup grp( KGlobal::config(), "MergeContactDuplicateContactDialog" );
100  const QSize size = grp.readEntry( "Size", QSize(300, 200) );
101  if ( size.isValid() ) {
102  resize( size );
103  }
104 }
105 
106 void SearchAndMergeContactDuplicateContactDialog::writeConfig()
107 {
108  KConfigGroup grp( KGlobal::config(), "MergeContactDuplicateContactDialog");
109  grp.writeEntry( "Size", size() );
110  grp.sync();
111 }
112 
113 void SearchAndMergeContactDuplicateContactDialog::slotDuplicateFound(const QList<Akonadi::Item::List> &duplicate)
114 {
115  if (duplicate.isEmpty()) {
116  mStackedWidget->setCurrentWidget(mNoDuplicateContactFound);
117  } else {
118  mStackedWidget->setCurrentWidget(mSearchResult);
119  mSearchResult->setContacts(duplicate);
120  }
121 }
122 
123 void SearchAndMergeContactDuplicateContactDialog::slotContactMerged(const Akonadi::Item &item)
124 {
125  mMergeContactResult->addMergedContact(item, true);
126 }
127 
128 void SearchAndMergeContactDuplicateContactDialog::slotMergeDone()
129 {
130  mStackedWidget->setCurrentWidget(mMergeContactResult);
131 }
132 
133 void SearchAndMergeContactDuplicateContactDialog::slotCustomizeMergeContacts(const QVector<MergeConflictResult> &lst, const Akonadi::Collection &col)
134 {
135  mSelectInformation->setRequiresSelectInformationWidgets(lst, col);
136  mStackedWidget->setCurrentWidget(mSelectInformation);
137 }
KABMergeContacts::SearchPotentialDuplicateContactJob
Definition: searchpotentialduplicatecontactjob.h:27
QWidget
QSize::isValid
bool isValid() const
searchduplicateresultwidget.h
KABMergeContacts::MergeContactErrorLabel::NoContactSelected
Definition: mergecontacterrorlabel.h:31
searchpotentialduplicatecontactjob.h
KABMergeContacts::MergeContactErrorLabel::NotEnoughContactsSelected
Definition: mergecontacterrorlabel.h:29
KABMergeContacts::MergeContactShowResultTabWidget::addMergedContact
void addMergedContact(const Akonadi::Item &item, bool updateTab=false)
Definition: mergecontactshowresulttabwidget.cpp:57
KDialog
KABMergeContacts::SearchAndMergeContactDuplicateContactDialog::~SearchAndMergeContactDuplicateContactDialog
~SearchAndMergeContactDuplicateContactDialog()
Definition: searchandmergecontactduplicatecontactdialog.cpp:79
QStackedWidget::setCurrentWidget
void setCurrentWidget(QWidget *widget)
KABMergeContacts::SearchDuplicateResultWidget::setContacts
void setContacts(const QList< Akonadi::Item::List > &lstItem)
Definition: searchduplicateresultwidget.cpp:94
KABMergeContacts::MergeContactShowResultTabWidget
Definition: mergecontactshowresulttabwidget.h:27
QList::isEmpty
bool isEmpty() const
QObject::setObjectName
void setObjectName(const QString &name)
mergecontacterrorlabel.h
QStackedWidget
QList< Akonadi::Item::List >
QSize
KABMergeContacts::MergeContactErrorLabel
Definition: mergecontacterrorlabel.h:24
mergecontactselectinformationtabwidget.h
QVector< KABMergeContacts::MergeConflictResult >
mergecontactshowresulttabwidget.h
KABMergeContacts::SearchDuplicateResultWidget
Definition: searchduplicateresultwidget.h:41
QLatin1String
KABMergeContacts::SearchPotentialDuplicateContactJob::start
void start()
Definition: searchpotentialduplicatecontactjob.cpp:36
searchandmergecontactduplicatecontactdialog.h
KABMergeContacts::MergeContactSelectInformationTabWidget::setRequiresSelectInformationWidgets
void setRequiresSelectInformationWidgets(const QVector< KABMergeContacts::MergeConflictResult > &list, const Akonadi::Collection &col)
Definition: mergecontactselectinformationtabwidget.cpp:53
KABMergeContacts::SearchAndMergeContactDuplicateContactDialog::SearchAndMergeContactDuplicateContactDialog
SearchAndMergeContactDuplicateContactDialog(QWidget *parent=0)
Definition: searchandmergecontactduplicatecontactdialog.cpp:38
KABMergeContacts::MergeContactSelectInformationTabWidget
Definition: mergecontactselectinformationtabwidget.h:27
QStackedWidget::addWidget
int addWidget(QWidget *widget)
KABMergeContacts::MergeContactErrorLabel::NoContactDuplicatesFound
Definition: mergecontacterrorlabel.h:30
KABMergeContacts::SearchAndMergeContactDuplicateContactDialog::searchPotentialDuplicateContacts
void searchPotentialDuplicateContacts(const Akonadi::Item::List &list)
Definition: searchandmergecontactduplicatecontactdialog.cpp:84
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:32:34 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kaddressbook

Skip menu "kaddressbook"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdepim API Reference

Skip menu "kdepim API Reference"
  • akonadi_next
  • akregator
  • blogilo
  • calendarsupport
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt2
  • kjots
  • kleopatra
  • kmail
  • knode
  • knotes
  • kontact
  • korgac
  • korganizer
  • ktimetracker
  • libkdepim
  • libkleo
  • libkpgp
  • mailcommon
  • messagelist
  • messageviewer
  • pimprint

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal