Ref T213, legal info component added in wizard

This commit is contained in:
Klaus Basan
2018-05-23 23:09:31 +02:00
parent 0c737b1280
commit 407cca7c6b
7 changed files with 205 additions and 13 deletions

View File

@@ -31,6 +31,7 @@ namespace BlackGui
ui->wp_XSwiftBus->setConfigComponent(ui->comp_XSwiftBus);
ui->wp_DataLoad->setConfigComponent(ui->comp_DataLoad);
ui->wp_Hotkeys->setConfigComponent(ui->comp_Hotkeys);
ui->wp_Legal->setConfigComponent(ui->comp_LegalInformation);
ui->comp_Hotkeys->registerDummyPttEntry();
this->setButtonText(CustomButton1, "skip");
@@ -41,7 +42,7 @@ namespace BlackGui
}
const QList<int> ids = this->pageIds();
auto mm = std::minmax_element(ids.begin(), ids.end());
const auto mm = std::minmax_element(ids.begin(), ids.end());
m_maxId = *mm.second;
m_minId = *mm.first;
@@ -77,10 +78,10 @@ namespace BlackGui
bool CConfigurationWizard::event(QEvent *event)
{
if (event->type() != QEvent::EnterWhatsThisMode) { return QDialog::event(event); }
const QPointer<CConfigurationWizard> guard(this);
const QPointer<CConfigurationWizard> myself(this);
QTimer::singleShot(0, this, [ = ]
{
if (guard.isNull() || !sGui || sGui->isShuttingDown()) { return; }
if (myself.isNull() || !sGui || sGui->isShuttingDown()) { return; }
sGui->showHelp(this);
});
return true;
@@ -115,12 +116,12 @@ namespace BlackGui
{
if (which == static_cast<int>(CustomButton1))
{
this->m_skipped = true;
m_skipped = true;
this->next();
}
else
{
this->m_skipped = false;
m_skipped = false;
}
}

View File

@@ -32,6 +32,7 @@ namespace BlackGui
//! Page ids
enum Pages
{
Legal,
CopyModels,
CopySettings,
CopyCaches,

View File

@@ -28,6 +28,31 @@
<property name="options">
<set>QWizard::HaveCustomButton1</set>
</property>
<widget class="BlackGui::Components::CLegalInfoWizardPage" name="wp_Legal">
<property name="title">
<string>Legal</string>
</property>
<property name="subTitle">
<string>Please confirm you know and understand our license and privacy policy</string>
</property>
<layout class="QVBoxLayout" name="vl_Legal">
<property name="leftMargin">
<number>4</number>
</property>
<property name="topMargin">
<number>4</number>
</property>
<property name="rightMargin">
<number>4</number>
</property>
<property name="bottomMargin">
<number>4</number>
</property>
<item>
<widget class="BlackGui::Components::CLegalInfoComponent" name="comp_LegalInformation"/>
</item>
</layout>
</widget>
<widget class="BlackGui::Components::CCopyModelsFromOtherSwiftVersionsWizardPage" name="wp_CopyModels">
<property name="title">
<string>Copy models</string>
@@ -376,6 +401,18 @@
<header>blackgui/components/copymodelsfromotherswiftversionscomponent.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>BlackGui::Components::CLegalInfoComponent</class>
<extends>QFrame</extends>
<header>blackgui/components/legalinfocomponent.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>BlackGui::Components::CLegalInfoWizardPage</class>
<extends>QWizardPage</extends>
<header>blackgui/components/legalinfocomponent.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections>

View File

@@ -0,0 +1,48 @@
/* Copyright (C) 2018
* swift project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
* including this file, may be copied, modified, propagated, or distributed except according to the terms
* contained in the LICENSE file.
*/
#include "blackmisc/statusmessage.h"
#include "legalinfocomponent.h"
#include "ui_legalinfocomponent.h"
using namespace BlackMisc;
namespace BlackGui
{
namespace Components
{
CLegalInfoComponent::CLegalInfoComponent(QWidget *parent) :
COverlayMessagesFrame(parent),
ui(new Ui::CLegalInfoComponent)
{
ui->setupUi(this);
}
CLegalInfoComponent::~CLegalInfoComponent()
{ }
bool CLegalInfoComponent::isAgreedTo() const
{
return ui->cb_Agree->isChecked();
}
bool CLegalInfoComponent::validateAgreement()
{
if (this->isAgreedTo()) { return true; }
static const CStatusMessage m = CStatusMessage(this).validationError("You need to agree with the swift license");
this->showOverlayMessage(m);
return false;
}
bool CLegalInfoWizardPage::validatePage()
{
return m_legalInfo && m_legalInfo->validateAgreement();
}
} // ns
} // ns

View File

@@ -0,0 +1,70 @@
/* Copyright (C) 2018
* swift project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
* including this file, may be copied, modified, propagated, or distributed except according to the terms
* contained in the LICENSE file.
*/
//! \file
#ifndef BLACKGUI_COMPONENTS_LEGALINFOCOMPONENT_H
#define BLACKGUI_COMPONENTS_LEGALINFOCOMPONENT_H
#include "blackgui/overlaymessagesframe.h"
#include <QFrame>
#include <QScopedPointer>
#include <QWizardPage>
namespace Ui { class CLegalInfoComponent; }
namespace BlackGui
{
namespace Components
{
/**
* swift legal information
*/
class CLegalInfoComponent : public COverlayMessagesFrame
{
Q_OBJECT
public:
//! Constructor
explicit CLegalInfoComponent(QWidget *parent = nullptr);
//! Destructor
virtual ~CLegalInfoComponent();
//! Agreed with?
bool isAgreedTo() const;
//! Validate that the agreement is accepted
bool validateAgreement();
private:
QScopedPointer<Ui::CLegalInfoComponent> ui;
};
/**
* Wizard page for CLegalInfoComponent
*/
class CLegalInfoWizardPage : public QWizardPage
{
public:
//! Constructors
using QWizardPage::QWizardPage;
//! Set config
void setConfigComponent(CLegalInfoComponent *config) { m_legalInfo = config; }
//! \copydoc QWizardPage::validatePage
virtual bool validatePage() override;
private:
CLegalInfoComponent *m_legalInfo = nullptr;
};
} // ns
} // ns
#endif // guard

View File

@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>CLegalInfoComponent</class>
<widget class="QFrame" name="CLegalInfoComponent">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>640</width>
<height>480</height>
</rect>
</property>
<property name="windowTitle">
<string>Frame</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="BlackGui::Components::CAboutHtmlComponent" name="comp_AboutHTML"/>
</item>
<item>
<widget class="QCheckBox" name="cb_Agree">
<property name="text">
<string>I agree with the swift license and privacy policy</string>
</property>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>BlackGui::Components::CAboutHtmlComponent</class>
<extends>QFrame</extends>
<header>blackgui/components/abouthtmlcomponent.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>