Chat-O-Matic/application/Server.h
Jaidyn Ann 89ff195c8d Set room topic/name through conversation view
If the user has permission to change a room's subject or name, they can
now edit the text views displaying them (toward the top of the window).
When enter is pressed, the changes will be sent to the protocol.

To do this, a BTextView subclass was added to libinterface
(splitting somewhat from SendTextView)― EnterTextView sends a message
containing the text to the given target when the user hits enter sans
modifiers.
2021-07-29 22:00:01 -05:00

101 lines
2.8 KiB
C++

/*
* Copyright 2009-2011, Andrea Anzani. All rights reserved.
* Copyright 2009-2011, Pier Luigi Fiorini. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _SERVER_H
#define _SERVER_H
#include <Message.h>
#include <MessageFilter.h>
#include <Notification.h>
#include <libsupport/KeyMap.h>
#include "AppConstants.h"
#include "ChatCommand.h"
#include "Contact.h"
#include "Conversation.h"
#include "Notifier.h"
#include "ProtocolLooper.h"
#include "User.h"
class ChatProtocol;
class RosterItem;
class ProtocolLooper;
typedef KeyMap<bigtime_t, ProtocolLooper*> ProtocolLoopers;
typedef KeyMap<BString, bigtime_t> AccountInstances;
typedef KeyMap<BString, bool> BoolMap;
class Server: public BMessageFilter, public Notifier {
public:
Server();
void Quit();
void LoginAll();
virtual filter_result Filter(BMessage* message, BHandler** target);
filter_result ImMessage(BMessage* msg);
void ImError(BMessage* msg);
void AddProtocolLooper(bigtime_t instanceId,
ChatProtocol* cayap);
void RemoveProtocolLooper(bigtime_t instanceId);
ProtocolLooper* GetProtocolLooper(bigtime_t instanceId);
AccountInstances GetAccounts();
AccountInstances GetActiveAccounts();
void SendProtocolMessage(BMessage* msg);
void SendAllProtocolMessage(BMessage* msg);
RosterMap Contacts() const;
Contact* ContactById(BString id, int64 instance);
void AddContact(Contact* contact, int64 instance);
UserMap Users() const;
User* UserById(BString id, int64 instance);
void AddUser(User* user, int64 instance);
ChatMap Conversations() const;
Conversation* ConversationById(BString id, int64 instance);
void AddConversation(Conversation* chat, int64 instance);
ChatCommand* CommandById(BString id, int64 instance);
BObjectList<BMessage> ChatPopUpItems();
BObjectList<BMessage> UserPopUpItems();
private:
ProtocolLooper* _LooperFromMessage(BMessage* message);
Contact* _EnsureContact(BMessage* message);
User* _EnsureUser(BMessage* message);
User* _EnsureUser(BString id, ProtocolLooper* protoLooper);
Contact* _GetOwnContact(BMessage* message);
Conversation* _EnsureConversation(BMessage* message);
void _ProtocolNotification(ProtocolLooper* looper,
BString title, BString desc,
notification_type type=B_INFORMATION_NOTIFICATION);
void _SendNotification(BString title, BString content,
BBitmap* icon=NULL,
notification_type type=B_INFORMATION_NOTIFICATION);
void _ReplicantStatusNotify(UserStatus status);
ProtocolLoopers fLoopers;
AccountInstances fAccounts;
BoolMap fAccountEnabled;
CommandMap fCommands;
BObjectList<BMessage> fChatItems;
BObjectList<BMessage> fUserItems;
};
#endif // _SERVER_H