summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ui/qt5/CMakeLists.txt1
-rw-r--r--ui/qt5/horizonwizard.cc2
-rw-r--r--ui/qt5/networkifacepage.cc70
-rw-r--r--ui/qt5/networkifacepage.hh24
4 files changed, 97 insertions, 0 deletions
diff --git a/ui/qt5/CMakeLists.txt b/ui/qt5/CMakeLists.txt
index 647c833..e453a25 100644
--- a/ui/qt5/CMakeLists.txt
+++ b/ui/qt5/CMakeLists.txt
@@ -10,6 +10,7 @@ set(UI_SOURCES
intropage.cc
inputpage.cc
networkingpage.cc
+ networkifacepage.cc
horizon.qrc)
add_executable(horizon-qt5 ${UI_SOURCES})
diff --git a/ui/qt5/horizonwizard.cc b/ui/qt5/horizonwizard.cc
index dc80dea..59bef95 100644
--- a/ui/qt5/horizonwizard.cc
+++ b/ui/qt5/horizonwizard.cc
@@ -26,6 +26,7 @@
#include "intropage.hh"
#include "inputpage.hh"
#include "networkingpage.hh"
+#include "networkifacepage.hh"
#include "netsimplewifipage.hh"
static std::map<int, std::string> help_id_map = {
@@ -146,6 +147,7 @@ HorizonWizard::HorizonWizard(QWidget *parent) : QWizard(parent) {
setPage(Page_Intro, new IntroPage);
setPage(Page_Input, new InputPage);
setPage(Page_Network, new NetworkingPage);
+ setPage(Page_Network_Iface, new NetworkIfacePage);
QObject::connect(this, &QWizard::helpRequested, [=](void) {
if(help_id_map.find(currentId()) == help_id_map.end()) {
diff --git a/ui/qt5/networkifacepage.cc b/ui/qt5/networkifacepage.cc
new file mode 100644
index 0000000..6823333
--- /dev/null
+++ b/ui/qt5/networkifacepage.cc
@@ -0,0 +1,70 @@
+/*
+ * networkifacepage.cc - Implementation of the UI.Network.ChooseIface 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 "networkifacepage.hh"
+#include "horizonwizard.hh"
+
+#include <QLabel>
+#include <QListView>
+#include <QListWidget>
+#include <QVBoxLayout>
+
+NetworkIfacePage::NetworkIfacePage(QWidget *parent) :
+ HorizonWizardPage(parent) {
+ loadWatermark("network");
+ setTitle(tr("Multiple Network Interfaces Detected"));
+}
+
+void NetworkIfacePage::initializePage() {
+ QLabel *descLabel;
+ QListWidget *ifaceList;
+ QVBoxLayout *layout;
+
+ descLabel = new QLabel(tr(
+ "Your computer has more than one network interface device. Select the one you wish to use during installation."));
+ descLabel->setWordWrap(true);
+
+ ifaceList = new QListWidget(this);
+ for(auto &iface : horizonWizard()->interfaces) {
+ QIcon ifaceIcon;
+ QString ifaceDevName = QString::fromStdString(iface.first);
+ QString ifaceName;
+
+ switch(iface.second) {
+ case HorizonWizard::Wireless:
+ ifaceIcon = QIcon::fromTheme("network-wireless");
+ ifaceName = tr("Wi-Fi (%1)").arg(ifaceDevName);
+ break;
+ case HorizonWizard::Ethernet:
+ ifaceIcon = QIcon::fromTheme("network-wired");
+ ifaceName = tr("Ethernet (%1)").arg(ifaceDevName);
+ break;
+ case HorizonWizard::Bonded:
+ ifaceIcon = QIcon::fromTheme("network-card");
+ ifaceName = tr("Bonded Interface (%1)").arg(ifaceDevName);
+ break;
+ case HorizonWizard::Unknown:
+ ifaceIcon = QIcon::fromTheme("network-card");
+ ifaceName = tr("Unknown Interface (%1)").arg(ifaceDevName);
+ break;
+ }
+
+ new QListWidgetItem(ifaceIcon, ifaceName, ifaceList);
+ }
+
+ ifaceList->setViewMode(QListView::IconMode);
+
+ layout = new QVBoxLayout;
+ layout->addWidget(descLabel);
+ layout->addWidget(ifaceList);
+ setLayout(layout);
+}
diff --git a/ui/qt5/networkifacepage.hh b/ui/qt5/networkifacepage.hh
new file mode 100644
index 0000000..bcd37c6
--- /dev/null
+++ b/ui/qt5/networkifacepage.hh
@@ -0,0 +1,24 @@
+/*
+ * networkifacepage.hh - Definition of the UI.Network.ChooseIface 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 NETWORKIFACEPAGE_HH
+#define NETWORKIFACEPAGE_HH
+
+#include "horizonwizardpage.hh"
+
+class NetworkIfacePage : public HorizonWizardPage {
+public:
+ NetworkIfacePage(QWidget *parent = nullptr);
+ void initializePage() override;
+};
+
+#endif /* !NETWORKIFACEPAGE_HH */