c0580dfc17
If the user disables an account, this saves it so that on any subsequent start-ups, the account won't be connected until the user explicitly re-enables it. ProtocolSettings were reworked to allow for publicly loading/saving settings from BMessages, rather than solely from BViews. In addition, all program-side disabling, enabling, and toggling of accounts has been consolidated into ProtocolManager. This makes life easier for other parts of the program that have to do these things anyway.
74 lines
1.9 KiB
C++
74 lines
1.9 KiB
C++
/*
|
|
* Copyright 2009-2011, Andrea Anzani. All rights reserved.
|
|
* Copyright 2009-2011, Pier Luigi Fiorini. All rights reserved.
|
|
* Copyright 2021, Jaidyn Levesque. All rights reserved.
|
|
* Distributed under the terms of the MIT License.
|
|
*/
|
|
#ifndef _PROTOCOL_MANAGER_H
|
|
#define _PROTOCOL_MANAGER_H
|
|
|
|
#include <Path.h>
|
|
#include <String.h>
|
|
|
|
#include <libsupport/KeyMap.h>
|
|
|
|
#include "ChatProtocol.h"
|
|
#include "ChatProtocolAddOn.h"
|
|
|
|
class BBitmap;
|
|
class BDirectory;
|
|
class BHandler;
|
|
|
|
class MainWindow;
|
|
class ProtocolSettings;
|
|
class Server;
|
|
|
|
|
|
class ProtocolManager {
|
|
public:
|
|
bool Init(BDirectory dir, BHandler* target);
|
|
|
|
static ProtocolManager* Get();
|
|
|
|
uint32 CountProtocolAddOns() const;
|
|
ChatProtocolAddOn* ProtocolAddOnAt(uint32 i) const;
|
|
ChatProtocolAddOn* ProtocolAddOn(const char* signature);
|
|
|
|
uint32 CountProtocolInstances() const;
|
|
ChatProtocol* ProtocolInstanceAt(uint32 i) const;
|
|
ChatProtocol* ProtocolInstance(bigtime_t identifier);
|
|
|
|
void AddAccount(ChatProtocolAddOn* addOn,
|
|
const char* account, BHandler* target);
|
|
|
|
void EnableAccount(ProtocolSettings* settings,
|
|
const char* account);
|
|
void DisableAccount(ProtocolSettings* settings,
|
|
const char* account);
|
|
void ToggleAccount(ProtocolSettings* settings,
|
|
const char* account);
|
|
|
|
private:
|
|
typedef KeyMap<BString, ChatProtocolAddOn*> AddOnMap;
|
|
typedef KeyMap<bigtime_t, ChatProtocol*> ProtocolMap;
|
|
|
|
ProtocolManager();
|
|
|
|
void _LoadAccounts(const char* image_path,
|
|
ChatProtocolAddOn* addOn, int protoIndex,
|
|
BHandler* target);
|
|
void _LoadAccount(const char* imagePath,
|
|
BEntry accountEntry, int protoIndex,
|
|
BHandler* target);
|
|
void _LoadAccount(ChatProtocolAddOn* addOn,
|
|
BEntry accountEntry, BHandler* target);
|
|
|
|
MainWindow* _MainWin();
|
|
Server* _Server();
|
|
|
|
AddOnMap fAddOnMap;
|
|
ProtocolMap fProtocolMap;
|
|
};
|
|
|
|
#endif // _PROTOCOL_MANAGER_H
|