Compare commits

...

14 Commits

Author SHA1 Message Date
Philip
4c3d634df0 [displaymanager] if gnome is present, budgie should be detected first 2016-01-02 10:24:43 +01:00
Philip
7c1d193234 [displaymanager] add budgie v10.1 support 2016-01-02 07:42:14 +01:00
Philip
5456ed3b53 fix missing terminating warning 2015-10-16 18:53:34 +02:00
Teo Mrnjavac
198d5d5c4a Add new users to a group with the same name. 2015-10-16 16:45:34 +02:00
Teo Mrnjavac
9f4b8c16b6 Allow reusing the user password as root password. 2015-10-16 14:59:12 +02:00
Teo Mrnjavac
27b5fa4d5b Make sure the FullName is not empty. 2015-10-15 13:25:08 +02:00
Teo Mrnjavac
2f2a55a359 Do not assume dev->partitionTable() is not nullptr. 2015-09-30 17:28:41 +02:00
Teo Mrnjavac
07b6b1265b Better error reporting. 2015-09-29 15:54:11 +02:00
Teo Mrnjavac
973f6935e4 Make sure alongside is unavailable if no partitions can be created. 2015-09-29 15:53:39 +02:00
Teo Mrnjavac
825f657bc6 Bump version for 1.1.4. 2015-09-27 14:17:10 +02:00
Teo Mrnjavac
70ddfa25dd Disable Alongside if primary partition limit reached on all devices. 2015-09-27 12:38:35 +02:00
Teo Mrnjavac
eabe0c68d6 Filter from Alongside the root partitions on a device with 4 primaries. 2015-09-27 12:36:33 +02:00
Teo Mrnjavac
2ac1b29401 Obsolete comment is obsolete. 2015-09-27 12:35:52 +02:00
Teo Mrnjavac
34e686decb Keep UUID when clearing swap.
CAL-156
2015-09-27 12:04:45 +02:00
9 changed files with 266 additions and 188 deletions

View File

