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

kmail

  • sources
  • kde-4.14
  • kdepim
  • kmail
  • job
addressvalidationjob.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of KMail.
3  *
4  * Copyright (c) 2010 KDAB
5  *
6  * Author: Tobias Koenig <tokoe@kde.org>
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License along
19  * with this program; if not, write to the Free Software Foundation, Inc.,
20  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21  */
22 
23 #include "addressvalidationjob.h"
24 #include <messagecomposer/job/aliasesexpandjob.h>
25 using MessageComposer::AliasesExpandJob;
26 
27 #include "settings/messagecomposersettings.h"
28 
29 #include <klocale.h>
30 #include <kmessagebox.h>
31 
32 #include <KPIMUtils/Email>
33 
34 
35 class AddressValidationJob::Private
36 {
37 public:
38  Private( AddressValidationJob *qq, const QString &emailAddresses, QWidget *parentWidget )
39  : q( qq ),
40  mEmailAddresses( emailAddresses ),
41  mIsValid( false ),
42  mParentWidget( parentWidget )
43  {
44  }
45 
46  void slotAliasExpansionDone( KJob* );
47 
48  AddressValidationJob *q;
49  QString mEmailAddresses;
50  QString mDomainDefaultName;
51  bool mIsValid;
52  QWidget *mParentWidget;
53 };
54 
55 void AddressValidationJob::Private::slotAliasExpansionDone( KJob *job )
56 {
57  mIsValid = true;
58 
59  if ( job->error() ) {
60  q->setError( job->error() );
61  q->setErrorText( job->errorText() );
62  mIsValid = false;
63  q->emitResult();
64  return;
65  }
66 
67  const AliasesExpandJob *expandJob = qobject_cast<AliasesExpandJob*>( job );
68  const QStringList emptyDistributionLists = expandJob->emptyDistributionLists();
69 
70  QString brokenAddress;
71 
72  const KPIMUtils::EmailParseResult errorCode = KPIMUtils::isValidAddressList( expandJob->addresses(), brokenAddress );
73  if ( !emptyDistributionLists.isEmpty() ) {
74  QString errorMsg;
75  const int numberOfDistributionList( emptyDistributionLists.count() );
76  QString listOfDistributionList;
77  for ( int i = 0; i < numberOfDistributionList; ++i ) {
78  if ( i != 0 )
79  listOfDistributionList.append( QLatin1String(", ") );
80  listOfDistributionList.append( QString::fromLatin1( "\"%1\"" ).arg( emptyDistributionLists.at( i ) ) );
81  }
82  errorMsg = i18np( "Distribution list %2 is empty, it cannot be used.",
83  "Distribution lists %2 are empty, they cannot be used.",
84  numberOfDistributionList, listOfDistributionList );
85  KMessageBox::sorry( mParentWidget, errorMsg, i18n( "Invalid Email Address" ) );
86  mIsValid = false;
87  } else {
88  if ( !( errorCode == KPIMUtils::AddressOk ||
89  errorCode == KPIMUtils::AddressEmpty ) ) {
90  const QString errorMsg( QLatin1String("<qt><p><b>") + brokenAddress +
91  QLatin1String("</b></p><p>") +
92  KPIMUtils::emailParseResultToString( errorCode ) +
93  QLatin1String("</p></qt>") );
94  KMessageBox::sorry( mParentWidget, errorMsg, i18n( "Invalid Email Address" ) );
95  mIsValid = false;
96  }
97  }
98 
99  q->emitResult();
100 }
101 
102 AddressValidationJob::AddressValidationJob( const QString &emailAddresses, QWidget *parentWidget, QObject *parent )
103  : KJob( parent ), d( new Private( this, emailAddresses, parentWidget ) )
104 {
105 }
106 
107 AddressValidationJob::~AddressValidationJob()
108 {
109  delete d;
110 }
111 
112 void AddressValidationJob::setDefaultDomain(const QString &domainName)
113 {
114  d->mDomainDefaultName = domainName;
115 }
116 
117 void AddressValidationJob::start()
118 {
119  AliasesExpandJob *job = new AliasesExpandJob( d->mEmailAddresses, d->mDomainDefaultName, this );
120  connect( job, SIGNAL(result(KJob*)), SLOT(slotAliasExpansionDone(KJob*)) );
121  job->start();
122 }
123 
124 bool AddressValidationJob::isValid() const
125 {
126  return d->mIsValid;
127 }
128 
129 #include "moc_addressvalidationjob.cpp"
AddressValidationJob
Definition: addressvalidationjob.h:28
QWidget
QString::append
QString & append(QChar ch)
AddressValidationJob::start
void start()
Definition: addressvalidationjob.cpp:117
AddressValidationJob::isValid
bool isValid() const
Definition: addressvalidationjob.cpp:124
AddressValidationJob::~AddressValidationJob
~AddressValidationJob()
Definition: addressvalidationjob.cpp:107
AddressValidationJob::setDefaultDomain
void setDefaultDomain(const QString &domainName)
Definition: addressvalidationjob.cpp:112
QObject
AddressValidationJob::AddressValidationJob
AddressValidationJob(const QString &emailAddresses, QWidget *parentWidget, QObject *parent=0)
Definition: addressvalidationjob.cpp:102
QString
QStringList
QLatin1String
addressvalidationjob.h
QString::fromLatin1
QString fromLatin1(const char *str, int size)
KJob
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:34:32 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kmail

Skip menu "kmail"
  • 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