123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- /*
- * Copyright 2021, Jaidyn Levesque <jadedctrl@teknik.io>
- * All rights reserved. Distributed under the terms of the MIT license.
- */
- #ifndef CONVERSATION_H
- #define CONVERSATION_H
- #include <DateTimeFormat.h>
- #include <Messenger.h>
- #include <Path.h>
- #include <StringList.h>
- #include <libsupport/KeyMap.h>
- #include "Observer.h"
- #include "Role.h"
- #include "Server.h"
- #include "User.h"
- class BBitmap;
- class ConversationItem;
- class ConversationView;
- class ProtocolLooper;
- class Server;
- typedef KeyMap<BString, User*> UserMap;
- typedef KeyMap<BString, Role*> RoleMap;
- class Conversation : public Notifier, public Observer {
- public:
- Conversation(BString id, BMessenger msgn);
- ~Conversation();
- BString GetId() const;
- void ImMessage(BMessage* msg);
- // Tell the ConversationView to invalidate user list
- void ObserveString(int32 what, BString str);
- void ObserveInteger(int32 what, int32 value);
- void ObservePointer(int32 what, void* ptr);
- void SetNotifyName(const char* name);
- void SetNotifySubject(const char* subject);
- bool SetNotifyIconBitmap(BBitmap* icon);
- BMessenger Messenger() const;
- void SetMessenger(BMessenger messenger);
- ProtocolLooper* GetProtocolLooper() const;
- void SetProtocolLooper(ProtocolLooper* looper);
- BString GetName() const;
- BString GetSubject() const;
- BBitmap* ProtocolBitmap() const;
- BBitmap* IconBitmap() const;
- ConversationView* GetView();
- void ShowView(bool typing, bool userAction);
- ConversationItem* GetListItem();
- UserMap Users();
- User* UserById(BString id);
- Contact* GetOwnContact();
- void AddUser(User* user);
- void RemoveUser(User* user);
- void SetRole(BString id, Role* role);
- Role* GetRole(BString id);
- int32 GetFlags() { return fRoomFlags; }
- void SetFlags(int32 flags);
- int32 DisallowedFlags() { return fDisallowedFlags; }
- private:
- void _WarnUser(BString message);
- void _LogChatMessage(BMessage* msg);
- status_t _GetChatLogs(BMessage* msg);
- void _CacheRoomFlags();
- void _LoadRoomFlags();
- void _EnsureCachePath();
- User* _EnsureUser(BMessage* msg, bool implicit = true);
- Role* _GetRole(BMessage* msg);
- void _UpdateIcon(User* user = NULL);
- bool _IsDefaultIcon(BBitmap* icon);
- void _SortConversationList();
- Server* _GetServer();
- BMessenger fMessenger;
- ProtocolLooper* fLooper;
- ConversationView* fChatView;
- ConversationItem* fConversationItem;
- int32 fNotifyMessageCount;
- int32 fNotifyMentionCount;
- BString fID;
- BString fName;
- BString fSubject;
- BBitmap* fIcon;
- bool fUserIcon;
- BPath fCachePath;
- BDateTimeFormat fDateFormatter;
- int32 fRoomFlags;
- int32 fDisallowedFlags;
- UserMap fUsers; // For defined, certain members of the room
- BStringList fGuests; // IDs of implicitly-defined users
- RoleMap fRoles;
- };
- #endif // CONVERSATION_H
|