File indexing completed on 2024-05-12 05:10:50
0001 /* 0002 SPDX-FileCopyrightText: 2004 Reinhold Kainhofer <reinhold@kainhofer.com> 0003 SPDX-FileCopyrightText: 2010-2012 Sérgio Martins <iamsergio@gmail.com> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #include "utils_p.h" 0009 #include "akonadicalendar_debug.h" 0010 #include <Akonadi/CollectionDialog> 0011 #include <KEMailSettings> 0012 #include <KEmailAddress> 0013 #include <KIdentityManagementCore/Identity> 0014 #include <KIdentityManagementCore/Utils> 0015 #include <KMime/HeaderParsing> 0016 0017 #include <QPointer> 0018 #include <QWidget> 0019 0020 using namespace Akonadi::CalendarUtils; 0021 0022 Akonadi::Collection 0023 Akonadi::CalendarUtils::selectCollection(QWidget *parent, int &dialogCode, const QStringList &mimeTypes, const Akonadi::Collection &defaultCollection) 0024 { 0025 QPointer<Akonadi::CollectionDialog> dlg(new Akonadi::CollectionDialog(parent)); 0026 0027 qCDebug(AKONADICALENDAR_LOG) << "selecting collections with mimeType in " << mimeTypes; 0028 0029 dlg->changeCollectionDialogOptions(Akonadi::CollectionDialog::KeepTreeExpanded); 0030 dlg->setMimeTypeFilter(mimeTypes); 0031 dlg->setAccessRightsFilter(Akonadi::Collection::CanCreateItem); 0032 if (defaultCollection.isValid()) { 0033 dlg->setDefaultCollection(defaultCollection); 0034 } 0035 Akonadi::Collection collection; 0036 0037 // FIXME: don't use exec. 0038 dialogCode = dlg->exec(); 0039 if (dialogCode == QDialog::Accepted) { 0040 collection = dlg->selectedCollection(); 0041 0042 if (!collection.isValid()) { 0043 qCWarning(AKONADICALENDAR_LOG) << "An invalid collection was selected!"; 0044 } 0045 } 0046 delete dlg; 0047 0048 return collection; 0049 } 0050 0051 QString Akonadi::CalendarUtils::fullName() 0052 { 0053 KEMailSettings settings; 0054 QString tusername = settings.getSetting(KEMailSettings::RealName); 0055 0056 // Quote the username as it might contain commas and other quotable chars. 0057 tusername = KEmailAddress::quoteNameIfNecessary(tusername); 0058 0059 QString tname; 0060 QString temail; 0061 // ignore the return value from extractEmailAddressAndName() because 0062 // it will always be false since tusername does not contain "@domain". 0063 KEmailAddress::extractEmailAddressAndName(tusername, temail, tname); 0064 return tname; 0065 } 0066 0067 QString Akonadi::CalendarUtils::email() 0068 { 0069 KEMailSettings emailSettings; 0070 return emailSettings.getSetting(KEMailSettings::EmailAddress); 0071 } 0072 0073 bool Akonadi::CalendarUtils::thatIsMe(const KCalendarCore::Attendee &attendee) 0074 { 0075 return KIdentityManagementCore::thatIsMe(attendee.email()); 0076 } 0077 0078 bool Akonadi::CalendarUtils::thatIsMe(const QString &_email) 0079 { 0080 const QByteArray tmp = _email.toUtf8(); 0081 const char *cursor = tmp.constData(); 0082 const char *end = tmp.data() + tmp.length(); 0083 KMime::Types::Mailbox mbox; 0084 KMime::HeaderParsing::parseMailbox(cursor, end, mbox); 0085 const QString email = mbox.addrSpec().asString(); 0086 0087 return KIdentityManagementCore::thatIsMe(email); 0088 } 0089 0090 QStringList Akonadi::CalendarUtils::allEmails() 0091 { 0092 QStringList emails; 0093 const QSet<QString> &allEmails = KIdentityManagementCore::allEmails(); 0094 emails.reserve(allEmails.count()); 0095 for (const QString &email : allEmails) { 0096 emails.append(email); 0097 } 0098 return emails; 0099 }