diff options
author | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2019-11-14 13:12:27 -0600 |
---|---|---|
committer | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2019-11-14 13:12:27 -0600 |
commit | 7a73cba7ed274cc9f7b06ae1072bc4d790fbcb1d (patch) | |
tree | 2eae300036be0c05ee4db5b08fbbbdeab868897d /ui | |
parent | 03c55a5b314a8281270e461b16c2954aaa762ec7 (diff) | |
download | horizon-7a73cba7ed274cc9f7b06ae1072bc4d790fbcb1d.tar.gz horizon-7a73cba7ed274cc9f7b06ae1072bc4d790fbcb1d.tar.bz2 horizon-7a73cba7ed274cc9f7b06ae1072bc4d790fbcb1d.tar.xz horizon-7a73cba7ed274cc9f7b06ae1072bc4d790fbcb1d.zip |
Qt UI: Add UI.SysMeta.Hostname page
Diffstat (limited to 'ui')
-rw-r--r-- | ui/qt5/CMakeLists.txt | 1 | ||||
-rw-r--r-- | ui/qt5/horizon.qrc | 1 | ||||
-rw-r--r-- | ui/qt5/horizonwizard.cc | 2 | ||||
-rw-r--r-- | ui/qt5/hostnamepage.cc | 68 | ||||
-rw-r--r-- | ui/qt5/hostnamepage.hh | 29 | ||||
-rw-r--r-- | ui/qt5/resources/hostname-help.txt | 16 |
6 files changed, 117 insertions, 0 deletions
diff --git a/ui/qt5/CMakeLists.txt b/ui/qt5/CMakeLists.txt index fc2069d..af7fd82 100644 --- a/ui/qt5/CMakeLists.txt +++ b/ui/qt5/CMakeLists.txt @@ -13,6 +13,7 @@ set(UI_SOURCES networkifacepage.cc netsimplewifipage.cc datetimepage.cc + hostnamepage.cc horizon.qrc) add_executable(horizon-qt5 ${UI_SOURCES}) diff --git a/ui/qt5/horizon.qrc b/ui/qt5/horizon.qrc index f715934..5e740b6 100644 --- a/ui/qt5/horizon.qrc +++ b/ui/qt5/horizon.qrc @@ -14,6 +14,7 @@ <file>resources/network-start-help.txt</file> <file>resources/network-iface-help.txt</file> <file>resources/datetime-help.txt</file> + <file>resources/hostname-help.txt</file> <file>resources/packages-simple-help.txt</file> </qresource> <qresource prefix="/"> diff --git a/ui/qt5/horizonwizard.cc b/ui/qt5/horizonwizard.cc index 67ed193..d761db1 100644 --- a/ui/qt5/horizonwizard.cc +++ b/ui/qt5/horizonwizard.cc @@ -32,6 +32,7 @@ #include "networkifacepage.hh" #include "netsimplewifipage.hh" #include "datetimepage.hh" +#include "hostnamepage.hh" static std::map<int, std::string> help_id_map = { {HorizonWizard::Page_Intro, "intro"}, @@ -178,6 +179,7 @@ HorizonWizard::HorizonWizard(QWidget *parent) : QWizard(parent) { setPage(Page_Network_Iface, new NetworkIfacePage); setPage(Page_Network_Wireless, new NetworkSimpleWirelessPage); setPage(Page_DateTime, new DateTimePage); + setPage(Page_Hostname, new HostnamePage); QObject::connect(this, &QWizard::helpRequested, [=](void) { if(help_id_map.find(currentId()) == help_id_map.end()) { diff --git a/ui/qt5/hostnamepage.cc b/ui/qt5/hostnamepage.cc new file mode 100644 index 0000000..ca8f16d --- /dev/null +++ b/ui/qt5/hostnamepage.cc @@ -0,0 +1,68 @@ +/* + * hostnamepage.cc - Implementation of the UI.SysMeta.Hostname 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 "hostnamepage.hh" + +#include <QLabel> +#include <QRegExpValidator> +#include <QVBoxLayout> + +HostnamePage::HostnamePage(QWidget *parent) : HorizonWizardPage(parent) { + QLabel *descLabel; + QRegExpValidator *hostnameValidator = new QRegExpValidator(this); + hostnameValidator->setRegExp(QRegExp("[A-Za-z][A-Za-z0-9-_.]+")); + QVBoxLayout *layout; + + setTitle(tr("Computer Name")); + loadWatermark("intro"); + + descLabel = new QLabel(tr("<p>You need to provide a name for your computer. " + "You may accept the default, or choose your own. " + "If your computer participates in a network, make sure that the name is unique.</p>" + + "<p>Computer names may contain letters, numbers, dashes (-), and underscores (_). For example, <i>Living-Room-PC</i>.</p>" + + "<p>You may also specify your computer's domain name if necessary (not common). For example, <i>desktop1.my.network</i>.</p>"), this); + descLabel->setTextFormat(Qt::RichText); + descLabel->setWordWrap(true); + hostnameEdit = new QLineEdit(this); + hostnameEdit->setPlaceholderText(tr("Computer Name")); + hostnameEdit->setValidator(hostnameValidator); + hostnameEdit->setWhatsThis(tr("Enter the name of your computer here.")); + + registerField("hostname*", hostnameEdit); + + layout = new QVBoxLayout(this); + layout->addWidget(descLabel); + layout->addStretch(); + layout->addWidget(hostnameEdit); + layout->addStretch(); + setLayout(layout); +} + +void HostnamePage::initializePage() { +#ifndef HAS_INSTALL_ENV + hostnameEdit->setText("Adelie"); +#else /* HAS_INSTALL_ENV */ + QString name("Adelie"); + + if(horizonWizard()->interfaces.empty()) { + name += "-Banana"; + } else { + QString mac = horizonWizard()->interfaces.begin()->second.mac; + QStringList macparts = mac.split(":"); + name += "-" + macparts[3] + macparts[4] + macparts[5]; + } + + hostnameEdit->setText(name); +#endif /* !HAS_INSTALL_ENV */ +} diff --git a/ui/qt5/hostnamepage.hh b/ui/qt5/hostnamepage.hh new file mode 100644 index 0000000..980a601 --- /dev/null +++ b/ui/qt5/hostnamepage.hh @@ -0,0 +1,29 @@ +/* + * hostnamepage.hh - Definition of the UI.SysMeta.Hostname 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 HOSTNAMEPAGE_HH +#define HOSTNAMEPAGE_HH + +#include "horizonwizardpage.hh" + +#include <QLineEdit> + +class HostnamePage : public HorizonWizardPage { +public: + HostnamePage(QWidget *parent = nullptr); + + void initializePage(); +private: + QLineEdit *hostnameEdit; +}; + +#endif /* !HOSTNAMEPAGE_HH */ diff --git a/ui/qt5/resources/hostname-help.txt b/ui/qt5/resources/hostname-help.txt new file mode 100644 index 0000000..670c49f --- /dev/null +++ b/ui/qt5/resources/hostname-help.txt @@ -0,0 +1,16 @@ +<h2>Computer Name</h2> + +<p>This page allows you to set the name of your computer. The name of your +computer will appear in various places, such as the system startup screen, +log files, and the Applications menu.</p> + +<p>For home users, it's best to provide a descriptive name of the location +and/or owner of the computer. For example, <i>Living-Room-PC</i> or +<i>Annas-PC</i>. Note that if you have a home network, you will need to +make sure that each computer has a different name. Otherwise, some +applications may not function correctly.</p> + +<p>For business and server installations, a computer name is typically +assigned by a network administrator. This may include a domain name, which +can be appended to the end of the name. For example, +<i>wkst025.wilcox-tech.com</i> or <i>postgres02.chi.adelielinux.org</i>.</p> |