1 #include "ActivationDialog.h"
2 #include "ui_ActivationDialog.h"
3 #include "CancelActivationDialog.h"
4 #include "AppConfig.h"
5 #include <shared/EditionType.h>
6 #include "ActivationNotifier.h"
7 #include "MainWindow.h"
8 #include "QUtility.h"
9 #include "LicenseManager.h"
10 #include "FailedLoginDialog.h"
11
12 #include <QMessageBox>
13 #include <QThread>
14 #include <iostream>
15
ActivationDialog(QWidget * parent,AppConfig & appConfig,LicenseManager & licenseManager)16 ActivationDialog::ActivationDialog(QWidget* parent, AppConfig& appConfig,
17 LicenseManager& licenseManager) :
18 QDialog(parent),
19 ui(new Ui::ActivationDialog),
20 m_appConfig(&appConfig),
21 m_LicenseManager (&licenseManager)
22 {
23 ui->setupUi(this);
24 refreshSerialKey();
25 time_t currentTime = ::time(0);
26 if (!m_LicenseManager->serialKey().isExpired(currentTime)) {
27 ui->m_trialWidget->hide();
28 }
29 }
30
refreshSerialKey()31 void ActivationDialog::refreshSerialKey()
32 {
33 ui->m_pTextEditSerialKey->setText(m_appConfig->serialKey());
34 ui->m_pTextEditSerialKey->setFocus();
35 ui->m_pTextEditSerialKey->moveCursor(QTextCursor::End);
36 ui->m_trialLabel->setText(tr(m_LicenseManager->getLicenseNotice().toStdString().c_str()));
37 }
38
~ActivationDialog()39 ActivationDialog::~ActivationDialog()
40 {
41 delete ui;
42 }
43
reject()44 void ActivationDialog::reject()
45 {
46 if (m_LicenseManager->activeEdition() == kUnregistered) {
47 CancelActivationDialog cancelActivationDialog(this);
48 if (QDialog::Accepted == cancelActivationDialog.exec()) {
49 m_LicenseManager->skipActivation();
50 } else {
51 return;
52 }
53 }
54 QDialog::reject();
55 }
56
accept()57 void ActivationDialog::accept()
58 {
59 QMessageBox message;
60 m_appConfig->activationHasRun(true);
61
62 std::pair<bool, QString> result;
63 try {
64 SerialKey serialKey (ui->m_pTextEditSerialKey->toPlainText().
65 trimmed().toStdString());
66 result = m_LicenseManager->setSerialKey(serialKey);
67 }
68 catch (std::exception& e) {
69 message.critical(this, "Unknown Error",
70 tr("An error occurred while trying to activate Synergy. "
71 "Please contact the helpdesk, and provide the "
72 "following information:\n\n%1").arg(e.what()));
73 refreshSerialKey();
74 return;
75 }
76
77 if (!result.first) {
78 message.critical(this, "Activation failed",
79 tr("%1").arg(result.second));
80 refreshSerialKey();
81 return;
82 }
83
84 m_LicenseManager->notifyActivation("serial:" + m_appConfig->serialKey());
85 Edition edition = m_LicenseManager->activeEdition();
86 time_t daysLeft = m_LicenseManager->serialKey().daysLeft(::time(0));
87 if (edition != kUnregistered) {
88 QString thanksMessage = tr("Thanks for trying %1! %5\n\n%2 day%3 of "
89 "your trial remain%4").
90 arg (m_LicenseManager->getEditionName(edition)).
91 arg (daysLeft).
92 arg ((daysLeft == 1) ? "" : "s").
93 arg ((daysLeft == 1) ? "s" : "");
94
95 if (edition == kPro || edition == kPro_China || edition == kBusiness) {
96 m_appConfig->generateCertificate();
97 thanksMessage = thanksMessage.arg("If you're using SSL, "
98 "remember to activate all of your devices.");
99 } else {
100 thanksMessage = thanksMessage.arg("");
101 }
102
103 if (m_LicenseManager->serialKey().isTrial()) {
104 message.information(this, "Thanks!", thanksMessage);
105 }
106 else {
107 message.information(this, "Activated!",
108 tr("Thanks for activating %1!").arg
109 (m_LicenseManager->getEditionName(edition)));
110 }
111 }
112
113 QDialog::accept();
114 }
115