mirror of
https://github.com/debauchee/barrier.git
synced 2026-07-18 12:01:34 +08:00
#5657 Create a global SubscriptionManager instance
This commit is contained in:
@@ -7,7 +7,8 @@ DEFINES += VERSION_REVISION=\\\"$$QMAKE_VERSION_REVISION\\\"
|
||||
DEPENDPATH += . \
|
||||
res
|
||||
INCLUDEPATH += . \
|
||||
src
|
||||
src \
|
||||
../lib/shared/
|
||||
FORMS += res/MainWindowBase.ui \
|
||||
res/AboutDialogBase.ui \
|
||||
res/ServerConfigDialogBase.ui \
|
||||
@@ -102,7 +103,6 @@ HEADERS += src/MainWindow.h \
|
||||
src/DataDownloader.h \
|
||||
src/AddClientDialog.h \
|
||||
src/CommandProcess.h \
|
||||
src/EditionType.h \
|
||||
src/ProcessorArch.h \
|
||||
src/CoreInterface.h \
|
||||
src/Fingerprint.h \
|
||||
@@ -114,6 +114,7 @@ HEADERS += src/MainWindow.h \
|
||||
src/ActivationDialog.h \
|
||||
src/CancelActivationDialog.h \
|
||||
src/FailedLoginDialog.h \
|
||||
../lib/shared/EditionType.h \
|
||||
../lib/shared/SerialKey.h
|
||||
RESOURCES += res/Synergy.qrc
|
||||
RC_FILE = res/win/Synergy.rc
|
||||
|
||||
@@ -14,10 +14,12 @@
|
||||
#include <QThread>
|
||||
#include <iostream>
|
||||
|
||||
ActivationDialog::ActivationDialog(QWidget* parent, AppConfig& appConfig) :
|
||||
ActivationDialog::ActivationDialog(QWidget* parent, AppConfig& appConfig,
|
||||
SubscriptionManager& subscriptionManager) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::ActivationDialog),
|
||||
m_appConfig(&appConfig)
|
||||
m_appConfig(&appConfig),
|
||||
m_subscriptionManager (&subscriptionManager)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->m_pTextEditSerialKey->setFocus();
|
||||
@@ -67,17 +69,8 @@ void ActivationDialog::accept()
|
||||
|
||||
try {
|
||||
QString serialKey = ui->m_pTextEditSerialKey->toPlainText();
|
||||
|
||||
if (!m_appConfig->setSerialKey(serialKey, error)) {
|
||||
message.critical(this, "Invalid Serial Key", tr("%1").arg(error));
|
||||
return;
|
||||
}
|
||||
|
||||
SubscriptionManager subscriptionManager(this, *m_appConfig, edition);
|
||||
if (!subscriptionManager.activateSerial(serialKey)) {
|
||||
return;
|
||||
}
|
||||
|
||||
SubscriptionManager subscriptionManager (m_appConfig);
|
||||
subscriptionManager.setSerialKey (serialKey);
|
||||
notifyActivation("serial:" + m_appConfig->serialKey());
|
||||
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define ACTIVATIONDIALOG_H
|
||||
|
||||
#include <QDialog>
|
||||
#include <SubscriptionManager.h>
|
||||
|
||||
namespace Ui {
|
||||
class ActivationDialog;
|
||||
@@ -14,7 +15,8 @@ class ActivationDialog : public QDialog
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit ActivationDialog(QWidget *parent, AppConfig& appConfig);
|
||||
ActivationDialog(QWidget *parent, AppConfig& appConfig,
|
||||
SubscriptionManager& subscriptionManager);
|
||||
~ActivationDialog();
|
||||
|
||||
public slots:
|
||||
@@ -27,6 +29,7 @@ protected:
|
||||
private:
|
||||
Ui::ActivationDialog *ui;
|
||||
AppConfig* m_appConfig;
|
||||
SubscriptionManager* m_subscriptionManager;
|
||||
};
|
||||
|
||||
#endif // ACTIVATIONDIALOG_H
|
||||
|
||||
@@ -244,13 +244,10 @@ void AppConfig::setEdition(int e) {
|
||||
|
||||
int AppConfig::edition() const { return m_Edition; }
|
||||
|
||||
bool AppConfig::setSerialKey(QString serial, QString& errorOut) {
|
||||
if (serial.isEmpty()) {
|
||||
errorOut = "Your serial key cannot be blank.";
|
||||
return false;
|
||||
}
|
||||
m_Serialkey = serial;
|
||||
return true;
|
||||
QString AppConfig::setSerialKey(QString serial) {
|
||||
using std::swap;
|
||||
swap (serial, m_Serialkey);
|
||||
return serial;
|
||||
}
|
||||
|
||||
void AppConfig::clearSerialKey()
|
||||
|
||||
@@ -79,7 +79,7 @@ class AppConfig: public QObject
|
||||
void setAutoConfigPrompted(bool prompted);
|
||||
void setEdition(int e);
|
||||
int edition() const;
|
||||
bool setSerialKey(QString serial, QString& error);
|
||||
QString setSerialKey(QString serial);
|
||||
void clearSerialKey();
|
||||
QString serialKey();
|
||||
int lastExpiringWarningTime() const;
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
/*
|
||||
* synergy -- mouse and keyboard sharing utility
|
||||
* Copyright (C) 2015-2016 Symless Ltd.
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#ifndef EDITIONTYPE_H
|
||||
#define EDITIONTYPE_H
|
||||
|
||||
/* Do not reorder these! */
|
||||
|
||||
enum EditionType {
|
||||
Basic,
|
||||
Pro,
|
||||
Trial,
|
||||
Unregistered
|
||||
};
|
||||
|
||||
#endif // EDITIONTYPE_H
|
||||
@@ -76,12 +76,14 @@ static const char* synergyIconFiles[] =
|
||||
":/res/icons/16x16/synergy-transfering.png"
|
||||
};
|
||||
|
||||
MainWindow::MainWindow(QSettings& settings, AppConfig& appConfig) :
|
||||
MainWindow::MainWindow(QSettings& settings, AppConfig& appConfig,
|
||||
SubscriptionManager& subscriptionManager) :
|
||||
m_Settings(settings),
|
||||
m_AppConfig(appConfig),
|
||||
m_AppConfig(&appConfig),
|
||||
m_SubscriptionManager(&subscriptionManager),
|
||||
m_pSynergy(NULL),
|
||||
m_SynergyState(synergyDisconnected),
|
||||
m_ServerConfig(&m_Settings, 5, 3, m_AppConfig.screenName(), this),
|
||||
m_ServerConfig(&m_Settings, 5, 3, m_AppConfig->screenName(), this),
|
||||
m_pTempConfigFile(NULL),
|
||||
m_pTrayIcon(NULL),
|
||||
m_pTrayIconMenu(NULL),
|
||||
@@ -135,12 +137,12 @@ MainWindow::MainWindow(QSettings& settings, AppConfig& appConfig) :
|
||||
|
||||
m_pComboServerList->hide();
|
||||
|
||||
setEdition(m_AppConfig.edition());
|
||||
setEdition(m_AppConfig->edition());
|
||||
|
||||
m_pLabelPadlock->hide();
|
||||
connect (this, SIGNAL(windowShown()), this, SLOT(on_windowShown()), Qt::QueuedConnection);
|
||||
connect (&m_AppConfig, SIGNAL(editionSet(int)), this, SLOT(setEdition(int)), Qt::QueuedConnection);
|
||||
connect (&m_AppConfig, SIGNAL(sslToggled(bool)), this, SLOT(sslToggled(bool)), Qt::QueuedConnection);
|
||||
connect (m_AppConfig, SIGNAL(editionSet(int)), this, SLOT(setEdition(int)), Qt::QueuedConnection);
|
||||
connect (m_AppConfig, SIGNAL(sslToggled(bool)), this, SLOT(sslToggled(bool)), Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
@@ -498,7 +500,7 @@ void MainWindow::restartSynergy()
|
||||
|
||||
void MainWindow::proofreadInfo()
|
||||
{
|
||||
setEdition(m_AppConfig.edition()); // Why is this here?
|
||||
setEdition(m_AppConfig->edition()); // Why is this here?
|
||||
|
||||
int oldState = m_SynergyState;
|
||||
m_SynergyState = synergyDisconnected;
|
||||
@@ -566,7 +568,7 @@ void MainWindow::startSynergy()
|
||||
|
||||
#endif
|
||||
|
||||
if (m_AppConfig.getCryptoEnabled()) {
|
||||
if (m_AppConfig->getCryptoEnabled()) {
|
||||
args << "--enable-crypto";
|
||||
}
|
||||
|
||||
@@ -734,18 +736,6 @@ QString MainWindow::appPath(const QString& name)
|
||||
|
||||
bool MainWindow::serverArgs(QStringList& args, QString& app)
|
||||
{
|
||||
int edition;
|
||||
SubscriptionManager subscriptionManager(this, appConfig(), edition);
|
||||
if (subscriptionManager.fileExists())
|
||||
{
|
||||
if (!subscriptionManager.checkSubscription()) {
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
setEdition(edition);
|
||||
}
|
||||
}
|
||||
|
||||
app = appPath(appConfig().synergysName());
|
||||
|
||||
if (!QFile::exists(app))
|
||||
@@ -894,7 +884,7 @@ void MainWindow::setSynergyState(qSynergyState state)
|
||||
switch (state)
|
||||
{
|
||||
case synergyConnected: {
|
||||
if (m_AppConfig.getCryptoEnabled()) {
|
||||
if (m_AppConfig->getCryptoEnabled()) {
|
||||
m_pLabelPadlock->show();
|
||||
}
|
||||
else {
|
||||
@@ -1009,13 +999,13 @@ void MainWindow::updateZeroconfService()
|
||||
QMutexLocker locker(&m_UpdateZeroconfMutex);
|
||||
|
||||
if (isBonjourRunning()) {
|
||||
if (!m_AppConfig.wizardShouldRun()) {
|
||||
if (!m_AppConfig->wizardShouldRun()) {
|
||||
if (m_pZeroconfService) {
|
||||
delete m_pZeroconfService;
|
||||
m_pZeroconfService = NULL;
|
||||
}
|
||||
|
||||
if (m_AppConfig.autoConfig() || synergyType() == synergyServer) {
|
||||
if (m_AppConfig->autoConfig() || synergyType() == synergyServer) {
|
||||
m_pZeroconfService = new ZeroconfService(this);
|
||||
}
|
||||
}
|
||||
@@ -1037,7 +1027,7 @@ void MainWindow::serverDetected(const QString name)
|
||||
void MainWindow::setEdition(int edition)
|
||||
{
|
||||
setWindowTitle(getEditionName(edition));
|
||||
if (m_AppConfig.getCryptoEnabled()) {
|
||||
if (m_AppConfig->getCryptoEnabled()) {
|
||||
m_pSslCertificate = new SslCertificate(this);
|
||||
m_pSslCertificate->generateCertificate();
|
||||
}
|
||||
@@ -1047,7 +1037,7 @@ void MainWindow::setEdition(int edition)
|
||||
|
||||
void MainWindow::updateLocalFingerprint()
|
||||
{
|
||||
if (m_AppConfig.getCryptoEnabled() && Fingerprint::local().fileExists()) {
|
||||
if (m_AppConfig->getCryptoEnabled() && Fingerprint::local().fileExists()) {
|
||||
m_pLabelFingerprint->setVisible(true);
|
||||
m_pLabelLocalFingerprint->setVisible(true);
|
||||
m_pLabelLocalFingerprint->setText(Fingerprint::local().readFirst());
|
||||
@@ -1058,6 +1048,12 @@ void MainWindow::updateLocalFingerprint()
|
||||
}
|
||||
}
|
||||
|
||||
SubscriptionManager&
|
||||
MainWindow::subscriptionManager() const
|
||||
{
|
||||
return *m_SubscriptionManager;
|
||||
}
|
||||
|
||||
void MainWindow::on_m_pGroupClient_toggled(bool on)
|
||||
{
|
||||
m_pGroupServer->setChecked(!on);
|
||||
@@ -1159,7 +1155,7 @@ void MainWindow::on_m_pButtonConfigureServer_clicked()
|
||||
|
||||
void MainWindow::on_m_pActivate_triggered()
|
||||
{
|
||||
ActivationDialog activationDialog (this, this->appConfig());
|
||||
ActivationDialog activationDialog(this, appConfig(), subscriptionManager());
|
||||
activationDialog.exec();
|
||||
}
|
||||
|
||||
@@ -1320,16 +1316,16 @@ void MainWindow::promptAutoConfig()
|
||||
QMessageBox::Yes | QMessageBox::No);
|
||||
|
||||
if (r == QMessageBox::Yes) {
|
||||
m_AppConfig.setAutoConfig(true);
|
||||
m_AppConfig->setAutoConfig(true);
|
||||
downloadBonjour();
|
||||
}
|
||||
else {
|
||||
m_AppConfig.setAutoConfig(false);
|
||||
m_AppConfig->setAutoConfig(false);
|
||||
m_pCheckBoxAutoConfig->setChecked(false);
|
||||
}
|
||||
}
|
||||
|
||||
m_AppConfig.setAutoConfigPrompted(true);
|
||||
m_AppConfig->setAutoConfigPrompted(true);
|
||||
}
|
||||
|
||||
void MainWindow::on_m_pComboServerList_currentIndexChanged(QString )
|
||||
@@ -1377,8 +1373,8 @@ void MainWindow::bonjourInstallFinished()
|
||||
|
||||
void MainWindow::on_windowShown()
|
||||
{
|
||||
if (!m_AppConfig.activationHasRun() && (m_AppConfig.edition() == Unregistered)) {
|
||||
ActivationDialog activationDialog (this, m_AppConfig);
|
||||
if (!m_AppConfig->activationHasRun() && (m_AppConfig->edition() == Unregistered)) {
|
||||
ActivationDialog activationDialog (this, appConfig(), subscriptionManager());
|
||||
activationDialog.exec();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,6 +58,7 @@ class ZeroconfService;
|
||||
class DataDownloader;
|
||||
class CommandProcess;
|
||||
class SslCertificate;
|
||||
class SubscriptionManager;
|
||||
|
||||
class MainWindow : public QMainWindow, public Ui::MainWindowBase
|
||||
{
|
||||
@@ -94,7 +95,8 @@ class MainWindow : public QMainWindow, public Ui::MainWindowBase
|
||||
};
|
||||
|
||||
public:
|
||||
MainWindow(QSettings& settings, AppConfig& appConfig);
|
||||
MainWindow(QSettings& settings, AppConfig& appConfig,
|
||||
SubscriptionManager& subscriptionManager);
|
||||
~MainWindow();
|
||||
|
||||
public:
|
||||
@@ -116,6 +118,7 @@ class MainWindow : public QMainWindow, public Ui::MainWindowBase
|
||||
void updateZeroconfService();
|
||||
void serverDetected(const QString name);
|
||||
void updateLocalFingerprint();
|
||||
SubscriptionManager& subscriptionManager() const;
|
||||
|
||||
public slots:
|
||||
void setEdition(int edition);
|
||||
@@ -145,7 +148,7 @@ class MainWindow : public QMainWindow, public Ui::MainWindowBase
|
||||
|
||||
protected:
|
||||
QSettings& settings() { return m_Settings; }
|
||||
AppConfig& appConfig() { return m_AppConfig; }
|
||||
AppConfig& appConfig() { return *m_AppConfig; }
|
||||
QProcess* synergyProcess() { return m_pSynergy; }
|
||||
void setSynergyProcess(QProcess* p) { m_pSynergy = p; }
|
||||
void initConnections();
|
||||
@@ -188,7 +191,8 @@ class MainWindow : public QMainWindow, public Ui::MainWindowBase
|
||||
|
||||
private:
|
||||
QSettings& m_Settings;
|
||||
AppConfig& m_AppConfig;
|
||||
AppConfig* m_AppConfig;
|
||||
SubscriptionManager* m_SubscriptionManager;
|
||||
QProcess* m_pSynergy;
|
||||
int m_SynergyState;
|
||||
ServerConfig m_ServerConfig;
|
||||
|
||||
@@ -51,9 +51,6 @@ getEditionName (int edition) {
|
||||
else if (edition == Pro) {
|
||||
return "Synergy Pro";
|
||||
}
|
||||
else if (edition == Trial) {
|
||||
return "Synergy Trial";
|
||||
}
|
||||
else {
|
||||
return "Synergy (UNREGISTERED)";
|
||||
}
|
||||
|
||||
@@ -16,152 +16,20 @@
|
||||
*/
|
||||
|
||||
#include "SubscriptionManager.h"
|
||||
|
||||
|
||||
#include "CoreInterface.h"
|
||||
#include "EditionType.h"
|
||||
#include "AppConfig.h"
|
||||
#include <ctime>
|
||||
|
||||
#include <QMessageBox>
|
||||
#include <QDir>
|
||||
#include <QFile>
|
||||
#include <QDateTime>
|
||||
#include <QDate>
|
||||
|
||||
static const char purchaseURL[] = "https://symless.com/account/";
|
||||
|
||||
SubscriptionManager::SubscriptionManager(QWidget* parent, AppConfig& appConfig, int& edition) :
|
||||
m_pParent(parent),
|
||||
m_AppConfig(appConfig),
|
||||
m_Edition(edition)
|
||||
{
|
||||
SubscriptionManager::SubscriptionManager(AppConfig* appConfig) :
|
||||
m_AppConfig(appConfig) {
|
||||
}
|
||||
|
||||
bool SubscriptionManager::activateSerial(const QString& serial)
|
||||
void
|
||||
SubscriptionManager::setSerialKey(QString serialKeyString)
|
||||
{
|
||||
m_Edition = Unregistered;
|
||||
persistDirectory();
|
||||
CoreInterface coreInterface;
|
||||
QString output;
|
||||
|
||||
try
|
||||
{
|
||||
output = coreInterface.activateSerial(serial);
|
||||
}
|
||||
catch (std::exception& e)
|
||||
{
|
||||
m_ErrorMessage = e.what();
|
||||
checkError(m_ErrorMessage);
|
||||
return false;
|
||||
}
|
||||
|
||||
checkOutput(output);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool SubscriptionManager::checkSubscription()
|
||||
{
|
||||
m_Edition = Unregistered;
|
||||
persistDirectory();
|
||||
CoreInterface coreInterface;
|
||||
QString output;
|
||||
try
|
||||
{
|
||||
output = coreInterface.checkSubscription();
|
||||
}
|
||||
catch (std::exception& e)
|
||||
{
|
||||
m_ErrorMessage = e.what();
|
||||
checkError(m_ErrorMessage);
|
||||
return false;
|
||||
}
|
||||
|
||||
checkOutput(output);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool SubscriptionManager::fileExists()
|
||||
{
|
||||
CoreInterface coreInterface;
|
||||
QString serialKeyFilePath = coreInterface.getSerialKeyFilePath();
|
||||
|
||||
return QFile::exists(serialKeyFilePath);
|
||||
}
|
||||
|
||||
void SubscriptionManager::checkError(QString& error)
|
||||
{
|
||||
if (error.contains("trial has expired")) {
|
||||
QMessageBox::warning(m_pParent, tr("Subscription warning"),
|
||||
tr("Your trial has expired. Click <a href='%1'>here</a> to purchase").arg(purchaseURL));
|
||||
}
|
||||
else {
|
||||
QMessageBox::warning(m_pParent, tr("Subscription error"),
|
||||
tr("An error occurred while trying to activate Synergy using your serial key. "
|
||||
"Please contact the helpdesk, and provide the "
|
||||
"following details.\n\n%1").arg(error));
|
||||
}
|
||||
}
|
||||
|
||||
void SubscriptionManager::checkOutput(QString& output)
|
||||
{
|
||||
getEditionType(output);
|
||||
checkExpiring(output);
|
||||
}
|
||||
|
||||
void SubscriptionManager::getEditionType(QString& output)
|
||||
{
|
||||
if (output.contains("pro subscription valid")) {
|
||||
m_Edition = Pro;
|
||||
}
|
||||
else if (output.contains("basic subscription valid")) {
|
||||
m_Edition = Basic;
|
||||
}
|
||||
else if (output.contains("trial subscription valid")) {
|
||||
m_Edition = Trial;
|
||||
}
|
||||
}
|
||||
|
||||
void SubscriptionManager::checkExpiring(QString& output)
|
||||
{
|
||||
if (output.contains("trial will end in") && shouldWarnExpiring()) {
|
||||
QRegExp dayLeftRegex(".*trial will end in ([0-9]+) day.*");
|
||||
if (dayLeftRegex.exactMatch(output)) {
|
||||
QString dayLeft = dayLeftRegex.cap(1);
|
||||
|
||||
QMessageBox::warning(m_pParent, tr("Subscription warning"),
|
||||
tr("Your trial will end in %1 %2. Click <a href='%3'>here</a> to purchase")
|
||||
.arg(dayLeft)
|
||||
.arg(dayLeft == "1" ? "day" : "days")
|
||||
.arg(purchaseURL));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool SubscriptionManager::shouldWarnExpiring()
|
||||
{
|
||||
// warn users about expiring subscription once a day
|
||||
int lastExpiringWarningTime = m_AppConfig.lastExpiringWarningTime();
|
||||
QDateTime currentDateTime = QDateTime::currentDateTime();
|
||||
int currentTime = currentDateTime.toTime_t();
|
||||
const int secondPerDay = 60 * 60 * 24;
|
||||
bool result = false;
|
||||
if ((currentTime - lastExpiringWarningTime) > secondPerDay) {
|
||||
result = true;
|
||||
m_AppConfig.setLastExpiringWarningTime(currentTime);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void SubscriptionManager::persistDirectory()
|
||||
{
|
||||
CoreInterface coreInterface;
|
||||
QString profileDir = coreInterface.getProfileDir();
|
||||
|
||||
QDir dir(profileDir);
|
||||
if (!dir.exists()) {
|
||||
dir.mkpath(".");
|
||||
SerialKey serialKey (serialKeyString.toStdString());
|
||||
if (serialKey.isValid (::time(0)) && (serialKey != m_serialKey)) {
|
||||
m_AppConfig->setSerialKey (serialKeyString);
|
||||
emit serialKeyChanged (serialKey);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,31 +17,23 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QWidget>
|
||||
#include <QObject>
|
||||
#include <SerialKey.h>
|
||||
|
||||
class AppConfig;
|
||||
|
||||
class SubscriptionManager : public QWidget
|
||||
class SubscriptionManager: public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
SubscriptionManager(QWidget* parent, AppConfig& appConfig, int& edition);
|
||||
|
||||
bool activateSerial(const QString& serial);
|
||||
bool checkSubscription();
|
||||
bool fileExists();
|
||||
QString getLastError(){ return m_ErrorMessage; }
|
||||
SubscriptionManager (AppConfig* appConfig);
|
||||
void setSerialKey (QString serialKey);
|
||||
|
||||
private:
|
||||
void checkError(QString& error);
|
||||
void checkOutput(QString& output);
|
||||
void getEditionType(QString& output);
|
||||
void checkExpiring(QString& output);
|
||||
bool shouldWarnExpiring();
|
||||
void persistDirectory();
|
||||
|
||||
private:
|
||||
QString m_ErrorMessage;
|
||||
QWidget* m_pParent;
|
||||
AppConfig& m_AppConfig;
|
||||
int& m_Edition;
|
||||
AppConfig* m_AppConfig;
|
||||
SerialKey m_serialKey;
|
||||
|
||||
signals:
|
||||
void serialKeyChanged (SerialKey);
|
||||
};
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#define TRAY_RETRY_WAIT 2000
|
||||
|
||||
#include "QSynergyApplication.h"
|
||||
#include "SubscriptionManager.h"
|
||||
#include "MainWindow.h"
|
||||
#include "AppConfig.h"
|
||||
#include "SetupWizard.h"
|
||||
@@ -82,11 +83,12 @@ int main(int argc, char* argv[])
|
||||
#endif
|
||||
|
||||
QSettings settings;
|
||||
AppConfig appConfig(&settings);
|
||||
AppConfig appConfig (&settings);
|
||||
SubscriptionManager subscriptionManager (&appConfig);
|
||||
|
||||
app.switchTranslator(appConfig.language());
|
||||
|
||||
MainWindow mainWindow(settings, appConfig);
|
||||
MainWindow mainWindow(settings, appConfig, subscriptionManager);
|
||||
SetupWizard setupWizard(mainWindow, true);
|
||||
|
||||
if (appConfig.wizardShouldRun())
|
||||
|
||||
Reference in New Issue
Block a user