This repository has been archived by the owner. It is now read-only.
Permalink
Browse files

#5657 Rename SubscriptionManager to LicenseManager

  • Loading branch information...
nlyan committed Oct 17, 2016
1 parent 5a34da3 commit fc67cdf56ea9d627598b8a343e2624396b9f8a12
View
@@ -61,12 +61,12 @@ SOURCES += src/main.cpp \
src/Fingerprint.cpp \
src/SslCertificate.cpp \
src/WebClient.cpp \
- src/SubscriptionManager.cpp \
src/ActivationNotifier.cpp \
src/ActivationDialog.cpp \
src/CancelActivationDialog.cpp \
src/FailedLoginDialog.cpp \
- ../lib/shared/SerialKey.cpp
+ ../lib/shared/SerialKey.cpp \
+ src/LicenseManager.cpp
HEADERS += src/MainWindow.h \
src/AboutDialog.h \
src/ServerConfig.h \
@@ -108,14 +108,14 @@ HEADERS += src/MainWindow.h \
src/Fingerprint.h \
src/SslCertificate.h \
src/WebClient.h \
- src/SubscriptionManager.h \
src/ActivationNotifier.h \
src/ElevateMode.h \
src/ActivationDialog.h \
src/CancelActivationDialog.h \
src/FailedLoginDialog.h \
../lib/shared/EditionType.h \
- ../lib/shared/SerialKey.h
+ ../lib/shared/SerialKey.h \
+ src/LicenseManager.h
RESOURCES += res/Synergy.qrc
RC_FILE = res/win/Synergy.rc
macx {
@@ -7,19 +7,19 @@
#include "ActivationNotifier.h"
#include "MainWindow.h"
#include "QUtility.h"
-#include "SubscriptionManager.h"
+#include "LicenseManager.h"
#include "FailedLoginDialog.h"
#include <QMessageBox>
#include <QThread>
#include <iostream>
ActivationDialog::ActivationDialog(QWidget* parent, AppConfig& appConfig,
- SubscriptionManager& subscriptionManager) :
+ LicenseManager& licenseManager) :
QDialog(parent),
ui(new Ui::ActivationDialog),
m_appConfig(&appConfig),
- m_subscriptionManager (&subscriptionManager)
+ m_LicenseManager (&licenseManager)
{
ui->setupUi(this);
refreshSerialKey();
@@ -39,10 +39,10 @@ ActivationDialog::~ActivationDialog()
void ActivationDialog::reject()
{
- if (m_subscriptionManager->activeEdition() == kUnregistered) {
+ if (m_LicenseManager->activeEdition() == kUnregistered) {
CancelActivationDialog cancelActivationDialog(this);
if (QDialog::Accepted == cancelActivationDialog.exec()) {
- m_subscriptionManager->skipActivation();
+ m_LicenseManager->skipActivation();
m_appConfig->activationHasRun(true);
m_appConfig->saveSettings();
}
@@ -59,7 +59,7 @@ void ActivationDialog::accept()
std::pair<bool, QString> result;
try {
QString serialKey = ui->m_pTextEditSerialKey->toPlainText();
- result = m_subscriptionManager->setSerialKey(serialKey);
+ result = m_LicenseManager->setSerialKey(serialKey);
}
catch (std::exception& e) {
message.critical(this, "Unknown Error",
@@ -77,17 +77,17 @@ void ActivationDialog::accept()
return;
}
- Edition edition = m_subscriptionManager->activeEdition();
+ Edition edition = m_LicenseManager->activeEdition();
if (edition != kUnregistered) {
- if (m_subscriptionManager->serialKey().isTrial()) {
+ if (m_LicenseManager->serialKey().isTrial()) {
message.information(this, "Thanks!",
tr("Thanks for trying %1!").arg
- (m_subscriptionManager->getEditionName(edition)));
+ (m_LicenseManager->getEditionName(edition)));
}
else {
message.information(this, "Activated!",
tr("Thanks for activating %1!").arg
- (m_subscriptionManager->getEditionName(edition)));
+ (m_LicenseManager->getEditionName(edition)));
}
}
@@ -2,7 +2,7 @@
#define ACTIVATIONDIALOG_H
#include <QDialog>
-#include <SubscriptionManager.h>
+#include <LicenseManager.h>
namespace Ui {
class ActivationDialog;
@@ -13,23 +13,23 @@ class AppConfig;
class ActivationDialog : public QDialog
{
Q_OBJECT
-
+
public:
- ActivationDialog(QWidget *parent, AppConfig& appConfig,
- SubscriptionManager& subscriptionManager);
+ ActivationDialog(QWidget *parent, AppConfig& appConfig,
+ LicenseManager& licenseManager);
~ActivationDialog();
public slots:
void reject();
void accept();
-
+
protected:
- void refreshSerialKey();
-
+ void refreshSerialKey();
+
private:
Ui::ActivationDialog *ui;
AppConfig* m_appConfig;
- SubscriptionManager* m_subscriptionManager;
+ LicenseManager* m_LicenseManager;
};
#endif // ACTIVATIONDIALOG_H
@@ -0,0 +1,144 @@
+/*
+ * 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 "LicenseManager.h"
+#include "EditionType.h"
+#include "AppConfig.h"
+#include <ctime>
+#include <stdexcept>
+#include <utility>
+#include <QThread>
+
+LicenseManager::LicenseManager(AppConfig* appConfig) :
+ m_AppConfig(appConfig),
+ m_serialKey(appConfig->edition()) {
+ try {
+ setSerialKey(m_AppConfig->serialKey());
+ } catch (...) {
+ /* Remove garbage serial keys from the registry */
+ m_AppConfig->setSerialKey("");
+ m_AppConfig->setEdition(kUnregistered);
+ m_AppConfig->saveSettings();
+ }
+}
+
+std::pair<bool, QString>
+LicenseManager::setSerialKey(QString serialKeyString)
+{
+ std::pair<bool, QString> ret (true, "");
+
+ SerialKey serialKey (serialKeyString.toStdString());
+ if (serialKey.isExpired(::time(0))) {
+ ret.first = false;
+ ret.second = "Serial key expired";
+ return ret;
+ }
+
+ if (serialKey != m_serialKey) {
+ using std::swap;
+ swap (serialKey, m_serialKey);
+
+ m_AppConfig->setSerialKey (serialKeyString);
+ notifyActivation ("serial:" + serialKeyString);
+ emit serialKeyChanged (m_serialKey);
+
+ if (m_serialKey.edition() != serialKey.edition()) {
+ m_AppConfig->setEdition (m_serialKey.edition());
+ emit editionChanged (m_serialKey.edition());
+ }
+
+ if (serialKey.isTrial()) {
+ emit endTrial(false);
+ }
+
+ if (m_serialKey.isTrial()) {
+ emit beginTrial(m_serialKey.isExpiring(::time(0)));
+ }
+
+ m_AppConfig->saveSettings();
+ }
+
+ return ret;
+}
+
+Edition
+LicenseManager::activeEdition() const
+{
+ return m_serialKey.edition();
+}
+
+QString
+LicenseManager::activeEditionName() const
+{
+ return getEditionName(activeEdition(), m_serialKey.isTrial());
+}
+
+SerialKey
+LicenseManager::serialKey() const
+{
+ return m_serialKey;
+}
+
+void LicenseManager::refresh() const
+{
+ emit serialKeyChanged (m_serialKey);
+ emit editionChanged (m_serialKey.edition());
+ if (m_serialKey.isTrial()) {
+ emit beginTrial(m_serialKey.isExpiring(::time(0)));
+ }
+}
+
+void LicenseManager::skipActivation()
+{
+ notifyActivation ("skip:unknown");
+}
+
+QString
+LicenseManager::getEditionName(Edition const edition, bool trial)
+{
+ std::string name ("Synergy ");
+ switch (edition) {
+ case kUnregistered:
+ name += "(UNREGISTERED)";
+ return QString::fromUtf8 (name.c_str(), name.size());
+ case kBasic:
+ name += "Basic";
+ break;
+ default:
+ name += "Pro";
+ }
+ if (trial) {
+ name += " (Trial)";
+ }
+ return QString::fromUtf8 (name.c_str(), name.size());
+}
+
+void LicenseManager::notifyActivation(QString identity)
+{
+ ActivationNotifier* notifier = new ActivationNotifier();
+ notifier->setIdentity(identity);
+
+ QThread* thread = new QThread();
+ connect(notifier, SIGNAL(finished()), thread, SLOT(quit()));
+ connect(notifier, SIGNAL(finished()), notifier, SLOT(deleteLater()));
+ connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
+
+ notifier->moveToThread(thread);
+ thread->start();
+
+ QMetaObject::invokeMethod(notifier, "notify", Qt::QueuedConnection);
+}
@@ -24,30 +24,30 @@
class AppConfig;
-class SubscriptionManager: public QObject
+class LicenseManager: public QObject
{
- Q_OBJECT
+ Q_OBJECT
public:
- SubscriptionManager(AppConfig* appConfig);
- std::pair<bool, QString> setSerialKey(QString serialKey);
- void refresh() const;
- Edition activeEdition() const;
+ LicenseManager(AppConfig* appConfig);
+ std::pair<bool, QString> setSerialKey(QString serialKey);
+ void refresh() const;
+ Edition activeEdition() const;
QString activeEditionName() const;
SerialKey serialKey() const;
- void skipActivation();
+ void skipActivation();
static QString getEditionName(Edition edition, bool trial = false);
private:
- void notifyActivation(QString identity);
+ void notifyActivation(QString identity);
private:
- AppConfig* m_AppConfig;
- SerialKey m_serialKey;
+ AppConfig* m_AppConfig;
+ SerialKey m_serialKey;
signals:
- void serialKeyChanged (SerialKey) const;
- void editionChanged (Edition) const;
- void beginTrial (bool expiring) const;
- void endTrial (bool expired) const;
+ void serialKeyChanged (SerialKey) const;
+ void editionChanged (Edition) const;
+ void beginTrial (bool expiring) const;
+ void endTrial (bool expired) const;
};
Oops, something went wrong.

0 comments on commit fc67cdf

Please sign in to comment.