ProtocolLooper.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /*
  2. * Copyright 2009-2011, Andrea Anzani. All rights reserved.
  3. * Copyright 2009-2011, Pier Luigi Fiorini. All rights reserved.
  4. * Copyright 2021, Jaidyn Levesque. All rights reserved.
  5. * Distributed under the terms of the MIT License.
  6. */
  7. #ifndef _PROTOCOL_LOOPER_H
  8. #define _PROTOCOL_LOOPER_H
  9. #include <Looper.h>
  10. #include <ObjectList.h>
  11. #include <String.h>
  12. #include <libsupport/KeyMap.h>
  13. #include "ChatProtocol.h"
  14. #include "ChatCommand.h"
  15. class Contact;
  16. class Conversation;
  17. class ConversationAccountItem;
  18. class ConversationView;
  19. class User;
  20. typedef KeyMap<BString, Conversation*> ChatMap;
  21. typedef KeyMap<BString, Contact*> RosterMap;
  22. typedef KeyMap<BString, User*> UserMap;
  23. class ProtocolLooper : public BLooper {
  24. public:
  25. ProtocolLooper(ChatProtocol* protocol, int64 instance);
  26. ~ProtocolLooper();
  27. void MessageReceived(BMessage* msg);
  28. ConversationView*
  29. GetView();
  30. void ShowView();
  31. ChatProtocol* Protocol();
  32. ChatMap Conversations() const;
  33. Conversation* ConversationById(BString id);
  34. void AddConversation(Conversation* chat);
  35. void RemoveConversation(Conversation* chat);
  36. RosterMap Contacts() const;
  37. Contact* ContactById(BString id);
  38. void AddContact(Contact* contact);
  39. void RemoveContact(Contact* contact);
  40. UserMap Users() const;
  41. User* UserById(BString id);
  42. void AddUser(User* user);
  43. CommandMap Commands() const;
  44. ChatCommand* CommandById(BString id);
  45. Contact* GetOwnContact();
  46. void SetOwnContact(Contact* contact);
  47. int64 GetInstance();
  48. ConversationAccountItem*
  49. GetListItem();
  50. void LoadCommands();
  51. private:
  52. void _InitChatView();
  53. ChatProtocol* fProtocol;
  54. int64 fInstance;
  55. Contact* fMySelf;
  56. ChatMap fChatMap;
  57. RosterMap fRosterMap;
  58. UserMap fUserMap;
  59. CommandMap fCommands;
  60. ConversationView*
  61. fSystemChatView;
  62. ConversationAccountItem*
  63. fListItem;
  64. };
  65. #endif // _PROTOCOL_LOOPER_H