File indexing completed on 2025-03-09 04:54:44
0001 /* 0002 SPDX-License-Identifier: BSL-1.0 0003 */ 0004 0005 #include "invitationsettings.h" 0006 #include "settings/messageviewersettings.h" 0007 #include "ui_invitationsettings.h" 0008 #include <PimCommon/ConfigureImmutableWidgetUtils> 0009 using namespace PimCommon::ConfigureImmutableWidgetUtils; 0010 0011 #include <KLocalizedString> 0012 #include <KMessageBox> 0013 0014 using namespace MessageViewer; 0015 0016 class MessageViewer::InvitationSettingsPrivate 0017 { 0018 public: 0019 InvitationSettingsPrivate() 0020 : mInvitationUi(new Ui_InvitationSettings) 0021 { 0022 } 0023 0024 ~InvitationSettingsPrivate() 0025 { 0026 delete mInvitationUi; 0027 } 0028 0029 Ui_InvitationSettings *const mInvitationUi; 0030 }; 0031 0032 InvitationSettings::InvitationSettings(QWidget *parent) 0033 : QWidget(parent) 0034 , d(new MessageViewer::InvitationSettingsPrivate) 0035 { 0036 d->mInvitationUi->setupUi(this); 0037 0038 d->mInvitationUi->mDeleteInvitations->setText( 0039 i18n(MessageViewer::MessageViewerSettings::self()->deleteInvitationEmailsAfterSendingReplyItem()->label().toUtf8().constData())); 0040 d->mInvitationUi->mDeleteInvitations->setWhatsThis( 0041 i18n(MessageViewer::MessageViewerSettings::self()->deleteInvitationEmailsAfterSendingReplyItem()->whatsThis().toUtf8().constData())); 0042 connect(d->mInvitationUi->mDeleteInvitations, &QCheckBox::toggled, this, &InvitationSettings::changed); 0043 0044 d->mInvitationUi->mLegacyMangleFromTo->setWhatsThis( 0045 i18n(MessageViewer::MessageViewerSettings::self()->legacyMangleFromToHeadersItem()->whatsThis().toUtf8().constData())); 0046 connect(d->mInvitationUi->mLegacyMangleFromTo, &QCheckBox::stateChanged, this, &InvitationSettings::changed); 0047 0048 d->mInvitationUi->mLegacyBodyInvites->setWhatsThis( 0049 i18n(MessageViewer::MessageViewerSettings::self()->legacyBodyInvitesItem()->whatsThis().toUtf8().constData())); 0050 connect(d->mInvitationUi->mLegacyBodyInvites, &QCheckBox::toggled, this, &InvitationSettings::slotLegacyBodyInvitesToggled); 0051 connect(d->mInvitationUi->mLegacyBodyInvites, &QCheckBox::stateChanged, this, &InvitationSettings::changed); 0052 0053 d->mInvitationUi->mExchangeCompatibleInvitations->setWhatsThis( 0054 i18n(MessageViewer::MessageViewerSettings::self()->exchangeCompatibleInvitationsItem()->whatsThis().toUtf8().constData())); 0055 connect(d->mInvitationUi->mExchangeCompatibleInvitations, &QCheckBox::stateChanged, this, &InvitationSettings::changed); 0056 0057 // Laurent BUG:257723: in kmail2 it's not possible to not send automatically. 0058 d->mInvitationUi->mAutomaticSending->hide(); 0059 d->mInvitationUi->mAutomaticSending->setWhatsThis( 0060 i18n(MessageViewer::MessageViewerSettings::self()->automaticSendingItem()->whatsThis().toUtf8().constData())); 0061 connect(d->mInvitationUi->mAutomaticSending, &QCheckBox::stateChanged, this, &InvitationSettings::changed); 0062 } 0063 0064 InvitationSettings::~InvitationSettings() = default; 0065 0066 void InvitationSettings::slotLegacyBodyInvitesToggled(bool on) 0067 { 0068 if (on) { 0069 const QString txt = i18n( 0070 "<qt>Invitations are normally sent as attachments to " 0071 "a mail. This switch changes the invitation mails to " 0072 "be sent in the text of the mail instead; this is " 0073 "necessary to send invitations and replies to " 0074 "Microsoft Outlook.<br />But, when you do this, you no " 0075 "longer get descriptive text that mail programs " 0076 "can read; so, to people who have email programs " 0077 "that do not understand the invitations, the " 0078 "resulting messages look very odd.<br />People that have email " 0079 "programs that do understand invitations will still " 0080 "be able to work with this.</qt>"); 0081 KMessageBox::information(this, txt, QString(), QStringLiteral("LegacyBodyInvitesWarning")); 0082 } 0083 // Invitations in the body are autosent in any case (no point in editing raw ICAL) 0084 // So the autosend option is only available if invitations are sent as attachment. 0085 d->mInvitationUi->mAutomaticSending->setEnabled(!d->mInvitationUi->mLegacyBodyInvites->isChecked()); 0086 } 0087 0088 void InvitationSettings::doLoadFromGlobalSettings() 0089 { 0090 loadWidget(d->mInvitationUi->mLegacyMangleFromTo, MessageViewer::MessageViewerSettings::self()->legacyMangleFromToHeadersItem()); 0091 d->mInvitationUi->mLegacyBodyInvites->blockSignals(true); 0092 loadWidget(d->mInvitationUi->mLegacyBodyInvites, MessageViewer::MessageViewerSettings::self()->legacyBodyInvitesItem()); 0093 d->mInvitationUi->mLegacyBodyInvites->blockSignals(false); 0094 loadWidget(d->mInvitationUi->mExchangeCompatibleInvitations, MessageViewer::MessageViewerSettings::self()->exchangeCompatibleInvitationsItem()); 0095 loadWidget(d->mInvitationUi->mAutomaticSending, MessageViewer::MessageViewerSettings::self()->automaticSendingItem()); 0096 // TODO verify it 0097 d->mInvitationUi->mAutomaticSending->setEnabled(!d->mInvitationUi->mLegacyBodyInvites->isChecked()); 0098 loadWidget(d->mInvitationUi->mDeleteInvitations, MessageViewer::MessageViewerSettings::self()->deleteInvitationEmailsAfterSendingReplyItem()); 0099 } 0100 0101 void InvitationSettings::save() 0102 { 0103 saveCheckBox(d->mInvitationUi->mLegacyMangleFromTo, MessageViewer::MessageViewerSettings::self()->legacyMangleFromToHeadersItem()); 0104 saveCheckBox(d->mInvitationUi->mLegacyBodyInvites, MessageViewer::MessageViewerSettings::self()->legacyBodyInvitesItem()); 0105 saveCheckBox(d->mInvitationUi->mExchangeCompatibleInvitations, MessageViewer::MessageViewerSettings::self()->exchangeCompatibleInvitationsItem()); 0106 saveCheckBox(d->mInvitationUi->mAutomaticSending, MessageViewer::MessageViewerSettings::self()->automaticSendingItem()); 0107 saveCheckBox(d->mInvitationUi->mDeleteInvitations, MessageViewer::MessageViewerSettings::self()->deleteInvitationEmailsAfterSendingReplyItem()); 0108 } 0109 0110 QString InvitationSettings::helpAnchor() const 0111 { 0112 return QStringLiteral("configure-misc-invites"); 0113 } 0114 0115 void InvitationSettings::doResetToDefaultsOther() 0116 { 0117 const bool bUseDefaults = MessageViewer::MessageViewerSettings::self()->useDefaults(true); 0118 loadWidget(d->mInvitationUi->mLegacyMangleFromTo, MessageViewer::MessageViewerSettings::self()->legacyMangleFromToHeadersItem()); 0119 d->mInvitationUi->mLegacyBodyInvites->blockSignals(true); 0120 loadWidget(d->mInvitationUi->mLegacyBodyInvites, MessageViewer::MessageViewerSettings::self()->legacyBodyInvitesItem()); 0121 d->mInvitationUi->mLegacyBodyInvites->blockSignals(false); 0122 loadWidget(d->mInvitationUi->mExchangeCompatibleInvitations, MessageViewer::MessageViewerSettings::self()->exchangeCompatibleInvitationsItem()); 0123 loadWidget(d->mInvitationUi->mAutomaticSending, MessageViewer::MessageViewerSettings::self()->automaticSendingItem()); 0124 // TODO verify it 0125 d->mInvitationUi->mAutomaticSending->setEnabled(!d->mInvitationUi->mLegacyBodyInvites->isChecked()); 0126 loadWidget(d->mInvitationUi->mDeleteInvitations, MessageViewer::MessageViewerSettings::self()->deleteInvitationEmailsAfterSendingReplyItem()); 0127 MessageViewer::MessageViewerSettings::self()->useDefaults(bUseDefaults); 0128 } 0129 0130 #include "moc_invitationsettings.cpp"