diff options
author | saturneric <[email protected]> | 2025-04-12 10:15:20 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2025-04-12 10:15:20 +0000 |
commit | b91a96e1bd50923100887efe2d8f262102447b39 (patch) | |
tree | d58d71c23dcf5d8ae528c9fa54c1a6236101dc99 /src/ui/dialog/SubKeysPicker.cpp | |
parent | feat: support adsk (diff) | |
download | GpgFrontend-b91a96e1bd50923100887efe2d8f262102447b39.tar.gz GpgFrontend-b91a96e1bd50923100887efe2d8f262102447b39.zip |
feat: add ui support for adsk features
Diffstat (limited to 'src/ui/dialog/SubKeysPicker.cpp')
-rw-r--r-- | src/ui/dialog/SubKeysPicker.cpp | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/src/ui/dialog/SubKeysPicker.cpp b/src/ui/dialog/SubKeysPicker.cpp new file mode 100644 index 00000000..af9c5c6d --- /dev/null +++ b/src/ui/dialog/SubKeysPicker.cpp @@ -0,0 +1,82 @@ +/** + * Copyright (C) 2021-2024 Saturneric <[email protected]> + * + * 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 "SubKeysPicker.h" + +#include "core/GpgModel.h" +#include "ui/widgets/KeyTreeView.h" + +namespace GpgFrontend::UI { + +SubKeysPicker::SubKeysPicker(int channel, + const GpgKeyTreeModel::Detector& enable_detector, + QWidget* parent) + : GeneralDialog(typeid(SubKeysPicker).name(), parent), + tree_view_(new KeyTreeView( + channel, [](GpgAbstractKey* k) { return k->IsSubKey(); }, + [=](GpgAbstractKey* k) { + return (!k->IsSubKey() || (k->IsSubKey() && !k->IsPrimaryKey() && + k->IsHasEncrCap())) && + enable_detector(k); + })) { + auto* confirm_button = new QPushButton(tr("Confirm")); + auto* cancel_button = new QPushButton(tr("Cancel")); + + connect(confirm_button, &QPushButton::clicked, + [=]() { this->accepted_ = true; }); + connect(confirm_button, &QPushButton::clicked, this, &QDialog::accept); + connect(cancel_button, &QPushButton::clicked, this, &QDialog::reject); + + auto* vbox2 = new QVBoxLayout(); + vbox2->addWidget(new QLabel(tr("Select Subkey(s)") + ": ")); + vbox2->addWidget(tree_view_); + vbox2->addWidget(new QLabel( + tr("Please select one or more subkeys you use for operation."))); + vbox2->addWidget(confirm_button); + vbox2->addWidget(cancel_button); + setLayout(vbox2); + + tree_view_->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + + this->setWindowFlags(Qt::Window | Qt::WindowTitleHint | + Qt::CustomizeWindowHint); + + this->setModal(true); + this->setWindowTitle(tr("Subkeys Picker")); + + movePosition2CenterOfParent(); + this->show(); +} + +auto SubKeysPicker::GetCheckedSubkeys() -> QContainer<GpgSubKey> { + return tree_view_->GetAllCheckedSubKey(); +} + +auto SubKeysPicker::GetStatus() const -> bool { return this->accepted_; } + +} // namespace GpgFrontend::UI |