1 /* 2 * %kadu copyright begin% 3 * Copyright 2011 Piotr Galiszewski (piotr.galiszewski@kadu.im) 4 * Copyright 2012 Wojciech Treter (juzefwt@gmail.com) 5 * Copyright 2011, 2013 Bartosz Brachaczek (b.brachaczek@gmail.com) 6 * Copyright 2011, 2012, 2013, 2014 Rafał Przemysław Malinowski (rafal.przemyslaw.malinowski@gmail.com) 7 * %kadu copyright end% 8 * 9 * This program is free software; you can redistribute it and/or 10 * modify it under the terms of the GNU General Public License as 11 * published by the Free Software Foundation; either version 2 of 12 * the License, or (at your option) any later version. 13 * 14 * This program is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Public License for more details. 18 * 19 * You should have received a copy of the GNU General Public License 20 * along with this program. If not, see <http://www.gnu.org/licenses/>. 21 */ 22 23 #pragma once 24 25 #include "services/jabber-avatar-service.h" 26 #include "services/jabber-contact-personal-info-service.h" 27 #include "services/jabber-file-transfer-service.h" 28 #include "services/jabber-personal-info-service.h" 29 #include "services/jabber-subscription-service.h" 30 #include "jabber-account-details.h" 31 32 #include "protocols/protocol.h" 33 #include "protocols/services/chat-service.h" 34 35 #include <injeqt/injeqt.h> 36 #include <qxmpp/QXmppClient.h> 37 38 class PluginInjectedFactory;class JabberChangePasswordService; 39 class JabberErrorService; 40 class JabberPresenceService; 41 class JabberRegisterExtension; 42 class JabberResourceService; 43 class JabberRoomChatService; 44 class JabberRosterExtension; 45 class JabberStreamDebugService; 46 class SystemInfo; 47 class VersionService; 48 49 class QXmppClient; 50 class QXmppMucManager; 51 class QXmppTransferManager; 52 53 class JabberProtocol : public Protocol 54 { 55 Q_OBJECT 56 57 public: 58 explicit JabberProtocol(Account account, ProtocolFactory *factory); 59 virtual ~JabberProtocol(); 60 61 void setContactsListReadOnly(bool contactsListReadOnly); contactsListReadOnly()62 virtual bool contactsListReadOnly() override { return m_contactsListReadOnly; } 63 64 virtual QString statusPixmapPath() override; 65 avatarService()66 virtual AvatarService * avatarService() override { return m_avatarService; } contactPersonalInfoService()67 virtual ContactPersonalInfoService * contactPersonalInfoService() override { return m_contactPersonalInfoService; } fileTransferService()68 virtual FileTransferService * fileTransferService() override { return m_fileTransferService; } personalInfoService()69 virtual PersonalInfoService * personalInfoService() override { return m_personalInfoService; } subscriptionService()70 virtual SubscriptionService * subscriptionService() override { return m_subscriptionService; } streamDebugService()71 virtual JabberStreamDebugService * streamDebugService() { return m_streamDebugService; } vcardService()72 virtual JabberVCardService * vcardService() { return m_vcardService; } 73 74 JabberChangePasswordService * changePasswordService() const; 75 76 signals: 77 void userStatusChangeIgnored(Buddy); 78 79 protected: 80 virtual void login() override; 81 virtual void logout() override; 82 virtual void sendStatusToServer() override; 83 84 virtual void changePrivateMode() override; 85 86 private: 87 QPointer<SystemInfo> m_systemInfo; 88 QPointer<VersionService> m_versionService; 89 90 JabberAvatarService *m_avatarService; 91 JabberChangePasswordService *m_changePasswordService; 92 JabberContactPersonalInfoService *m_contactPersonalInfoService; 93 JabberErrorService *m_errorService; 94 JabberFileTransferService *m_fileTransferService; 95 JabberPersonalInfoService *m_personalInfoService; 96 JabberSubscriptionService *m_subscriptionService; 97 JabberPresenceService *m_presenceService; 98 JabberRoomChatService *m_roomChatService; 99 JabberStreamDebugService *m_streamDebugService; 100 JabberVCardService *m_vcardService; 101 JabberResourceService *m_resourceService; 102 103 QXmppClient *m_client; 104 std::unique_ptr<JabberRegisterExtension> m_registerExtension; 105 std::unique_ptr<JabberRosterExtension> m_rosterExtension; 106 std::unique_ptr<QXmppMucManager> m_mucManager; 107 std::unique_ptr<QXmppTransferManager> m_transferManager; 108 109 bool m_contactsListReadOnly; 110 111 private slots: 112 INJEQT_SET void setSystemInfo(SystemInfo *systemInfo); 113 INJEQT_SET void setVersionService(VersionService *versionService); 114 INJEQT_INIT void init(); 115 116 void connectedToServer(); 117 void disconenctedFromServer(); 118 void error(QXmppClient::Error error); 119 120 void rosterReady(); 121 122 void updatePresence(); 123 void presenceReceived(const QXmppPresence &presence); 124 125 }; 126