summaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
Diffstat (limited to 'ui')
-rw-r--r--ui/qt5/CMakeLists.txt1
-rw-r--r--ui/qt5/horizon.qrc3
-rw-r--r--ui/qt5/horizonwizard.cc2
-rw-r--r--ui/qt5/resources/rootpw-help.txt0
-rw-r--r--ui/qt5/rootpwpage.cc59
-rw-r--r--ui/qt5/rootpwpage.hh28
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 */