2820 lines
103 KiB
Diff
2820 lines
103 KiB
Diff
From 572a273a33d05cb2811df32bccd361e3b99a7c61 Mon Sep 17 00:00:00 2001
|
|
From: cui-gaoleng <562344211@qq.com>
|
|
Date: Fri, 8 Nov 2024 02:44:45 +0800
|
|
Subject: [PATCH 4/4] modules Commit without .png, .svg, and .svgz files
|
|
|
|
---
|
|
src/modules/bootloader/bootloader.conf | 8 +-
|
|
src/modules/bootloader/main.py | 45 +-
|
|
src/modules/fstab/main.py | 0
|
|
src/modules/initcpiocfg/initcpiocfg.conf | 2 +-
|
|
src/modules/initramfscfg/encrypt_hook | 0
|
|
src/modules/initramfscfg/encrypt_hook_nokey | 0
|
|
src/modules/keyboard/KeyboardPage.cpp | 39 +-
|
|
src/modules/keyboard/KeyboardPage.ui | 4 +-
|
|
src/modules/locale/Config.cpp | 14 +
|
|
src/modules/locale/Config.h | 4 +
|
|
src/modules/locale/LocalePage.cpp | 54 +-
|
|
src/modules/locale/LocalePage.h | 1 +
|
|
src/modules/locale/SetTimezoneJob.cpp | 4 +
|
|
src/modules/locale/locale.conf | 6 +-
|
|
src/modules/localeq/localeq.conf | 2 +-
|
|
src/modules/mount/mount.conf | 9 +
|
|
src/modules/packagechooser/Config.cpp | 2 +-
|
|
.../packagechooser/PackageChooserPage.cpp | 24 +-
|
|
.../packagechooser/packagechooser.conf | 41 +-
|
|
src/modules/packagechooser/packagechooser.qrc | 6 +
|
|
src/modules/packages/main.py | 132 +++-
|
|
src/modules/packages/packages.conf | 37 +-
|
|
src/modules/partition/PartitionViewStep.cpp | 3 +-
|
|
src/modules/partition/gui/BootInfoWidget.cpp | 10 +-
|
|
src/modules/partition/gui/ChoicePage.cpp | 10 +-
|
|
.../partition/gui/DeviceInfoWidget.cpp | 13 +-
|
|
src/modules/partition/gui/EncryptWidget.cpp | 2 +-
|
|
src/modules/summary/SummaryPage.cpp | 9 +-
|
|
src/modules/umount/UmountJob.cpp | 23 +
|
|
src/modules/unpackfs/main.py | 82 +-
|
|
src/modules/unpackfs/unpackfs.conf | 12 +-
|
|
src/modules/users/UsersPage.cpp | 2 +-
|
|
src/modules/users/page_usersetup.bak.ui | 710 ++++++++++++++++++
|
|
src/modules/users/page_usersetup.ui | 158 ++--
|
|
src/modules/users/users.conf | 2 +-
|
|
src/modules/welcome/Config.cpp | 3 +-
|
|
src/modules/welcome/WelcomePage.cpp | 143 ++--
|
|
src/modules/welcome/WelcomePage.ui | 73 +-
|
|
.../welcome/checker/ResultsListWidget.cpp | 20 +-
|
|
src/modules/welcome/welcome.conf | 6 +-
|
|
src/modules/welcome/welcome.qrc | 10 +-
|
|
src/modules/welcomeq/welcomeq.conf | 2 +-
|
|
43 files changed, 1392 insertions(+), 340 deletions(-)
|
|
mode change 100755 => 100644 src/modules/fstab/main.py
|
|
mode change 100755 => 100644 src/modules/initramfscfg/encrypt_hook
|
|
mode change 100755 => 100644 src/modules/initramfscfg/encrypt_hook_nokey
|
|
create mode 100644 src/modules/users/page_usersetup.bak.ui
|
|
|
|
|
|
diff --git a/src/modules/bootloader/bootloader.conf b/src/modules/bootloader/bootloader.conf
|
|
index 9679f66..acaf424 100644
|
|
--- a/src/modules/bootloader/bootloader.conf
|
|
+++ b/src/modules/bootloader/bootloader.conf
|
|
@@ -41,10 +41,10 @@ kernelParams: [ "quiet" ]
|
|
# GRUB functionality (notably grub-probe) to work. As needed, you may use
|
|
# complete paths like `/usr/bin/efibootmgr` for the executables.
|
|
#
|
|
-grubInstall: "grub-install"
|
|
-grubMkconfig: "grub-mkconfig"
|
|
-grubCfg: "/boot/grub/grub.cfg"
|
|
-grubProbe: "grub-probe"
|
|
+grubInstall: "grub2-install"
|
|
+grubMkconfig: "grub2-mkconfig"
|
|
+grubCfg: "/boot/grub2/grub.cfg"
|
|
+grubProbe: "grub2-probe"
|
|
efiBootMgr: "efibootmgr"
|
|
|
|
# Optionally set the bootloader ID to use for EFI. This is passed to
|
|
diff --git a/src/modules/bootloader/main.py b/src/modules/bootloader/main.py
|
|
index 0a9e965..570fc87 100644
|
|
--- a/src/modules/bootloader/main.py
|
|
+++ b/src/modules/bootloader/main.py
|
|
@@ -25,7 +25,7 @@ import os
|
|
import re
|
|
import shutil
|
|
import subprocess
|
|
-
|
|
+import platform
|
|
import libcalamares
|
|
|
|
from libcalamares.utils import check_target_env_call
|
|
@@ -567,7 +567,6 @@ def get_grub_efi_parameters():
|
|
set for the current machine. May return unsuitable values if the
|
|
host architecture is unknown (e.g. defaults to x86_64).
|
|
"""
|
|
- import platform
|
|
efi_bitness = efi_word_size()
|
|
cpu_type = platform.machine()
|
|
|
|
@@ -594,6 +593,8 @@ def run_grub_mkconfig(partitions, output_file):
|
|
:param output_file: A string containing the path to the generating grub config file
|
|
:return:
|
|
"""
|
|
+ fw_type = libcalamares.globalstorage.value("firmwareType")
|
|
+ efi_directory = libcalamares.globalstorage.value("efiSystemPartition")
|
|
|
|
# zfs needs an environment variable set for grub-mkconfig
|
|
if any([is_zfs_root(partition) for partition in partitions]):
|
|
@@ -602,7 +603,14 @@ def run_grub_mkconfig(partitions, output_file):
|
|
else:
|
|
# The input file /etc/default/grub should already be filled out by the
|
|
# grubcfg job module.
|
|
- check_target_env_call([libcalamares.job.configuration["grubMkconfig"], "-o", output_file])
|
|
+ if fw_type == "efi":
|
|
+ assert efi_directory is not None
|
|
+ efi_bootloader_id = efi_label(efi_directory)
|
|
+ check_target_env_call([libcalamares.job.configuration["grubMkconfig"],
|
|
+ "-o", os.path.join(efi_directory, "EFI",
|
|
+ efi_bootloader_id, "grub.cfg")])
|
|
+ else:
|
|
+ check_target_env_call([libcalamares.job.configuration["grubMkconfig"], "-o", output_file])
|
|
|
|
|
|
def run_grub_install(fw_type, partitions, efi_directory):
|
|
@@ -614,6 +622,9 @@ def run_grub_install(fw_type, partitions, efi_directory):
|
|
:param efi_directory: The path of the efi directory relative to the root of the install
|
|
:return:
|
|
"""
|
|
+ cpu_type = platform.machine()
|
|
+
|
|
+ installation_root_path = libcalamares.globalstorage.value("rootMountPoint")
|
|
|
|
is_zfs = any([is_zfs_root(partition) for partition in partitions])
|
|
|
|
@@ -631,11 +642,29 @@ def run_grub_install(fw_type, partitions, efi_directory):
|
|
+ " --target=" + efi_target + " --efi-directory=" + efi_directory
|
|
+ " --bootloader-id=" + efi_bootloader_id + " --force"])
|
|
else:
|
|
- check_target_env_call([libcalamares.job.configuration["grubInstall"],
|
|
- "--target=" + efi_target,
|
|
- "--efi-directory=" + efi_directory,
|
|
- "--bootloader-id=" + efi_bootloader_id,
|
|
- "--force"])
|
|
+ install_efi_directory = installation_root_path + efi_directory
|
|
+
|
|
+ efi_disk = subprocess.check_output([
|
|
+ libcalamares.job.configuration["grubProbe"],
|
|
+ "-t", "disk", "--device-map=", install_efi_directory]).decode("ascii").strip()
|
|
+ if cpu_type == "aarch64":
|
|
+ check_target_env_call([
|
|
+ "efibootmgr",
|
|
+ "--create",
|
|
+ "--disk", efi_disk,
|
|
+ "--part", "1",
|
|
+ "--label", "shim",
|
|
+ "--loader", "/EFI/openEuler/shimaa64.efi"
|
|
+ ])
|
|
+ else:
|
|
+ check_target_env_call([
|
|
+ "efibootmgr",
|
|
+ "--create",
|
|
+ "--disk", efi_disk,
|
|
+ "--part", "1",
|
|
+ "--label", "shim",
|
|
+ "--loader", "/EFI/openEuler/shimx64.efi"
|
|
+ ])
|
|
else:
|
|
assert efi_directory is None
|
|
if libcalamares.globalstorage.value("bootLoader") is None:
|
|
diff --git a/src/modules/fstab/main.py b/src/modules/fstab/main.py
|
|
old mode 100755
|
|
new mode 100644
|
|
diff --git a/src/modules/initcpiocfg/initcpiocfg.conf b/src/modules/initcpiocfg/initcpiocfg.conf
|
|
index a660393..549157c 100644
|
|
--- a/src/modules/initcpiocfg/initcpiocfg.conf
|
|
+++ b/src/modules/initcpiocfg/initcpiocfg.conf
|
|
@@ -35,4 +35,4 @@ hooks:
|
|
# does not match the target in a useful way. If unset or
|
|
# empty, defaults to /etc/mkinitcpio.conf
|
|
#
|
|
-source: "/etc/mkinitcpio.conf"
|
|
+source: "/etc/dracut.conf"
|
|
diff --git a/src/modules/initramfscfg/encrypt_hook b/src/modules/initramfscfg/encrypt_hook
|
|
old mode 100755
|
|
new mode 100644
|
|
diff --git a/src/modules/initramfscfg/encrypt_hook_nokey b/src/modules/initramfscfg/encrypt_hook_nokey
|
|
old mode 100755
|
|
new mode 100644
|
|
diff --git a/src/modules/keyboard/KeyboardPage.cpp b/src/modules/keyboard/KeyboardPage.cpp
|
|
index dbb80c6..3f06158 100644
|
|
--- a/src/modules/keyboard/KeyboardPage.cpp
|
|
+++ b/src/modules/keyboard/KeyboardPage.cpp
|
|
@@ -43,13 +43,14 @@ LayoutItem::~LayoutItem() {}
|
|
KeyboardPage::KeyboardPage( Config* config, QWidget* parent )
|
|
: QWidget( parent )
|
|
, ui( new Ui::Page_Keyboard )
|
|
- , m_keyboardPreview( new KeyBoardPreview( this ) )
|
|
+ , m_keyboardPreview( nullptr )
|
|
, m_config( config )
|
|
{
|
|
ui->setupUi( this );
|
|
-
|
|
+ this->setContentsMargins(50,0,50,0);
|
|
// Keyboard Preview
|
|
- ui->KBPreviewLayout->addWidget( m_keyboardPreview );
|
|
+ // ui->KBPreviewLayout->addWidget( m_keyboardPreview );
|
|
+
|
|
|
|
{
|
|
auto* model = config->keyboardModels();
|
|
@@ -92,27 +93,27 @@ KeyboardPage::KeyboardPage( Config* config, QWidget* parent )
|
|
&QItemSelectionModel::currentChanged,
|
|
[ this ]( const QModelIndex& current )
|
|
{ m_config->keyboardLayouts()->setCurrentIndex( current.row() ); } );
|
|
- connect( config->keyboardLayouts(),
|
|
- &KeyboardLayoutModel::currentIndexChanged,
|
|
- [ this ]( int index )
|
|
- {
|
|
- ui->layoutSelector->setCurrentIndex( m_config->keyboardLayouts()->index( index ) );
|
|
- m_keyboardPreview->setLayout( m_config->keyboardLayouts()->key( index ) );
|
|
- m_keyboardPreview->setVariant(
|
|
- m_config->keyboardVariants()->key( m_config->keyboardVariants()->currentIndex() ) );
|
|
- } );
|
|
+ // connect( config->keyboardLayouts(),
|
|
+ // &KeyboardLayoutModel::currentIndexChanged,
|
|
+ // [ this ]( int index )
|
|
+ // {
|
|
+ // ui->layoutSelector->setCurrentIndex( m_config->keyboardLayouts()->index( index ) );
|
|
+ // m_keyboardPreview->setLayout( m_config->keyboardLayouts()->key( index ) );
|
|
+ // m_keyboardPreview->setVariant(
|
|
+ // m_config->keyboardVariants()->key( m_config->keyboardVariants()->currentIndex() ) );
|
|
+ // } );
|
|
|
|
connect( ui->variantSelector->selectionModel(),
|
|
&QItemSelectionModel::currentChanged,
|
|
[ this ]( const QModelIndex& current )
|
|
{ m_config->keyboardVariants()->setCurrentIndex( current.row() ); } );
|
|
- connect( config->keyboardVariants(),
|
|
- &KeyboardVariantsModel::currentIndexChanged,
|
|
- [ this ]( int index )
|
|
- {
|
|
- ui->variantSelector->setCurrentIndex( m_config->keyboardVariants()->index( index ) );
|
|
- m_keyboardPreview->setVariant( m_config->keyboardVariants()->key( index ) );
|
|
- } );
|
|
+ // connect( config->keyboardVariants(),
|
|
+ // &KeyboardVariantsModel::currentIndexChanged,
|
|
+ // [ this ]( int index )
|
|
+ // {
|
|
+ // ui->variantSelector->setCurrentIndex( m_config->keyboardVariants()->index( index ) );
|
|
+ // m_keyboardPreview->setVariant( m_config->keyboardVariants()->key( index ) );
|
|
+ // } );
|
|
|
|
connect( ui->groupSelector,
|
|
QOverload< int >::of( &QComboBox::currentIndexChanged ),
|
|
diff --git a/src/modules/keyboard/KeyboardPage.ui b/src/modules/keyboard/KeyboardPage.ui
|
|
index e131e5c..1d6afbf 100644
|
|
--- a/src/modules/keyboard/KeyboardPage.ui
|
|
+++ b/src/modules/keyboard/KeyboardPage.ui
|
|
@@ -45,9 +45,9 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
</property>
|
|
</spacer>
|
|
</item>
|
|
- <item>
|
|
+ <!-- <item>
|
|
<layout class="QVBoxLayout" name="KBPreviewLayout"/>
|
|
- </item>
|
|
+ </item> -->
|
|
<item>
|
|
<spacer name="horizontalSpacer">
|
|
<property name="orientation">
|
|
diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp
|
|
index 8fa17a7..0d70ff3 100644
|
|
--- a/src/modules/locale/Config.cpp
|
|
+++ b/src/modules/locale/Config.cpp
|
|
@@ -305,6 +305,7 @@ Config::setCurrentLocation( const Calamares::Locale::TimeZoneData* location )
|
|
m_selectedLocaleConfiguration.lc_identification = newLocale.lc_identification;
|
|
|
|
emit currentLCStatusChanged( currentLCStatus() );
|
|
+ emit currentZoneChanged( currentTimeZoneStatus() );
|
|
}
|
|
emit currentLocationChanged( m_currentLocation );
|
|
// Other signals come from the LocationChanged signal
|
|
@@ -370,6 +371,7 @@ Config::setLCLocaleExplicitly( const QString& locale )
|
|
m_selectedLocaleConfiguration.explicit_lc = true;
|
|
|
|
emit currentLCStatusChanged( currentLCStatus() );
|
|
+ emit currentZoneChanged( currentTimeZoneStatus() );
|
|
emit currentLCCodeChanged( currentLCCode() );
|
|
}
|
|
|
|
@@ -424,6 +426,18 @@ Config::currentLCStatus() const
|
|
.arg( localeLabel( m_selectedLocaleConfiguration.lc_numeric ) );
|
|
}
|
|
|
|
+QString
|
|
+Config::currentTimeZoneStatus() const
|
|
+{
|
|
+ QString zone = m_currentLocation->zone();
|
|
+ if(zone == "Hong_Kong(China)")
|
|
+ {
|
|
+ zone = "Hong Kong(China)";
|
|
+ }
|
|
+ return tr("The timezone will be set to %1.","@info")
|
|
+ .arg( zone );
|
|
+}
|
|
+
|
|
QString
|
|
Config::prettyStatus() const
|
|
{
|
|
diff --git a/src/modules/locale/Config.h b/src/modules/locale/Config.h
|
|
index a26d25a..6a8bea1 100644
|
|
--- a/src/modules/locale/Config.h
|
|
+++ b/src/modules/locale/Config.h
|
|
@@ -34,6 +34,7 @@ class Config : public QObject
|
|
|
|
// Status are complete, human-readable, messages
|
|
Q_PROPERTY( QString currentLocationStatus READ currentLocationStatus NOTIFY currentLanguageStatusChanged )
|
|
+ Q_PROPERTY( QString currentLocationStatus READ currentLocationStatus NOTIFY currentZoneChanged)
|
|
Q_PROPERTY( QString currentLanguageStatus READ currentLanguageStatus NOTIFY currentLanguageStatusChanged )
|
|
Q_PROPERTY( QString currentLCStatus READ currentLCStatus NOTIFY currentLCStatusChanged )
|
|
// Name are shorter human-readable names
|
|
@@ -72,6 +73,8 @@ public:
|
|
/// The human-readable summary of what the module will do
|
|
QString prettyStatus() const;
|
|
|
|
+ QString currentTimeZoneStatus() const;
|
|
+
|
|
// A long list of locale codes (e.g. en_US.UTF-8)
|
|
const QStringList& supportedLocales() const { return m_localeGenLines; }
|
|
// All the regions (Africa, America, ...)
|
|
@@ -139,6 +142,7 @@ signals:
|
|
void currentLCCodeChanged( const QString& ) const;
|
|
void currentTimezoneCodeChanged( const QString& ) const;
|
|
void currentTimezoneNameChanged( const QString& ) const;
|
|
+ void currentZoneChanged( const QString&) const;
|
|
|
|
private:
|
|
/// A list of supported locale identifiers (e.g. "en_US.UTF-8")
|
|
diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp
|
|
index e74373a..0568067 100644
|
|
--- a/src/modules/locale/LocalePage.cpp
|
|
+++ b/src/modules/locale/LocalePage.cpp
|
|
@@ -31,20 +31,21 @@ LocalePage::LocalePage( Config* config, QWidget* parent )
|
|
, m_blockTzWidgetSet( false )
|
|
{
|
|
QBoxLayout* mainLayout = new QVBoxLayout;
|
|
-
|
|
- QBoxLayout* tzwLayout = new QHBoxLayout;
|
|
- m_tzWidget = new TimeZoneWidget( m_config->zonesModel(), this );
|
|
- tzwLayout->addStretch();
|
|
- tzwLayout->addWidget( m_tzWidget );
|
|
- tzwLayout->addStretch();
|
|
+ mainLayout->setContentsMargins(50,0,50,0);
|
|
+ //QBoxLayout* tzwLayout = new QHBoxLayout;
|
|
+ //m_tzWidget = new TimeZoneWidget( m_config->zonesModel(), this );
|
|
+ //tzwLayout->addStretch();
|
|
+ //tzwLayout->addWidget( m_tzWidget );
|
|
+ //tzwLayout->addStretch();
|
|
// Adjust for margins and spacing in this page
|
|
- m_tzWidget->setMinimumHeight( m_tzWidget->minimumHeight() + 12 ); // 2 * spacing
|
|
+ //m_tzWidget->setMinimumHeight( m_tzWidget->minimumHeight() + 12 ); // 2 * spacing
|
|
|
|
- QBoxLayout* zoneAndRegionLayout = new QHBoxLayout;
|
|
+ QBoxLayout* zoneAndRegionLayout = new QVBoxLayout;
|
|
m_regionLabel = new QLabel( this );
|
|
zoneAndRegionLayout->addWidget( m_regionLabel );
|
|
|
|
m_regionCombo = new QComboBox( this );
|
|
+ m_regionCombo->setFixedSize(400,30);
|
|
zoneAndRegionLayout->addWidget( m_regionCombo );
|
|
m_regionCombo->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred );
|
|
m_regionLabel->setBuddy( m_regionCombo );
|
|
@@ -52,9 +53,11 @@ LocalePage::LocalePage( Config* config, QWidget* parent )
|
|
zoneAndRegionLayout->addSpacing( 20 );
|
|
|
|
m_zoneLabel = new QLabel( this );
|
|
+
|
|
zoneAndRegionLayout->addWidget( m_zoneLabel );
|
|
|
|
m_zoneCombo = new QComboBox( this );
|
|
+ m_zoneCombo->setFixedSize(400,30);
|
|
m_zoneCombo->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred );
|
|
zoneAndRegionLayout->addWidget( m_zoneCombo );
|
|
m_zoneLabel->setBuddy( m_zoneCombo );
|
|
@@ -65,10 +68,17 @@ LocalePage::LocalePage( Config* config, QWidget* parent )
|
|
m_localeLabel->setWordWrap( true );
|
|
m_localeLabel->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred );
|
|
localeLayout->addWidget( m_localeLabel );
|
|
-
|
|
m_localeChangeButton = new QPushButton( this );
|
|
m_localeChangeButton->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred );
|
|
localeLayout->addWidget( m_localeChangeButton );
|
|
+ localeLayout->addSpacing(20);
|
|
+
|
|
+ QBoxLayout* timezoneLayout = new QHBoxLayout;
|
|
+ m_timezoneLabel = new QLabel( this );
|
|
+ m_timezoneLabel->setWordWrap( true );
|
|
+ m_timezoneLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
|
|
+ timezoneLayout->addWidget( m_timezoneLabel );
|
|
+ timezoneLayout->addSpacing( 20 );
|
|
|
|
QBoxLayout* formatsLayout = new QHBoxLayout;
|
|
m_formatsLabel = new QLabel( this );
|
|
@@ -79,16 +89,22 @@ LocalePage::LocalePage( Config* config, QWidget* parent )
|
|
m_formatsChangeButton = new QPushButton( this );
|
|
m_formatsChangeButton->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred );
|
|
formatsLayout->addWidget( m_formatsChangeButton );
|
|
-
|
|
- mainLayout->addLayout( tzwLayout );
|
|
+ formatsLayout->addSpacing(20);
|
|
+ //mainLayout->addLayout( tzwLayout );
|
|
mainLayout->addStretch();
|
|
mainLayout->addLayout( zoneAndRegionLayout );
|
|
mainLayout->addStretch();
|
|
mainLayout->addLayout( localeLayout );
|
|
+ mainLayout->addSpacing(20);
|
|
mainLayout->addLayout( formatsLayout );
|
|
- setMinimumWidth( m_tzWidget->width() );
|
|
+ mainLayout->addSpacing(20);
|
|
+ mainLayout->addLayout( timezoneLayout );
|
|
+ mainLayout->addStretch();
|
|
+ //setMinimumWidth( m_tzWidget->width() );
|
|
setLayout( mainLayout );
|
|
|
|
+ m_localeChangeButton->hide();
|
|
+ m_formatsChangeButton->hide();
|
|
// Set up the location before connecting signals, to avoid a signal
|
|
// storm as various parts interact.
|
|
{
|
|
@@ -98,18 +114,19 @@ LocalePage::LocalePage( Config* config, QWidget* parent )
|
|
zones->setRegion( location->region() );
|
|
m_regionCombo->setModel( regions );
|
|
m_zoneCombo->setModel( zones );
|
|
- m_tzWidget->setCurrentLocation( location );
|
|
+ //m_tzWidget->setCurrentLocation( location );
|
|
locationChanged( location ); // doesn't inform TZ widget
|
|
}
|
|
|
|
connect( config, &Config::currentLCStatusChanged, m_formatsLabel, &QLabel::setText );
|
|
connect( config, &Config::currentLanguageStatusChanged, m_localeLabel, &QLabel::setText );
|
|
- connect( config, &Config::currentLocationChanged, m_tzWidget, &TimeZoneWidget::setCurrentLocation );
|
|
+ connect( config, &Config::currentZoneChanged, m_timezoneLabel , &QLabel::setText);
|
|
+ //connect( config, &Config::currentLocationChanged, m_tzWidget, &TimeZoneWidget::setCurrentLocation );
|
|
connect( config, &Config::currentLocationChanged, this, &LocalePage::locationChanged );
|
|
- connect( m_tzWidget,
|
|
- &TimeZoneWidget::locationChanged,
|
|
- config,
|
|
- QOverload< const Calamares::Locale::TimeZoneData* >::of( &Config::setCurrentLocation ) );
|
|
+ // connect( m_tzWidget,
|
|
+ // &TimeZoneWidget::locationChanged,
|
|
+ // config,
|
|
+ // QOverload< const Calamares::Locale::TimeZoneData* >::of( &Config::setCurrentLocation ) );
|
|
|
|
connect( m_regionCombo, QOverload< int >::of( &QComboBox::currentIndexChanged ), this, &LocalePage::regionChanged );
|
|
connect( m_zoneCombo, QOverload< int >::of( &QComboBox::currentIndexChanged ), this, &LocalePage::zoneChanged );
|
|
@@ -133,6 +150,7 @@ LocalePage::updateLocaleLabels()
|
|
m_formatsChangeButton->setText( tr( "&Change…", "@button" ) );
|
|
m_localeLabel->setText( m_config->currentLanguageStatus() );
|
|
m_formatsLabel->setText( m_config->currentLCStatus() );
|
|
+ m_timezoneLabel->setText( m_config->currentTimeZoneStatus()) ;
|
|
}
|
|
|
|
|
|
diff --git a/src/modules/locale/LocalePage.h b/src/modules/locale/LocalePage.h
|
|
index 66502e6..b5fb06d 100644
|
|
--- a/src/modules/locale/LocalePage.h
|
|
+++ b/src/modules/locale/LocalePage.h
|
|
@@ -58,6 +58,7 @@ private:
|
|
QPushButton* m_localeChangeButton;
|
|
QLabel* m_formatsLabel;
|
|
QPushButton* m_formatsChangeButton;
|
|
+ QLabel* m_timezoneLabel;
|
|
|
|
|
|
bool m_blockTzWidgetSet;
|
|
diff --git a/src/modules/locale/SetTimezoneJob.cpp b/src/modules/locale/SetTimezoneJob.cpp
|
|
index 3d88bd0..2a586f7 100644
|
|
--- a/src/modules/locale/SetTimezoneJob.cpp
|
|
+++ b/src/modules/locale/SetTimezoneJob.cpp
|
|
@@ -50,6 +50,10 @@ SetTimezoneJob::exec()
|
|
|
|
QString localtimeSlink( "/etc/localtime" );
|
|
QString zoneinfoPath( "/usr/share/zoneinfo" );
|
|
+ if(m_zone.contains("(China)"))
|
|
+ {
|
|
+ m_zone.remove("(China)");
|
|
+ }
|
|
zoneinfoPath.append( QDir::separator() + m_region );
|
|
zoneinfoPath.append( QDir::separator() + m_zone );
|
|
|
|
diff --git a/src/modules/locale/locale.conf b/src/modules/locale/locale.conf
|
|
index 4463f7a..028071f 100644
|
|
--- a/src/modules/locale/locale.conf
|
|
+++ b/src/modules/locale/locale.conf
|
|
@@ -17,8 +17,8 @@
|
|
# Note that useSystemTimezone and GeoIP settings can change the
|
|
# starting time zone.
|
|
#
|
|
-region: "America"
|
|
-zone: "New_York"
|
|
+region: "Asia"
|
|
+zone: "Beijing"
|
|
|
|
# Instead of using *region* and *zone* specified above,
|
|
# you can use the system's notion of the timezone, instead.
|
|
@@ -117,7 +117,7 @@ zone: "New_York"
|
|
# Also, note the analogous feature in src/modules/welcome/welcome.conf.
|
|
#
|
|
geoip:
|
|
- style: "json"
|
|
+ style: "none"
|
|
url: "https://geoip.kde.org/v1/calamares"
|
|
selector: "" # leave blank for the default
|
|
|
|
diff --git a/src/modules/localeq/localeq.conf b/src/modules/localeq/localeq.conf
|
|
index bb2a7e8..35a819a 100644
|
|
--- a/src/modules/localeq/localeq.conf
|
|
+++ b/src/modules/localeq/localeq.conf
|
|
@@ -95,6 +95,6 @@ zone: "New_York"
|
|
# Also, note the analogous feature in src/modules/welcome/welcome.conf.
|
|
#
|
|
geoip:
|
|
- style: "json"
|
|
+ style: "none"
|
|
url: "https://geoip.kde.org/v1/calamares"
|
|
selector: "" # leave blank for the default
|
|
diff --git a/src/modules/mount/mount.conf b/src/modules/mount/mount.conf
|
|
index da95395..bf06fe9 100644
|
|
--- a/src/modules/mount/mount.conf
|
|
+++ b/src/modules/mount/mount.conf
|
|
@@ -28,12 +28,21 @@ extraMounts:
|
|
- device: /dev
|
|
mountPoint: /dev
|
|
options: [ bind ]
|
|
+ - device: /dev/pts
|
|
+ mountPoint: /dev/pts
|
|
+ options: [ bind ]
|
|
- device: tmpfs
|
|
fs: tmpfs
|
|
mountPoint: /run
|
|
- device: /run/udev
|
|
mountPoint: /run/udev
|
|
options: [ bind ]
|
|
+ - device: /run/initramfs
|
|
+ mountPoint: /run/initramfs
|
|
+ options: [ bind ]
|
|
+ - device: /run/initramfs/live
|
|
+ mountPoint: /run/initramfs/live
|
|
+ options: [ bind ]
|
|
- device: efivarfs
|
|
fs: efivarfs
|
|
mountPoint: /sys/firmware/efi/efivars
|
|
diff --git a/src/modules/packagechooser/Config.cpp b/src/modules/packagechooser/Config.cpp
|
|
index 642311b..0abeafa 100644
|
|
--- a/src/modules/packagechooser/Config.cpp
|
|
+++ b/src/modules/packagechooser/Config.cpp
|
|
@@ -238,7 +238,7 @@ Config::setPackageChoice( const QString& packageChoice )
|
|
QString
|
|
Config::prettyName() const
|
|
{
|
|
- return m_stepName ? m_stepName->get() : tr( "Packages" );
|
|
+ return tr( "Packages");
|
|
}
|
|
|
|
QString
|
|
diff --git a/src/modules/packagechooser/PackageChooserPage.cpp b/src/modules/packagechooser/PackageChooserPage.cpp
|
|
index 44a570d..53bd82a 100644
|
|
--- a/src/modules/packagechooser/PackageChooserPage.cpp
|
|
+++ b/src/modules/packagechooser/PackageChooserPage.cpp
|
|
@@ -16,7 +16,8 @@
|
|
#include "utils/Retranslator.h"
|
|
|
|
#include <QLabel>
|
|
-
|
|
+#include <QSvgRenderer>
|
|
+#include <QPainter>
|
|
PackageChooserPage::PackageChooserPage( PackageChooserMode mode, QWidget* parent )
|
|
: QWidget( parent )
|
|
, ui( new Ui::PackageChooserPage )
|
|
@@ -29,7 +30,7 @@ PackageChooserPage::PackageChooserPage( PackageChooserMode mode, QWidget* parent
|
|
|
|
ui->setupUi( this );
|
|
CALAMARES_RETRANSLATE( updateLabels(); );
|
|
-
|
|
+ this->setContentsMargins(50,15,50,0);
|
|
switch ( mode )
|
|
{
|
|
case PackageChooserMode::Optional:
|
|
@@ -69,7 +70,24 @@ PackageChooserPage::currentChanged( const QModelIndex& index )
|
|
}
|
|
else
|
|
{
|
|
- ui->productScreenshot->setPixmap( currentScreenshot );
|
|
+ QVariant screenshotVariant = model->data( index, PackageListModel::ScreenshotRole );
|
|
+ QString imagePath = screenshotVariant.toString();
|
|
+ QPixmap currentScreenshot;
|
|
+ if(imagePath.toLower().endsWith(".svg")){
|
|
+ QSvgRenderer svgRenderer(imagePath);
|
|
+ if(svgRenderer.isValid()){
|
|
+ currentScreenshot = QPixmap(svgRenderer.defaultSize());
|
|
+ currentScreenshot.fill(Qt::transparent);
|
|
+ QPainter painter(¤tScreenshot);
|
|
+ svgRenderer.render(&painter);
|
|
+ painter.end();
|
|
+ }
|
|
+ }
|
|
+ else{
|
|
+ ui->productScreenshot->setPixmap( model->data( index, PackageListModel::ScreenshotRole ).value< QPixmap >() );
|
|
+ }
|
|
+
|
|
+
|
|
}
|
|
}
|
|
}
|
|
diff --git a/src/modules/packagechooser/packagechooser.conf b/src/modules/packagechooser/packagechooser.conf
|
|
index 5b40aeb..e7b9b00 100644
|
|
--- a/src/modules/packagechooser/packagechooser.conf
|
|
+++ b/src/modules/packagechooser/packagechooser.conf
|
|
@@ -9,7 +9,7 @@
|
|
# Possible modes are "optional", "required" (for zero-or-one or exactly-one)
|
|
# or "optionalmultiple", "requiredmultiple" (for zero-or-more
|
|
# or one-or-more).
|
|
-mode: required
|
|
+mode: optionalmultiple
|
|
|
|
# Software installation method:
|
|
#
|
|
@@ -46,7 +46,7 @@ mode: required
|
|
# are no jobs that this module provides. You should put **other**
|
|
# modules, either *contextualprocess* or *packages* or some custom
|
|
# module, in the `exec` section to do the actual work.
|
|
-method: legacy
|
|
+method: packages
|
|
|
|
|
|
# Human-visible strings in this module. These are all optional.
|
|
@@ -150,23 +150,32 @@ labels:
|
|
items:
|
|
- id: ""
|
|
# packages: [] # This item installs no packages
|
|
- name: "No Desktop"
|
|
+ name: "Minimal Install"
|
|
name[nl]: "Geen desktop"
|
|
+ name[zh]: "最小安装"
|
|
description: "Please pick a desktop environment from the list. If you don't want to install a desktop, that's fine, your system will start up in text-only mode and you can install a desktop environment later."
|
|
description[nl]: "Kies eventueel een desktop-omgeving uit deze lijst. Als u geen desktop-omgeving wenst te gebruiken, kies er dan geen. In dat geval start het systeem straks op in tekst-modus en kunt u later alsnog een desktop-omgeving installeren."
|
|
- screenshot: ":/images/no-selection.png"
|
|
- - id: kde
|
|
- packages: [ kde-frameworks, kde-plasma, kde-gear ]
|
|
- name: Plasma Desktop
|
|
- description: "KDE Plasma Desktop, simple by default, a clean work area for real-world usage which intends to stay out of your way. Plasma is powerful when needed, enabling the user to create the workflow that makes them more effective to complete their tasks."
|
|
- screenshot: ":/images/kde.png"
|
|
+ description[zh]: "请选择一个桌面环境。如果您不想安装桌面环境也没关系,您可以稍后再为系统安装桌面环境。"
|
|
+ screenshot: ":/images/Minimal-Install.png"
|
|
+ # - id: kde
|
|
+ # packages: [ kde-frameworks, kde-plasma, kde-gear ]
|
|
+ # name: Plasma Desktop
|
|
+ # description: "KDE Plasma Desktop, simple by default, a clean work area for real-world usage which intends to stay out of your way. Plasma is powerful when needed, enabling the user to create the workflow that makes them more effective to complete their tasks."
|
|
+ # screenshot: ":/images/Plasma.png"
|
|
- id: gnome
|
|
- packages: [ gnome-all ]
|
|
- name: GNOME
|
|
+ packages: [ checkpolicy, code, xorg-*, dejavu-fonts, liberation-fonts, gnu-*-fonts, google-*-fonts, adwaita-icon-theme, atk, atkmm, at-spi2-atk, at-spi2-core, baobab, abattis-cantarell-fonts, cheese, clutter, clutter-gst3, clutter-gtk, cogl, dconf, dconf-editor, devhelp, eog, epiphany, evince, evolution-data-server, file-roller, folks, gcab, gcr, gdk-pixbuf2, gdm, gedit, geocode-glib, gfbgraph, gjs, glib2, glibmm24, glib-networking, gmime30, gnome-autoar, gnome-backgrounds, gnome-bluetooth, gnome-builder, gnome-calculator, gnome-calendar, gnome-characters, gnome-clocks, gnome-color-manager, gnome-contacts, gnome-control-center, gnome-desktop3, gnome-disk-utility, gnome-font-viewer, gnome-getting-started-docs, gnome-initial-setup, gnome-keyring, gnome-logs, gnome-menus, gnome-music, gnome-online-accounts, gnome-online-miners, gnome-photos, gnome-remote-desktop, gnome-screenshot, gnome-session, gnome-settings-daemon, gnome-shell, gnome-shell-extensions, gnome-software, gnome-system-monitor, gnome-terminal, gnome-tour, gnome-user-docs, gnome-user-share, gnome-video-effects, gnome-weather, gobject-introspection, gom, grilo, grilo-plugins, gsettings-desktop-schemas, gsound, gspell, gssdp, gtk3, gtk4, gtk-doc, gtkmm30, gtksourceview4, gtk-vnc2, gupnp, gupnp-av, gupnp-dlna, gvfs, json-glib, libchamplain, libdazzle, libgdata, libgee, libgnomekbd, libgsf, libgtop2, libgweather, libgxps, libhandy, libmediaart, libnma, libnotify, libpeas, librsvg2, libsecret, libsigc++20, libsoup, mm-common, mutter, nautilus, orca, pango, pangomm, libphodav, python3-pyatspi, python3-gobject, rest, rygel, simple-scan, sushi, sysprof, tepl, totem, totem-pl-parser, tracker3, tracker3-miners, vala, vte291, yelp, yelp-tools, yelp-xsl, zenity, devstation-config, ibus-libpinyin ]
|
|
+ name: DevStation
|
|
+ name[zh]: DevStation
|
|
description: GNU Networked Object Modeling Environment Desktop
|
|
+ description[zh]: Devstation系统桌面
|
|
screenshot: ":/images/gnome.png"
|
|
- - id: calamares
|
|
- appdata: ../io.calamares.calamares.appdata.xml
|
|
- screenshot: ":/images/calamares.png"
|
|
- - id: kate
|
|
- appstream: org.kde.kwrite.desktop
|
|
+ #- id: ukui
|
|
+ # packages: [ ukui ]
|
|
+ # name: UKUI
|
|
+ # description: Linux Desktop
|
|
+ # screenshot: ":/images/UKUI.png"
|
|
+ # - id: calamares
|
|
+ # appdata: ../io.calamares.calamares.appdata.xml
|
|
+ # screenshot: ":/images/calamares.png"
|
|
+ # - id: kate
|
|
+ # appstream: org.kde.kwrite.desktop
|
|
diff --git a/src/modules/packagechooser/packagechooser.qrc b/src/modules/packagechooser/packagechooser.qrc
|
|
index 3b9c96a..05944ce 100644
|
|
--- a/src/modules/packagechooser/packagechooser.qrc
|
|
+++ b/src/modules/packagechooser/packagechooser.qrc
|
|
@@ -2,5 +2,11 @@
|
|
<qresource prefix="/">
|
|
<file>images/no-selection.png</file>
|
|
<file>images/calamares.png</file>
|
|
+ <!-- <file>images/Plasma.png</file> -->
|
|
+ <file>images/gnome.png</file>
|
|
+ <!-- <file>images/UKUI.png</file> -->
|
|
+ <!--<file>images/Biglogo.png</file> -->
|
|
+ <!--<file>images/Biglogo.svg</file> -->
|
|
+ <file>images/Minimal-Install.png</file>
|
|
</qresource>
|
|
</RCC>
|
|
diff --git a/src/modules/packages/main.py b/src/modules/packages/main.py
|
|
index d2a2552..8c165e8 100644
|
|
--- a/src/modules/packages/main.py
|
|
+++ b/src/modules/packages/main.py
|
|
@@ -123,7 +123,7 @@ class PackageManager(metaclass=abc.ABCMeta):
|
|
if script != "":
|
|
check_target_env_call(script.split(" "))
|
|
|
|
- def install_package(self, packagedata, from_local=False):
|
|
+ def install_package(self, packagedata, from_local=False, options=None):
|
|
"""
|
|
Install a package from a single entry in the install list.
|
|
This can be either a single package name, or an object
|
|
@@ -135,11 +135,18 @@ class PackageManager(metaclass=abc.ABCMeta):
|
|
see install.from_local
|
|
"""
|
|
if isinstance(packagedata, str):
|
|
- self.install([packagedata], from_local=from_local)
|
|
+ self.install([packagedata], from_local=from_local, options=options)
|
|
else:
|
|
self.run(packagedata["pre-script"])
|
|
- self.install([packagedata["package"]], from_local=from_local)
|
|
- self.run(packagedata["post-script"])
|
|
+ if isinstance(packagedata["package"], list):
|
|
+ self.install(packagedata["package"], from_local=from_local, options=options)
|
|
+ else:
|
|
+ self.install([packagedata["package"]], from_local=from_local, options=options)
|
|
+ if isinstance(packagedata["post-script"], list):
|
|
+ for script in packagedata["post-script"]:
|
|
+ self.run(script)
|
|
+ else:
|
|
+ self.run(packagedata["post-script"])
|
|
|
|
def remove_package(self, packagedata):
|
|
"""
|
|
@@ -155,9 +162,15 @@ class PackageManager(metaclass=abc.ABCMeta):
|
|
else:
|
|
self.run(packagedata["pre-script"])
|
|
self.remove([packagedata["package"]])
|
|
- self.run(packagedata["post-script"])
|
|
+ if isinstance(packagedata["post-script"], list):
|
|
+ for script in packagedata["post-script"]:
|
|
+ self.run(script)
|
|
+ else:
|
|
+ self.run(packagedata["post-script"])
|
|
+
|
|
|
|
- def operation_install(self, package_list, from_local=False):
|
|
+
|
|
+ def operation_install(self, package_list, from_local=False, options=None):
|
|
"""
|
|
Installs the list of packages named in @p package_list .
|
|
These can be strings -- plain package names -- or
|
|
@@ -172,11 +185,14 @@ class PackageManager(metaclass=abc.ABCMeta):
|
|
NOTE: exceptions are expected to leave this method, to indicate
|
|
failure of the installation.
|
|
"""
|
|
+ if options is None:
|
|
+ options = []
|
|
+
|
|
if all([isinstance(x, str) for x in package_list]):
|
|
- self.install(package_list, from_local=from_local)
|
|
+ self.install(package_list, from_local=from_local, options=options)
|
|
else:
|
|
for package in package_list:
|
|
- self.install_package(package, from_local=from_local)
|
|
+ self.install_package(package, from_local=from_local, options=options)
|
|
|
|
def operation_try_install(self, package_list):
|
|
"""
|
|
@@ -286,8 +302,10 @@ class PMDnf(PackageManager):
|
|
"""
|
|
backend = "dnf"
|
|
|
|
- def install(self, pkgs, from_local=False):
|
|
- check_target_env_call(["dnf-3", "-y", "install"] + pkgs)
|
|
+ def install(self, pkgs, from_local=False, options=None):
|
|
+ if options is None:
|
|
+ options = []
|
|
+ check_target_env_call(["dnf-3", "-y", "install"] + options + pkgs)
|
|
|
|
def remove(self, pkgs):
|
|
# ignore the error code for now because dnf thinks removing a
|
|
@@ -651,6 +669,55 @@ def subst_locale(plist):
|
|
locale is 'en' (e.g. English, US) then these localized
|
|
packages are dropped from the list.
|
|
|
|
+ @param plist: list[str|dict]
|
|
+ Candidate packages to install.
|
|
+ @return: list[str|dict]
|
|
+ """
|
|
+ locale = libcalamares.globalstorage.value("locale")
|
|
+ if not locale:
|
|
+ # It is possible to skip the locale-setting entirely.
|
|
+ # Then pretend it is "en", so that {LOCALE}-decorated
|
|
+ # package names are removed from the list.
|
|
+ locale = "en"
|
|
+
|
|
+ ret = []
|
|
+ for packagedata in plist:
|
|
+ if isinstance(packagedata, str):
|
|
+ packagename = packagedata
|
|
+ else:
|
|
+ if isinstance(packagedata["package"], list):
|
|
+ packagename = [
|
|
+ Template(pkg).safe_substitute(LOCALE=locale)
|
|
+ if locale != "en" or 'LOCALE' not in pkg else None
|
|
+ for pkg in packagedata["package"]
|
|
+ ]
|
|
+ packagename = [pkg for pkg in packagename if pkg is not None]
|
|
+ else:
|
|
+ packagename = packagedata["package"]
|
|
+ if locale != "en":
|
|
+ packagename = Template(packagename).safe_substitute(LOCALE=locale)
|
|
+ elif 'LOCALE' in packagename:
|
|
+ packagename = None
|
|
+
|
|
+ if packagename:
|
|
+ if isinstance(packagedata, str):
|
|
+ packagedata = packagename
|
|
+ else:
|
|
+ packagedata["package"] = packagename
|
|
+
|
|
+ ret.append(packagedata)
|
|
+
|
|
+ return ret
|
|
+
|
|
+
|
|
+def subst_locale_orig(plist):
|
|
+ """
|
|
+ Returns a locale-aware list of packages, based on @p plist.
|
|
+ Package names that contain LOCALE are localized with the
|
|
+ BCP47 name of the chosen system locale; if the system
|
|
+ locale is 'en' (e.g. English, US) then these localized
|
|
+ packages are dropped from the list.
|
|
+
|
|
@param plist: list[str|dict]
|
|
Candidate packages to install.
|
|
@return: list[str|dict]
|
|
@@ -688,7 +755,24 @@ def subst_locale(plist):
|
|
return ret
|
|
|
|
|
|
-def run_operations(pkgman, entry):
|
|
+def handle_packagechooser(entry):
|
|
+ """
|
|
+ Handle special logic for entries with source "packagechooser@packagechooser".
|
|
+ Modifies the entry to include specific pre- and post-scripts.
|
|
+
|
|
+ :param entry: dict
|
|
+ The operation entry to process.
|
|
+ """
|
|
+ if "install" in entry:
|
|
+ item = {
|
|
+ "package": entry["install"],
|
|
+ "pre-script": "",
|
|
+ "post-script": ["/bin/bash /etc/add_selinux_policy.sh", "systemctl enable gdm", "systemctl set-default graphical.target"]
|
|
+ }
|
|
+ entry["install"] = [item]
|
|
+
|
|
+
|
|
+def run_operations(pkgman, entry, options):
|
|
"""
|
|
Call package manager with suitable parameters for the given
|
|
package actions.
|
|
@@ -705,24 +789,28 @@ def run_operations(pkgman, entry):
|
|
"""
|
|
global group_packages, completed_packages, mode_packages
|
|
|
|
+ if "source" in entry and entry["source"] == "packagechooser@packagechooser":
|
|
+ handle_packagechooser(entry)
|
|
+
|
|
for key in entry.keys():
|
|
package_list = subst_locale(entry[key])
|
|
group_packages = len(package_list)
|
|
+
|
|
if key == "install":
|
|
_change_mode(INSTALL)
|
|
- pkgman.operation_install(package_list)
|
|
+ pkgman.operation_install(package_list, options=options)
|
|
elif key == "try_install":
|
|
_change_mode(INSTALL)
|
|
- pkgman.operation_try_install(package_list)
|
|
+ pkgman.operation_try_install(package_list, options=options)
|
|
elif key == "remove":
|
|
_change_mode(REMOVE)
|
|
- pkgman.operation_remove(package_list)
|
|
+ pkgman.operation_remove(package_list, options=options)
|
|
elif key == "try_remove":
|
|
_change_mode(REMOVE)
|
|
- pkgman.operation_try_remove(package_list)
|
|
+ pkgman.operation_try_remove(package_list, options=options)
|
|
elif key == "localInstall":
|
|
_change_mode(INSTALL)
|
|
- pkgman.operation_install(package_list, from_local=True)
|
|
+ pkgman.operation_install(package_list, from_local=True, options=options)
|
|
elif key == "source":
|
|
libcalamares.utils.debug("Package-list from {!s}".format(entry[key]))
|
|
else:
|
|
@@ -796,12 +884,21 @@ def run():
|
|
if not total_packages:
|
|
# Avoids potential divide-by-zero in progress reporting
|
|
return None
|
|
+
|
|
+ options = []
|
|
+ for entry in operations:
|
|
+ option = entry.get("options", [])
|
|
+ if isinstance(option, list):
|
|
+ options.extend(option)
|
|
+ else:
|
|
+ options.append(option)
|
|
|
|
for entry in operations:
|
|
group_packages = 0
|
|
libcalamares.utils.debug(pretty_name())
|
|
try:
|
|
- run_operations(pkgman, entry)
|
|
+ check_target_env_call(["dnf-3", "clean", "all"])
|
|
+ run_operations(pkgman, entry, options)
|
|
except subprocess.CalledProcessError as e:
|
|
libcalamares.utils.warning(str(e))
|
|
libcalamares.utils.debug("stdout:" + str(e.stdout))
|
|
@@ -811,6 +908,7 @@ def run():
|
|
.format(e.cmd, e.returncode))
|
|
|
|
mode_packages = None
|
|
+ check_target_env_call(["rm", "-f", "/etc/yum.repos.d/local.repo"])
|
|
|
|
libcalamares.job.setprogress(1.0)
|
|
|
|
diff --git a/src/modules/packages/packages.conf b/src/modules/packages/packages.conf
|
|
index b9777f6..490c289 100644
|
|
--- a/src/modules/packages/packages.conf
|
|
+++ b/src/modules/packages/packages.conf
|
|
@@ -36,7 +36,7 @@
|
|
# Not actually a package manager, but suitable for testing:
|
|
# - dummy - Dummy manager, only logs
|
|
#
|
|
-backend: dummy
|
|
+backend: dnf
|
|
|
|
#
|
|
# Often package installation needs an internet connection.
|
|
@@ -202,13 +202,32 @@ pacman:
|
|
# "binutils", and then a second time for "wget". When installing large numbers
|
|
# of packages, this can lead to a considerable time savings.
|
|
#
|
|
+sources:
|
|
+ - /etc/yum.repos.d/local.repo
|
|
+
|
|
operations:
|
|
- install:
|
|
- - vi
|
|
- - vi-${LOCALE}
|
|
- - wget
|
|
- - binutils
|
|
- - remove:
|
|
- - vi
|
|
- - wget
|
|
- - binutils
|
|
+ - openssh
|
|
+ - iproute
|
|
+ - dhcp
|
|
+ - kernel
|
|
+ - bash
|
|
+ - coreutils
|
|
+ - efibootmgr
|
|
+ - shim
|
|
+ - java-11-openjdk-devel
|
|
+ - vim
|
|
+ - gdb
|
|
+ - perf
|
|
+ - CUnit
|
|
+ - CUnit-devel
|
|
+ - firewalld
|
|
+ - gtest
|
|
+ - gtest-devel
|
|
+ - python3-pytest
|
|
+
|
|
+ options:
|
|
+ - --nogpgcheck
|
|
+ - --setopt=sslverify=0
|
|
+ - --disablerepo=*
|
|
+ - --enablerepo=local-repo
|
|
diff --git a/src/modules/partition/PartitionViewStep.cpp b/src/modules/partition/PartitionViewStep.cpp
|
|
index db087b5..2f98fe1 100644
|
|
--- a/src/modules/partition/PartitionViewStep.cpp
|
|
+++ b/src/modules/partition/PartitionViewStep.cpp
|
|
@@ -48,8 +48,7 @@ PartitionViewStep::PartitionViewStep( QObject* parent )
|
|
, m_choicePage( nullptr )
|
|
, m_manualPartitionPage( nullptr )
|
|
{
|
|
- m_widget->setContentsMargins( 0, 0, 0, 0 );
|
|
-
|
|
+ m_widget->setContentsMargins( 50, 20, 50, 0 );
|
|
m_waitingWidget = new WaitingWidget( QString() );
|
|
m_widget->addWidget( m_waitingWidget );
|
|
CALAMARES_RETRANSLATE(
|
|
diff --git a/src/modules/partition/gui/BootInfoWidget.cpp b/src/modules/partition/gui/BootInfoWidget.cpp
|
|
index b4339be..eb70b4a 100644
|
|
--- a/src/modules/partition/gui/BootInfoWidget.cpp
|
|
+++ b/src/modules/partition/gui/BootInfoWidget.cpp
|
|
@@ -42,7 +42,8 @@ BootInfoWidget::BootInfoWidget( QWidget* parent )
|
|
QFontMetrics fm = QFontMetrics( QFont() );
|
|
m_bootLabel->setMinimumWidth( fm.boundingRect( "BIOS" ).width() + Calamares::defaultFontHeight() / 2 );
|
|
m_bootLabel->setAlignment( Qt::AlignCenter );
|
|
-
|
|
+ m_bootLabel->setStyleSheet("background-color:#FFFFFF;");
|
|
+ m_bootIcon->setStyleSheet("background-color:#FFFFFF;");
|
|
QPalette palette;
|
|
palette.setBrush( WindowText, QColor( "#4D4D4D" ) ); //dark grey
|
|
|
|
@@ -62,7 +63,12 @@ BootInfoWidget::retranslateUi()
|
|
"Modern systems usually use <strong>EFI</strong>, but "
|
|
"may also show up as BIOS if started in compatibility "
|
|
"mode." ) );
|
|
-
|
|
+ m_bootIcon->setStyleSheet(
|
|
+ "QLabel {"
|
|
+ "background-color: #ffffff;"
|
|
+ "color: black;"
|
|
+ "}"
|
|
+ );
|
|
QString bootToolTip;
|
|
if ( PartUtils::isEfiSystem() )
|
|
{
|
|
diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp
|
|
index 62cf0f6..6185d3f 100644
|
|
--- a/src/modules/partition/gui/ChoicePage.cpp
|
|
+++ b/src/modules/partition/gui/ChoicePage.cpp
|
|
@@ -1344,7 +1344,7 @@ ChoicePage::setupActions()
|
|
"You will be able to review and confirm your choices "
|
|
"before any change is made to the storage device." ) );
|
|
|
|
- m_eraseButton->setText( tr( "<strong>Erase disk</strong><br/>"
|
|
+ m_eraseButton->setText( tr( "<strong>Automatic partitioning</strong><br/>"
|
|
"This will <font color=\"red\">delete</font> all data "
|
|
"currently present on the selected storage device." ) );
|
|
|
|
@@ -1381,7 +1381,7 @@ ChoicePage::setupActions()
|
|
"The installer will shrink a partition to make room for %1." )
|
|
.arg( Calamares::Branding::instance()->shortVersionedName() ) );
|
|
|
|
- m_eraseButton->setText( tr( "<strong>Erase disk</strong><br/>"
|
|
+ m_eraseButton->setText( tr( "<strong>Automatic partitioning</strong><br/>"
|
|
"This will <font color=\"red\">delete</font> all data "
|
|
"currently present on the selected storage device." ) );
|
|
|
|
@@ -1402,7 +1402,7 @@ ChoicePage::setupActions()
|
|
"The installer will shrink a partition to make room for %1." )
|
|
.arg( Calamares::Branding::instance()->shortVersionedName() ) );
|
|
|
|
- m_eraseButton->setText( tr( "<strong>Erase disk</strong><br/>"
|
|
+ m_eraseButton->setText( tr( "<strong>Automatic partitioning</strong><br/>"
|
|
"This will <font color=\"red\">delete</font> all data "
|
|
"currently present on the selected storage device." ) );
|
|
|
|
@@ -1427,7 +1427,7 @@ ChoicePage::setupActions()
|
|
"The installer will shrink a partition to make room for %1." )
|
|
.arg( Calamares::Branding::instance()->shortVersionedName() ) );
|
|
|
|
- m_eraseButton->setText( tr( "<strong>Erase disk</strong><br/>"
|
|
+ m_eraseButton->setText( tr( "<strong>Automatic partitioning</strong><br/>"
|
|
"This will <font color=\"red\">delete</font> all data "
|
|
"currently present on the selected storage device." ) );
|
|
|
|
@@ -1593,7 +1593,7 @@ ChoicePage::calculateNextEnabled() const
|
|
{
|
|
case EncryptWidget::Encryption::Unconfirmed:
|
|
cDebug() << "No passphrase provided or passphrase mismatch.";
|
|
- return false;
|
|
+ //return false;
|
|
case EncryptWidget::Encryption::Disabled:
|
|
case EncryptWidget::Encryption::Confirmed:
|
|
// Checkbox not checked, **or** passphrases match
|
|
diff --git a/src/modules/partition/gui/DeviceInfoWidget.cpp b/src/modules/partition/gui/DeviceInfoWidget.cpp
|
|
index f57ed91..a22344d 100644
|
|
--- a/src/modules/partition/gui/DeviceInfoWidget.cpp
|
|
+++ b/src/modules/partition/gui/DeviceInfoWidget.cpp
|
|
@@ -52,7 +52,18 @@ DeviceInfoWidget::DeviceInfoWidget( QWidget* parent )
|
|
m_ptLabel->setAutoFillBackground( true );
|
|
m_ptIcon->setPalette( palette );
|
|
m_ptLabel->setPalette( palette );
|
|
-
|
|
+ m_ptLabel->setStyleSheet(
|
|
+ "QLabel {"
|
|
+ "background-color: #ffffff;"
|
|
+ "color: black;"
|
|
+ "}"
|
|
+ );
|
|
+ m_ptIcon->setStyleSheet(
|
|
+ "QLabel {"
|
|
+ "background-color: #ffffff;"
|
|
+ "color: black;"
|
|
+ "}"
|
|
+ );
|
|
CALAMARES_RETRANSLATE_SLOT( &DeviceInfoWidget::retranslateUi );
|
|
}
|
|
|
|
diff --git a/src/modules/partition/gui/EncryptWidget.cpp b/src/modules/partition/gui/EncryptWidget.cpp
|
|
index 8726df1..ebb076e 100644
|
|
--- a/src/modules/partition/gui/EncryptWidget.cpp
|
|
+++ b/src/modules/partition/gui/EncryptWidget.cpp
|
|
@@ -59,7 +59,7 @@ EncryptWidget::EncryptWidget( QWidget* parent )
|
|
m_ui->m_encryptionUnsupportedLabel->setText( QStringLiteral( "🔓" ) );
|
|
m_ui->m_encryptionUnsupportedLabel->show();
|
|
}
|
|
-
|
|
+ m_ui->m_encryptCheckBox->hide();
|
|
connect( m_ui->m_encryptCheckBox, &QCheckBox::stateChanged, this, &EncryptWidget::onCheckBoxStateChanged );
|
|
connect( m_ui->m_passphraseLineEdit, &QLineEdit::textEdited, this, &EncryptWidget::onPassphraseEdited );
|
|
connect( m_ui->m_confirmLineEdit, &QLineEdit::textEdited, this, &EncryptWidget::onPassphraseEdited );
|
|
diff --git a/src/modules/summary/SummaryPage.cpp b/src/modules/summary/SummaryPage.cpp
|
|
index 41881e4..08a4d51 100644
|
|
--- a/src/modules/summary/SummaryPage.cpp
|
|
+++ b/src/modules/summary/SummaryPage.cpp
|
|
@@ -35,7 +35,7 @@ SummaryPage::SummaryPage( Config* config, QWidget* parent )
|
|
Q_UNUSED( parent )
|
|
|
|
this->setObjectName( "summaryStep" );
|
|
-
|
|
+ this->setContentsMargins(50,15,50,0);
|
|
QVBoxLayout* layout = new QVBoxLayout( this );
|
|
layout->setContentsMargins( 0, 0, 0, 0 );
|
|
|
|
@@ -118,6 +118,9 @@ ensureSize( QWidget* parent, QScrollArea* container, Calamares::ViewStep* viewst
|
|
|
|
emit viewstep->ensureSize( widgetSize ); // Only expand height
|
|
}
|
|
+ else{
|
|
+ container->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
|
+ }
|
|
}
|
|
|
|
// Adds a widget for those ViewSteps that want a summary;
|
|
@@ -131,10 +134,10 @@ SummaryPage::buildWidgets( Config* config, SummaryViewStep* viewstep )
|
|
m_contentWidget = new QWidget;
|
|
m_layout = new QVBoxLayout( m_contentWidget );
|
|
Calamares::unmarginLayout( m_layout );
|
|
-
|
|
+ m_contentWidget->setStyleSheet("background-color:#FFFFFF");
|
|
QFont titleFont = font();
|
|
titleFont.setWeight( QFont::Light );
|
|
- titleFont.setPointSize( Calamares::defaultFontSize() * 2 );
|
|
+ titleFont.setPointSize( Calamares::defaultFontSize() * 1.3 );
|
|
|
|
QPalette bodyPalette( palette() );
|
|
bodyPalette.setColor( WindowBackground, palette().window().color().lighter( 108 ) );
|
|
diff --git a/src/modules/umount/UmountJob.cpp b/src/modules/umount/UmountJob.cpp
|
|
index 83cf2f1..90f2373 100644
|
|
--- a/src/modules/umount/UmountJob.cpp
|
|
+++ b/src/modules/umount/UmountJob.cpp
|
|
@@ -42,6 +42,29 @@ UmountJob::prettyName() const
|
|
static Calamares::JobResult
|
|
unmountTargetMounts( const QString& rootMountPoint )
|
|
{
|
|
+ // 先删除 /etc/yum.repos.d/local.repo 文件
|
|
+ QString repoFilePath = rootMountPoint + "/etc/yum.repos.d/local.repo";
|
|
+ if ( QFile::exists( repoFilePath ) )
|
|
+ {
|
|
+ if ( !QFile::remove( repoFilePath ) )
|
|
+ {
|
|
+ return Calamares::JobResult::internalError(
|
|
+ QCoreApplication::translate( UmountJob::staticMetaObject.className(), "Could not remove local.repo." ),
|
|
+ QCoreApplication::translate( UmountJob::staticMetaObject.className(),
|
|
+ "Failed to remove '%1'. Check permissions." )
|
|
+ .arg( repoFilePath ),
|
|
+ Calamares::JobResult::GenericError );
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ cDebug() << "Removed local repo file:" << repoFilePath;
|
|
+ }
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ cDebug() << "No local.repo file to remove at" << repoFilePath;
|
|
+ }
|
|
+
|
|
QDir targetMount( rootMountPoint );
|
|
if ( !targetMount.exists() )
|
|
{
|
|
diff --git a/src/modules/unpackfs/main.py b/src/modules/unpackfs/main.py
|
|
index 814556f..4148720 100644
|
|
--- a/src/modules/unpackfs/main.py
|
|
+++ b/src/modules/unpackfs/main.py
|
|
@@ -23,6 +23,7 @@ import sys
|
|
import tempfile
|
|
|
|
import libcalamares
|
|
+import platform
|
|
|
|
import gettext
|
|
_ = gettext.translation("calamares-python",
|
|
@@ -153,6 +154,40 @@ def global_excludes():
|
|
|
|
return lst
|
|
|
|
+def create_se_content():
|
|
+ te_content = """
|
|
+#!/bin/bash
|
|
+
|
|
+# 恢复sshd和rpmdb SELinux上下文
|
|
+chcon -t sshd_exec_t /usr/sbin/sshd
|
|
+chcon -t rpm_var_lib_t /var/lib/rpm/Index.db
|
|
+
|
|
+# 创建 TE 文件
|
|
+cat <<EOF > gdm_policy.te
|
|
+module gdm_policy 1.0;
|
|
+
|
|
+require {
|
|
+ type unconfined_service_t;
|
|
+ type unconfined_t;
|
|
+ class process { transition };
|
|
+}
|
|
+
|
|
+# Allow unconfined_service_t to transition to unconfined_t
|
|
+allow unconfined_service_t unconfined_t:process transition;
|
|
+EOF
|
|
+
|
|
+# 编译 TE 文件
|
|
+checkmodule -M -m -o gdm_policy.mod gdm_policy.te
|
|
+
|
|
+# 生成策略模块包
|
|
+semodule_package -o gdm_policy.pp -m gdm_policy.mod
|
|
+
|
|
+# 安装策略模块
|
|
+semodule -i gdm_policy.pp
|
|
+""".strip()
|
|
+ with open('/etc/add_selinux_policy.sh', 'w') as te_file:
|
|
+ te_file.write(te_content)
|
|
+
|
|
def file_copy(source, entry, progress_cb):
|
|
"""
|
|
Extract given image using rsync.
|
|
@@ -226,9 +261,44 @@ def file_copy(source, entry, progress_cb):
|
|
counter.last_timestamp_reported = now
|
|
counter.last_total_reported = num_files_total_local
|
|
progress_cb(num_files_copied, num_files_total_local)
|
|
-
|
|
try:
|
|
- returncode = libcalamares.utils.host_env_process_output(args, output_cb)
|
|
+ returncode = 0
|
|
+ arch = platform.machine()
|
|
+
|
|
+ libcalamares.utils.host_env_process_output(["mkdir", "-p", entry.destination + "/etc/yum.repos.d/"], output_cb)
|
|
+ libcalamares.utils.host_env_process_output(["multipath", "-F"], output_cb)
|
|
+
|
|
+ create_se_content()
|
|
+ libcalamares.utils.host_env_process_output(["cp", "-af", "/etc/add_selinux_policy.sh", entry.destination + "/etc/add_selinux_policy.sh"], output_cb)
|
|
+ libcalamares.utils.host_env_process_output(["chmod", "+x", entry.destination + "/etc/add_selinux_policy.sh"], output_cb)
|
|
+
|
|
+ if os.path.exists("/etc/yum.repos.d/local.repo"):
|
|
+ libcalamares.utils.host_env_process_output(
|
|
+ ["cp", "-af", "/etc/yum.repos.d/local.repo", entry.destination + "/etc/yum.repos.d/"], output_cb)
|
|
+
|
|
+ if arch == "aarch64":
|
|
+ packages = ["yum", "grub2-efi", "passwd", "sudo"]
|
|
+ else:
|
|
+ packages = ["yum", "grub2", "grub2-efi-x64", "grub2-pc", "passwd", "sudo"]
|
|
+
|
|
+ libcalamares.utils.host_env_process_output(
|
|
+ ["yum", "--installroot=" + entry.destination, "--disablerepo=*", "--enablerepo=local-repo",
|
|
+ "--releasever=/", "--nogpgcheck", "--setopt=sslverify=0", "install", "-y"] + packages, output_cb)
|
|
+ else:
|
|
+ libcalamares.utils.host_env_process_output(
|
|
+ ["cp", "-af", "/etc/yum.repos.d/openEuler.repo", entry.destination + "/etc/yum.repos.d/"], output_cb)
|
|
+ if arch == "aarch64":
|
|
+ packages = ["yum", "grub2-efi", "passwd", "sudo"]
|
|
+ else:
|
|
+ packages = ["yum", "grub2", "grub2-efi-x64", "grub2-pc", "passwd", "sudo"]
|
|
+
|
|
+ libcalamares.utils.host_env_process_output(
|
|
+ ["yum", "--installroot=" + entry.destination, "--releasever=/", "--nogpgcheck", "--setopt=sslverify=0",
|
|
+ "install", "-y"] + packages, output_cb)
|
|
+
|
|
+ libcalamares.utils.host_env_process_output(["rm", "-f", entry.destination + "/etc/shadow"], output_cb)
|
|
+ libcalamares.utils.host_env_process_output(["cp", "-af", "/etc/shadow", entry.destination + "/etc/shadow"], output_cb)
|
|
+
|
|
except subprocess.CalledProcessError as e:
|
|
returncode = e.returncode
|
|
|
|
@@ -454,10 +524,10 @@ def run():
|
|
libcalamares.utils.warning(" ... modprobe {} may solve the problem".format(sourcefs))
|
|
return (_("Bad unpackfs configuration"),
|
|
_("The filesystem for \"{}\" ({}) is not supported by your current kernel").format(source, sourcefs))
|
|
- if not os.path.exists(source):
|
|
- libcalamares.utils.warning("The source filesystem \"{}\" does not exist".format(source))
|
|
- return (_("Bad unpackfs configuration"),
|
|
- _("The source filesystem \"{}\" does not exist").format(source))
|
|
+ #if not os.path.exists(source):
|
|
+ # libcalamares.utils.warning("The source filesystem \"{}\" does not exist".format(source))
|
|
+ # return (_("Bad unpackfs configuration"),
|
|
+ # _("The source filesystem \"{}\" does not exist").format(source))
|
|
if sourcefs == "squashfs":
|
|
if shutil.which("unsquashfs") is None:
|
|
libcalamares.utils.warning("Failed to find unsquashfs")
|
|
diff --git a/src/modules/unpackfs/unpackfs.conf b/src/modules/unpackfs/unpackfs.conf
|
|
index d12110b..1b053a6 100644
|
|
--- a/src/modules/unpackfs/unpackfs.conf
|
|
+++ b/src/modules/unpackfs/unpackfs.conf
|
|
@@ -88,13 +88,7 @@
|
|
# for its destination name, as in the example below.
|
|
|
|
unpack:
|
|
- - source: ../CHANGES
|
|
- sourcefs: file
|
|
- destination: "/tmp/changes.txt"
|
|
+ - source: "/dev/mapper/live-base"
|
|
+ sourcefs: "ext4"
|
|
+ destination: ""
|
|
weight: 1 # Single file
|
|
- - source: src/qml/calamares/slideshow
|
|
- sourcefs: file
|
|
- destination: "/tmp/slideshow/"
|
|
- exclude: [ "*.qmlc", "qmldir" ]
|
|
- weight: 5 # Lots of files
|
|
- # excludeFile: /etc/calamares/modules/unpackfs/exclude-list.txt
|
|
diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp
|
|
index 1ecc0eb..72fb3e0 100644
|
|
--- a/src/modules/users/UsersPage.cpp
|
|
+++ b/src/modules/users/UsersPage.cpp
|
|
@@ -82,7 +82,7 @@ UsersPage::UsersPage( Config* config, QWidget* parent )
|
|
, m_config( config )
|
|
{
|
|
ui->setupUi( this );
|
|
-
|
|
+ this->setContentsMargins(50,15,50,0);
|
|
// Connect signals and slots
|
|
ui->textBoxUserPassword->setText( config->userPassword() );
|
|
connect( ui->textBoxUserPassword, &QLineEdit::textChanged, config, &Config::setUserPassword );
|
|
diff --git a/src/modules/users/page_usersetup.bak.ui b/src/modules/users/page_usersetup.bak.ui
|
|
new file mode 100644
|
|
index 0000000..f808c89
|
|
--- /dev/null
|
|
+++ b/src/modules/users/page_usersetup.bak.ui
|
|
@@ -0,0 +1,710 @@
|
|
+<?xml version="1.0" encoding="UTF-8"?>
|
|
+<ui version="4.0">
|
|
+ <author>
|
|
+SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
|
+SPDX-License-Identifier: GPL-3.0-or-later
|
|
+ </author>
|
|
+ <class>Page_UserSetup</class>
|
|
+ <widget class="QWidget" name="Page_UserSetup">
|
|
+ <property name="geometry">
|
|
+ <rect>
|
|
+ <x>0</x>
|
|
+ <y>0</y>
|
|
+ <width>862</width>
|
|
+ <height>683</height>
|
|
+ </rect>
|
|
+ </property>
|
|
+ <property name="windowTitle">
|
|
+ <string notr="true">Form</string>
|
|
+ </property>
|
|
+ <layout class="QVBoxLayout" name="verticalLayout_12">
|
|
+ <item>
|
|
+ <spacer name="verticalSpacer">
|
|
+ <property name="orientation">
|
|
+ <enum>Qt::Orientation::Vertical</enum>
|
|
+ </property>
|
|
+ <property name="sizeType">
|
|
+ <enum>QSizePolicy::Policy::Fixed</enum>
|
|
+ </property>
|
|
+ <property name="sizeHint" stdset="0">
|
|
+ <size>
|
|
+ <width>20</width>
|
|
+ <height>6</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ </spacer>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLabel" name="labelWhatIsYourName">
|
|
+ <property name="text">
|
|
+ <string>What is your name?</string>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <layout class="QHBoxLayout" name="fullNameLayout">
|
|
+ <item>
|
|
+ <widget class="QLineEdit" name="textBoxFullName">
|
|
+ <property name="minimumSize">
|
|
+ <size>
|
|
+ <width>200</width>
|
|
+ <height>0</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="placeholderText">
|
|
+ <string>Your Full Name</string>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLabel" name="labelFullName">
|
|
+ <property name="sizePolicy">
|
|
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
+ <horstretch>0</horstretch>
|
|
+ <verstretch>0</verstretch>
|
|
+ </sizepolicy>
|
|
+ </property>
|
|
+ <property name="minimumSize">
|
|
+ <size>
|
|
+ <width>24</width>
|
|
+ <height>24</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="maximumSize">
|
|
+ <size>
|
|
+ <width>24</width>
|
|
+ <height>24</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="text">
|
|
+ <string notr="true"/>
|
|
+ </property>
|
|
+ <property name="scaledContents">
|
|
+ <bool>true</bool>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLabel" name="labelFullNameError">
|
|
+ <property name="sizePolicy">
|
|
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
|
+ <horstretch>1</horstretch>
|
|
+ <verstretch>0</verstretch>
|
|
+ </sizepolicy>
|
|
+ </property>
|
|
+ <property name="text">
|
|
+ <string/>
|
|
+ </property>
|
|
+ <property name="wordWrap">
|
|
+ <bool>true</bool>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ </layout>
|
|
+ </item>
|
|
+ <item>
|
|
+ <spacer name="verticalSpacer_2">
|
|
+ <property name="orientation">
|
|
+ <enum>Qt::Orientation::Vertical</enum>
|
|
+ </property>
|
|
+ <property name="sizeType">
|
|
+ <enum>QSizePolicy::Policy::Fixed</enum>
|
|
+ </property>
|
|
+ <property name="sizeHint" stdset="0">
|
|
+ <size>
|
|
+ <width>20</width>
|
|
+ <height>20</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ </spacer>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLabel" name="username_label_2">
|
|
+ <property name="text">
|
|
+ <string>What name do you want to use to log in?</string>
|
|
+ </property>
|
|
+ <property name="wordWrap">
|
|
+ <bool>false</bool>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <layout class="QHBoxLayout" name="usernameLayout">
|
|
+ <item>
|
|
+ <widget class="QLineEdit" name="textBoxLoginName">
|
|
+ <property name="sizePolicy">
|
|
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
|
+ <horstretch>0</horstretch>
|
|
+ <verstretch>0</verstretch>
|
|
+ </sizepolicy>
|
|
+ </property>
|
|
+ <property name="minimumSize">
|
|
+ <size>
|
|
+ <width>200</width>
|
|
+ <height>0</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="placeholderText">
|
|
+ <string>login</string>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLabel" name="labelUsername">
|
|
+ <property name="sizePolicy">
|
|
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
+ <horstretch>0</horstretch>
|
|
+ <verstretch>0</verstretch>
|
|
+ </sizepolicy>
|
|
+ </property>
|
|
+ <property name="minimumSize">
|
|
+ <size>
|
|
+ <width>24</width>
|
|
+ <height>24</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="maximumSize">
|
|
+ <size>
|
|
+ <width>24</width>
|
|
+ <height>24</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="scaledContents">
|
|
+ <bool>true</bool>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLabel" name="labelUsernameError">
|
|
+ <property name="sizePolicy">
|
|
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
|
+ <horstretch>1</horstretch>
|
|
+ <verstretch>0</verstretch>
|
|
+ </sizepolicy>
|
|
+ </property>
|
|
+ <property name="minimumSize">
|
|
+ <size>
|
|
+ <width>200</width>
|
|
+ <height>0</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="text">
|
|
+ <string/>
|
|
+ </property>
|
|
+ <property name="alignment">
|
|
+ <set>Qt::AlignmentFlag::AlignVCenter</set>
|
|
+ </property>
|
|
+ <property name="wordWrap">
|
|
+ <bool>true</bool>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ </layout>
|
|
+ </item>
|
|
+ <item>
|
|
+ <spacer name="verticalSpacer_4">
|
|
+ <property name="orientation">
|
|
+ <enum>Qt::Orientation::Vertical</enum>
|
|
+ </property>
|
|
+ <property name="sizeType">
|
|
+ <enum>QSizePolicy::Policy::Fixed</enum>
|
|
+ </property>
|
|
+ <property name="sizeHint" stdset="0">
|
|
+ <size>
|
|
+ <width>20</width>
|
|
+ <height>20</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ </spacer>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLabel" name="hostnameLabel">
|
|
+ <property name="text">
|
|
+ <string>What is the name of this computer?</string>
|
|
+ </property>
|
|
+ <property name="wordWrap">
|
|
+ <bool>false</bool>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <layout class="QHBoxLayout" name="hostnameLayout">
|
|
+ <item>
|
|
+ <widget class="QLineEdit" name="textBoxHostname">
|
|
+ <property name="sizePolicy">
|
|
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
|
+ <horstretch>0</horstretch>
|
|
+ <verstretch>0</verstretch>
|
|
+ </sizepolicy>
|
|
+ </property>
|
|
+ <property name="minimumSize">
|
|
+ <size>
|
|
+ <width>200</width>
|
|
+ <height>0</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="toolTip">
|
|
+ <string><small>This name will be used if you make the computer visible to others on a network.</small></string>
|
|
+ </property>
|
|
+ <property name="placeholderText">
|
|
+ <string>Computer Name</string>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLabel" name="labelHostname">
|
|
+ <property name="sizePolicy">
|
|
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
+ <horstretch>0</horstretch>
|
|
+ <verstretch>0</verstretch>
|
|
+ </sizepolicy>
|
|
+ </property>
|
|
+ <property name="minimumSize">
|
|
+ <size>
|
|
+ <width>24</width>
|
|
+ <height>24</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="maximumSize">
|
|
+ <size>
|
|
+ <width>24</width>
|
|
+ <height>24</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="scaledContents">
|
|
+ <bool>true</bool>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLabel" name="labelHostnameError">
|
|
+ <property name="sizePolicy">
|
|
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
|
+ <horstretch>1</horstretch>
|
|
+ <verstretch>0</verstretch>
|
|
+ </sizepolicy>
|
|
+ </property>
|
|
+ <property name="minimumSize">
|
|
+ <size>
|
|
+ <width>200</width>
|
|
+ <height>0</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="text">
|
|
+ <string/>
|
|
+ </property>
|
|
+ <property name="alignment">
|
|
+ <set>Qt::AlignmentFlag::AlignVCenter</set>
|
|
+ </property>
|
|
+ <property name="wordWrap">
|
|
+ <bool>true</bool>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ </layout>
|
|
+ </item>
|
|
+ <item>
|
|
+ <spacer name="hostnameVSpace">
|
|
+ <property name="orientation">
|
|
+ <enum>Qt::Orientation::Vertical</enum>
|
|
+ </property>
|
|
+ <property name="sizeType">
|
|
+ <enum>QSizePolicy::Policy::Fixed</enum>
|
|
+ </property>
|
|
+ <property name="sizeHint" stdset="0">
|
|
+ <size>
|
|
+ <width>20</width>
|
|
+ <height>20</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ </spacer>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLabel" name="password_label_2">
|
|
+ <property name="text">
|
|
+ <string>Choose a password to keep your account safe.</string>
|
|
+ </property>
|
|
+ <property name="wordWrap">
|
|
+ <bool>false</bool>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <layout class="QHBoxLayout" name="userPasswordLayout">
|
|
+ <item>
|
|
+ <widget class="QLineEdit" name="textBoxUserPassword">
|
|
+ <property name="sizePolicy">
|
|
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
|
+ <horstretch>0</horstretch>
|
|
+ <verstretch>0</verstretch>
|
|
+ </sizepolicy>
|
|
+ </property>
|
|
+ <property name="minimumSize">
|
|
+ <size>
|
|
+ <width>200</width>
|
|
+ <height>0</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="toolTip">
|
|
+ <string><small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small></string>
|
|
+ </property>
|
|
+ <property name="echoMode">
|
|
+ <enum>QLineEdit::EchoMode::Password</enum>
|
|
+ </property>
|
|
+ <property name="placeholderText">
|
|
+ <string>Password</string>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLineEdit" name="textBoxUserVerifiedPassword">
|
|
+ <property name="sizePolicy">
|
|
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
|
+ <horstretch>0</horstretch>
|
|
+ <verstretch>0</verstretch>
|
|
+ </sizepolicy>
|
|
+ </property>
|
|
+ <property name="minimumSize">
|
|
+ <size>
|
|
+ <width>200</width>
|
|
+ <height>0</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="toolTip">
|
|
+ <string><small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small></string>
|
|
+ </property>
|
|
+ <property name="echoMode">
|
|
+ <enum>QLineEdit::EchoMode::Password</enum>
|
|
+ </property>
|
|
+ <property name="placeholderText">
|
|
+ <string>Repeat Password</string>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLabel" name="labelUserPassword">
|
|
+ <property name="sizePolicy">
|
|
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
+ <horstretch>0</horstretch>
|
|
+ <verstretch>0</verstretch>
|
|
+ </sizepolicy>
|
|
+ </property>
|
|
+ <property name="minimumSize">
|
|
+ <size>
|
|
+ <width>24</width>
|
|
+ <height>24</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="maximumSize">
|
|
+ <size>
|
|
+ <width>24</width>
|
|
+ <height>24</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="scaledContents">
|
|
+ <bool>true</bool>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLabel" name="labelUserPasswordError">
|
|
+ <property name="sizePolicy">
|
|
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
|
+ <horstretch>1</horstretch>
|
|
+ <verstretch>0</verstretch>
|
|
+ </sizepolicy>
|
|
+ </property>
|
|
+ <property name="minimumSize">
|
|
+ <size>
|
|
+ <width>100</width>
|
|
+ <height>0</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="text">
|
|
+ <string/>
|
|
+ </property>
|
|
+ <property name="alignment">
|
|
+ <set>Qt::AlignmentFlag::AlignVCenter</set>
|
|
+ </property>
|
|
+ <property name="wordWrap">
|
|
+ <bool>true</bool>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ </layout>
|
|
+ </item>
|
|
+ <item>
|
|
+ <spacer name="verticalSpacer_5">
|
|
+ <property name="orientation">
|
|
+ <enum>Qt::Orientation::Vertical</enum>
|
|
+ </property>
|
|
+ <property name="sizeType">
|
|
+ <enum>QSizePolicy::Policy::Fixed</enum>
|
|
+ </property>
|
|
+ <property name="sizeHint" stdset="0">
|
|
+ <size>
|
|
+ <width>20</width>
|
|
+ <height>20</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ </spacer>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QCheckBox" name="checkBoxRequireStrongPassword">
|
|
+ <property name="toolTip">
|
|
+ <string>When this box is checked, password-strength checking is done and you will not be able to use a weak password.</string>
|
|
+ </property>
|
|
+ <property name="text">
|
|
+ <string>Require strong passwords.</string>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QCheckBox" name="checkBoxDoAutoLogin">
|
|
+ <property name="text">
|
|
+ <string>Log in automatically without asking for the password.</string>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QCheckBox" name="checkBoxReusePassword">
|
|
+ <property name="text">
|
|
+ <string>Use the same password for the administrator account.</string>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <spacer name="verticalSpacer_6">
|
|
+ <property name="orientation">
|
|
+ <enum>Qt::Orientation::Vertical</enum>
|
|
+ </property>
|
|
+ <property name="sizeType">
|
|
+ <enum>QSizePolicy::Policy::Fixed</enum>
|
|
+ </property>
|
|
+ <property name="sizeHint" stdset="0">
|
|
+ <size>
|
|
+ <width>20</width>
|
|
+ <height>20</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ </spacer>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLabel" name="labelChooseRootPassword">
|
|
+ <property name="text">
|
|
+ <string>Choose a password for the administrator account.</string>
|
|
+ </property>
|
|
+ <property name="wordWrap">
|
|
+ <bool>false</bool>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <layout class="QHBoxLayout" name="rootPasswordLayout">
|
|
+ <item>
|
|
+ <widget class="QLineEdit" name="textBoxRootPassword">
|
|
+ <property name="sizePolicy">
|
|
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
|
+ <horstretch>0</horstretch>
|
|
+ <verstretch>0</verstretch>
|
|
+ </sizepolicy>
|
|
+ </property>
|
|
+ <property name="minimumSize">
|
|
+ <size>
|
|
+ <width>200</width>
|
|
+ <height>0</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="toolTip">
|
|
+ <string><small>Enter the same password twice, so that it can be checked for typing errors.</small></string>
|
|
+ </property>
|
|
+ <property name="echoMode">
|
|
+ <enum>QLineEdit::EchoMode::Password</enum>
|
|
+ </property>
|
|
+ <property name="placeholderText">
|
|
+ <string>Password</string>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLineEdit" name="textBoxVerifiedRootPassword">
|
|
+ <property name="sizePolicy">
|
|
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
|
+ <horstretch>0</horstretch>
|
|
+ <verstretch>0</verstretch>
|
|
+ </sizepolicy>
|
|
+ </property>
|
|
+ <property name="minimumSize">
|
|
+ <size>
|
|
+ <width>200</width>
|
|
+ <height>0</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="toolTip">
|
|
+ <string><small>Enter the same password twice, so that it can be checked for typing errors.</small></string>
|
|
+ </property>
|
|
+ <property name="echoMode">
|
|
+ <enum>QLineEdit::EchoMode::Password</enum>
|
|
+ </property>
|
|
+ <property name="placeholderText">
|
|
+ <string>Repeat Password</string>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLabel" name="labelRootPassword">
|
|
+ <property name="sizePolicy">
|
|
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
+ <horstretch>0</horstretch>
|
|
+ <verstretch>0</verstretch>
|
|
+ </sizepolicy>
|
|
+ </property>
|
|
+ <property name="minimumSize">
|
|
+ <size>
|
|
+ <width>24</width>
|
|
+ <height>24</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="maximumSize">
|
|
+ <size>
|
|
+ <width>24</width>
|
|
+ <height>24</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="scaledContents">
|
|
+ <bool>true</bool>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLabel" name="labelRootPasswordError">
|
|
+ <property name="sizePolicy">
|
|
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
|
+ <horstretch>1</horstretch>
|
|
+ <verstretch>0</verstretch>
|
|
+ </sizepolicy>
|
|
+ </property>
|
|
+ <property name="minimumSize">
|
|
+ <size>
|
|
+ <width>100</width>
|
|
+ <height>0</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="text">
|
|
+ <string/>
|
|
+ </property>
|
|
+ <property name="alignment">
|
|
+ <set>Qt::AlignmentFlag::AlignVCenter</set>
|
|
+ </property>
|
|
+ <property name="wordWrap">
|
|
+ <bool>true</bool>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ </layout>
|
|
+ </item>
|
|
+ <item>
|
|
+ <spacer name="verticalSpacer_3">
|
|
+ <property name="orientation">
|
|
+ <enum>Qt::Orientation::Vertical</enum>
|
|
+ </property>
|
|
+ <property name="sizeType">
|
|
+ <enum>QSizePolicy::Policy::Fixed</enum>
|
|
+ </property>
|
|
+ <property name="sizeHint" stdset="0">
|
|
+ <size>
|
|
+ <width>20</width>
|
|
+ <height>6</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ </spacer>
|
|
+ </item>
|
|
+ <item>
|
|
+ <layout class="QVBoxLayout" name="verticalLayout">
|
|
+ <item>
|
|
+ <widget class="QCheckBox" name="useADCheckbox">
|
|
+ <property name="text">
|
|
+ <string>Use Active Directory</string>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <layout class="QVBoxLayout" name="verticalLayout_3">
|
|
+ <item>
|
|
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
|
|
+ <item>
|
|
+ <widget class="QLabel" name="domainLabel">
|
|
+ <property name="text">
|
|
+ <string>Domain:</string>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLineEdit" name="domainField"/>
|
|
+ </item>
|
|
+ </layout>
|
|
+ </item>
|
|
+ <item>
|
|
+ <layout class="QHBoxLayout" name="horizontalLayout">
|
|
+ <item>
|
|
+ <widget class="QLabel" name="domainAdminLabel">
|
|
+ <property name="text">
|
|
+ <string>Domain Administrator:</string>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLineEdit" name="domainAdminField"/>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLabel" name="domainPasswordLabel">
|
|
+ <property name="text">
|
|
+ <string>Password:</string>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLineEdit" name="domainPasswordField">
|
|
+ <property name="echoMode">
|
|
+ <enum>QLineEdit::EchoMode::Password</enum>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ </layout>
|
|
+ </item>
|
|
+ <item>
|
|
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
|
|
+ <item>
|
|
+ <widget class="QLabel" name="ipAddressLabel">
|
|
+ <property name="text">
|
|
+ <string>IP Address (optional):</string>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLineEdit" name="ipAddressField"/>
|
|
+ </item>
|
|
+ </layout>
|
|
+ </item>
|
|
+ </layout>
|
|
+ </item>
|
|
+ </layout>
|
|
+ </item>
|
|
+ <item>
|
|
+ <spacer name="verticalSpacer_7">
|
|
+ <property name="orientation">
|
|
+ <enum>Qt::Orientation::Vertical</enum>
|
|
+ </property>
|
|
+ <property name="sizeHint" stdset="0">
|
|
+ <size>
|
|
+ <width>20</width>
|
|
+ <height>1</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ </spacer>
|
|
+ </item>
|
|
+ </layout>
|
|
+ </widget>
|
|
+ <resources/>
|
|
+ <connections/>
|
|
+</ui>
|
|
diff --git a/src/modules/users/page_usersetup.ui b/src/modules/users/page_usersetup.ui
|
|
index 6e6e542..2a5ccd2 100644
|
|
--- a/src/modules/users/page_usersetup.ui
|
|
+++ b/src/modules/users/page_usersetup.ui
|
|
@@ -21,10 +21,10 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
<item>
|
|
<spacer name="verticalSpacer">
|
|
<property name="orientation">
|
|
- <enum>Qt::Vertical</enum>
|
|
+ <enum>Qt::Orientation::Vertical</enum>
|
|
</property>
|
|
<property name="sizeType">
|
|
- <enum>QSizePolicy::Fixed</enum>
|
|
+ <enum>QSizePolicy::Policy::Fixed</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
@@ -34,15 +34,27 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
</property>
|
|
</spacer>
|
|
</item>
|
|
- <item>
|
|
- <widget class="QLabel" name="labelWhatIsYourName">
|
|
- <property name="text">
|
|
- <string>What is your name?</string>
|
|
- </property>
|
|
- </widget>
|
|
- </item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="fullNameLayout">
|
|
+ <item>
|
|
+ <widget class="QLabel" name="labelWhatIsYourName">
|
|
+ <property name="sizePolicy">
|
|
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
+ <horstretch>0</horstretch>
|
|
+ <verstretch>0</verstretch>
|
|
+ </sizepolicy>
|
|
+ </property>
|
|
+ <property name="minimumSize">
|
|
+ <size>
|
|
+ <width>150</width>
|
|
+ <height>24</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="text">
|
|
+ <string>your name</string>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
<item>
|
|
<widget class="QLineEdit" name="textBoxFullName">
|
|
<property name="minimumSize">
|
|
@@ -105,31 +117,43 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
<item>
|
|
<spacer name="verticalSpacer_2">
|
|
<property name="orientation">
|
|
- <enum>Qt::Vertical</enum>
|
|
+ <enum>Qt::Orientation::Vertical</enum>
|
|
</property>
|
|
<property name="sizeType">
|
|
- <enum>QSizePolicy::Fixed</enum>
|
|
+ <enum>QSizePolicy::Policy::Fixed</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
- <width>20</width>
|
|
- <height>6</height>
|
|
+ <width>5</width>
|
|
+ <height>5</height>
|
|
</size>
|
|
</property>
|
|
</spacer>
|
|
</item>
|
|
- <item>
|
|
- <widget class="QLabel" name="username_label_2">
|
|
- <property name="text">
|
|
- <string>What name do you want to use to log in?</string>
|
|
- </property>
|
|
- <property name="wordWrap">
|
|
- <bool>false</bool>
|
|
- </property>
|
|
- </widget>
|
|
- </item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="usernameLayout">
|
|
+ <item>
|
|
+ <widget class="QLabel" name="username_label_2">
|
|
+ <property name="sizePolicy">
|
|
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
+ <horstretch>0</horstretch>
|
|
+ <verstretch>0</verstretch>
|
|
+ </sizepolicy>
|
|
+ </property>
|
|
+ <property name="minimumSize">
|
|
+ <size>
|
|
+ <width>150</width>
|
|
+ <height>24</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="text">
|
|
+ <string>user name</string>
|
|
+ </property>
|
|
+ <property name="wordWrap">
|
|
+ <bool>false</bool>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
<item>
|
|
<widget class="QLineEdit" name="textBoxLoginName">
|
|
<property name="sizePolicy">
|
|
@@ -192,7 +216,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
<string/>
|
|
</property>
|
|
<property name="alignment">
|
|
- <set>Qt::AlignVCenter</set>
|
|
+ <set>Qt::AlignmentFlag::AlignVCenter</set>
|
|
</property>
|
|
<property name="wordWrap">
|
|
<bool>true</bool>
|
|
@@ -204,31 +228,43 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
<item>
|
|
<spacer name="verticalSpacer_4">
|
|
<property name="orientation">
|
|
- <enum>Qt::Vertical</enum>
|
|
+ <enum>Qt::Orientation::Vertical</enum>
|
|
</property>
|
|
<property name="sizeType">
|
|
- <enum>QSizePolicy::Fixed</enum>
|
|
+ <enum>QSizePolicy::Policy::Fixed</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
- <width>20</width>
|
|
- <height>6</height>
|
|
+ <width>5</width>
|
|
+ <height>5</height>
|
|
</size>
|
|
</property>
|
|
</spacer>
|
|
</item>
|
|
- <item>
|
|
- <widget class="QLabel" name="hostnameLabel">
|
|
- <property name="text">
|
|
- <string>What is the name of this computer?</string>
|
|
- </property>
|
|
- <property name="wordWrap">
|
|
- <bool>false</bool>
|
|
- </property>
|
|
- </widget>
|
|
- </item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="hostnameLayout">
|
|
+ <item>
|
|
+ <widget class="QLabel" name="hostnameLabel">
|
|
+ <property name="sizePolicy">
|
|
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
+ <horstretch>0</horstretch>
|
|
+ <verstretch>0</verstretch>
|
|
+ </sizepolicy>
|
|
+ </property>
|
|
+ <property name="minimumSize">
|
|
+ <size>
|
|
+ <width>150</width>
|
|
+ <height>24</height>
|
|
+ </size>
|
|
+ </property>
|
|
+ <property name="text">
|
|
+ <string>computer name</string>
|
|
+ </property>
|
|
+ <property name="wordWrap">
|
|
+ <bool>false</bool>
|
|
+ </property>
|
|
+ </widget>
|
|
+ </item>
|
|
<item>
|
|
<widget class="QLineEdit" name="textBoxHostname">
|
|
<property name="sizePolicy">
|
|
@@ -294,7 +330,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
<string/>
|
|
</property>
|
|
<property name="alignment">
|
|
- <set>Qt::AlignVCenter</set>
|
|
+ <set>Qt::AlignmentFlag::AlignVCenter</set>
|
|
</property>
|
|
<property name="wordWrap">
|
|
<bool>true</bool>
|
|
@@ -306,15 +342,15 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
<item>
|
|
<spacer name="hostnameVSpace">
|
|
<property name="orientation">
|
|
- <enum>Qt::Vertical</enum>
|
|
+ <enum>Qt::Orientation::Vertical</enum>
|
|
</property>
|
|
<property name="sizeType">
|
|
- <enum>QSizePolicy::Fixed</enum>
|
|
+ <enum>QSizePolicy::Policy::Fixed</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
<width>20</width>
|
|
- <height>6</height>
|
|
+ <height>20</height>
|
|
</size>
|
|
</property>
|
|
</spacer>
|
|
@@ -349,7 +385,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
<string><small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small></string>
|
|
</property>
|
|
<property name="echoMode">
|
|
- <enum>QLineEdit::Password</enum>
|
|
+ <enum>QLineEdit::EchoMode::Password</enum>
|
|
</property>
|
|
<property name="placeholderText">
|
|
<string>Password</string>
|
|
@@ -374,7 +410,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
<string><small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small></string>
|
|
</property>
|
|
<property name="echoMode">
|
|
- <enum>QLineEdit::Password</enum>
|
|
+ <enum>QLineEdit::EchoMode::Password</enum>
|
|
</property>
|
|
<property name="placeholderText">
|
|
<string>Repeat Password</string>
|
|
@@ -424,7 +460,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
<string/>
|
|
</property>
|
|
<property name="alignment">
|
|
- <set>Qt::AlignVCenter</set>
|
|
+ <set>Qt::AlignmentFlag::AlignVCenter</set>
|
|
</property>
|
|
<property name="wordWrap">
|
|
<bool>true</bool>
|
|
@@ -436,15 +472,15 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
<item>
|
|
<spacer name="verticalSpacer_5">
|
|
<property name="orientation">
|
|
- <enum>Qt::Vertical</enum>
|
|
+ <enum>Qt::Orientation::Vertical</enum>
|
|
</property>
|
|
<property name="sizeType">
|
|
- <enum>QSizePolicy::Fixed</enum>
|
|
+ <enum>QSizePolicy::Policy::Fixed</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
- <width>20</width>
|
|
- <height>6</height>
|
|
+ <width>5</width>
|
|
+ <height>5</height>
|
|
</size>
|
|
</property>
|
|
</spacer>
|
|
@@ -469,22 +505,22 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
<item>
|
|
<widget class="QCheckBox" name="checkBoxReusePassword">
|
|
<property name="text">
|
|
- <string>Use the same password for the administrator account.</string>
|
|
+ <string>Use the same password for the root account.</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<spacer name="verticalSpacer_6">
|
|
<property name="orientation">
|
|
- <enum>Qt::Vertical</enum>
|
|
+ <enum>Qt::Orientation::Vertical</enum>
|
|
</property>
|
|
<property name="sizeType">
|
|
- <enum>QSizePolicy::Fixed</enum>
|
|
+ <enum>QSizePolicy::Policy::Fixed</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
- <width>20</width>
|
|
- <height>6</height>
|
|
+ <width>5</width>
|
|
+ <height>5</height>
|
|
</size>
|
|
</property>
|
|
</spacer>
|
|
@@ -519,7 +555,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
<string><small>Enter the same password twice, so that it can be checked for typing errors.</small></string>
|
|
</property>
|
|
<property name="echoMode">
|
|
- <enum>QLineEdit::Password</enum>
|
|
+ <enum>QLineEdit::EchoMode::Password</enum>
|
|
</property>
|
|
<property name="placeholderText">
|
|
<string>Password</string>
|
|
@@ -544,7 +580,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
<string><small>Enter the same password twice, so that it can be checked for typing errors.</small></string>
|
|
</property>
|
|
<property name="echoMode">
|
|
- <enum>QLineEdit::Password</enum>
|
|
+ <enum>QLineEdit::EchoMode::Password</enum>
|
|
</property>
|
|
<property name="placeholderText">
|
|
<string>Repeat Password</string>
|
|
@@ -594,7 +630,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
<string/>
|
|
</property>
|
|
<property name="alignment">
|
|
- <set>Qt::AlignVCenter</set>
|
|
+ <set>Qt::AlignmentFlag::AlignVCenter</set>
|
|
</property>
|
|
<property name="wordWrap">
|
|
<bool>true</bool>
|
|
@@ -606,10 +642,10 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
<item>
|
|
<spacer name="verticalSpacer_3">
|
|
<property name="orientation">
|
|
- <enum>Qt::Vertical</enum>
|
|
+ <enum>Qt::Orientation::Vertical</enum>
|
|
</property>
|
|
<property name="sizeType">
|
|
- <enum>QSizePolicy::Fixed</enum>
|
|
+ <enum>QSizePolicy::Policy::Fixed</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
@@ -666,7 +702,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
<item>
|
|
<widget class="QLineEdit" name="domainPasswordField">
|
|
<property name="echoMode">
|
|
- <enum>QLineEdit::Password</enum>
|
|
+ <enum>QLineEdit::EchoMode::Password</enum>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
@@ -693,7 +729,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
<item>
|
|
<spacer name="verticalSpacer_7">
|
|
<property name="orientation">
|
|
- <enum>Qt::Vertical</enum>
|
|
+ <enum>Qt::Orientation::Vertical</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
diff --git a/src/modules/users/users.conf b/src/modules/users/users.conf
|
|
index e6910bc..57a82dd 100644
|
|
--- a/src/modules/users/users.conf
|
|
+++ b/src/modules/users/users.conf
|
|
@@ -88,7 +88,7 @@ setRootPassword: true
|
|
# When checked, the user password is used for the root account too.
|
|
#
|
|
# NOTE: *doReusePassword* requires *setRootPassword* to be enabled.
|
|
-doReusePassword: true
|
|
+doReusePassword: false
|
|
|
|
|
|
### PASSWORDS AND LOGIN
|
|
diff --git a/src/modules/welcome/Config.cpp b/src/modules/welcome/Config.cpp
|
|
index 2bce564..7e50dc6 100644
|
|
--- a/src/modules/welcome/Config.cpp
|
|
+++ b/src/modules/welcome/Config.cpp
|
|
@@ -77,8 +77,7 @@ Config::retranslate()
|
|
}
|
|
else
|
|
{
|
|
- m_warningMessage = tr( "This program will ask you some questions and "
|
|
- "set up %2 on your computer." )
|
|
+ m_warningMessage = tr( "" )
|
|
.arg( branding ? branding->productName() : QString() );
|
|
}
|
|
|
|
diff --git a/src/modules/welcome/WelcomePage.cpp b/src/modules/welcome/WelcomePage.cpp
|
|
index 30e3d6b..88f38c2 100644
|
|
--- a/src/modules/welcome/WelcomePage.cpp
|
|
+++ b/src/modules/welcome/WelcomePage.cpp
|
|
@@ -44,10 +44,10 @@ WelcomePage::WelcomePage( Config* config, QWidget* parent )
|
|
, m_conf( config )
|
|
{
|
|
using Branding = Calamares::Branding;
|
|
-
|
|
+
|
|
const int defaultFontHeight = Calamares::defaultFontHeight();
|
|
ui->setupUi( this );
|
|
-
|
|
+
|
|
// insert system-check widget below welcome text
|
|
const int welcome_text_idx = ui->verticalLayout->indexOf( ui->mainText );
|
|
ui->verticalLayout->insertWidget( welcome_text_idx + 1, m_checkingWidget );
|
|
@@ -72,7 +72,12 @@ WelcomePage::WelcomePage( Config* config, QWidget* parent )
|
|
}
|
|
|
|
initLanguages();
|
|
-
|
|
+ ui->languageWidget->setStyleSheet(
|
|
+ "QLabel {"
|
|
+ "background-color: #ffffff;"
|
|
+ "color: black;"
|
|
+ "}"
|
|
+ );
|
|
CALAMARES_RETRANSLATE_SLOT( &WelcomePage::retranslate );
|
|
|
|
connect( Calamares::ModuleManager::instance(),
|
|
@@ -89,17 +94,17 @@ void
|
|
WelcomePage::init()
|
|
{
|
|
//setup the url buttons
|
|
- setupButton( WelcomePage::Button::Support, m_conf->supportUrl() );
|
|
- setupButton( WelcomePage::Button::KnownIssues, m_conf->knownIssuesUrl() );
|
|
- setupButton( WelcomePage::Button::ReleaseNotes, m_conf->releaseNotesUrl() );
|
|
- setupButton( WelcomePage::Button::Donate, m_conf->donateUrl() );
|
|
+ // setupButton( WelcomePage::Button::Support, m_conf->supportUrl() );
|
|
+ // setupButton( WelcomePage::Button::KnownIssues, m_conf->knownIssuesUrl() );
|
|
+ // setupButton( WelcomePage::Button::ReleaseNotes, m_conf->releaseNotesUrl() );
|
|
+ // setupButton( WelcomePage::Button::Donate, m_conf->donateUrl() );
|
|
|
|
//language icon
|
|
- auto icon = Calamares::Branding::instance()->image( m_conf->languageIcon(), QSize( 48, 48 ) );
|
|
- if ( !icon.isNull() )
|
|
- {
|
|
- setLanguageIcon( icon );
|
|
- }
|
|
+ // auto icon = Calamares::Branding::instance()->image( m_conf->languageIcon(), QSize( 48, 48 ) );
|
|
+ // if ( !icon.isNull() )
|
|
+ // {
|
|
+ // setLanguageIcon( icon );
|
|
+ // }
|
|
}
|
|
|
|
void
|
|
@@ -120,56 +125,56 @@ WelcomePage::initLanguages()
|
|
&Config::setLocaleIndex );
|
|
}
|
|
|
|
-void
|
|
-WelcomePage::setupButton( Button role, const QString& url )
|
|
-{
|
|
- QPushButton* button = nullptr;
|
|
- Calamares::ImageType icon = Calamares::Information;
|
|
-
|
|
- switch ( role )
|
|
- {
|
|
- case Button::Donate:
|
|
- button = ui->donateButton;
|
|
- icon = Calamares::Donate;
|
|
- break;
|
|
- case Button::KnownIssues:
|
|
- button = ui->knownIssuesButton;
|
|
- icon = Calamares::Bugs;
|
|
- break;
|
|
- case Button::ReleaseNotes:
|
|
- button = ui->releaseNotesButton;
|
|
- icon = Calamares::Release;
|
|
- break;
|
|
- case Button::Support:
|
|
- button = ui->supportButton;
|
|
- icon = Calamares::Help;
|
|
- break;
|
|
- }
|
|
- if ( !button )
|
|
- {
|
|
- cWarning() << "Unknown button role" << smash( role );
|
|
- return;
|
|
- }
|
|
-
|
|
- if ( url.isEmpty() )
|
|
- {
|
|
- button->hide();
|
|
- return;
|
|
- }
|
|
-
|
|
- QUrl u( url );
|
|
- if ( u.isValid() )
|
|
- {
|
|
- auto size = 2 * QSize( Calamares::defaultFontHeight(), Calamares::defaultFontHeight() );
|
|
- button->setIcon( Calamares::defaultPixmap( icon, Calamares::Original, size ) );
|
|
- connect( button, &QPushButton::clicked, [ u ]() { QDesktopServices::openUrl( u ); } );
|
|
- }
|
|
- else
|
|
- {
|
|
- cWarning() << "Welcome button" << smash( role ) << "URL" << url << "is invalid.";
|
|
- button->hide();
|
|
- }
|
|
-}
|
|
+// void
|
|
+// WelcomePage::setupButton( Button role, const QString& url )
|
|
+// {
|
|
+// QPushButton* button = nullptr;
|
|
+// Calamares::ImageType icon = Calamares::Information;
|
|
+
|
|
+// switch ( role )
|
|
+// {
|
|
+// case Button::Donate:
|
|
+// button = ui->donateButton;
|
|
+// icon = Calamares::Donate;
|
|
+// break;
|
|
+// case Button::KnownIssues:
|
|
+// button = ui->knownIssuesButton;
|
|
+// icon = Calamares::Bugs;
|
|
+// break;
|
|
+// case Button::ReleaseNotes:
|
|
+// button = ui->releaseNotesButton;
|
|
+// icon = Calamares::Release;
|
|
+// break;
|
|
+// case Button::Support:
|
|
+// button = ui->supportButton;
|
|
+// icon = Calamares::Help;
|
|
+// break;
|
|
+// }
|
|
+// if ( !button )
|
|
+// {
|
|
+// cWarning() << "Unknown button role" << smash( role );
|
|
+// return;
|
|
+// }
|
|
+
|
|
+// if ( url.isEmpty() )
|
|
+// {
|
|
+// button->hide();
|
|
+// return;
|
|
+// }
|
|
+
|
|
+// QUrl u( url );
|
|
+// if ( u.isValid() )
|
|
+// {
|
|
+// auto size = 2 * QSize( Calamares::defaultFontHeight(), Calamares::defaultFontHeight() );
|
|
+// button->setIcon( Calamares::defaultPixmap( icon, Calamares::Original, size ) );
|
|
+// connect( button, &QPushButton::clicked, [ u ]() { QDesktopServices::openUrl( u ); } );
|
|
+// }
|
|
+// else
|
|
+// {
|
|
+// cWarning() << "Welcome button" << smash( role ) << "URL" << url << "is invalid.";
|
|
+// button->hide();
|
|
+// }
|
|
+// }
|
|
|
|
void
|
|
WelcomePage::focusInEvent( QFocusEvent* e )
|
|
@@ -196,11 +201,11 @@ WelcomePage::externallySelectedLanguage( int row )
|
|
}
|
|
}
|
|
|
|
-void
|
|
-WelcomePage::setLanguageIcon( QPixmap i )
|
|
-{
|
|
- ui->languageIcon->setPixmap( i );
|
|
-}
|
|
+// void
|
|
+// WelcomePage::setLanguageIcon( QPixmap i )
|
|
+// {
|
|
+// ui->languageIcon->setPixmap( i );
|
|
+// }
|
|
|
|
void
|
|
WelcomePage::retranslate()
|
|
@@ -209,8 +214,8 @@ WelcomePage::retranslate()
|
|
|
|
ui->mainText->setText( message.arg( Calamares::Branding::instance()->versionedName() ) );
|
|
ui->retranslateUi( this );
|
|
- ui->supportButton->setText(
|
|
- tr( "%1 Support", "@action" ).arg( Calamares::Branding::instance()->shortProductName() ) );
|
|
+ // ui->supportButton->setText(
|
|
+ // tr( "%1 Support", "@action" ).arg( Calamares::Branding::instance()->shortProductName() ) );
|
|
}
|
|
|
|
void
|
|
diff --git a/src/modules/welcome/WelcomePage.ui b/src/modules/welcome/WelcomePage.ui
|
|
index 0e3dcb0..b25b4e0 100644
|
|
--- a/src/modules/welcome/WelcomePage.ui
|
|
+++ b/src/modules/welcome/WelcomePage.ui
|
|
@@ -17,6 +17,9 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
<property name="windowTitle">
|
|
<string notr="true">Form</string>
|
|
</property>
|
|
+ <property name="styleSheet">
|
|
+ <string notr="true"/>
|
|
+ </property>
|
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
|
<item>
|
|
<layout class="QVBoxLayout" name="verticalLayout" stretch="0,0,0,0,0">
|
|
@@ -56,7 +59,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
- <layout class="QHBoxLayout" name="horizontalLayout_3" stretch="0,0,2,0">
|
|
+ <layout class="QHBoxLayout" name="horizontalLayout_3" stretch="0,0,0,2,0">
|
|
<item>
|
|
<spacer name="horizontalSpacer_3">
|
|
<property name="orientation">
|
|
@@ -78,11 +81,12 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
<property name="toolTip">
|
|
<string>Select application and system language</string>
|
|
</property>
|
|
+ </widget>
|
|
+ </item>
|
|
+ <item>
|
|
+ <widget class="QLabel" name="label">
|
|
<property name="text">
|
|
- <string/>
|
|
- </property>
|
|
- <property name="pixmap">
|
|
- <pixmap resource="welcome.qrc">:/welcome/language-icon-48px.png</pixmap>
|
|
+ <string>language</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
@@ -97,6 +101,9 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
<property name="toolTip">
|
|
<string>Select application and system language</string>
|
|
</property>
|
|
+ <property name="styleSheet">
|
|
+ <string notr="true">background-color:rbga(248,250,255,1)</string>
|
|
+ </property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
@@ -132,62 +139,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
</property>
|
|
</spacer>
|
|
</item>
|
|
- <item>
|
|
- <layout class="QHBoxLayout" name="horizontalLayout_4">
|
|
- <item>
|
|
- <widget class="QPushButton" name="donateButton">
|
|
- <property name="toolTip">
|
|
- <string>Open donations website</string>
|
|
- </property>
|
|
- <property name="text">
|
|
- <string>&Donate</string>
|
|
- </property>
|
|
- <property name="flat">
|
|
- <bool>true</bool>
|
|
- </property>
|
|
- </widget>
|
|
- </item>
|
|
- <item>
|
|
- <widget class="QPushButton" name="supportButton">
|
|
- <property name="toolTip">
|
|
- <string>Open help and support website</string>
|
|
- </property>
|
|
- <property name="text">
|
|
- <string>&Support</string>
|
|
- </property>
|
|
- <property name="flat">
|
|
- <bool>true</bool>
|
|
- </property>
|
|
- </widget>
|
|
- </item>
|
|
- <item>
|
|
- <widget class="QPushButton" name="knownIssuesButton">
|
|
- <property name="toolTip">
|
|
- <string>Open issues and bug-tracking website</string>
|
|
- </property>
|
|
- <property name="text">
|
|
- <string>&Known issues</string>
|
|
- </property>
|
|
- <property name="flat">
|
|
- <bool>true</bool>
|
|
- </property>
|
|
- </widget>
|
|
- </item>
|
|
- <item>
|
|
- <widget class="QPushButton" name="releaseNotesButton">
|
|
- <property name="toolTip">
|
|
- <string>Open release notes website</string>
|
|
- </property>
|
|
- <property name="text">
|
|
- <string>&Release notes</string>
|
|
- </property>
|
|
- <property name="flat">
|
|
- <bool>true</bool>
|
|
- </property>
|
|
- </widget>
|
|
- </item>
|
|
- </layout>
|
|
- </item>
|
|
<item>
|
|
<spacer name="horizontalSpacer_2">
|
|
<property name="orientation">
|
|
diff --git a/src/modules/welcome/checker/ResultsListWidget.cpp b/src/modules/welcome/checker/ResultsListWidget.cpp
|
|
index 3f70c61..e191b26 100644
|
|
--- a/src/modules/welcome/checker/ResultsListWidget.cpp
|
|
+++ b/src/modules/welcome/checker/ResultsListWidget.cpp
|
|
@@ -26,7 +26,8 @@
|
|
#include <QLabel>
|
|
#include <QListView>
|
|
#include <QVBoxLayout>
|
|
-
|
|
+#include <QSvgRenderer>
|
|
+#include <QPainter>
|
|
ResultsListWidget::ResultsListWidget( Config* config, QWidget* parent )
|
|
: QWidget( parent )
|
|
, m_config( config )
|
|
@@ -91,21 +92,28 @@ ResultsListWidget::requirementsComplete()
|
|
|
|
if ( !Calamares::Branding::instance()->imagePath( Calamares::Branding::ProductWelcome ).isEmpty() )
|
|
{
|
|
- QPixmap theImage
|
|
- = QPixmap( Calamares::Branding::instance()->imagePath( Calamares::Branding::ProductWelcome ) );
|
|
- if ( !theImage.isNull() )
|
|
+ QString imagePath = Calamares::Branding::instance()->imagePath( Calamares::Branding::ProductWelcome );
|
|
+ QSvgRenderer renderer(imagePath);
|
|
+ renderer.load(imagePath);
|
|
+ if ( renderer.isValid() )
|
|
{
|
|
+ QPixmap pixmap(renderer.defaultSize());
|
|
+ pixmap.fill(Qt::transparent);
|
|
+
|
|
+ QPainter painter(&pixmap);
|
|
+ renderer.render(&painter);
|
|
+
|
|
QLabel* imageLabel;
|
|
if ( Calamares::Branding::instance()->welcomeExpandingLogo() )
|
|
{
|
|
FixedAspectRatioLabel* p = new FixedAspectRatioLabel;
|
|
- p->setPixmap( theImage );
|
|
+ p->setPixmap( pixmap );
|
|
imageLabel = p;
|
|
}
|
|
else
|
|
{
|
|
imageLabel = new QLabel;
|
|
- imageLabel->setPixmap( theImage );
|
|
+ imageLabel->setPixmap( pixmap );
|
|
}
|
|
|
|
imageLabel->setContentsMargins( 4, Calamares::defaultFontHeight() * 3 / 4, 4, 4 );
|
|
diff --git a/src/modules/welcome/welcome.conf b/src/modules/welcome/welcome.conf
|
|
index b988eb2..15e08ce 100644
|
|
--- a/src/modules/welcome/welcome.conf
|
|
+++ b/src/modules/welcome/welcome.conf
|
|
@@ -81,9 +81,9 @@ requirements:
|
|
# boolean values, so should be quoted.
|
|
check:
|
|
- storage
|
|
- - ram
|
|
+ #- ram
|
|
- power
|
|
- - internet
|
|
+ #- internet
|
|
- root
|
|
- screen
|
|
- "false"
|
|
@@ -95,7 +95,7 @@ requirements:
|
|
# continue past the welcome page.
|
|
required:
|
|
# - storage
|
|
- - ram
|
|
+ #- ram
|
|
# - root
|
|
|
|
# GeoIP checking
|
|
diff --git a/src/modules/welcome/welcome.qrc b/src/modules/welcome/welcome.qrc
|
|
index f270ee5..8806101 100644
|
|
--- a/src/modules/welcome/welcome.qrc
|
|
+++ b/src/modules/welcome/welcome.qrc
|
|
@@ -1,6 +1,8 @@
|
|
<RCC>
|
|
- <qresource prefix="welcome">
|
|
- <file>language-icon-128px.png</file>
|
|
- <file>language-icon-48px.png</file>
|
|
- </qresource>
|
|
+ <qresource prefix="welcome">
|
|
+ <!-- <file>welcomeBG.png</file> -->
|
|
+ <file>WelcomePage.cpp</file>
|
|
+ <file>language-icon-128px.png</file>
|
|
+ <file>language-icon-48px.png</file>
|
|
+ </qresource>
|
|
</RCC>
|
|
diff --git a/src/modules/welcomeq/welcomeq.conf b/src/modules/welcomeq/welcomeq.conf
|
|
index 2efc514..0ffb4b8 100644
|
|
--- a/src/modules/welcomeq/welcomeq.conf
|
|
+++ b/src/modules/welcomeq/welcomeq.conf
|
|
@@ -26,7 +26,7 @@ requirements:
|
|
- storage
|
|
- ram
|
|
- power
|
|
- - internet
|
|
+ #- internet
|
|
- root
|
|
- screen
|
|
required:
|
|
--
|
|
2.43.0
|
|
|