@@ -94,7 +94,7 @@ set( CALAMARES_TRANSLATION_LANGUAGES ar ast ca cs_CZ da de en en_GB es_MX es fi_
set( CALAMARES_VERSION_MAJOR 1 ) set( CALAMARES_VERSION_MAJOR 1 )
set( CALAMARES_VERSION_MINOR 1 ) set( CALAMARES_VERSION_MINOR 1 )
set( CALAMARES_VERSION_PATCH 3 ) set( CALAMARES_VERSION_PATCH 4 )
set( CALAMARES_VERSION_RC 0 ) set( CALAMARES_VERSION_RC 0 )
set( CALAMARES_VERSION ${CALAMARES_VERSION_MAJOR}.${CALAMARES_VERSION_MINOR}.${CALAMARES_VERSION_PATCH} ) set( CALAMARES_VERSION ${CALAMARES_VERSION_MAJOR}.${CALAMARES_VERSION_MINOR}.${CALAMARES_VERSION_PATCH} )

View File

@@ -31,6 +31,8 @@ DesktopEnvironment = collections.namedtuple('DesktopEnvironment', ['executable',
desktop_environments = [ desktop_environments = [
DesktopEnvironment('/usr/bin/startkde', 'plasma'), # KDE Plasma 5 DesktopEnvironment('/usr/bin/startkde', 'plasma'), # KDE Plasma 5
DesktopEnvironment('/usr/bin/startkde', 'kde-plasma'), # KDE Plasma 4 DesktopEnvironment('/usr/bin/startkde', 'kde-plasma'), # KDE Plasma 4
DesktopEnvironment('/usr/bin/budgie-desktop', 'budgie-desktop'), # Budgie v10.x
DesktopEnvironment('/usr/bin/budgie-session', 'budgie-desktop'), # Budgie v8.x
DesktopEnvironment('/usr/bin/gnome-session', 'gnome'), DesktopEnvironment('/usr/bin/gnome-session', 'gnome'),
DesktopEnvironment('/usr/bin/startxfce4', 'xfce'), DesktopEnvironment('/usr/bin/startxfce4', 'xfce'),
DesktopEnvironment('/usr/bin/cinnamon-session-cinnamon', 'cinnamon'), DesktopEnvironment('/usr/bin/cinnamon-session-cinnamon', 'cinnamon'),
@@ -41,7 +43,6 @@ desktop_environments = [
DesktopEnvironment('/usr/bin/lxqt-session', 'lxqt'), DesktopEnvironment('/usr/bin/lxqt-session', 'lxqt'),
DesktopEnvironment('/usr/bin/pekwm', 'pekwm'), DesktopEnvironment('/usr/bin/pekwm', 'pekwm'),
DesktopEnvironment('/usr/bin/pantheon-session', 'pantheon'), DesktopEnvironment('/usr/bin/pantheon-session', 'pantheon'),
DesktopEnvironment('/usr/bin/budgie-session', 'budgie-session'),
DesktopEnvironment('/usr/bin/i3', 'i3'), DesktopEnvironment('/usr/bin/i3', 'i3'),
DesktopEnvironment('/usr/bin/openbox-session', 'openbox') DesktopEnvironment('/usr/bin/openbox-session', 'openbox')
] ]

View File

@@ -125,9 +125,44 @@ AlongsidePage::init( PartitionCoreModule* core , const OsproberEntryList& osprob
string( Calamares::Branding::ProductName ) ) ); string( Calamares::Branding::ProductName ) ) );
} ); } );
// TODO 2.0: move this to a Utils namespace.
// Iterate over devices in devicemodel, foreach device, if it's DOS MBR and limit is
// reached and we have an osprober entry inside it, then disable alongside.
QStringList pathsOfDevicesWithPrimariesLimitReached;
for ( int row = 0; row < m_core->deviceModel()->rowCount(); ++row )
{
const QModelIndex& deviceIndex = m_core->deviceModel()->index( row );
Device* dev = m_core->deviceModel()->deviceForIndex( deviceIndex );
if ( dev->partitionTable() &&
( dev->partitionTable()->type() == PartitionTable::msdos ||
dev->partitionTable()->type() == PartitionTable::msdos_sectorbased ) &&
dev->partitionTable()->numPrimaries() == dev->partitionTable()->maxPrimaries() )
{
// Primaries limit reached!
pathsOfDevicesWithPrimariesLimitReached.append( dev->deviceNode() );
}
}
// End MBR primary limit check.
cDebug() << "Devices with limit reached:" << pathsOfDevicesWithPrimariesLimitReached;
cDebug() << "Osprober entries:";
foreach ( const OsproberEntry& e, osproberEntries ) foreach ( const OsproberEntry& e, osproberEntries )
{ {
if ( e.canBeResized ) cDebug() << " *" << e.path << e.line;
// TODO 2.0: move this to a Utils namespace.
bool cantCreatePartitions = false;
foreach ( const QString& devicePath, pathsOfDevicesWithPrimariesLimitReached )
{
if ( e.path.startsWith( devicePath ) )
{
cantCreatePartitions = true;
break;
}
}
// End partition creatable check.
if ( e.canBeResized && !cantCreatePartitions )
m_partitionsComboBox->addItem( e.prettyName + " (" + e.path + ")", e.path ); m_partitionsComboBox->addItem( e.prettyName + " (" + e.path + ")", e.path );
} }
setNextEnabled( true ); setNextEnabled( true );

View File

