diff --git a/cockatrice/src/dlg_settings.cpp b/cockatrice/src/dlg_settings.cpp index e7d466791..fe5ac7be1 100644 --- a/cockatrice/src/dlg_settings.cpp +++ b/cockatrice/src/dlg_settings.cpp @@ -398,12 +398,16 @@ UserInterfaceSettingsPage::UserInterfaceSettingsPage() annotateTokensCheckBox.setChecked(settingsCache->getAnnotateTokens()); connect(&annotateTokensCheckBox, SIGNAL(stateChanged(int)), settingsCache, SLOT(setAnnotateTokens(int))); + idleClientTimeOutCheckBox.setChecked(settingsCache->getIdleClientTimeOutEnabled()); + connect(&idleClientTimeOutCheckBox, SIGNAL(stateChanged(int)), settingsCache, SLOT(setIdleClientTimeOutEnabled(int))); + QGridLayout *generalGrid = new QGridLayout; generalGrid->addWidget(¬ificationsEnabledCheckBox, 0, 0); generalGrid->addWidget(&specNotificationsEnabledCheckBox, 1, 0); generalGrid->addWidget(&doubleClickToPlayCheckBox, 2, 0); generalGrid->addWidget(&playToStackCheckBox, 3, 0); generalGrid->addWidget(&annotateTokensCheckBox, 4, 0); + generalGrid->addWidget(&idleClientTimeOutCheckBox, 5, 0); generalGroupBox = new QGroupBox; generalGroupBox->setLayout(generalGrid); @@ -438,6 +442,7 @@ void UserInterfaceSettingsPage::retranslateUi() annotateTokensCheckBox.setText(tr("Annotate card text on tokens")); animationGroupBox->setTitle(tr("Animation settings")); tapAnimationCheckBox.setText(tr("&Tap/untap animation")); + idleClientTimeOutCheckBox.setText(tr("Disconnect from server if idle for 1 hour")); } diff --git a/cockatrice/src/dlg_settings.h b/cockatrice/src/dlg_settings.h index 52d3c9ba0..62d735217 100644 --- a/cockatrice/src/dlg_settings.h +++ b/cockatrice/src/dlg_settings.h @@ -112,6 +112,7 @@ private: QCheckBox playToStackCheckBox; QCheckBox annotateTokensCheckBox; QCheckBox tapAnimationCheckBox; + QCheckBox idleClientTimeOutCheckBox; QGroupBox *generalGroupBox; QGroupBox *animationGroupBox; diff --git a/cockatrice/src/remoteclient.cpp b/cockatrice/src/remoteclient.cpp index 05c0f938f..9ce554805 100644 --- a/cockatrice/src/remoteclient.cpp +++ b/cockatrice/src/remoteclient.cpp @@ -35,7 +35,7 @@ RemoteClient::RemoteClient(QObject *parent) idleTimer->setInterval(idlekeepalive * 1000); connect(idleTimer, SIGNAL(timeout()), this, SLOT(doIdleTimeOut())); connect(this, SIGNAL(resetIdleTimerClock()), idleTimer, SLOT(start())); - + socket = new QTcpSocket(this); socket->setSocketOption(QAbstractSocket::LowDelayOption, 1); connect(socket, SIGNAL(connected()), this, SLOT(slotConnected())); @@ -390,8 +390,11 @@ QString RemoteClient::getSrvClientID(const QString _hostname) void RemoteClient::doIdleTimeOut() { - doDisconnectFromServer(); - emit idleTimeout(); + if (settingsCache->getIdleClientTimeOutEnabled()) { + doDisconnectFromServer(); + emit idleTimeout(); + } + } void RemoteClient::resetIdleTimer() diff --git a/cockatrice/src/settingscache.cpp b/cockatrice/src/settingscache.cpp index 9b91c2515..3cc34d8b4 100644 --- a/cockatrice/src/settingscache.cpp +++ b/cockatrice/src/settingscache.cpp @@ -250,6 +250,7 @@ SettingsCache::SettingsCache() spectatorsCanSeeEverything = settings->value("game/spectatorscanseeeverything", false).toBool(); rememberGameSettings = settings->value("game/remembergamesettings", true).toBool(); clientID = settings->value("personal/clientid", "notset").toString(); + idleClientTimeOutEnabled = settings->value("interface/idleClientTimeOutEnabled", true).toBool(); } void SettingsCache::setCardInfoViewMode(const int _viewMode) { @@ -391,6 +392,12 @@ void SettingsCache::setAnnotateTokens(int _annotateTokens) settings->setValue("interface/annotatetokens", annotateTokens); } +void SettingsCache::setIdleClientTimeOutEnabled(int _idleClientTimeOutEnabled) +{ + idleClientTimeOutEnabled = _idleClientTimeOutEnabled; + settings->setValue("interface/idleClientTimeOutEnabled", idleClientTimeOutEnabled); +} + void SettingsCache::setTabGameSplitterSizes(const QByteArray &_tabGameSplitterSizes) { tabGameSplitterSizes = _tabGameSplitterSizes; diff --git a/cockatrice/src/settingscache.h b/cockatrice/src/settingscache.h index 46318bf27..f350cf759 100644 --- a/cockatrice/src/settingscache.h +++ b/cockatrice/src/settingscache.h @@ -64,6 +64,7 @@ private: bool doubleClickToPlay; bool playToStack; bool annotateTokens; + bool idleClientTimeOutEnabled; QByteArray tabGameSplitterSizes; bool displayCardNames; bool horizontalHand; @@ -131,6 +132,7 @@ public: bool getNotificationsEnabled() const { return notificationsEnabled; } bool getSpectatorNotificationsEnabled() const { return spectatorNotificationsEnabled; } bool getNotifyAboutUpdates() const { return notifyAboutUpdates; } + bool getIdleClientTimeOutEnabled() const { return idleClientTimeOutEnabled; } bool getDoubleClickToPlay() const { return doubleClickToPlay; } bool getPlayToStack() const { return playToStack; } @@ -207,6 +209,7 @@ public slots: void setDoubleClickToPlay(int _doubleClickToPlay); void setPlayToStack(int _playToStack); void setAnnotateTokens(int _annotateTokens); + void setIdleClientTimeOutEnabled(int _idleClientTimeOutEnabled); void setTabGameSplitterSizes(const QByteArray &_tabGameSplitterSizes); void setDisplayCardNames(int _displayCardNames); void setHorizontalHand(int _horizontalHand);