From 357387e664f78cd3727fbbd53178ae6b57257138 Mon Sep 17 00:00:00 2001 From: "A. Wilcox" Date: Wed, 20 Nov 2019 22:41:59 -0600 Subject: Qt UI: Add root passphrase page --- ui/qt5/CMakeLists.txt | 1 + ui/qt5/horizon.qrc | 3 ++ ui/qt5/horizonwizard.cc | 2 ++ ui/qt5/resources/rootpw-help.txt | 0 ui/qt5/rootpwpage.cc | 59 ++++++++++++++++++++++++++++++++++++++++ ui/qt5/rootpwpage.hh | 28 +++++++++++++++++++ 6 files changed, 93 insertions(+) create mode 100644 ui/qt5/resources/rootpw-help.txt create mode 100644 ui/qt5/rootpwpage.cc create mode 100644 ui/qt5/rootpwpage.hh (limited to 'ui') diff --git a/ui/qt5/CMakeLists.txt b/ui/qt5/CMakeLists.txt index 7b955b7..720fc4f 100644 --- a/ui/qt5/CMakeLists.txt +++ b/ui/qt5/CMakeLists.txt @@ -18,6 +18,7 @@ set(UI_SOURCES hostnamepage.cc pkgsimple.cc bootpage.cc + rootpwpage.cc horizon.qrc) diff --git a/ui/qt5/horizon.qrc b/ui/qt5/horizon.qrc index 56bb067..46dbccd 100644 --- a/ui/qt5/horizon.qrc +++ b/ui/qt5/horizon.qrc @@ -6,6 +6,8 @@ resources/network-high.png resources/software-high.png resources/software-low.png + resources/acct-high.png + resources/acct-low.png ../../assets/status-current-high.svg ../../assets/status-current-low.svg ../../assets/status-issue-high.svg @@ -25,6 +27,7 @@ resources/hostname-help.txt resources/packages-simple-help.txt resources/startup-help.txt + resources/rootpw-help.txt ../../assets/horizon-256.png diff --git a/ui/qt5/horizonwizard.cc b/ui/qt5/horizonwizard.cc index 2b3dd8b..b44c8fa 100644 --- a/ui/qt5/horizonwizard.cc +++ b/ui/qt5/horizonwizard.cc @@ -42,6 +42,7 @@ extern "C" { #include "hostnamepage.hh" #include "pkgsimple.hh" #include "bootpage.hh" +#include "rootpwpage.hh" static std::map help_id_map = { {HorizonWizard::Page_Intro, "intro"}, @@ -195,6 +196,7 @@ HorizonWizard::HorizonWizard(QWidget *parent) : QWizard(parent) { setPage(Page_Hostname, new HostnamePage); setPage(Page_PkgSimple, new PkgSimplePage); setPage(Page_Boot, new BootPage); + setPage(Page_Root, new RootPassphrasePage); QObject::connect(this, &QWizard::helpRequested, [=](void) { if(help_id_map.find(currentId()) == help_id_map.end()) { diff --git a/ui/qt5/resources/rootpw-help.txt b/ui/qt5/resources/rootpw-help.txt new file mode 100644 index 0000000..e69de29 diff --git a/ui/qt5/rootpwpage.cc b/ui/qt5/rootpwpage.cc new file mode 100644 index 0000000..ca7de32 --- /dev/null +++ b/ui/qt5/rootpwpage.cc @@ -0,0 +1,59 @@ +/* + * rootpwpage.cc - Implementation of the UI.Accounts.RootPW page + * horizon-qt5, the Qt 5 user interface for + * Project Horizon + * + * Copyright (c) 2019 Adélie Linux and contributors. All rights reserved. + * This code is licensed under the AGPL 3.0 license, as noted in the + * LICENSE-code file in the root directory of this repository. + * + * SPDX-License-Identifier: AGPL-3.0-only + */ + +#include "rootpwpage.hh" + +#include +#include +#include +#include + +RootPassphrasePage::RootPassphrasePage(QWidget *parent) + : HorizonWizardPage(parent) { + setTitle(tr("Set Root Passphrase")); + loadWatermark("acct"); + + QLabel *descLabel = new QLabel(tr( + "You need to set a root passphrase for this computer.\n\n" + "The root passphrase is used for system administration and recovery. " + "Be sure to write it down and keep it in a safe place.\n\n" + "The root passphrase must be at least 8 characters long, and can contain any mixture of letters, numbers, and symbols.")); + descLabel->setWordWrap(true); + + rootPW = new QLineEdit; + rootPW->setEchoMode(QLineEdit::Password); + rootPW->setWhatsThis(tr("Enter your desired root passphrase here.")); + connect(rootPW, &QLineEdit::textChanged, + this, &RootPassphrasePage::completeChanged); + registerField("rootpw", rootPW); + confirmPW = new QLineEdit; + confirmPW->setEchoMode(QLineEdit::Password); + confirmPW->setWhatsThis(tr( + "Confirm your desired root passphrase by typing it again here.")); + connect(confirmPW, &QLineEdit::textChanged, + this, &RootPassphrasePage::completeChanged); + QFormLayout *pwForm = new QFormLayout; + pwForm->addRow(tr("&Passphrase:"), rootPW); + pwForm->addRow(tr("&Confirm Passphrase:"), confirmPW); + + QVBoxLayout *mainLayout = new QVBoxLayout; + mainLayout->addWidget(descLabel); + mainLayout->addStretch(); + mainLayout->addLayout(pwForm); + mainLayout->addStretch(); + setLayout(mainLayout); +} + +bool RootPassphrasePage::isComplete() const { + return (rootPW->text().size() > 8 && + rootPW->text() == confirmPW->text()); +} diff --git a/ui/qt5/rootpwpage.hh b/ui/qt5/rootpwpage.hh new file mode 100644 index 0000000..3496e5e --- /dev/null +++ b/ui/qt5/rootpwpage.hh @@ -0,0 +1,28 @@ +/* + * rootpwpage.hh - Definition of the UI.Accounts.RootPW page + * horizon-qt5, the Qt 5 user interface for + * Project Horizon + * + * Copyright (c) 2019 Adélie Linux and contributors. All rights reserved. + * This code is licensed under the AGPL 3.0 license, as noted in the + * LICENSE-code file in the root directory of this repository. + * + * SPDX-License-Identifier: AGPL-3.0-only + */ + +#ifndef ROOTPWPAGE_HH +#define ROOTPWPAGE_HH + +#include "horizonwizardpage.hh" + +#include + +class RootPassphrasePage : public HorizonWizardPage { +public: + RootPassphrasePage(QWidget *parent = nullptr); + bool isComplete() const; +private: + QLineEdit *rootPW, *confirmPW; +}; + +#endif /* !ROOTPWPAGE_HH */ -- cgit v1.2.3-60-g2f50