File indexing completed on 2024-06-23 05:18:38

0001 /*
0002    SPDX-FileCopyrightText: 2019-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "convertsnippetvariablemenu.h"
0008 #include <KLocalizedString>
0009 #include <QMenu>
0010 using namespace MessageComposer;
0011 ConvertSnippetVariableMenu::ConvertSnippetVariableMenu(bool onlyMenuForCustomizeAttachmentFileName, QWidget *parentWidget, QObject *parent)
0012     : QObject(parent)
0013     , mParentWidget(parentWidget)
0014 {
0015     initializeMenu(onlyMenuForCustomizeAttachmentFileName);
0016 }
0017 
0018 ConvertSnippetVariableMenu::~ConvertSnippetVariableMenu() = default;
0019 
0020 void ConvertSnippetVariableMenu::initializeMenu(bool onlyMenuForCustomizeAttachmentFileName)
0021 {
0022     QMenu *dateTimeMenuVariable = nullptr;
0023     if (!onlyMenuForCustomizeAttachmentFileName) {
0024         mMenu = new QMenu(mParentWidget);
0025         mMenu->setFocusPolicy(Qt::NoFocus);
0026 
0027         auto toMenuVariable = new QMenu(i18n("To"), mMenu);
0028         toMenuVariable->addAction(i18n("To Field Address"), this, [this]() {
0029             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::ToAddr);
0030         });
0031         toMenuVariable->addAction(i18n("To Field Last Name"), this, [this]() {
0032             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::ToLname);
0033         });
0034         toMenuVariable->addAction(i18n("To Field First Name"), this, [this]() {
0035             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::ToFname);
0036         });
0037         toMenuVariable->addAction(i18n("To Field Name"), this, [this]() {
0038             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::ToName);
0039         });
0040         mMenu->addMenu(toMenuVariable);
0041 
0042         auto fromMenuVariable = new QMenu(i18n("From"), mMenu);
0043         fromMenuVariable->addAction(i18n("From Field Address"), this, [this]() {
0044             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::FromAddr);
0045         });
0046         fromMenuVariable->addAction(i18n("From Field Last Name"), this, [this]() {
0047             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::FromLname);
0048         });
0049         fromMenuVariable->addAction(i18n("From Field First Name"), this, [this]() {
0050             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::FromFname);
0051         });
0052         fromMenuVariable->addAction(i18n("From Field Name"), this, [this]() {
0053             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::FromName);
0054         });
0055         mMenu->addMenu(fromMenuVariable);
0056 
0057         auto ccMenuVariable = new QMenu(i18n("CC"), mMenu);
0058         ccMenuVariable->addAction(i18n("CC Field Address"), this, [this]() {
0059             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::CcAddr);
0060         });
0061         ccMenuVariable->addAction(i18n("CC Field Last Name"), this, [this]() {
0062             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::CcLname);
0063         });
0064         ccMenuVariable->addAction(i18n("CC Field First Name"), this, [this]() {
0065             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::CcFname);
0066         });
0067         ccMenuVariable->addAction(i18n("CC Field Name"), this, [this]() {
0068             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::CcName);
0069         });
0070 
0071         mMenu->addMenu(ccMenuVariable);
0072 
0073         auto bccMenuVariable = new QMenu(i18n("Bcc"), mMenu);
0074         bccMenuVariable->addAction(i18n("BCC Field Address"), this, [this]() {
0075             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::BccAddr);
0076         });
0077         bccMenuVariable->addAction(i18n("BCC Field Last Name"), this, [this]() {
0078             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::BccLname);
0079         });
0080         bccMenuVariable->addAction(i18n("BCC Field First Name"), this, [this]() {
0081             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::BccFname);
0082         });
0083         bccMenuVariable->addAction(i18n("BCC Field Name"), this, [this]() {
0084             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::BccName);
0085         });
0086 
0087         mMenu->addMenu(bccMenuVariable);
0088 
0089         auto attachmentMenuVariable = new QMenu(i18n("Attachment"), mMenu);
0090         attachmentMenuVariable->addAction(i18n("Number Of Attachments"), this, [this]() {
0091             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::AttachmentCount);
0092         });
0093         attachmentMenuVariable->addAction(i18n("Names"), this, [this]() {
0094             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::AttachmentName);
0095         });
0096         attachmentMenuVariable->addAction(i18n("Filenames"), this, [this]() {
0097             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::AttachmentFilenames);
0098         });
0099         attachmentMenuVariable->addAction(i18n("Names and Sizes"), this, [this]() {
0100             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::AttachmentNamesAndSizes);
0101         });
0102         mMenu->addMenu(attachmentMenuVariable);
0103         dateTimeMenuVariable = new QMenu(i18n("Date/Time"), mMenu);
0104         dateTimeMenuVariable->addAction(i18n("Day Of Week (%1)", MessageComposer::ConvertSnippetVariablesUtil::dayOfWeek()), this, [this]() {
0105             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::Dow);
0106         });
0107         dateTimeMenuVariable->addAction(i18n("Date (%1)", MessageComposer::ConvertSnippetVariablesUtil::shortDate()), this, [this]() {
0108             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::ShortDate);
0109         });
0110         dateTimeMenuVariable->addAction(i18n("Long Date (%1)", MessageComposer::ConvertSnippetVariablesUtil::longDate()), this, [this]() {
0111             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::Date);
0112         });
0113         dateTimeMenuVariable->addAction(i18n("Short Time (%1)", MessageComposer::ConvertSnippetVariablesUtil::shortTime()), this, [this]() {
0114             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::Time);
0115         });
0116         dateTimeMenuVariable->addAction(i18n("Time (%1)", MessageComposer::ConvertSnippetVariablesUtil::longTime()), this, [this]() {
0117             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::TimeLong);
0118         });
0119         dateTimeMenuVariable->addAction(i18n("Year (%1)", MessageComposer::ConvertSnippetVariablesUtil::year()), this, [this]() {
0120             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::Year);
0121         });
0122     } else {
0123         dateTimeMenuVariable = new QMenu(i18n("Date/Time"), mParentWidget);
0124         mMenu = dateTimeMenuVariable;
0125     }
0126 
0127     dateTimeMenuVariable->addAction(i18n("Last Year (%1)", MessageComposer::ConvertSnippetVariablesUtil::lastYear()), this, [this]() {
0128         Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::LastYear);
0129     });
0130     dateTimeMenuVariable->addAction(i18n("Next Year (%1)", MessageComposer::ConvertSnippetVariablesUtil::nextYear()), this, [this]() {
0131         Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::NextYear);
0132     });
0133     dateTimeMenuVariable->addAction(i18n("Month Number (%1)", MessageComposer::ConvertSnippetVariablesUtil::monthNumber()), this, [this]() {
0134         Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::MonthNumber);
0135     });
0136     dateTimeMenuVariable->addAction(i18n("Day Of Month (%1)", MessageComposer::ConvertSnippetVariablesUtil::dayOfMonth()), this, [this]() {
0137         Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::DayOfMonth);
0138     });
0139     dateTimeMenuVariable->addAction(i18n("Week Number (%1)", MessageComposer::ConvertSnippetVariablesUtil::weekNumber()), this, [this]() {
0140         Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::WeekNumber);
0141     });
0142     dateTimeMenuVariable->addAction(i18n("Month Name Short (%1)", MessageComposer::ConvertSnippetVariablesUtil::monthNameShort()), this, [this]() {
0143         Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::MonthNameShort);
0144     });
0145     dateTimeMenuVariable->addAction(i18n("Month Name Long (%1)", MessageComposer::ConvertSnippetVariablesUtil::monthNameLong()), this, [this]() {
0146         Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::MonthNameLong);
0147     });
0148     dateTimeMenuVariable->addAction(i18n("Last Month Name Long (%1)", MessageComposer::ConvertSnippetVariablesUtil::lastMonthNameLong()), this, [this]() {
0149         Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::LastMonthNameLong);
0150     });
0151     dateTimeMenuVariable->addAction(i18n("Day Of Week (%1)", MessageComposer::ConvertSnippetVariablesUtil::dayOfWeek()), this, [this]() {
0152         Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::DayOfWeek);
0153     });
0154     dateTimeMenuVariable->addAction(i18n("Day Of Week Name Short (%1)", MessageComposer::ConvertSnippetVariablesUtil::dayOfWeekNameShort()), this, [this]() {
0155         Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::DayOfWeekNameShort);
0156     });
0157     dateTimeMenuVariable->addAction(i18n("Day Of Week Name Long (%1)", MessageComposer::ConvertSnippetVariablesUtil::dayOfWeekNameLong()), this, [this]() {
0158         Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::DayOfWeekNameLong);
0159     });
0160     dateTimeMenuVariable->addAction(i18n("Year Last Month (%1)", MessageComposer::ConvertSnippetVariablesUtil::yearLastMonth()), this, [this]() {
0161         Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::YearLastMonth);
0162     });
0163     if (!onlyMenuForCustomizeAttachmentFileName) {
0164         mMenu->addMenu(dateTimeMenuVariable);
0165         auto miscVariable = new QMenu(i18n("Misc"), mMenu);
0166         miscVariable->addAction(i18n("Subject"), this, [this]() {
0167             Q_EMIT insertVariable(MessageComposer::ConvertSnippetVariablesUtil::FullSubject);
0168         });
0169         // Add more variables!
0170         mMenu->addMenu(miscVariable);
0171     }
0172 }
0173 
0174 QMenu *ConvertSnippetVariableMenu::menu() const
0175 {
0176     return mMenu;
0177 }
0178 
0179 #include "moc_convertsnippetvariablemenu.cpp"