From fb3243254879560e9d00a49b387e70f4e3adc3a7 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 31 Jul 2014 14:52:05 +0200 Subject: [PATCH] UI for users viewmodule. --- src/modules/users/CMakeLists.txt | 15 + src/modules/users/UsersPage.cpp | 207 +++++++++ src/modules/users/UsersPage.h | 59 +++ src/modules/users/UsersViewStep.cpp | 92 ++++ src/modules/users/UsersViewStep.h | 58 +++ src/modules/users/images/invalid.png | Bin 0 -> 7822 bytes src/modules/users/images/valid.png | Bin 0 -> 7284 bytes src/modules/users/module.conf | 10 + src/modules/users/page_usersetup.ui | 603 +++++++++++++++++++++++++++ src/modules/users/resources.qrc | 6 + 10 files changed, 1050 insertions(+) create mode 100644 src/modules/users/CMakeLists.txt create mode 100644 src/modules/users/UsersPage.cpp create mode 100644 src/modules/users/UsersPage.h create mode 100644 src/modules/users/UsersViewStep.cpp create mode 100644 src/modules/users/UsersViewStep.h create mode 100644 src/modules/users/images/invalid.png create mode 100644 src/modules/users/images/valid.png create mode 100644 src/modules/users/module.conf create mode 100644 src/modules/users/page_usersetup.ui create mode 100644 src/modules/users/resources.qrc diff --git a/src/modules/users/CMakeLists.txt b/src/modules/users/CMakeLists.txt new file mode 100644 index 000000000..7930d25d2 --- /dev/null +++ b/src/modules/users/CMakeLists.txt @@ -0,0 +1,15 @@ +include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) +calamares_add_plugin( users + TYPE viewmodule + EXPORT_MACRO PLUGINDLLEXPORT_PRO + CONFIG_FILE module.conf + SOURCES +# CreateUserJob.cpp + UsersViewStep.cpp + UsersPage.cpp + UI + page_usersetup.ui + LINK_LIBRARIES + calamaresui + SHARED_LIB +) diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp new file mode 100644 index 000000000..7daa84024 --- /dev/null +++ b/src/modules/users/UsersPage.cpp @@ -0,0 +1,207 @@ +/* === This file is part of Calamares - === + * + * Copyright 2014, Teo Mrnjavac + * + * Portions from the Manjaro Installation Framework + * by Roland Singer + * Copyright (C) 2007 Free Software Foundation, Inc. + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "UsersPage.h" +#include "ui_page_usersetup.h" + +#include +#include +#include +#include +#include + + + +UsersPage::UsersPage( QWidget* parent ) + : QWidget( parent ) + , ui( new Ui::Page_UserSetup ) + , m_readyUsername( false ) + , m_readyHostname( false ) + , m_readyPassword( false ) + , m_readyRootPassword( false ) +{ + ui->setupUi( this ); + + // Connect signals and slots + connect( ui->textBoxUsername, &QLineEdit::textChanged, + this, &UsersPage::onUsernameTextChanged ); + connect( ui->textBoxHostname, &QLineEdit::textChanged, + this, &UsersPage::onHostnameTextChanged ); + connect( ui->textBoxUserPassword, &QLineEdit::textChanged, + this, &UsersPage::onPasswordTextChanged ); + connect( ui->textBoxUserVerifiedPassword, &QLineEdit::textChanged, + this, &UsersPage::onPasswordTextChanged ); + connect( ui->textBoxRootPassword, &QLineEdit::textChanged, + this, &UsersPage::onRootPasswordTextChanged ); + connect( ui->textBoxVerifiedRootPassword, &QLineEdit::textChanged, + this, &UsersPage::onRootPasswordTextChanged ); +} + + +UsersPage::~UsersPage() +{ + delete ui; +} + + +bool +UsersPage::isReady() +{ + return m_readyHostname && m_readyPassword && m_readyRootPassword && m_readyUsername; +} + + +void +UsersPage::onUsernameTextChanged( const QString& textRef ) +{ + QString text = textRef; + QRegExp rx( "^[a-z][-a-z0-9_]*\\$" ); + QRegExpValidator val( rx ); + int pos = -1; + + if ( text.isEmpty() ) + { + ui->labelUsernameError->clear(); + ui->labelUsername->clear(); + m_readyUsername = false; + } + else if ( val.validate( text, pos ) == QValidator::Invalid ) + { + ui->labelUsername->setPixmap( QPixmap( ":/images/invalid.png" ) ); + --pos; + + if ( pos >= 0 && pos < text.size() ) + ui->labelUsernameError->setText( + tr( "Your username contains an invalid character '%1'" ) + .arg( text.at( pos ) ) ); + else + ui->labelUsernameError->setText( + tr( "Your username contains invalid characters!" ) ); + + m_readyUsername = false; + } + else { + ui->labelUsername->setPixmap( QPixmap( ":/images/valid.png" ) ); + ui->labelUsernameError->clear(); + m_readyUsername = true; + } + + emit checkReady( isReady() ); +} + + +void +UsersPage::onHostnameTextChanged( const QString& textRef ) +{ + QString text = textRef; + QRegExp rx( "^[a-zA-Z][-a-zA-Z0-9_]*\\$" ); + QRegExpValidator val( rx ); + int pos = -1; + + if ( text.isEmpty() ) + { + ui->labelHostnameError->clear(); + ui->labelHostname->clear(); + m_readyHostname= false; + } + else if ( val.validate( text, pos ) == QValidator::Invalid ) + { + ui->labelHostname->setPixmap( QPixmap( ":/images/invalid.png" ) ); + --pos; + + if ( pos >= 0 && pos < text.size() ) + ui->labelHostnameError->setText( + tr( "Your username contains an invalid character '%1'" ) + .arg( text.at( pos ) ) ); + else + ui->labelHostnameError->setText( + tr( "Your username contains invalid characters!" ) ); + + m_readyHostname = false; + } + else + { + ui->labelHostname->setPixmap( QPixmap( ":/images/valid.png" ) ); + ui->labelHostnameError->clear(); + m_readyHostname = true; + } + + emit checkReady( isReady() ); +} + + +void +UsersPage::onPasswordTextChanged( const QString& ) +{ + QString pw1 = ui->textBoxUserPassword->text(); + QString pw2 = ui->textBoxUserVerifiedPassword->text(); + + if ( pw1.isEmpty() && pw2.isEmpty() ) + { + ui->labelUserPasswordError->clear(); + ui->labelUserPassword->clear(); + m_readyPassword = false; + } + else if ( pw1 != pw2 ) + { + ui->labelUserPasswordError->setText( tr( "Your passwords do not match!" ) ); + ui->labelUserPassword->setPixmap( QPixmap( ":/images/invalid.png" ) ); + m_readyPassword = false; + } + else + { + ui->labelUserPasswordError->clear(); + ui->labelUserPassword->setPixmap( QPixmap( ":/images/valid.png" ) ); + m_readyPassword = true; + } + + emit checkReady( isReady() ); +} + + +void +UsersPage::onRootPasswordTextChanged( const QString& ) +{ + QString pw1 = ui->textBoxRootPassword->text(); + QString pw2 = ui->textBoxVerifiedRootPassword->text(); + + if ( pw1.isEmpty() && pw2.isEmpty() ) + { + ui->labelRootPasswordError->clear(); + ui->labelRootPassword->clear(); + m_readyRootPassword = false; + } + else if ( pw1 != pw2 ) + { + ui->labelRootPasswordError->setText( tr( "Your passwords do not match!" ) ); + ui->labelRootPassword->setPixmap( QPixmap( ":/images/invalid.png" ) ); + m_readyRootPassword = false; + } + else + { + ui->labelRootPasswordError->clear(); + ui->labelRootPassword->setPixmap( QPixmap( ":/images/valid.png" ) ); + m_readyRootPassword = true; + } + + emit checkReady( isReady() ); +} diff --git a/src/modules/users/UsersPage.h b/src/modules/users/UsersPage.h new file mode 100644 index 000000000..bce927015 --- /dev/null +++ b/src/modules/users/UsersPage.h @@ -0,0 +1,59 @@ +/* === This file is part of Calamares - === + * + * Copyright 2014, Teo Mrnjavac + * + * Portions from the Manjaro Installation Framework + * by Roland Singer + * Copyright (C) 2007 Free Software Foundation, Inc. + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef USERSPAGE_H +#define USERSPAGE_H + +#include + +namespace Ui { +class Page_UserSetup; +} + +class UsersPage : public QWidget +{ + Q_OBJECT +public: + explicit UsersPage( QWidget* parent = nullptr ); + virtual ~UsersPage(); + + bool isReady(); + +protected slots: + void onUsernameTextChanged( const QString& ); + void onHostnameTextChanged( const QString& ); + void onPasswordTextChanged( const QString& ); + void onRootPasswordTextChanged( const QString& ); + +signals: + void checkReady( bool ); + +private: + Ui::Page_UserSetup* ui; + bool m_readyUsername; + bool m_readyHostname; + bool m_readyPassword; + bool m_readyRootPassword; + +}; + +#endif // USERSPAGE_H diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp new file mode 100644 index 000000000..c4a0ec574 --- /dev/null +++ b/src/modules/users/UsersViewStep.cpp @@ -0,0 +1,92 @@ +/* === This file is part of Calamares - === + * + * Copyright 2014, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "UsersViewStep.h" + +#include "UsersPage.h" + +UsersViewStep::UsersViewStep( QObject* parent ) + : Calamares::ViewStep( parent ) + , m_widget( new UsersPage() ) +{ + emit nextStatusChanged( true ); + connect( m_widget, &UsersPage::checkReady, + this, &UsersViewStep::nextStatusChanged ); +} + + +UsersViewStep::~UsersViewStep() +{ + if ( m_widget && m_widget->parent() == nullptr ) + m_widget->deleteLater(); +} + + +QString +UsersViewStep::prettyName() const +{ + return tr( "Users" ); +} + + +QWidget* +UsersViewStep::widget() +{ + return m_widget; +} + + +void +UsersViewStep::next() +{ + emit done(); +} + + +void +UsersViewStep::back() +{} + + +bool +UsersViewStep::isNextEnabled() const +{ + return m_widget->isReady(); +} + + +bool +UsersViewStep::isAtBeginning() const +{ + return true; +} + + +bool +UsersViewStep::isAtEnd() const +{ + return true; +} + + +QList< Calamares::job_ptr > +UsersViewStep::jobs() const +{ + return QList< Calamares::job_ptr >(); +} + diff --git a/src/modules/users/UsersViewStep.h b/src/modules/users/UsersViewStep.h new file mode 100644 index 000000000..28a9f2853 --- /dev/null +++ b/src/modules/users/UsersViewStep.h @@ -0,0 +1,58 @@ +/* === This file is part of Calamares - === + * + * Copyright 2014, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef USERSPAGEPLUGIN_H +#define USERSPAGEPLUGIN_H + +#include + +#include "viewpages/ViewStep.h" +#include "PluginDllMacro.h" + +class UsersPage; + +class PLUGINDLLEXPORT UsersViewStep : public Calamares::ViewStep +{ + Q_OBJECT + Q_PLUGIN_METADATA( IID "calamares.ViewModule/1.0" ) + + Q_INTERFACES( Calamares::ViewStep ) + +public: + explicit UsersViewStep( QObject* parent = nullptr ); + virtual ~UsersViewStep(); + + QString prettyName() const override; + + QWidget* widget() override; + + void next() override; + void back() override; + + bool isNextEnabled() const override; + + bool isAtBeginning() const override; + bool isAtEnd() const override; + + QList< Calamares::job_ptr > jobs() const override; + +private: + UsersPage* m_widget; +}; + +#endif // USERSPAGEPLUGIN_H diff --git a/src/modules/users/images/invalid.png b/src/modules/users/images/invalid.png new file mode 100644 index 0000000000000000000000000000000000000000..2cb032501794f419f9f2a052d9d4218c91b289fc GIT binary patch literal 7822 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 + + Page_UserSetup + + + + 0 + 0 + 866 + 601 + + + + Form + + + + + + + + What name do you want to use to log in? + + + false + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 200 + 0 + + + + + + + + font-weight: normal + + + <small>If more than one person will use this computer, you can set up multiple accounts after installation.</small> + + + true + + + + + + + + 0 + 0 + + + + + 24 + 24 + + + + + 24 + 24 + + + + true + + + + + + + + 1 + 0 + + + + + 200 + 0 + + + + + + + Qt::AlignVCenter + + + true + + + + + + + + + Qt::Horizontal + + + + + + + + + + + Choose a password to keep your account safe. + + + false + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + font-weight: normal + + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> + + + true + + + + + + + + 0 + 0 + + + + + 24 + 24 + + + + + 24 + 24 + + + + true + + + + + + + + 1 + 0 + + + + + 100 + 0 + + + + + + + Qt::AlignVCenter + + + true + + + + + + + + 0 + 0 + + + + + 200 + 0 + + + + QLineEdit::Password + + + + + + + + 0 + 0 + + + + + 200 + 0 + + + + QLineEdit::Password + + + + + + + + + Qt::Horizontal + + + + + + + + + + + What is the name of this computer? + + + false + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 200 + 0 + + + + + + + + font-weight: normal + + + <small>This name will be used if you make the computer visible to others on a network.</small> + + + false + + + + + + + + 0 + 0 + + + + + 24 + 24 + + + + + 24 + 24 + + + + true + + + + + + + + 1 + 0 + + + + + 200 + 0 + + + + + + + Qt::AlignVCenter + + + true + + + + + + + + + Qt::Horizontal + + + + + + + + + + + Choose a root password. + + + false + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + font-weight: normal + + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> + + + true + + + + + + + + 0 + 0 + + + + + 24 + 24 + + + + + 24 + 24 + + + + true + + + + + + + + 1 + 0 + + + + + 100 + 0 + + + + + + + Qt::AlignVCenter + + + true + + + + + + + + 0 + 0 + + + + + 200 + 0 + + + + QLineEdit::Password + + + + + + + + 0 + 0 + + + + + 200 + 0 + + + + QLineEdit::Password + + + + + + + + + Qt::Horizontal + + + + + + + + + + + Login Options: + + + false + + + + + + + + 2 + + + 2 + + + 2 + + + 2 + + + + + Log in automatically + + + false + + + + + + + Require my password to log in + + + true + + + + + + + + + + + + textBoxUsername + textBoxUserPassword + textBoxUserVerifiedPassword + textBoxHostname + textBoxRootPassword + textBoxVerifiedRootPassword + checkBoxLoginNormal + checkBoxLoginAuto + + + + diff --git a/src/modules/users/resources.qrc b/src/modules/users/resources.qrc new file mode 100644 index 000000000..70392c32b --- /dev/null +++ b/src/modules/users/resources.qrc @@ -0,0 +1,6 @@ + + + images/invalid.png + images/valid.png + +