Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 38 additions & 67 deletions client/dialogs/FirstRun.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,103 +22,59 @@

#include "Settings.h"

#include <QKeyEvent>
#include <QApplication>
#include <QPixmap>

#include <algorithm>

FirstRun::FirstRun(QWidget *parent)
: QDialog(parent)
, ui(new Ui::FirstRun)
{
ui->setupUi(this);
setWindowFlag(Qt::FramelessWindowHint);
setAttribute(Qt::WA_DeleteOnClose);
setFixedSize( size() );
setCursor(Qt::OpenHandCursor);
setFixedSize(size());
if(parent)
move(parent->geometry().center() - geometry().center());

// Page 1: language
ui->lang->addItem(QStringLiteral("Eesti keel"));
ui->lang->addItem(QStringLiteral("English"));
ui->lang->setCurrentIndex(Settings::LANGUAGE == QLatin1String("en") ? 1 : 0);

connect(ui->lang, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [this](int index) {
switch(index)
{
case 1: emit langChanged(QStringLiteral("en")); break;
default: emit langChanged(QStringLiteral("et")); break;
}
ui->langEn->setChecked(Settings::LANGUAGE == QLatin1String("en"));
ui->langEt->setChecked(!ui->langEn->isChecked());
ui->pageGroup->setId(ui->navIntro, Intro);
ui->pageGroup->setId(ui->navSign, Signing);
ui->pageGroup->setId(ui->navCrypto, Encryption);
ui->pageGroup->setId(ui->navEid, MyEid);
connect(ui->langGroup, qOverload<QAbstractButton*>(&QButtonGroup::buttonClicked), this,
[this](QAbstractButton *button) {
emit langChanged(button == ui->langEn ? QStringLiteral("en") : QStringLiteral("et"));
ui->retranslateUi(this);
loadImages();
setView(ui->pageGroup->button(ui->stack->currentIndex()));
});

ui->coatOfArms->load(QStringLiteral(":/images/Logo_Suur.svg"));
ui->leaves->load(QStringLiteral(":/images/vapilehed.svg"));
ui->structureFunds->load(QStringLiteral(":/images/Struktuurifondid.svg"));
ui->signWidget->load(QStringLiteral(":/images/icon_Allkiri_hover.svg"));
ui->cryptoWidget->load(QStringLiteral(":/images/icon_Krypto_hover.svg"));
ui->eidWidget->load(QStringLiteral(":/images/icon_Minu_eID_hover.svg"));
ui->signOne->load(QStringLiteral(":/images/intro_one.svg"));
ui->signTwo->load(QStringLiteral(":/images/intro_two.svg"));
ui->signThree->load(QStringLiteral(":/images/intro_three.svg"));
ui->cryptoOne->load(QStringLiteral(":/images/intro_one.svg"));
ui->cryptoTwo->load(QStringLiteral(":/images/intro_two.svg"));
ui->cryptoThree->load(QStringLiteral(":/images/intro_three.svg"));

connect(ui->buttonGroup, QOverload<QAbstractButton*>::of(&QButtonGroup::buttonClicked), this, [this](QAbstractButton *b){
if(b == ui->continueBtn)
ui->stack->setCurrentIndex(Intro);
if(b == ui->introViewSigning ||
b == ui->cryptoGotoSigning ||
b == ui->eidGotoSigning)
ui->stack->setCurrentIndex(Signing);
if(b == ui->introViewEncryption ||
b == ui->signNext ||
b == ui->signGotoEncryption ||
b == ui->eidGotoEncryption)
ui->stack->setCurrentIndex(Encryption);
if(b == ui->introViewEid ||
b == ui->cryptoNext ||
b == ui->signGotoEid ||
b == ui->cryptoGotoEid)
ui->stack->setCurrentIndex(MyEid);
if(b == ui->introSkip ||
b == ui->signSkip ||
b == ui->cryptoSkip ||
b == ui->eidEnter)
ui->signWidget->load(QStringLiteral(":/images/intro_sign.svg"));
ui->cryptoWidget->load(QStringLiteral(":/images/intro_crypto.svg"));
ui->eidWidget->load(QStringLiteral(":/images/intro_myeid.svg"));
connect(ui->pageGroup, qOverload<QAbstractButton*>(&QButtonGroup::buttonClicked),
this, &FirstRun::setView);
connect(ui->btnSkip, &QPushButton::clicked, this, &FirstRun::close);
connect(ui->btnNext, &QPushButton::clicked, this, [this] {
if(ui->stack->currentIndex() == MyEid)
close();
else
setView(ui->pageGroup->button(ui->stack->currentIndex() + 1));
});

loadImages();
setView(nullptr);
}

FirstRun::~FirstRun()
{
delete ui;
}

void FirstRun::keyPressEvent(QKeyEvent *event)
{
auto next = ui->stack->currentIndex();
switch(event->key())
{
case Qt::Key_Left:
next = std::max<decltype(next)>(ui->stack->currentIndex() - 1, Language);
break;
case Qt::Key_Right:
next = std::min<decltype(next)>(ui->stack->currentIndex() + 1, MyEid);
break;
default:
QDialog::keyPressEvent(event);
break;
}

if(next != ui->stack->currentIndex())
ui->stack->setCurrentIndex(next);
}

void FirstRun::loadImages()
{
QString lang = Settings::LANGUAGE;
Expand All @@ -134,3 +90,18 @@ void FirstRun::loadImages()
loadPixmap(QStringLiteral("intro_eid-manage"), ui->eidImage1);
loadPixmap(QStringLiteral("intro_eid-info"), ui->eidImage3);
}

void FirstRun::setView(QAbstractButton *button)
{
const auto view = button ? View(ui->pageGroup->id(button)) : Language;
ui->stack->setCurrentIndex(view);
ui->navPane->setVisible(view != Language);
if(button)
button->setChecked(true);

ui->btnNext->setText(view == MyEid ? tr("Enter the application") :
view == Language ? tr("Continue") : tr("View next intro"));
ui->btnSkip->setText(tr("Close introduction"));
ui->txtNavVersion->setText(tr("DigiDoc4 version %1, released %2")
.arg(QApplication::applicationVersion(), QStringLiteral(BUILD_DATE)));
}
6 changes: 4 additions & 2 deletions client/dialogs/FirstRun.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@

#include <QDialog>

class QAbstractButton;

namespace Ui {
class FirstRun;
}
Expand All @@ -37,7 +39,6 @@ class FirstRun final: public QDialog
void langChanged(const QString& lang);

private:
void keyPressEvent(QKeyEvent *event) final;
void loadImages();

enum View
Expand All @@ -49,6 +50,7 @@ class FirstRun final: public QDialog
MyEid
};

void setView(QAbstractButton *button);

Ui::FirstRun *ui;
};

Loading
Loading