1 /*************************************************************************** 2 * Copyright (C) 2005-2020 by the Quassel Project * 3 * devel@quassel-irc.org * 4 * * 5 * This program is free software; you can redistribute it and/or modify * 6 * it under the terms of the GNU General Public License as published by * 7 * the Free Software Foundation; either version 2 of the License, or * 8 * (at your option) version 3. * 9 * * 10 * This program is distributed in the hope that it will be useful, * 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 * GNU General Public License for more details. * 14 * * 15 * You should have received a copy of the GNU General Public License * 16 * along with this program; if not, write to the * 17 * Free Software Foundation, Inc., * 18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * 19 ***************************************************************************/ 20 21 #pragma once 22 23 #include "client-export.h" 24 25 #include <QCoreApplication> 26 #include <QDebug> 27 #include <QNetworkProxy> 28 #include <QUuid> 29 #include <QVariantMap> 30 31 #include "types.h" 32 33 class CLIENT_EXPORT CoreAccount 34 { 35 Q_DECLARE_TR_FUNCTIONS(CoreAccount) 36 37 public: 38 CoreAccount(AccountId accountId = 0); 39 virtual ~CoreAccount() = default; 40 isValid()41 inline bool isValid() const { return accountId().isValid(); } accountId()42 inline AccountId accountId() const { return _accountId; } accountName()43 inline QString accountName() const { return isInternal() ? tr("Internal Core") : _accountName; } uuid()44 inline QUuid uuid() const { return _uuid; } isInternal()45 inline bool isInternal() const { return _internal; } 46 user()47 inline QString user() const { return _user; } storePassword()48 inline bool storePassword() const { return _storePassword; } hostName()49 inline QString hostName() const { return _hostName; } port()50 inline uint port() const { return _port; } 51 proxyType()52 inline QNetworkProxy::ProxyType proxyType() const { return _proxyType; } proxyUser()53 inline QString proxyUser() const { return _proxyUser; } proxyHostName()54 inline QString proxyHostName() const { return _proxyHostName; } proxyPort()55 inline uint proxyPort() const { return _proxyPort; } 56 57 void setAccountId(AccountId id); 58 void setAccountName(const QString& accountName); 59 void setUuid(const QUuid& uuid); 60 void setInternal(bool); 61 62 void setUser(const QString& user); 63 void setStorePassword(bool); 64 void setHostName(const QString& hostname); 65 void setPort(uint port); 66 67 void setProxyType(QNetworkProxy::ProxyType); 68 void setProxyUser(const QString&); 69 void setProxyHostName(const QString&); 70 void setProxyPort(uint); 71 72 /* These might be overridden for KWallet/QtKeychain support */ password()73 virtual inline QString password() const { return _password; } 74 virtual void setPassword(const QString& password); proxyPassword()75 virtual inline QString proxyPassword() const { return _proxyPassword; } 76 virtual void setProxyPassword(const QString&); 77 78 virtual QVariantMap toVariantMap(bool forcePassword = false) const; 79 virtual void fromVariantMap(const QVariantMap&); 80 81 bool operator==(const CoreAccount& other) const; 82 bool operator!=(const CoreAccount& other) const; 83 84 private: 85 AccountId _accountId; 86 QString _accountName; 87 QUuid _uuid; 88 bool _internal; 89 QString _user, _password, _hostName; 90 uint _port; 91 bool _storePassword{}; 92 QNetworkProxy::ProxyType _proxyType; 93 QString _proxyUser, _proxyPassword, _proxyHostName; 94 uint _proxyPort; 95 }; 96 97 QDebug operator<<(QDebug dbg, const CoreAccount& msg); 98