@@ -22,6 +22,8 @@
#include "core/DeviceModel.h" #include "core/DeviceModel.h"
#include "core/PartitionModel.h" #include "core/PartitionModel.h"
#include "OsproberEntry.h" #include "OsproberEntry.h"
#include "core/partitiontable.h"
#include "core/device.h"
#include "PrettyRadioButton.h" #include "PrettyRadioButton.h"
@@ -111,6 +113,26 @@ ChoicePage::init( PartitionCoreModule* core, const OsproberEntryList& osproberEn
m_itemsLayout->addWidget( eraseButton ); m_itemsLayout->addWidget( eraseButton );
m_itemsLayout->setSpacing( CalamaresUtils::defaultFontHeight() / 2 ); m_itemsLayout->setSpacing( CalamaresUtils::defaultFontHeight() / 2 );
// TODO 2.0: move this to a Utils namespace.
// Iterate over devices in devicemodel, foreach device, if it's DOS MBR and limit is
// reached and we have an osprober entry inside it, then disable alongside.
QStringList pathsOfDevicesWithPrimariesLimitReached;
for ( int row = 0; row < m_core->deviceModel()->rowCount(); ++row )
{
const QModelIndex& deviceIndex = m_core->deviceModel()->index( row );
Device* dev = m_core->deviceModel()->deviceForIndex( deviceIndex );
if ( dev->partitionTable() &&
( dev->partitionTable()->type() == PartitionTable::msdos ||
dev->partitionTable()->type() == PartitionTable::msdos_sectorbased ) &&
dev->partitionTable()->numPrimaries() == dev->partitionTable()->maxPrimaries() )
{
// Primaries limit reached!
pathsOfDevicesWithPrimariesLimitReached.append( dev->deviceNode() );
}
}
cDebug() << "Devices with limit reached:" << pathsOfDevicesWithPrimariesLimitReached;
if ( osproberEntries.count() == 0 ) if ( osproberEntries.count() == 0 )
{ {
CALAMARES_RETRANSLATE( CALAMARES_RETRANSLATE(
@@ -137,6 +159,18 @@ ChoicePage::init( PartitionCoreModule* core, const OsproberEntryList& osproberEn
{ {
QString osName = osproberEntries.first().prettyName; QString osName = osproberEntries.first().prettyName;
// Find out if our osprober entry (which is the shrink candidate) is on a
// device that can accommodate more partitions.
bool cantCreatePartitions = false;
foreach ( const QString& devicePath, pathsOfDevicesWithPrimariesLimitReached )
{
if ( osproberEntries.first().path.startsWith( devicePath ) )
{
cantCreatePartitions = true;
break;
}
}
if ( !osName.isEmpty() ) if ( !osName.isEmpty() )
{ {
CALAMARES_RETRANSLATE( CALAMARES_RETRANSLATE(
@@ -207,6 +241,8 @@ ChoicePage::init( PartitionCoreModule* core, const OsproberEntryList& osproberEn
} }
if ( !osproberEntries.first().canBeResized ) if ( !osproberEntries.first().canBeResized )
alongsideButton->hide(); alongsideButton->hide();
if ( cantCreatePartitions )
alongsideButton->hide();
} }
else else
{ {
@@ -223,6 +259,27 @@ ChoicePage::init( PartitionCoreModule* core, const OsproberEntryList& osproberEn
} }
} }
// Find out if at least one of our osprober entries is on a
// device that can accommodate more partitions.
bool atLeastOneCanCreatePartitions = false;
foreach ( const OsproberEntry& entry, osproberEntries )
{
bool cantCreatePartitions = false;
foreach ( const QString& devicePath, pathsOfDevicesWithPrimariesLimitReached )
{
if ( entry.path.startsWith( devicePath ) )
{
cantCreatePartitions = true;
break;
}
}
if ( entry.canBeResized && !cantCreatePartitions )
{
atLeastOneCanCreatePartitions = true;
break;
}
}
CALAMARES_RETRANSLATE( CALAMARES_RETRANSLATE(
m_messageLabel->setText( tr( "This computer currently has multiple operating systems on it. " m_messageLabel->setText( tr( "This computer currently has multiple operating systems on it. "
"What would you like to do?" ) ); "What would you like to do?" ) );
@@ -254,7 +311,7 @@ ChoicePage::init( PartitionCoreModule* core, const OsproberEntryList& osproberEn
string( Calamares::Branding::ShortVersionedName ) ) ); string( Calamares::Branding::ShortVersionedName ) ) );
) )
if ( !atLeastOneCanBeResized ) if ( !( atLeastOneCanBeResized && atLeastOneCanCreatePartitions ) )
alongsideButton->hide(); alongsideButton->hide();
} }

View File

@@ -458,7 +458,6 @@ PartitionViewStep::jobs() const
bool bool
PartitionViewStep::canBeResized( const QString& partitionPath ) PartitionViewStep::canBeResized( const QString& partitionPath )
{ {
//FIXME: check for max partitions count on DOS MBR
cDebug() << "checking if" << partitionPath << "can be resized."; cDebug() << "checking if" << partitionPath << "can be resized.";
QString partitionWithOs = partitionPath; QString partitionWithOs = partitionPath;
if ( partitionWithOs.startsWith( "/dev/" ) ) if ( partitionWithOs.startsWith( "/dev/" ) )

View File

@@ -198,10 +198,17 @@ QString
ClearMountsJob::tryClearSwap( const QString& partPath ) ClearMountsJob::tryClearSwap( const QString& partPath )
{ {
QProcess process; QProcess process;
process.start( "mkswap", { partPath } ); process.start( "blkid", { "-s", "UUID", "-o", "value", partPath } );
process.waitForFinished(); process.waitForFinished();
if ( process.exitCode() == 0 ) QString swapPartUuid = QString::fromLocal8Bit( process.readAllStandardOutput() ).simplified();
return QString( "Successfully cleared swap %1." ).arg( partPath ); if ( process.exitCode() != 0 ||
swapPartUuid.isEmpty() )
return QString();
return QString(); process.start( "mkswap", { "-U", swapPartUuid, partPath } );
process.waitForFinished();
if ( process.exitCode() != 0 )
return QString();
return QString( "Successfully cleared swap %1." ).arg( partPath );
} }

View File

@@ -128,8 +128,7 @@ CreateUserJob::exec()
"-m", "-m",
"-s", "-s",
"/bin/bash", "/bin/bash",
"-g", "-U",
"users",
"-G", "-G",
defaultGroups, defaultGroups,
m_userName } ); m_userName } );

View File

@@ -66,11 +66,22 @@ UsersPage::UsersPage( QWidget* parent )
this, &UsersPage::onRootPasswordTextChanged ); this, &UsersPage::onRootPasswordTextChanged );
connect( ui->textBoxVerifiedRootPassword, &QLineEdit::textChanged, connect( ui->textBoxVerifiedRootPassword, &QLineEdit::textChanged,
this, &UsersPage::onRootPasswordTextChanged ); this, &UsersPage::onRootPasswordTextChanged );
connect( ui->checkBoxReusePassword, &QCheckBox::stateChanged,
this, [this]( int checked )
{
ui->labelChooseRootPassword->setVisible( !checked );
ui->labelExtraRootPassword->setVisible( !checked );
ui->labelRootPassword->setVisible( !checked );
ui->labelRootPasswordError->setVisible( !checked );
ui->textBoxRootPassword->setVisible( !checked );
ui->textBoxVerifiedRootPassword->setVisible( !checked );
} );
m_customUsername = false; m_customUsername = false;
m_customHostname = false; m_customHostname = false;
setShowRootPassword( true ); setShowRootPassword( true );
ui->checkBoxReusePassword->setChecked( true );
CALAMARES_RETRANSLATE( ui->retranslateUi( this ); ) CALAMARES_RETRANSLATE( ui->retranslateUi( this ); )
} }
@@ -88,7 +99,7 @@ UsersPage::isReady()
return m_readyFullName && return m_readyFullName &&
m_readyHostname && m_readyHostname &&
m_readyPassword && m_readyPassword &&
( !m_showRootPassword || m_readyRootPassword ) && ( !m_showRootPassword || ( ui->checkBoxReusePassword->isChecked() || m_readyRootPassword ) ) &&
m_readyUsername; m_readyUsername;
} }
@@ -102,8 +113,10 @@ UsersPage::createJobs( const QString& defaultUserGroup, const QStringList& defau
Calamares::Job* j; Calamares::Job* j;
j = new CreateUserJob( ui->textBoxUsername->text(), j = new CreateUserJob( ui->textBoxUsername->text(),
QString(), ui->textBoxFullName->text().isEmpty() ?
ui->checkBoxLoginAuto->isChecked(), ui->textBoxUsername->text() :
ui->textBoxFullName->text(),
ui->checkBoxAutoLogin->isChecked(),
defaultUserGroup, defaultUserGroup,
defaultGroupsList ); defaultGroupsList );
list.append( Calamares::job_ptr( j ) ); list.append( Calamares::job_ptr( j ) );
@@ -114,8 +127,12 @@ UsersPage::createJobs( const QString& defaultUserGroup, const QStringList& defau
if ( m_showRootPassword ) if ( m_showRootPassword )
{ {
j = new SetPasswordJob( "root", if ( ui->checkBoxReusePassword->isChecked() )
ui->textBoxRootPassword->text() ); j = new SetPasswordJob( "root",
ui->textBoxUserPassword->text() );
else
j = new SetPasswordJob( "root",
ui->textBoxRootPassword->text() );
list.append( Calamares::job_ptr( j ) ); list.append( Calamares::job_ptr( j ) );
} }
@@ -124,7 +141,7 @@ UsersPage::createJobs( const QString& defaultUserGroup, const QStringList& defau
Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage();
gs->insert( "hostname", ui->textBoxHostname->text() ); gs->insert( "hostname", ui->textBoxHostname->text() );
if ( ui->checkBoxLoginAuto->isChecked() ) if ( ui->checkBoxAutoLogin->isChecked() )
gs->insert( "autologinUser", ui->textBoxUsername->text() ); gs->insert( "autologinUser", ui->textBoxUsername->text() );
gs->insert( "username", ui->textBoxUsername->text() ); gs->insert( "username", ui->textBoxUsername->text() );
@@ -143,13 +160,7 @@ UsersPage::onActivate()
void void
UsersPage::setShowRootPassword( bool show ) UsersPage::setShowRootPassword( bool show )
{ {
ui->labelChooseRootPassword->setVisible( show ); ui->checkBoxReusePassword->setVisible( show );
ui->labelExtraRootPassword->setVisible( show );
ui->labelRootPassword->setVisible( show );
ui->labelRootPasswordError->setVisible( show );
ui->textBoxRootPassword->setVisible( show );
ui->textBoxVerifiedRootPassword->setVisible( show );
m_showRootPassword = show; m_showRootPassword = show;
} }
@@ -412,6 +423,5 @@ UsersPage::onRootPasswordTextChanged( const QString& )
void void
UsersPage::setAutologinDefault( bool checked ) UsersPage::setAutologinDefault( bool checked )
{ {
ui->checkBoxLoginAuto->setChecked( checked ); ui->checkBoxAutoLogin->setChecked( checked );
ui->checkBoxLoginNormal->setChecked( !checked );
} }

View File

@@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>862</width> <width>862</width>
<height>597</height> <height>683</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@@ -19,10 +19,13 @@
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
</property> </property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
<width>20</width> <width>20</width>
<height>1</height> <height>6</height>
</size> </size>
</property> </property>
</spacer> </spacer>
@@ -97,10 +100,13 @@
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
</property> </property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
<width>20</width> <width>20</width>
<height>1</height> <height>6</height>
</size> </size>
</property> </property>
</spacer> </spacer>
@@ -199,14 +205,126 @@
</widget> </widget>
</item> </item>
<item> <item>
<spacer name="verticalSpacer_3"> <spacer name="verticalSpacer_4">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
</property> </property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
<width>20</width> <width>20</width>
<height>1</height> <height>6</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="hostname_label_2">
<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="horizontalLayout_4">
<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>
</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::AlignVCenter</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="hostname_extra_label_2">
<property name="styleSheet">
<string>font-weight: normal</string>
</property>
<property name="text">
<string>&lt;small&gt;This name will be used if you make the computer visible to others on a network.&lt;/small&gt;</string>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>6</height>
</size> </size>
</property> </property>
</spacer> </spacer>
@@ -327,120 +445,31 @@
</widget> </widget>
</item> </item>
<item> <item>
<spacer name="verticalSpacer_4"> <widget class="QCheckBox" name="checkBoxAutoLogin">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>1</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="hostname_label_2">
<property name="text"> <property name="text">
<string>What is the name of this computer?</string> <string>Log in automatically without asking for the password.</string>
</property>
<property name="wordWrap">
<bool>false</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_4"> <widget class="QCheckBox" name="checkBoxReusePassword">
<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>
</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::AlignVCenter</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="hostname_extra_label_2">
<property name="styleSheet">
<string>font-weight: normal</string>
</property>
<property name="text"> <property name="text">
<string>&lt;small&gt;This name will be used if you make the computer visible to others on a network.&lt;/small&gt;</string> <string>Use the same password for the administrator account.</string>
</property>
<property name="wordWrap">
<bool>false</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<spacer name="verticalSpacer_5"> <spacer name="verticalSpacer_6">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
</property> </property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
<width>20</width> <width>20</width>
<height>1</height> <height>6</height>
</size> </size>
</property> </property>
</spacer> </spacer>
@@ -560,61 +589,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<spacer name="verticalSpacer_6">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>1</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="QWidget" name="widget_7" native="true">
<layout class="QGridLayout" name="gridLayout_10">
<property name="leftMargin">
<number>2</number>
</property>
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>2</number>
</property>
<property name="bottomMargin">
<number>2</number>
</property>
<item row="0" column="1">
<widget class="QRadioButton" name="checkBoxLoginAuto">
<property name="text">
<string>&amp;Log in automatically</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QRadioButton" name="checkBoxLoginNormal">
<property name="text">
<string>Require &amp;my password to log in</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item> <item>
<spacer name="verticalSpacer_7"> <spacer name="verticalSpacer_7">
<property name="orientation"> <property name="orientation">
@@ -630,10 +604,6 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<tabstops>
<tabstop>checkBoxLoginNormal</tabstop>
<tabstop>checkBoxLoginAuto</tabstop>
</tabstops>
<resources/> <resources/>
<connections/> <connections/>
</ui> </ui>