aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui/mail
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/mail')
-rw-r--r--src/ui/mail/EmailListEditor.cpp106
-rw-r--r--src/ui/mail/EmailListEditor.h85
-rw-r--r--src/ui/mail/IMAPFolder.cpp95
-rw-r--r--src/ui/mail/IMAPFolder.h91
-rw-r--r--src/ui/mail/ReceiveMailDialog.cpp42
-rw-r--r--src/ui/mail/ReceiveMailDialog.h80
-rw-r--r--src/ui/mail/RecipientsPicker.cpp80
-rw-r--r--src/ui/mail/RecipientsPicker.h68
-rw-r--r--src/ui/mail/SendMailDialog.cpp439
-rw-r--r--src/ui/mail/SendMailDialog.h132
-rw-r--r--src/ui/mail/SenderPicker.cpp81
-rw-r--r--src/ui/mail/SenderPicker.h66
12 files changed, 0 insertions, 1365 deletions
diff --git a/src/ui/mail/EmailListEditor.cpp b/src/ui/mail/EmailListEditor.cpp
deleted file mode 100644
index b5147115..00000000
--- a/src/ui/mail/EmailListEditor.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-/**
- * Copyright (C) 2021 Saturneric
- *
- * This file is part of GpgFrontend.
- *
- * GpgFrontend is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GpgFrontend is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
- *
- * The initial version of the source code is inherited from
- * the gpg4usb project, which is under GPL-3.0-or-later.
- *
- * All the source code of GpgFrontend was modified and released by
- * Saturneric<[email protected]> starting on May 12, 2021.
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *
- */
-
-#include "EmailListEditor.h"
-
-#include "ui_EmailListEditor.h"
-
-GpgFrontend::UI::EmailListEditor::EmailListEditor(const QString& email_list,
- QWidget* parent)
- : QDialog(parent), ui_(std::make_shared<Ui_EmailListEditorDialog>()) {
- ui_->setupUi(this);
-
- QStringList email_string_list = email_list.split(';');
-
- if (!email_string_list.isEmpty()) {
- for (const auto& recipient : email_string_list) {
- auto _recipient = recipient.trimmed();
- if (check_email_address(_recipient)) {
- auto item = new QListWidgetItem(_recipient);
- ui_->emaillistWidget->addItem(item);
- item->setFlags(item->flags() | Qt::ItemIsEditable);
- }
- }
- }
-
- connect(ui_->addEmailAddressButton, &QPushButton::clicked, this, [=]() {
- auto item = new QListWidgetItem("new email address");
- ui_->emaillistWidget->addItem(item);
- item->setFlags(item->flags() | Qt::ItemIsEditable);
- });
-
- connect(ui_->actionDelete_Selected_Email_Address, &QAction::triggered, this,
- [=]() {
- const auto row_size = ui_->emaillistWidget->count();
- for (int i = 0; i < row_size; i++) {
- auto item = ui_->emaillistWidget->item(i);
- if (!item->isSelected()) continue;
- delete ui_->emaillistWidget->takeItem(
- ui_->emaillistWidget->row(item));
- break;
- }
- });
-
- ui_->titleLabel->setText(_("Email List:"));
- ui_->tipsLabel->setText(
- _("Tips: You can double-click the email address in the edit list, or "
- "click the email to pop up the option menu."));
- ui_->addEmailAddressButton->setText(_("Add An Email Address"));
- this->setWindowTitle(_("Email List Editor"));
- ui_->actionDelete_Selected_Email_Address->setText(_("Delete"));
-
- popup_menu_ = new QMenu(this);
- popup_menu_->addAction(ui_->actionDelete_Selected_Email_Address);
-
- this->exec();
-}
-
-bool GpgFrontend::UI::EmailListEditor::check_email_address(
- const QString& email_address) {
- return re_email_.match(email_address).hasMatch();
-}
-
-QString GpgFrontend::UI::EmailListEditor::GetEmailList() {
- QString email_list;
- for (int i = 0; i < ui_->emaillistWidget->count(); ++i) {
- QListWidgetItem* item = ui_->emaillistWidget->item(i);
- if (check_email_address(item->text())) {
- email_list.append(item->text());
- email_list.append("; ");
- }
- }
- return email_list;
-}
-
-void GpgFrontend::UI::EmailListEditor::contextMenuEvent(
- QContextMenuEvent* event) {
- QWidget::contextMenuEvent(event);
- if (ui_->emaillistWidget->selectedItems().length() > 0) {
- popup_menu_->exec(event->globalPos());
- }
-}
diff --git a/src/ui/mail/EmailListEditor.h b/src/ui/mail/EmailListEditor.h
deleted file mode 100644
index b716ff66..00000000
--- a/src/ui/mail/EmailListEditor.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/**
- * Copyright (C) 2021 Saturneric
- *
- * This file is part of GpgFrontend.
- *
- * GpgFrontend is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GpgFrontend is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
- *
- * The initial version of the source code is inherited from
- * the gpg4usb project, which is under GPL-3.0-or-later.
- *
- * All the source code of GpgFrontend was modified and released by
- * Saturneric<[email protected]> starting on May 12, 2021.
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *
- */
-
-#ifndef GPGFRONTEND_EMAILLISTEDITOR_H
-#define GPGFRONTEND_EMAILLISTEDITOR_H
-
-#include "GpgFrontendUI.h"
-
-class Ui_EmailListEditorDialog;
-
-namespace GpgFrontend::UI {
-/**
- * @brief
- *
- */
-class EmailListEditor : public QDialog {
- Q_OBJECT
-
- public:
- /**
- * @brief Construct a new Email List Editor object
- *
- * @param email_list
- * @param parent
- */
- explicit EmailListEditor(const QString& email_list, QWidget* parent);
-
- /**
- * @brief Get the Email List object
- *
- * @return QString
- */
- QString GetEmailList();
-
- private:
- std::shared_ptr<Ui_EmailListEditorDialog> ui_; ///<
- QMenu* popup_menu_{}; ///<
- QRegularExpression re_email_{
- R"((?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]))"};
-
- /**
- * @brief
- *
- * @param email_address
- * @return true
- * @return false
- */
- bool check_email_address(const QString& email_address);
-
- protected:
- /**
- * @brief
- *
- * @param event
- */
- void contextMenuEvent(QContextMenuEvent* event) override;
-};
-} // namespace GpgFrontend::UI
-
-#endif // GPGFRONTEND_EMAILLISTEDITOR_H
diff --git a/src/ui/mail/IMAPFolder.cpp b/src/ui/mail/IMAPFolder.cpp
deleted file mode 100644
index 68a894f7..00000000
--- a/src/ui/mail/IMAPFolder.cpp
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- * Copyright (C) 2021 Saturneric
- *
- * This file is part of GpgFrontend.
- *
- * GpgFrontend is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GpgFrontend is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
- *
- * The initial version of the source code is inherited from
- * the gpg4usb project, which is under GPL-3.0-or-later.
- *
- * All the source code of GpgFrontend was modified and released by
- * Saturneric<[email protected]> starting on May 12, 2021.
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *
- */
-
-#include "IMAPFolder.h"
-
-#include <utility>
-#include <vmime/vmime.hpp>
-
-GpgFrontend::UI::IMAPFolder::IMAPFolder(
- std::shared_ptr<vmime::net::folder> folder)
- : folder_(std::move(folder)),
- tree_node_(new QTreeWidgetItem(static_cast<QTreeWidget *>(nullptr),
- {"server"})) {
- const std::string folder_name = folder_->getName().getBuffer();
- LOG(INFO) << "folder" << folder_name;
-
- const vmime::net::folderAttributes attr = folder_->getAttributes();
- std::ostringstream attrStr;
-
- tree_node_->setIcon(0, QIcon(":folder.png"));
- if (attr.getSpecialUse() == vmime::net::folderAttributes::SPECIALUSE_ALL) {
- LOG(INFO) << "use:All";
- } else if (attr.getSpecialUse() ==
- vmime::net::folderAttributes::SPECIALUSE_ARCHIVE) {
- tree_node_->setIcon(0, QIcon(":archive.png"));
- } else if (attr.getSpecialUse() ==
- vmime::net::folderAttributes::SPECIALUSE_DRAFTS) {
- tree_node_->setIcon(0, QIcon(":drafts.png"));
- } else if (attr.getSpecialUse() ==
- vmime::net::folderAttributes::SPECIALUSE_FLAGGED) {
- tree_node_->setIcon(0, QIcon(":flag.png"));
- } else if (attr.getSpecialUse() ==
- vmime::net::folderAttributes::SPECIALUSE_JUNK) {
- tree_node_->setIcon(0, QIcon(":junk.png"));
- } else if (attr.getSpecialUse() ==
- vmime::net::folderAttributes::SPECIALUSE_SENT) {
- tree_node_->setIcon(0, QIcon(":sent.png"));
- } else if (attr.getSpecialUse() ==
- vmime::net::folderAttributes::SPECIALUSE_TRASH) {
- tree_node_->setIcon(0, QIcon(":trash.png"));
- } else if (attr.getSpecialUse() ==
- vmime::net::folderAttributes::SPECIALUSE_IMPORTANT) {
- tree_node_->setIcon(0, QIcon(":importance.png"));
- }
-
- if (attr.getFlags() & vmime::net::folderAttributes::FLAG_HAS_CHILDREN) {
- LOG(INFO) << " flag:HasChildren";
- }
- if (attr.getFlags() & vmime::net::folderAttributes::FLAG_NO_OPEN) {
- LOG(INFO) << " flag:NoOpen";
- // tree_node_->setDisabled(true);
- }
-
- if (!folder_name.empty())
- tree_node_->setText(0, folder_name.c_str());
- else
- tree_node_->setIcon(0, QIcon(":server.png"));
-}
-
-void GpgFrontend::UI::IMAPFolder::SetParentFolder(IMAPFolder *parent_folder) {
- parent_folder->GetTreeWidgetItem()->addChild(tree_node_);
-}
-
-QTreeWidgetItem *GpgFrontend::UI::IMAPFolder::GetTreeWidgetItem() {
- return tree_node_;
-}
-
-vmime::net::folder *GpgFrontend::UI::IMAPFolder::GetVmimeFolder() {
- return folder_.get();
-}
diff --git a/src/ui/mail/IMAPFolder.h b/src/ui/mail/IMAPFolder.h
deleted file mode 100644
index 7dc52438..00000000
--- a/src/ui/mail/IMAPFolder.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * Copyright (C) 2021 Saturneric
- *
- * This file is part of GpgFrontend.
- *
- * GpgFrontend is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GpgFrontend is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
- *
- * The initial version of the source code is inherited from
- * the gpg4usb project, which is under GPL-3.0-or-later.
- *
- * All the source code of GpgFrontend was modified and released by
- * Saturneric<[email protected]> starting on May 12, 2021.
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *
- */
-#ifndef GPGFRONTEND_IMAPFOLDER_H
-#define GPGFRONTEND_IMAPFOLDER_H
-
-#include "GpgFrontendUI.h"
-
-namespace vmime::net {
-class folder;
-};
-
-namespace GpgFrontend::UI {
-/**
- * @brief
- *
- */
-class IMAPFolder {
- public:
- /**
- * @brief Construct a new IMAPFolder object
- *
- * @param folder
- */
- explicit IMAPFolder(std::shared_ptr<vmime::net::folder> folder);
-
- /**
- * @brief Copy and construct the IMAPFolder object
- */
- IMAPFolder(const IMAPFolder &) = default;
-
- /**
- * @brief Copy the IMAPFolder object
- *
- * @return
- */
- IMAPFolder &operator=(const IMAPFolder &) = default;
-
-
- /**
- * @brief Set the Parent Folder object
- *
- * @param parent_node
- */
- void SetParentFolder(IMAPFolder* parent_node);
-
- /**
- * @brief Get the Tree Widget Item object
- *
- * @return QTreeWidgetItem*
- */
- QTreeWidgetItem* GetTreeWidgetItem();
-
- /**
- * @brief Get the Vmime Folder object
- *
- * @return vmime::net::folder*
- */
- vmime::net::folder* GetVmimeFolder();
-
- private:
- std::shared_ptr<vmime::net::folder> folder_; ///<
- QTreeWidgetItem* tree_node_; ///<
-};
-} // namespace GpgFrontend::UI
-
-#endif // GPGFRONTEND_IMAPFOLDER_H
diff --git a/src/ui/mail/ReceiveMailDialog.cpp b/src/ui/mail/ReceiveMailDialog.cpp
deleted file mode 100644
index 765e8baa..00000000
--- a/src/ui/mail/ReceiveMailDialog.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * Copyright (C) 2021 Saturneric
- *
- * This file is part of GpgFrontend.
- *
- * GpgFrontend is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GpgFrontend is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
- *
- * The initial version of the source code is inherited from
- * the gpg4usb project, which is under GPL-3.0-or-later.
- *
- * All the source code of GpgFrontend was modified and released by
- * Saturneric<[email protected]> starting on May 12, 2021.
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *
- */
-
-#include "ReceiveMailDialog.h"
-
-#include "ui_ReceiveMailDialog.h"
-
-GpgFrontend::UI::ReceiveMailDialog::ReceiveMailDialog(QWidget *parent)
- : QDialog(parent), ui_(std::make_shared<Ui_ReceiveMailDialog>()) {
- ui_->setupUi(this);
-}
-
-void GpgFrontend::UI::ReceiveMailDialog::slot_refresh_data() {}
-
-void GpgFrontend::UI::ReceiveMailDialog::list_sub_folders(
- GpgFrontend::UI::IMAPFolder *parent_folder,
- const std::shared_ptr<vmime::net::folder> &) {}
diff --git a/src/ui/mail/ReceiveMailDialog.h b/src/ui/mail/ReceiveMailDialog.h
deleted file mode 100644
index 2ccb2664..00000000
--- a/src/ui/mail/ReceiveMailDialog.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
- * Copyright (C) 2021 Saturneric
- *
- * This file is part of GpgFrontend.
- *
- * GpgFrontend is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GpgFrontend is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
- *
- * The initial version of the source code is inherited from
- * the gpg4usb project, which is under GPL-3.0-or-later.
- *
- * All the source code of GpgFrontend was modified and released by
- * Saturneric<[email protected]> starting on May 12, 2021.
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *
- */
-
-#ifndef GPGFRONTEND_RECEIVEMAILDIALOG_H
-#define GPGFRONTEND_RECEIVEMAILDIALOG_H
-
-#include "ui/GpgFrontendUI.h"
-
-class Ui_ReceiveMailDialog;
-
-namespace vmime::net {
-class folder;
-};
-
-namespace GpgFrontend::UI {
-
-class IMAPFolder;
-
-/**
- * @brief
- *
- */
-class ReceiveMailDialog : public QDialog {
- Q_OBJECT
- public:
- /**
- * @brief Construct a new Receive Mail Dialog object
- *
- * @param parent
- */
- explicit ReceiveMailDialog(QWidget* parent);
-
- private slots:
- /**
- * @brief
- *
- */
- void slot_refresh_data();
-
- private:
- std::shared_ptr<Ui_ReceiveMailDialog> ui_; ///<
- std::vector<std::shared_ptr<IMAPFolder>> folders_; ///<
-
- /**
- * @brief
- *
- * @param parent_folder
- */
- void list_sub_folders(IMAPFolder* parent_folder,
- const std::shared_ptr<vmime::net::folder>&);
-};
-
-} // namespace GpgFrontend::UI
-
-#endif // GPGFRONTEND_RECEIVEMAILDIALOG_H
diff --git a/src/ui/mail/RecipientsPicker.cpp b/src/ui/mail/RecipientsPicker.cpp
deleted file mode 100644
index d6b8bcc5..00000000
--- a/src/ui/mail/RecipientsPicker.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
- * Copyright (C) 2021 Saturneric
- *
- * This file is part of GpgFrontend.
- *
- * GpgFrontend is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GpgFrontend is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
- *
- * The initial version of the source code is inherited from
- * the gpg4usb project, which is under GPL-3.0-or-later.
- *
- * All the source code of GpgFrontend was modified and released by
- * Saturneric<[email protected]> starting on May 12, 2021.
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *
- */
-
-#include "RecipientsPicker.h"
-
-#include "ui/widgets/KeyList.h"
-
-GpgFrontend::UI::RecipientsPicker::RecipientsPicker(
- const GpgFrontend::KeyIdArgsListPtr& current_key_ids, QWidget* parent)
- : QDialog(parent) {
- auto confirm_button = new QPushButton(_("Confirm"));
- connect(confirm_button,&QPushButton::clicked, this, &RecipientsPicker::accept);
-
- // Setup KeyList
- key_list_ = new KeyList(KeyMenuAbility::NONE, this);
- key_list_->AddListGroupTab(
- _("Recipient(s)"), KeyListRow::SECRET_OR_PUBLIC_KEY,
- KeyListColumn::NAME | KeyListColumn::EmailAddress,
- [](const GpgKey& key) -> bool {
- return !key.IsPrivateKey() && key.IsHasActualEncryptionCapability();
- });
- key_list_->SlotRefresh();
-
- auto key_ids = std::make_unique<GpgFrontend::KeyIdArgsList>();
- for (const auto& key_id : *current_key_ids) {
- key_ids->push_back(key_id);
- }
- key_list_->SetChecked(std::move(key_ids));
-
- auto* vbox2 = new QVBoxLayout();
- vbox2->addWidget(new QLabel(QString(_("Select Recipient(s)")) + ": "));
- vbox2->addWidget(key_list_);
- vbox2->addWidget(new QLabel(
- QString(_("We use the public key provided by the recipient to encrypt "
- "the text.")) +
- "\n" +
- _("If you want to send to multiple recipients at the same time, you can "
- "select multiple keys.")));
- vbox2->addWidget(confirm_button);
- vbox2->addStretch(0);
- setLayout(vbox2);
-
- this->setWindowFlags(Qt::Window | Qt::WindowTitleHint |
- Qt::CustomizeWindowHint);
-
- this->setModal(true);
- this->setWindowTitle("Recipient(s) Picker");
- this->setMinimumWidth(480);
- this->exec();
-}
-
-GpgFrontend::KeyIdArgsListPtr
-GpgFrontend::UI::RecipientsPicker::GetCheckedRecipients() {
- return key_list_->GetChecked();
-}
diff --git a/src/ui/mail/RecipientsPicker.h b/src/ui/mail/RecipientsPicker.h
deleted file mode 100644
index 252bbd58..00000000
--- a/src/ui/mail/RecipientsPicker.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * Copyright (C) 2021 Saturneric
- *
- * This file is part of GpgFrontend.
- *
- * GpgFrontend is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GpgFrontend is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
- *
- * The initial version of the source code is inherited from
- * the gpg4usb project, which is under GPL-3.0-or-later.
- *
- * All the source code of GpgFrontend was modified and released by
- * Saturneric<[email protected]> starting on May 12, 2021.
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *
- */
-
-#ifndef GPGFRONTEND_RECIPENTSPICKER_H
-#define GPGFRONTEND_RECIPENTSPICKER_H
-
-#include "GpgFrontendUI.h"
-
-namespace GpgFrontend::UI {
-
-class KeyList;
-
-/**
- * @brief
- *
- */
-class RecipientsPicker : public QDialog {
- Q_OBJECT
-
- public:
- /**
- * @brief Construct a new Recipients Picker object
- *
- * @param current_key_ids
- * @param parent
- */
- explicit RecipientsPicker(
- const GpgFrontend::KeyIdArgsListPtr& current_key_ids,
- QWidget* parent = nullptr);
-
- /**
- * @brief Get the Checked Recipients object
- *
- * @return GpgFrontend::KeyIdArgsListPtr
- */
- GpgFrontend::KeyIdArgsListPtr GetCheckedRecipients();
-
- private:
- KeyList* key_list_; ///<
-};
-} // namespace GpgFrontend::UI
-
-#endif // GPGFRONTEND_RECIPENTSPICKER_H
diff --git a/src/ui/mail/SendMailDialog.cpp b/src/ui/mail/SendMailDialog.cpp
deleted file mode 100644
index 137c941f..00000000
--- a/src/ui/mail/SendMailDialog.cpp
+++ /dev/null
@@ -1,439 +0,0 @@
-/**
- * Copyright (C) 2021 Saturneric
- *
- * This file is part of GpgFrontend.
- *
- * GpgFrontend is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GpgFrontend is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
- *
- * The initial version of the source code is inherited from
- * the gpg4usb project, which is under GPL-3.0-or-later.
- *
- * All the source code of GpgFrontend was modified and released by
- * Saturneric<[email protected]> starting on May 12, 2021.
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *
- */
-
-#include "SendMailDialog.h"
-
-#include "core/function/gpg/GpgKeyGetter.h"
-#include "ui/mail/EmailListEditor.h"
-#include "ui/mail/RecipientsPicker.h"
-#include "ui/mail/SenderPicker.h"
-#include "ui_SendMailDialog.h"
-
-#ifdef SMTP_SUPPORT
-#include "core/function/GlobalSettingStation.h"
-#include "ui/thread/SMTPSendMailThread.h"
-#endif
-
-namespace GpgFrontend::UI {
-
-SendMailDialog::SendMailDialog(const QString& text, QWidget* parent)
- : QDialog(parent), ui_(std::make_shared<Ui_SendMailDialog>()) {
- // read from settings
- init_settings();
-
- if (smtp_address_.isEmpty()) {
- QMessageBox::critical(
- this->parentWidget(), _("Incomplete configuration"),
- _("The SMTP address is empty, please go to the setting interface to "
- "complete the configuration."));
-
- deleteLater();
- return;
- }
-
- ui_->setupUi(this);
-
- ui_->ccInputWidget->setHidden(true);
- ui_->bccInputWidget->setHidden(true);
- ui_->textEdit->setText(text);
- ui_->errorLabel->setHidden(true);
-
- ui_->senderEdit->setText(default_sender_);
-
- if (!default_sender_gpg_key_id_.isEmpty()) {
- auto key = GpgKeyGetter::GetInstance().GetKey(
- default_sender_gpg_key_id_.toStdString());
- if (key.IsGood() && key.IsPrivateKey() &&
- key.IsHasActualSigningCapability()) {
- sender_key_id_ = key.GetId();
- set_sender_value_label();
- }
- }
-
- connect(ui_->ccButton, &QPushButton::clicked, [=]() {
- ui_->ccInputWidget->setHidden(!ui_->ccInputWidget->isHidden());
- ui_->ccEdit->clear();
- });
- connect(ui_->bccButton, &QPushButton::clicked, [=]() {
- ui_->bccInputWidget->setHidden(!ui_->bccInputWidget->isHidden());
- ui_->bccEdit->clear();
- });
-
-#ifdef SMTP_SUPPORT
- connect(ui_->sendMailButton, &QPushButton::clicked, this,
- &SendMailDialog::slot_confirm);
-#endif
-
- connect(ui_->senderKeySelectButton, &QPushButton::clicked, this, [=]() {
- auto picker = new SenderPicker(sender_key_id_, this);
- sender_key_id_ = picker->GetCheckedSender();
- set_sender_value_label();
- });
-
- connect(ui_->recipientKeySelectButton, &QPushButton::clicked, this, [=]() {
- auto picker = new RecipientsPicker(recipients_key_ids_, this);
- recipients_key_ids_ = picker->GetCheckedRecipients();
- set_recipients_value_label();
- });
-
- connect(ui_->recipientsEditButton, &QPushButton::clicked, this, [=]() {
- auto editor = new EmailListEditor(ui_->recipientEdit->text(), this);
- ui_->recipientEdit->setText(editor->GetEmailList());
- });
-
- connect(ui_->ccEditButton, &QPushButton::clicked, this, [=]() {
- auto editor = new EmailListEditor(ui_->ccEdit->text(), this);
- ui_->ccEdit->setText(editor->GetEmailList());
- });
-
- connect(ui_->bccEditButton, &QPushButton::clicked, this, [=]() {
- auto editor = new EmailListEditor(ui_->bccEdit->text(), this);
- ui_->bccEdit->setText(editor->GetEmailList());
- });
-
- ui_->ccButton->setText(_("CC"));
- ui_->bccButton->setText(_("BCC"));
- ui_->senderLabel->setText(_("Sender"));
- ui_->recipientLabel->setText(_("Recipient"));
- ui_->subjectLabel->setText(_("Mail Subject"));
- ui_->bccLabel->setText(_("BCC"));
- ui_->ccLabel->setText(_("CC"));
- ui_->tipsLabel->setText(
- _("Tips: You can fill in multiple email addresses, please separate them "
- "with \";\"."));
- ui_->sendMailButton->setText(_("Send Message"));
- ui_->senderKeySelectButton->setText(_("Select Sender GPG Key"));
- ui_->recipientKeySelectButton->setText(_("Select Recipient(s) GPG Key"));
- ui_->gpgOperaLabel->setText(_("GPG Operations"));
- ui_->attacSignatureCheckBox->setText(_("Attach signature"));
- ui_->attachSenderPublickeyCheckBox->setText(_("Attach sender's public key"));
- ui_->contentEncryptCheckBox->setText(_("Encrypt content"));
- ui_->recipientsEditButton->setText(_("Edit Recipients(s)"));
- ui_->ccEditButton->setText(_("Edit CC(s)"));
- ui_->bccEditButton->setText(_("Edit BCC(s)"));
- ui_->senderKeyLabel->setText(_("Sender GPG Key: "));
- ui_->recipientKeysLabel->setText(_("Recipient(s) GPG Key: "));
-
- auto pos = QPoint(100, 100);
- LOG(INFO) << "parent" << parent;
- if (parent) pos += parent->pos();
- LOG(INFO) << "pos default" << pos.x() << pos.y();
-
- move(pos);
-
- this->setWindowTitle(_("New Message"));
- this->setAttribute(Qt::WA_DeleteOnClose);
-}
-
-bool SendMailDialog::check_email_address(const QString& str) {
- return re_email_.match(str).hasMatch();
-}
-
-#ifdef SMTP_SUPPORT
-
-void SendMailDialog::slot_confirm() {
- QString errString;
- ui_->errorLabel->clear();
- ui_->errorLabel->setHidden(true);
- QStringList rcpt_string_list = ui_->recipientEdit->text().split(';');
- QStringList cc_string_list = ui_->ccEdit->text().split(';');
- QStringList bcc_string_list = ui_->bccEdit->text().split(';');
-
- if (rcpt_string_list.isEmpty()) {
- errString.append(QString(" ") + _("Recipient cannot be empty") + " \n");
- } else {
- for (const auto& reci : rcpt_string_list) {
- LOG(INFO) << "Receiver" << reci.trimmed().toStdString();
- if (!check_email_address(reci.trimmed())) {
- errString.append(QString(" ") +
- _("One or more recipient's email is invalid") +
- " \n");
- break;
- }
- }
- }
- if (ui_->senderEdit->text().isEmpty()) {
- errString.append(QString(" ") + _("Sender cannot be empty") + " \n");
- } else if (!check_email_address(ui_->senderEdit->text())) {
- errString.append(QString(" ") + _("Sender's email is invalid") + " \n");
- }
-
- if (ui_->subjectEdit->text().isEmpty()) {
- errString.append(QString(" ") + _("Subject cannot be empty") + " \n");
- }
-
- if (!ui_->ccEdit->text().isEmpty())
- for (const auto& cc : cc_string_list) {
- LOG(INFO) << "cc" << cc.trimmed().toStdString();
- if (!check_email_address(cc.trimmed())) {
- errString.append(QString(" ") + _("One or more cc email is invalid") +
- " \n");
- break;
- }
- }
-
- if (!ui_->bccEdit->text().isEmpty())
- for (const auto& bcc : bcc_string_list) {
- LOG(INFO) << "bcc" << bcc.trimmed().toStdString();
- if (!check_email_address(bcc.trimmed())) {
- errString.append(QString(" ") + _("One or more bcc email is invalid") +
- " \n");
- break;
- }
- }
-
- if (!errString.isEmpty()) {
- ui_->errorLabel->setAutoFillBackground(true);
- QPalette error = ui_->errorLabel->palette();
- error.setColor(QPalette::Window, "#ff8080");
- ui_->errorLabel->setPalette(error);
- ui_->errorLabel->setText(errString);
- ui_->errorLabel->setHidden(false);
- return;
- }
-
- SmtpClient::ConnectionType connection_type_ =
- SmtpClient::ConnectionType::TcpConnection;
-
- if (connection_type_settings_ == "SSL") {
- connection_type_ = SmtpClient::ConnectionType::SslConnection;
- } else if (connection_type_settings_ == "TLS") {
- connection_type_ = SmtpClient::ConnectionType::TlsConnection;
- } else if (connection_type_settings_ == "STARTTLS") {
- connection_type_ = SmtpClient::ConnectionType::TlsConnection;
- } else {
- connection_type_ = SmtpClient::ConnectionType::TcpConnection;
- }
-
- auto host = smtp_address_.toStdString();
- auto port = port_;
- auto connection_type = connection_type_;
- bool identity_needed = identity_enable_;
- auto username = username_.toStdString();
- auto password = password_.toStdString();
- auto sender_address = ui_->senderEdit->text().toStdString();
-
- auto thread = new SMTPSendMailThread(
- host, port, connection_type, identity_needed, username, password, this);
-
- thread->SetSender(ui_->senderEdit->text());
- thread->SetRecipient(ui_->recipientEdit->text());
- thread->SetCC(ui_->ccEdit->text());
- thread->SetBCC(ui_->bccEdit->text());
- thread->SetSubject(ui_->subjectEdit->text());
- thread->AddTextContent(ui_->textEdit->toPlainText());
-
- if (ui_->contentEncryptCheckBox->checkState() == Qt::Checked) {
- if (recipients_key_ids_ == nullptr || recipients_key_ids_->empty()) {
- QMessageBox::critical(
- this, _("Forbidden"),
- _("You have checked the encrypted email content, but you have not "
- "selected the recipient's GPG key. This is dangerous and the mail "
- "will not be encrypted. So the send operation is forbidden"));
- return;
- } else {
- auto key_ids = std::make_unique<KeyIdArgsList>();
- for (const auto& key_id : *recipients_key_ids_)
- key_ids->push_back(key_id);
- thread->SetEncryptContent(true, std::move(key_ids));
- }
- }
-
- if (ui_->attacSignatureCheckBox->checkState() == Qt::Checked) {
- if (sender_key_id_.empty()) {
- QMessageBox::critical(
- this, _("Forbidden"),
- _("You checked the option to attach signature to the email, but did "
- "not specify the sender's GPG Key. This will cause the content of "
- "the email to be inconsistent with your expectations, so the "
- "operation is prohibited."));
- return;
- } else {
- thread->SetAttachSignatureFile(true, sender_key_id_);
- }
- }
-
- if (ui_->attachSenderPublickeyCheckBox->checkState() == Qt::Checked) {
- if (sender_key_id_.empty()) {
- QMessageBox::critical(
- this, _("Forbidden"),
- _("You checked the option to attach your public key to the email, "
- "but did not specify the sender's GPG Key. This will cause the "
- "content of "
- "the email to be inconsistent "
- "with your expectations, so the operation is prohibited."));
- return;
- } else {
- thread->SetAttachPublicKey(true, sender_key_id_);
- }
- }
-
- // Waiting Dialog
- auto* waiting_dialog = new QProgressDialog(this);
- waiting_dialog->setMaximum(0);
- waiting_dialog->setMinimum(0);
- auto waiting_dialog_label =
- new QLabel(QString(_("Sending Email...")) + "<br /><br />" +
- _("If the process does not end for a long time, please check "
- "again whether your SMTP server configuration is correct."));
- waiting_dialog_label->setWordWrap(true);
- waiting_dialog->setLabel(waiting_dialog_label);
- waiting_dialog->resize(420, 120);
- connect(thread, &SMTPSendMailThread::SignalSMTPResult, this,
- &SendMailDialog::slot_test_smtp_connection_result);
- connect(thread, &QThread::finished, [=]() {
- waiting_dialog->finished(0);
- waiting_dialog->deleteLater();
- });
- connect(waiting_dialog, &QProgressDialog::canceled, [=]() {
- LOG(INFO) << "cancel clicked";
- if (thread->isRunning()) thread->terminate();
- });
-
- // Show Waiting Dialog
- waiting_dialog->show();
- waiting_dialog->setFocus();
-
- thread->start();
- QEventLoop loop;
- connect(thread, &QThread::finished, &loop, &QEventLoop::quit);
- loop.exec();
-}
-
-void SendMailDialog::init_settings() {
- auto& settings = GlobalSettingStation::GetInstance().GetUISettings();
-
- try {
- ability_enable_ = settings.lookup("smtp.enable");
- } catch (...) {
- LOG(ERROR) << _("Setting Operation Error") << _("save_key_checked");
- }
-
- try {
- identity_enable_ = settings.lookup("smtp.identity_enable");
- } catch (...) {
- LOG(ERROR) << _("Setting Operation Error") << _("identity_enable");
- }
-
- try {
- smtp_address_ = settings.lookup("smtp.mail_address").c_str();
- } catch (...) {
- LOG(ERROR) << _("Setting Operation Error") << _("mail_address");
- }
-
- try {
- username_ = settings.lookup("smtp.username").c_str();
- } catch (...) {
- LOG(ERROR) << _("Setting Operation Error") << _("username");
- }
-
- try {
- password_ = settings.lookup("smtp.password").c_str();
- } catch (...) {
- LOG(ERROR) << _("Setting Operation Error") << _("password");
- }
-
- try {
- port_ = settings.lookup("smtp.port");
- } catch (...) {
- LOG(ERROR) << _("Setting Operation Error") << _("port");
- }
-
- try {
- connection_type_settings_ = settings.lookup("smtp.connection_type").c_str();
- } catch (...) {
- LOG(ERROR) << _("Setting Operation Error") << _("connection_type");
- }
-
- try {
- default_sender_ = settings.lookup("smtp.default_sender").c_str();
- } catch (...) {
- LOG(ERROR) << _("Setting Operation Error") << _("default_sender");
- }
-
- try {
- default_sender_gpg_key_id_ =
- settings.lookup("smtp.default_sender_gpg_key_id").c_str();
- } catch (...) {
- LOG(ERROR) << _("Setting Operation Error")
- << _("default_sender_gpg_key_id");
- }
-}
-#endif
-
-void SendMailDialog::set_sender_value_label() {
- auto key = GpgKeyGetter::GetInstance().GetKey(sender_key_id_);
- if (key.IsGood()) {
- ui_->senderKeyValueLabel->setText(key.GetUIDs()->front().GetUID().c_str());
- }
-}
-
-void SendMailDialog::set_recipients_value_label() {
- auto keys = GpgKeyGetter::GetInstance().GetKeys(recipients_key_ids_);
- std::stringstream ss;
- for (const auto& key : *keys) {
- if (key.IsGood()) {
- ss << key.GetUIDs()->front().GetUID().c_str() << ";";
- }
- }
- ui_->recipientsKeyValueLabel->setText(ss.str().c_str());
-}
-
-void SendMailDialog::slot_test_smtp_connection_result(const QString& result) {
- if (result == "Fail to connect SMTP server") {
- QMessageBox::critical(this, _("Fail"), _("Fail to Connect SMTP Server."));
- } else if (result == "Fail to login") {
- QMessageBox::critical(this, _("Fail"), _("Fail to Login."));
- } else if (result == "Fail to send mail") {
- QMessageBox::critical(this, _("Fail"), _("Fail to Login."));
- } else if (result == "Succeed in testing connection") {
- QMessageBox::information(this, _("Success"),
- _("Succeed in connecting and login"));
- } else if (result == "Succeed in sending a test email") {
- QMessageBox::information(
- this, _("Success"),
- _("Succeed in sending the message to the SMTP Server"));
- } else if (result == "Fail to encrypt with gpg keys") {
- QMessageBox::critical(
- this, _("Encryption Error"),
- _("An error occurred while encrypting the content of the email. This "
- "may be because you did not complete some operations during Gnupg "
- "encryption."));
- } else {
- QMessageBox::critical(this, _("Fail"), _("Unknown error."));
- }
-}
-void SendMailDialog::SetContentEncryption(bool on) {
- ui_->contentEncryptCheckBox->setCheckState(on ? Qt::Checked : Qt::Unchecked);
-}
-
-void SendMailDialog::SetAttachSignature(bool on) {
- ui_->attacSignatureCheckBox->setCheckState(on ? Qt::Checked : Qt::Unchecked);
-}
-
-} // namespace GpgFrontend::UI
diff --git a/src/ui/mail/SendMailDialog.h b/src/ui/mail/SendMailDialog.h
deleted file mode 100644
index 3d745e11..00000000
--- a/src/ui/mail/SendMailDialog.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/**
- * Copyright (C) 2021 Saturneric
- *
- * This file is part of GpgFrontend.
- *
- * GpgFrontend is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GpgFrontend is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
- *
- * The initial version of the source code is inherited from
- * the gpg4usb project, which is under GPL-3.0-or-later.
- *
- * All the source code of GpgFrontend was modified and released by
- * Saturneric<[email protected]> starting on May 12, 2021.
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *
- */
-
-#ifndef GPGFRONTEND_SENDMAILDIALOG_H
-#define GPGFRONTEND_SENDMAILDIALOG_H
-
-#include "ui/GpgFrontendUI.h"
-
-class Ui_SendMailDialog;
-
-namespace GpgFrontend::UI {
-
-/**
- * @brief
- *
- */
-class SendMailDialog : public QDialog {
- Q_OBJECT
- public:
- /**
- * @brief Construct a new Send Mail Dialog object
- *
- * @param text
- * @param parent
- */
- explicit SendMailDialog(const QString& text, QWidget* parent = nullptr);
-
- /**
- * @brief Set the Content Encryption object
- *
- * @param on
- */
- void SetContentEncryption(bool on);
-
- /**
- * @brief Set the Attach Signature object
- *
- * @param on
- */
- void SetAttachSignature(bool on);
-
- private slots:
-
- /**
- * @brief
- *
- */
- void slot_confirm();
-
- /**
- * @brief
- *
- * @param result
- */
- void slot_test_smtp_connection_result(const QString& result);
-
- private:
- /**
- * @brief
- *
- */
- void init_settings();
-
- std::shared_ptr<Ui_SendMailDialog> ui_; ///<
-
- bool ability_enable_ = false; ///<
- bool identity_enable_ = false; ///<
- QString smtp_address_; ///<
- QString username_; ///<
- QString password_; ///<
- QString default_sender_; ///<
- QString connection_type_settings_ = "None"; ///<
- QString default_sender_gpg_key_id_ = {}; ///<
- int port_ = 25; ///<
-
- GpgFrontend::KeyId sender_key_id_; ///<
- GpgFrontend::KeyIdArgsListPtr recipients_key_ids_ =
- std::make_unique<GpgFrontend::KeyIdArgsList>(); ///<
-
- QRegularExpression re_email_{
- R"((?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]))"};
-
- /**
- * @brief
- *
- * @param str
- * @return true
- * @return false
- */
- bool check_email_address(const QString& str);
-
- /**
- * @brief Set the sender value label object
- *
- */
- void set_sender_value_label();
-
- /**
- * @brief Set the recipients value label object
- *
- */
- void set_recipients_value_label();
-};
-
-} // namespace GpgFrontend::UI
-
-#endif // GPGFRONTEND_SENDMAILDIALOG_H
diff --git a/src/ui/mail/SenderPicker.cpp b/src/ui/mail/SenderPicker.cpp
deleted file mode 100644
index e3563480..00000000
--- a/src/ui/mail/SenderPicker.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-/**
- * Copyright (C) 2021 Saturneric
- *
- * This file is part of GpgFrontend.
- *
- * GpgFrontend is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GpgFrontend is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
- *
- * The initial version of the source code is inherited from
- * the gpg4usb project, which is under GPL-3.0-or-later.
- *
- * All the source code of GpgFrontend was modified and released by
- * Saturneric<[email protected]> starting on May 12, 2021.
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *
- */
-
-#include "SenderPicker.h"
-
-#include "ui/widgets/KeyList.h"
-
-GpgFrontend::UI::SenderPicker::SenderPicker(const KeyId& current_key_id,
- QWidget* parent)
- : QDialog(parent) {
- auto confirm_button = new QPushButton(_("Confirm"));
- connect(confirm_button, &QPushButton::clicked, this, &SenderPicker::accept);
-
- // Setup KeyList
- key_list_ = new KeyList(KeyMenuAbility::NONE, this);
- key_list_->AddListGroupTab(_("Sender"), KeyListRow::ONLY_SECRET_KEY,
- KeyListColumn::NAME | KeyListColumn::EmailAddress,
- [](const GpgKey& key) -> bool {
- return key.IsHasActualSigningCapability();
- });
- key_list_->SlotRefresh();
-
- auto key_ids = std::make_unique<GpgFrontend::KeyIdArgsList>();
- key_ids->push_back(current_key_id);
- key_list_->SetChecked(std::move(key_ids));
-
- auto* vbox2 = new QVBoxLayout();
- vbox2->addWidget(new QLabel(QString(_("Select Sender")) + ": "));
- vbox2->addWidget(key_list_);
- vbox2->addWidget(new QLabel(
- QString(
- _("As the sender of the mail, the private key is generally used.")) +
- "\n" +
- _(" The private key is generally used as a signature for the content of "
- "the mail.")));
- vbox2->addWidget(confirm_button);
- vbox2->addStretch(0);
- setLayout(vbox2);
-
- this->setWindowFlags(Qt::Window | Qt::WindowTitleHint |
- Qt::CustomizeWindowHint);
-
- this->setModal(true);
- this->setWindowTitle("Sender Picker");
- this->setMinimumWidth(480);
- this->exec();
-}
-
-GpgFrontend::KeyId GpgFrontend::UI::SenderPicker::GetCheckedSender() {
- auto checked_keys = key_list_->GetChecked();
- if (!checked_keys->empty()) {
- return key_list_->GetChecked()->front();
- } else {
- return {};
- }
-}
diff --git a/src/ui/mail/SenderPicker.h b/src/ui/mail/SenderPicker.h
deleted file mode 100644
index ce8cd8e6..00000000
--- a/src/ui/mail/SenderPicker.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * Copyright (C) 2021 Saturneric
- *
- * This file is part of GpgFrontend.
- *
- * GpgFrontend is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GpgFrontend is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
- *
- * The initial version of the source code is inherited from
- * the gpg4usb project, which is under GPL-3.0-or-later.
- *
- * All the source code of GpgFrontend was modified and released by
- * Saturneric<[email protected]> starting on May 12, 2021.
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *
- */
-
-#ifndef GPGFRONTEND_SENDERPICKER_H
-#define GPGFRONTEND_SENDERPICKER_H
-
-#include "GpgFrontendUI.h"
-
-namespace GpgFrontend::UI {
-
-class KeyList;
-
-/**
- * @brief
- *
- */
-class SenderPicker : public QDialog {
- Q_OBJECT
-
- public:
- /**
- * @brief Construct a new Sender Picker object
- *
- * @param current_key_id
- * @param parent
- */
- explicit SenderPicker(const KeyId& current_key_id, QWidget* parent = nullptr);
-
- /**
- * @brief Get the Checked Sender object
- *
- * @return GpgFrontend::KeyId
- */
- GpgFrontend::KeyId GetCheckedSender();
-
- private:
- KeyList* key_list_; ///<
-};
-} // namespace GpgFrontend::UI
-
-#endif // GPGFRONTEND_SENDERPICKER_H