Use core interface to activate subscription in wizard #4715
This commit is contained in:
parent
85ef7935cc
commit
3bc46dca2d
|
@ -61,8 +61,8 @@ SOURCES += src/main.cpp \
|
||||||
src/SslCertificate.cpp \
|
src/SslCertificate.cpp \
|
||||||
src/Plugin.cpp \
|
src/Plugin.cpp \
|
||||||
src/WebClient.cpp \
|
src/WebClient.cpp \
|
||||||
../lib/common/PluginVersion.cpp
|
../lib/common/PluginVersion.cpp \
|
||||||
|
src/SubscriptionManager.cpp
|
||||||
HEADERS += src/MainWindow.h \
|
HEADERS += src/MainWindow.h \
|
||||||
src/AboutDialog.h \
|
src/AboutDialog.h \
|
||||||
src/ServerConfig.h \
|
src/ServerConfig.h \
|
||||||
|
@ -108,8 +108,8 @@ HEADERS += src/MainWindow.h \
|
||||||
src/SslCertificate.h \
|
src/SslCertificate.h \
|
||||||
src/Plugin.h \
|
src/Plugin.h \
|
||||||
src/WebClient.h \
|
src/WebClient.h \
|
||||||
../lib/common/PluginVersion.h
|
../lib/common/PluginVersion.h \
|
||||||
|
src/SubscriptionManager.h
|
||||||
RESOURCES += res/Synergy.qrc
|
RESOURCES += res/Synergy.qrc
|
||||||
RC_FILE = res/win/Synergy.rc
|
RC_FILE = res/win/Synergy.rc
|
||||||
macx {
|
macx {
|
||||||
|
|
|
@ -227,7 +227,7 @@
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QRadioButton" name="radioButton">
|
<widget class="QRadioButton" name="m_pRadioButtonSubscription">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Subscription</string>
|
<string>Subscription</string>
|
||||||
</property>
|
</property>
|
||||||
|
|
|
@ -51,6 +51,20 @@ QString CoreInterface::getArch()
|
||||||
return run(args);
|
return run(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString CoreInterface::activateSerial(const QString& serial)
|
||||||
|
{
|
||||||
|
QStringList args("--subscription-serial");
|
||||||
|
args << serial;
|
||||||
|
|
||||||
|
return run(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CoreInterface::checkSubscription()
|
||||||
|
{
|
||||||
|
QStringList args("--check-subscription");
|
||||||
|
return run(args);
|
||||||
|
}
|
||||||
|
|
||||||
QString CoreInterface::run(const QStringList& args, const QString& input)
|
QString CoreInterface::run(const QStringList& args, const QString& input)
|
||||||
{
|
{
|
||||||
QString program(
|
QString program(
|
||||||
|
|
|
@ -28,5 +28,7 @@ public:
|
||||||
QString getProfileDir();
|
QString getProfileDir();
|
||||||
QString getInstalledDir();
|
QString getInstalledDir();
|
||||||
QString getArch();
|
QString getArch();
|
||||||
|
QString activateSerial(const QString& serial);
|
||||||
|
QString checkSubscription();
|
||||||
QString run(const QStringList& args, const QString& input = "");
|
QString run(const QStringList& args, const QString& input = "");
|
||||||
};
|
};
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include "SslCertificate.h"
|
#include "SslCertificate.h"
|
||||||
#include "PluginManager.h"
|
#include "PluginManager.h"
|
||||||
#include "MainWindow.h"
|
#include "MainWindow.h"
|
||||||
|
#include "EditionType.h"
|
||||||
|
|
||||||
#include <QMovie>
|
#include <QMovie>
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
|
@ -29,6 +30,7 @@
|
||||||
PluginWizardPage::PluginWizardPage(MainWindow& mainWindow, QWidget *parent) :
|
PluginWizardPage::PluginWizardPage(MainWindow& mainWindow, QWidget *parent) :
|
||||||
QWizardPage(parent),
|
QWizardPage(parent),
|
||||||
m_Finished(false),
|
m_Finished(false),
|
||||||
|
m_Edition(Unknown),
|
||||||
m_pSslCertificate(NULL),
|
m_pSslCertificate(NULL),
|
||||||
m_mainWindow(mainWindow)
|
m_mainWindow(mainWindow)
|
||||||
{
|
{
|
||||||
|
@ -62,8 +64,8 @@ void PluginWizardPage::initializePage()
|
||||||
{
|
{
|
||||||
QWizardPage::initializePage();
|
QWizardPage::initializePage();
|
||||||
|
|
||||||
if (m_Email.isEmpty() ||
|
if (m_Edition == Unknown ||
|
||||||
m_Password.isEmpty()) {
|
m_Edition == Basic) {
|
||||||
updateStatus(tr("Setup complete."));
|
updateStatus(tr("Setup complete."));
|
||||||
showFinished();
|
showFinished();
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -36,8 +36,7 @@ public:
|
||||||
~PluginWizardPage();
|
~PluginWizardPage();
|
||||||
|
|
||||||
void setFinished(bool b) { m_Finished = b; }
|
void setFinished(bool b) { m_Finished = b; }
|
||||||
void setEmail(QString e) { m_Email = e; }
|
void setEdition(int edition) { m_Edition = edition; }
|
||||||
void setPassword(QString p) { m_Password = p; }
|
|
||||||
|
|
||||||
bool isComplete() const;
|
bool isComplete() const;
|
||||||
void initializePage();
|
void initializePage();
|
||||||
|
@ -58,8 +57,7 @@ private:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool m_Finished;
|
bool m_Finished;
|
||||||
QString m_Email;
|
int m_Edition;
|
||||||
QString m_Password;
|
|
||||||
PluginManager m_PluginManager;
|
PluginManager m_PluginManager;
|
||||||
SslCertificate* m_pSslCertificate;
|
SslCertificate* m_pSslCertificate;
|
||||||
QThread* m_pThread;
|
QThread* m_pThread;
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#include "SetupWizard.h"
|
#include "SetupWizard.h"
|
||||||
#include "MainWindow.h"
|
#include "MainWindow.h"
|
||||||
#include "WebClient.h"
|
#include "WebClient.h"
|
||||||
|
#include "SubscriptionManager.h"
|
||||||
#include "EditionType.h"
|
#include "EditionType.h"
|
||||||
#include "QSynergyApplication.h"
|
#include "QSynergyApplication.h"
|
||||||
#include "QUtility.h"
|
#include "QUtility.h"
|
||||||
|
@ -85,7 +86,7 @@ bool SetupWizard::validateCurrentPage()
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
WebClient webClient;
|
WebClient webClient;
|
||||||
m_Edition = webClient .getEdition(
|
m_Edition = webClient.getEdition(
|
||||||
m_pLineEditEmail->text(),
|
m_pLineEditEmail->text(),
|
||||||
m_pLineEditPassword->text(),
|
m_pLineEditPassword->text(),
|
||||||
message,
|
message,
|
||||||
|
@ -95,12 +96,36 @@ bool SetupWizard::validateCurrentPage()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
m_pPluginPage->setEmail(m_pLineEditEmail->text());
|
m_pPluginPage->setEdition(m_Edition);
|
||||||
m_pPluginPage->setPassword(m_pLineEditPassword->text());
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (m_pRadioButtonSubscription->isChecked()) {
|
||||||
|
if (m_pLineEditSerialKey->text().isEmpty()) {
|
||||||
|
message.setText(tr("Please enter your subscription serial key."));
|
||||||
|
message.exec();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// plugin page no longer requires email and password
|
||||||
|
// create subscription file in profile directory
|
||||||
|
SubscriptionManager subscriptionManager;
|
||||||
|
bool r = subscriptionManager.activateSerial(m_pLineEditSerialKey->text());
|
||||||
|
if (!r) {
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if the serial is valid
|
||||||
|
r = subscriptionManager.checkSubscription(m_Edition);
|
||||||
|
|
||||||
|
if (r) {
|
||||||
|
m_pPluginPage->setEdition(m_Edition);
|
||||||
|
}
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -170,6 +195,7 @@ void SetupWizard::accept()
|
||||||
appConfig.setUserToken(hashResult);
|
appConfig.setUserToken(hashResult);
|
||||||
appConfig.setEdition(m_Edition);
|
appConfig.setEdition(m_Edition);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_MainWindow.setEdition(m_Edition);
|
m_MainWindow.setEdition(m_Edition);
|
||||||
m_MainWindow.updateLocalFingerprint();
|
m_MainWindow.updateLocalFingerprint();
|
||||||
|
|
||||||
|
@ -221,7 +247,7 @@ void SetupWizard::on_m_pRadioButtonActivate_toggled(bool checked)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetupWizard::on_radioButton_toggled(bool checked)
|
void SetupWizard::on_m_pRadioButtonSubscription_toggled(bool checked)
|
||||||
{
|
{
|
||||||
if (checked) {
|
if (checked) {
|
||||||
m_pLineEditEmail->setEnabled(false);
|
m_pLineEditEmail->setEnabled(false);
|
||||||
|
|
|
@ -47,7 +47,7 @@ private:
|
||||||
PluginWizardPage* m_pPluginPage;
|
PluginWizardPage* m_pPluginPage;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void on_radioButton_toggled(bool checked);
|
void on_m_pRadioButtonSubscription_toggled(bool checked);
|
||||||
void on_m_pRadioButtonActivate_toggled(bool checked);
|
void on_m_pRadioButtonActivate_toggled(bool checked);
|
||||||
void on_m_pRadioButtonSkip_toggled(bool checked);
|
void on_m_pRadioButtonSkip_toggled(bool checked);
|
||||||
void on_m_pComboLanguage_currentIndexChanged(int index);
|
void on_m_pComboLanguage_currentIndexChanged(int index);
|
||||||
|
|
|
@ -0,0 +1,88 @@
|
||||||
|
/*
|
||||||
|
* synergy -- mouse and keyboard sharing utility
|
||||||
|
* Copyright (C) 2015 Synergy Seamless Inc.
|
||||||
|
*
|
||||||
|
* This package is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* found in the file LICENSE that should have accompanied this file.
|
||||||
|
*
|
||||||
|
* This package 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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "SubscriptionManager.h"
|
||||||
|
|
||||||
|
#include "CoreInterface.h"
|
||||||
|
#include "EditionType.h"
|
||||||
|
|
||||||
|
#include <QMessageBox>
|
||||||
|
|
||||||
|
SubscriptionManager::SubscriptionManager()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SubscriptionManager::activateSerial(const QString& serial)
|
||||||
|
{
|
||||||
|
CoreInterface coreInterface;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
coreInterface.activateSerial(serial);
|
||||||
|
}
|
||||||
|
catch (std::exception& e)
|
||||||
|
{
|
||||||
|
showErrorDialog(e.what());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SubscriptionManager::checkSubscription(int& edition)
|
||||||
|
{
|
||||||
|
edition = Unknown;
|
||||||
|
CoreInterface coreInterface;
|
||||||
|
QString output;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
output = coreInterface.checkSubscription();
|
||||||
|
}
|
||||||
|
catch (std::exception& e)
|
||||||
|
{
|
||||||
|
showErrorDialog(e.what());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (output.contains("subscription will expire soon")) {
|
||||||
|
QMessageBox::warning(
|
||||||
|
this, tr("Activate Subscription"),
|
||||||
|
tr("Your subscription will be expired soon."));
|
||||||
|
}
|
||||||
|
|
||||||
|
edition = getEditionType(output);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SubscriptionManager::showErrorDialog(const QString& errorMsg)
|
||||||
|
{
|
||||||
|
QMessageBox::critical(
|
||||||
|
this, "Activate Subscription",
|
||||||
|
tr("An error occurred while trying to activate using a serial key. "
|
||||||
|
"Please contact the helpdesk, and provide the "
|
||||||
|
"following details.\n\n%1").arg(errorMsg));
|
||||||
|
}
|
||||||
|
|
||||||
|
int SubscriptionManager::getEditionType(QString& string)
|
||||||
|
{
|
||||||
|
if (string.contains("full subscription valid")) {
|
||||||
|
return Pro;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Unknown;
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
/*
|
||||||
|
* synergy -- mouse and keyboard sharing utility
|
||||||
|
* Copyright (C) 2015 Synergy Seamless Inc.
|
||||||
|
*
|
||||||
|
* This package is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* found in the file LICENSE that should have accompanied this file.
|
||||||
|
*
|
||||||
|
* This package 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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
|
||||||
|
class SubscriptionManager : public QWidget
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
SubscriptionManager();
|
||||||
|
|
||||||
|
bool activateSerial(const QString& serial);
|
||||||
|
bool checkSubscription(int& edition);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void showErrorDialog(const QString& errorMsg);
|
||||||
|
int getEditionType(QString& string);
|
||||||
|
};
|
Loading…
Reference in New Issue