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

#5657 Handle expired keys properly

  • Loading branch information...
nlyan committed Oct 18, 2016
1 parent 020b797 commit 02c23905d6bc32a264b176ef40a3d4cf353bca25
Showing with 47 additions and 38 deletions.
  1. +3 −2 src/gui/src/ActivationDialog.cpp
  2. +19 −26 src/gui/src/LicenseManager.cpp
  3. +2 −2 src/gui/src/LicenseManager.h
  4. +23 −8 src/gui/src/MainWindow.cpp
@@ -81,8 +81,9 @@ void ActivationDialog::accept()
if (edition != kUnregistered) {
if (m_LicenseManager->serialKey().isTrial()) {
message.information(this, "Thanks!",
- tr("Thanks for trying %1!").arg
- (m_LicenseManager->getEditionName(edition)));
+ tr("Thanks for trying %1!\n\n%2 days of your trial remain").arg
+ (m_LicenseManager->getEditionName(edition)).arg
+ (m_LicenseManager->serialKey().daysLeft(::time(0))));
}
else {
message.information(this, "Activated!",
@@ -26,22 +26,16 @@
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->saveSettings();
- }
}
std::pair<bool, QString>
-LicenseManager::setSerialKey(QString serialKeyString)
+LicenseManager::setSerialKey(QString serialKeyString, bool acceptExpired)
{
std::pair<bool, QString> ret (true, "");
-
+ time_t currentTime = ::time(0);
SerialKey serialKey (serialKeyString.toStdString());
- if (serialKey.isExpired(::time(0))) {
+
+ if (!acceptExpired && serialKey.isExpired(currentTime)) {
ret.first = false;
ret.second = "Serial key expired";
return ret;
@@ -50,22 +44,25 @@ LicenseManager::setSerialKey(QString serialKeyString)
if (serialKey != m_serialKey) {
using std::swap;
swap (serialKey, m_serialKey);
-
m_AppConfig->setSerialKey (serialKeyString);
notifyActivation ("serial:" + serialKeyString);
emit serialKeyChanged (m_serialKey);
+ if (serialKey.isTrial()) {
+ emit endTrial(false);
+ }
+
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)));
+ if (m_serialKey.isExpired(currentTime)) {
+ emit endTrial(true);
+ } else {
+ emit beginTrial(m_serialKey.isExpiring(currentTime));
+ }
}
m_AppConfig->saveSettings();
@@ -92,13 +89,9 @@ LicenseManager::serialKey() const
return m_serialKey;
}
-void LicenseManager::refresh() const
+void LicenseManager::refresh(bool acceptExpired)
{
- emit serialKeyChanged (m_serialKey);
- emit editionChanged (m_serialKey.edition());
- if (m_serialKey.isTrial()) {
- emit beginTrial(m_serialKey.isExpiring(::time(0)));
- }
+ setSerialKey (m_AppConfig->serialKey(), acceptExpired);
}
void LicenseManager::skipActivation()
@@ -109,16 +102,16 @@ void LicenseManager::skipActivation()
QString
LicenseManager::getEditionName(Edition const edition, bool trial)
{
- std::string name ("Synergy ");
+ std::string name ("Synergy");
switch (edition) {
case kUnregistered:
- name += "(UNREGISTERED)";
+ name += " (UNREGISTERED)";
return QString::fromUtf8 (name.c_str(), name.size());
case kBasic:
- name += "Basic";
+ name += " Basic";
break;
default:
- name += "Pro";
+ name += " Pro";
}
if (trial) {
name += " (Trial)";
@@ -30,8 +30,8 @@ class LicenseManager: public QObject
public:
LicenseManager(AppConfig* appConfig);
- std::pair<bool, QString> setSerialKey(QString serialKey);
- void refresh() const;
+ std::pair<bool, QString> setSerialKey(QString serialKey, bool acceptExpired = false);
+ void refresh(bool acceptExpired = false);
Edition activeEdition() const;
QString activeEditionName() const;
SerialKey serialKey() const;
View
@@ -154,7 +154,8 @@ MainWindow::MainWindow(QSettings& settings, AppConfig& appConfig,
connect (m_AppConfig, SIGNAL(sslToggled(bool)),
this, SLOT(sslToggled(bool)), Qt::QueuedConnection);
- m_LicenseManager->refresh();
+ setWindowTitle (m_LicenseManager->activeEditionName());
+ m_LicenseManager->refresh(true);
}
MainWindow::~MainWindow()
@@ -1064,15 +1065,14 @@ void MainWindow::beginTrial(bool isExpiring)
QString expiringNotice ("<html><head/><body><p><span style=\""
"font-weight:600;\">%1</span> days of "
"your %2 trial remain. <a href="
- "\"http://symless.com/synergy/trial/thanks?id=%3\">"
+ "\"http://symless.com/pricing\">"
"<span style=\"text-decoration: underline;"
" color:#0000ff;\">Buy now!</span></a>"
"</p></body></html>");
- expiringNotice = expiringNotice.arg
- (m_LicenseManager->serialKey().daysLeft(::time(0))).arg
- (LicenseManager::getEditionName(m_LicenseManager->activeEdition())).arg
- (QString::fromStdString(m_LicenseManager->serialKey().toString()));
-
+ expiringNotice = expiringNotice
+ .arg (m_LicenseManager->serialKey().daysLeft(::time(0)))
+ .arg (LicenseManager::getEditionName
+ (m_LicenseManager->activeEdition()));
this->m_trialLabel->setText(expiringNotice);
this->m_trialWidget->show();
}
@@ -1081,7 +1081,22 @@ void MainWindow::beginTrial(bool isExpiring)
void MainWindow::endTrial(bool isExpired)
{
- if (!isExpired) {
+ if (isExpired) {
+ QString expiredNotice (
+ "<html><head/><body><p>Your %1 trial has expired. <a href="
+ "\"http://symless.com/synergy/trial/thanks?id=%2\">"
+ "<span style=\"text-decoration: underline;color:#0000ff;\">"
+ "Buy now!</span></a></p></body></html>"
+ );
+ expiredNotice = expiredNotice
+ .arg(LicenseManager::getEditionName
+ (m_LicenseManager->activeEdition()))
+ .arg(QString::fromStdString
+ (m_LicenseManager->serialKey().toString()));
+
+ this->m_trialLabel->setText(expiredNotice);
+ this->m_trialWidget->show();
+ } else {
this->m_trialWidget->hide();
}
setWindowTitle (m_LicenseManager->activeEditionName());

0 comments on commit 02c2390

Please sign in to comment.