// TODO: support system application proxy (new in Qt 4.6)
#include "QPointer"
+#include "QTimer"
#ifdef HAVE_SSL
# include <QSslSocket>
# include <QTcpSocket>
#endif
+#ifdef HAVE_KDE
+# include <Solid/Networking>
+#endif
+
#include "coreaccount.h"
#include "types.h"
void init();
- inline ConnectionState state() const;
inline bool isConnected() const;
+ inline ConnectionState state() const;
inline CoreAccount currentAccount() const;
bool isEncrypted() const;
+ bool isLocalConnection() const;
inline int progressMinimum() const;
inline int progressMaximum() const;
inline int progressValue() const;
inline QString progressText() const;
+ //! Check if we consider the last connect as reconnect
+ inline bool wasReconnect() const { return _wasReconnect; }
+
#ifdef HAVE_SSL
inline const QSslSocket *sslSocket() const;
#endif
void stateChanged(CoreConnection::ConnectionState);
void encrypted(bool isEncrypted = true);
void synchronized();
+ void lagUpdated(int msecs);
void connectionError(const QString &errorMsg);
+ void connectionErrorPopup(const QString &errorMsg);
void connectionWarnings(const QStringList &warnings);
void connectionMsg(const QString &msg);
void disconnected();
void progressTextChanged(const QString &);
void startCoreSetup(const QVariantList &);
+ void coreSetupSuccess();
+ void coreSetupFailed(const QString &error);
+
void startInternalCore();
void connectToInternalCore(SignalProxy *proxy);
private slots:
void connectToCurrentAccount();
+ void disconnectFromCore(const QString &errorString, bool wantReconnect = true);
void socketStateChanged(QAbstractSocket::SocketState);
void coreSocketError(QAbstractSocket::SocketError);
void internalSessionStateReceived(const QVariant &packedState);
void sessionStateReceived(const QVariantMap &state);
- void resetConnection();
+ void resetConnection(bool wantReconnect = false);
void connectionReady();
- //void doCoreSetup(const QVariant &setupData);
+ void loginToCore(const QString &user, const QString &password, bool remember); // for config wizard
void loginToCore(const QString &previousError = QString());
void loginSuccess();
void loginFailed(const QString &errorMessage);
+ void doCoreSetup(const QVariant &setupData);
+
void updateProgress(int value, int maximum);
void setProgressText(const QString &text);
void setProgressValue(int value);
void sslErrors();
#endif
+ void networkDetectionModeChanged(const QVariant &mode);
+ void pingTimeoutIntervalChanged(const QVariant &interval);
+ void reconnectIntervalChanged(const QVariant &interval);
+ void reconnectTimeout();
+
+#ifdef HAVE_KDE
+ void solidNetworkStatusChanged(Solid::Networking::Status status);
+#endif
+
private:
CoreAccountModel *_model;
CoreAccount _account;
QVariantMap _coreMsgBuffer;
- QPointer<QIODevice> _socket;
+ QPointer<QAbstractSocket> _socket;
quint32 _blockSize;
ConnectionState _state;
- QSet<Network *> _netsToSync;
+ QTimer _reconnectTimer;
+ bool _wantReconnect;
+
+ QSet<QObject *> _netsToSync;
int _numNetsToSync;
int _progressMinimum, _progressMaximum, _progressValue;
QString _progressText;
QString _coreInfoString(const QVariantMap &);
+ bool _wasReconnect;
+ bool _requestedDisconnect;
inline CoreAccountModel *accountModel() const;
+
+ friend class CoreConfigWizard;
};
Q_DECLARE_METATYPE(CoreConnection::ConnectionState)