diff options
Diffstat (limited to 'ui')
-rw-r--r-- | ui/qt5/CMakeLists.txt | 1 | ||||
-rw-r--r-- | ui/qt5/horizon.qrc | 3 | ||||
-rw-r--r-- | ui/qt5/horizonwizard.cc | 2 | ||||
-rw-r--r-- | ui/qt5/resources/rootpw-help.txt | 0 | ||||
-rw-r--r-- | ui/qt5/rootpwpage.cc | 59 | ||||
-rw-r--r-- | ui/qt5/rootpwpage.hh | 28 |
6 files changed, 93 insertions, 0 deletions
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 @@ <file>resources/network-high.png</file> <file>resources/software-high.png</file> <file>resources/software-low.png</file> + <file>resources/acct-high.png</file> + <file>resources/acct-low.png</file> <file alias="resources/status-current-high.svg">../../assets/status-current-high.svg</file> <file alias="resources/status-current-low.svg">../../assets/status-current-low.svg</file> <file alias="resources/status-issue-high.svg">../../assets/status-issue-high.svg</file> @@ -25,6 +27,7 @@ <file>resources/hostname-help.txt</file> <file>resources/packages-simple-help.txt</file> <file>resources/startup-help.txt</file> + <file>resources/rootpw-help.txt</file> </qresource> <qresource prefix="/"> <file alias="horizon-256.png">../../assets/horizon-256.png</file> 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<int, std::string> 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 --- /dev/null +++ b/ui/qt5/resources/rootpw-help.txt 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 <QFormLayout> +#include <QLabel> +#include <QLineEdit> +#include <QVBoxLayout> + +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 <QLineEdit> + +class RootPassphrasePage : public HorizonWizardPage { +public: + RootPassphrasePage(QWidget *parent = nullptr); + bool isComplete() const; +private: + QLineEdit *rootPW, *confirmPW; +}; + +#endif /* !ROOTPWPAGE_HH */ |