Allow multiple protocols per add-on
Now an add-on can contain multiple protocols, and the protocol API has changed. An add-on must now export protocol_count() and protocol_at(), with the latter replacing protocol(). protocol_count() returning the amount of protocols in a given add-on, and protocol_at(i) giving a new CayaProtocol* "at" the given index. CayaProtocol has also been changed, adding Signature(), FriendlySignature(), Icon(), Path(), and SetPath(). The reasoning is that different protocols (even within a single add-on) will have different signatures and icons, so this data should be accessible from the protocol itself. CayaProtocolAddOn now has CountProtocols() and ProtocolAt(i), allowing the accessing of multiple protocols. A CayaProtocolAddOn can be given a default protocol index in the constructor, whose protocol will be returned with Protocol(). Version() was also moved from CayaProtocol to CayaProtocolAddOn.
This commit is contained in:
parent
53fe03d2c8
commit
61a1f0baf1
|
@ -8,6 +8,8 @@
|
||||||
|
|
||||||
#include <Messenger.h>
|
#include <Messenger.h>
|
||||||
|
|
||||||
|
class BBitmap;
|
||||||
|
|
||||||
// Caya protocol interface version
|
// Caya protocol interface version
|
||||||
#define CAYA_VERSION_1_PRE_ALPHA_1 0x00000001
|
#define CAYA_VERSION_1_PRE_ALPHA_1 0x00000001
|
||||||
#define CAYA_VERSION_1_ALPHA_1 0x00000100
|
#define CAYA_VERSION_1_ALPHA_1 0x00000100
|
||||||
|
@ -42,14 +44,18 @@ public:
|
||||||
//! Protocol name
|
//! Protocol name
|
||||||
virtual const char* FriendlySignature() const = 0;
|
virtual const char* FriendlySignature() const = 0;
|
||||||
|
|
||||||
|
//! Protocol icon
|
||||||
|
virtual BBitmap* Icon() const = 0;
|
||||||
|
|
||||||
|
//! Add-on's path
|
||||||
|
virtual void SetPath(BPath path) = 0;
|
||||||
|
virtual BPath Path() = 0;
|
||||||
|
|
||||||
//! Preferred encoding of messages
|
//! Preferred encoding of messages
|
||||||
virtual uint32 GetEncoding() = 0;
|
virtual uint32 GetEncoding() = 0;
|
||||||
|
|
||||||
//! Messenger interface used
|
//! Messenger interface used
|
||||||
virtual CayaProtocolMessengerInterface* MessengerInterface() const = 0;
|
virtual CayaProtocolMessengerInterface* MessengerInterface() const = 0;
|
||||||
|
|
||||||
//! Caya interface version
|
|
||||||
virtual uint32 Version() const = 0;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _CAYA_PROTOCOL_H
|
#endif // _CAYA_PROTOCOL_H
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <Bitmap.h>
|
#include <Bitmap.h>
|
||||||
|
#include <Path.h>
|
||||||
|
|
||||||
#include <libinterface/BitmapUtils.h>
|
#include <libinterface/BitmapUtils.h>
|
||||||
|
|
||||||
|
@ -15,11 +16,12 @@
|
||||||
#include "CayaProtocolAddOn.h"
|
#include "CayaProtocolAddOn.h"
|
||||||
|
|
||||||
|
|
||||||
CayaProtocolAddOn::CayaProtocolAddOn(image_id image, const char* path)
|
CayaProtocolAddOn::CayaProtocolAddOn(image_id image, const char* path, int32 subProto)
|
||||||
:
|
:
|
||||||
fImage(image),
|
fImage(image),
|
||||||
fPath(path),
|
fPath(path),
|
||||||
fIcon(NULL)
|
fIcon(NULL),
|
||||||
|
fProtoIndex(subProto)
|
||||||
{
|
{
|
||||||
_Init();
|
_Init();
|
||||||
}
|
}
|
||||||
|
@ -42,7 +44,23 @@ CayaProtocolAddOn::Path() const
|
||||||
CayaProtocol*
|
CayaProtocol*
|
||||||
CayaProtocolAddOn::Protocol() const
|
CayaProtocolAddOn::Protocol() const
|
||||||
{
|
{
|
||||||
return fGetProtocol();
|
return ProtocolAt(fProtoIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CayaProtocol*
|
||||||
|
CayaProtocolAddOn::ProtocolAt(int32 i) const
|
||||||
|
{
|
||||||
|
CayaProtocol* proto = fGetProtocol(i);
|
||||||
|
proto->SetPath(BPath(fPath.String()));
|
||||||
|
return proto;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int32
|
||||||
|
CayaProtocolAddOn::CountProtocols() const
|
||||||
|
{
|
||||||
|
return fCountProtocols();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -60,6 +78,13 @@ CayaProtocolAddOn::FriendlySignature() const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint32
|
||||||
|
CayaProtocolAddOn::Version() const
|
||||||
|
{
|
||||||
|
return fVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
BBitmap*
|
BBitmap*
|
||||||
CayaProtocolAddOn::Icon() const
|
CayaProtocolAddOn::Icon() const
|
||||||
{
|
{
|
||||||
|
@ -72,16 +97,24 @@ CayaProtocolAddOn::_Init()
|
||||||
{
|
{
|
||||||
const char* (*signature)();
|
const char* (*signature)();
|
||||||
const char* (*friendly_signature)();
|
const char* (*friendly_signature)();
|
||||||
|
uint32 (*version)();
|
||||||
|
|
||||||
fStatus = B_OK;
|
fStatus = B_OK;
|
||||||
|
|
||||||
if (get_image_symbol(fImage, "protocol", B_SYMBOL_TYPE_TEXT,
|
if (get_image_symbol(fImage, "protocol_at", B_SYMBOL_TYPE_TEXT,
|
||||||
(void**)&fGetProtocol) != B_OK) {
|
(void**)&fGetProtocol) != B_OK) {
|
||||||
unload_add_on(fImage);
|
unload_add_on(fImage);
|
||||||
fStatus = B_ERROR;
|
fStatus = B_ERROR;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (get_image_symbol(fImage, "protocol_count", B_SYMBOL_TYPE_TEXT,
|
||||||
|
(void**)&fCountProtocols) != B_OK) {
|
||||||
|
unload_add_on(fImage);
|
||||||
|
fStatus = B_ERROR;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (get_image_symbol(fImage, "signature", B_SYMBOL_TYPE_TEXT,
|
if (get_image_symbol(fImage, "signature", B_SYMBOL_TYPE_TEXT,
|
||||||
(void**)&signature) != B_OK) {
|
(void**)&signature) != B_OK) {
|
||||||
unload_add_on(fImage);
|
unload_add_on(fImage);
|
||||||
|
@ -96,6 +129,14 @@ CayaProtocolAddOn::_Init()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (get_image_symbol(fImage, "version", B_SYMBOL_TYPE_TEXT,
|
||||||
|
(void**)&version) != B_OK) {
|
||||||
|
unload_add_on(fImage);
|
||||||
|
fStatus = B_ERROR;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
fSignature = signature();
|
fSignature = signature();
|
||||||
fFriendlySignature = friendly_signature();
|
fFriendlySignature = friendly_signature();
|
||||||
|
fVersion = version();
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,27 +10,36 @@
|
||||||
#include <String.h>
|
#include <String.h>
|
||||||
|
|
||||||
class BBitmap;
|
class BBitmap;
|
||||||
|
|
||||||
class CayaProtocol;
|
class CayaProtocol;
|
||||||
|
|
||||||
|
|
||||||
class CayaProtocolAddOn {
|
class CayaProtocolAddOn {
|
||||||
public:
|
public:
|
||||||
CayaProtocolAddOn(image_id image, const char* path);
|
CayaProtocolAddOn(image_id image, const char* path,
|
||||||
|
int32 subProto=0);
|
||||||
|
|
||||||
status_t InitCheck() const;
|
status_t InitCheck() const;
|
||||||
|
|
||||||
const char* Path() const;
|
const char* Path() const;
|
||||||
|
|
||||||
CayaProtocol* Protocol() const;
|
CayaProtocol* Protocol() const;
|
||||||
|
CayaProtocol* ProtocolAt(int32 i) const;
|
||||||
|
|
||||||
|
int32 CountProtocols() const;
|
||||||
|
|
||||||
const char* Signature() const;
|
const char* Signature() const;
|
||||||
const char* FriendlySignature() const;
|
const char* FriendlySignature() const;
|
||||||
|
uint32 Version() const;
|
||||||
|
|
||||||
BBitmap* Icon() const;
|
BBitmap* Icon() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
image_id fImage;
|
image_id fImage;
|
||||||
BString fPath;
|
BString fPath;
|
||||||
CayaProtocol* (*fGetProtocol)();
|
CayaProtocol* (*fGetProtocol)(int32 i);
|
||||||
|
int32 (*fCountProtocols)();
|
||||||
|
int32 fProtoIndex;
|
||||||
|
uint32 fVersion;
|
||||||
BString fSignature;
|
BString fSignature;
|
||||||
BString fFriendlySignature;
|
BString fFriendlySignature;
|
||||||
BBitmap* fIcon;
|
BBitmap* fIcon;
|
||||||
|
|
|
@ -93,6 +93,23 @@ CayaAccountPath(const char* signature)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const char*
|
||||||
|
CayaAccountPath(const char* signature, const char* subsignature)
|
||||||
|
{
|
||||||
|
if (BString(signature) == BString(subsignature)
|
||||||
|
|| BString(subsignature).IsEmpty() == true)
|
||||||
|
return CayaAccountPath(signature);
|
||||||
|
|
||||||
|
BPath path(CayaAccountPath(signature));
|
||||||
|
|
||||||
|
path.Append(subsignature);
|
||||||
|
if (create_directory(path.Path(), 0755) != B_OK)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return path.Path();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
|
|
|
@ -18,6 +18,7 @@ BResources* CayaResources();
|
||||||
|
|
||||||
const char* CayaAccountsPath();
|
const char* CayaAccountsPath();
|
||||||
const char* CayaAccountPath(const char* signature);
|
const char* CayaAccountPath(const char* signature);
|
||||||
|
const char* CayaAccountPath(const char* signature, const char* subsignature);
|
||||||
|
|
||||||
extern "C" status_t our_image(image_info& image);
|
extern "C" status_t our_image(image_info& image);
|
||||||
|
|
||||||
|
|
|
@ -42,9 +42,21 @@ ProtocolManager::Init(BDirectory dir, BHandler* target)
|
||||||
|
|
||||||
// If add-on's API version fits then load accounts...
|
// If add-on's API version fits then load accounts...
|
||||||
CayaProtocolAddOn* addOn = new CayaProtocolAddOn(id, path.Path());
|
CayaProtocolAddOn* addOn = new CayaProtocolAddOn(id, path.Path());
|
||||||
if (addOn->Protocol()->Version() == CAYA_VERSION) {
|
if (addOn->Version() != CAYA_VERSION)
|
||||||
fAddOnMap.AddItem(addOn->Signature(), addOn);
|
continue;
|
||||||
_GetAccounts(addOn, target);
|
|
||||||
|
fAddOnMap.AddItem(addOn->Signature(), addOn);
|
||||||
|
_GetAccounts(addOn, addOn->Signature(), target);
|
||||||
|
|
||||||
|
// If add-on has multiple protocols, also load them
|
||||||
|
for (int32 i = 1; i < addOn->CountProtocols(); i++) {
|
||||||
|
CayaProtocolAddOn* subAddOn =
|
||||||
|
new CayaProtocolAddOn(id,path.Path(), i);
|
||||||
|
CayaProtocol* proto = subAddOn->Protocol();
|
||||||
|
|
||||||
|
fAddOnMap.AddItem(proto->Signature(), subAddOn);
|
||||||
|
_GetAccounts(subAddOn, proto->Signature(), target);
|
||||||
|
delete proto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -122,10 +134,11 @@ ProtocolManager::AddAccount(CayaProtocolAddOn* addOn, const char* account,
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ProtocolManager::_GetAccounts(CayaProtocolAddOn* addOn, BHandler* target)
|
ProtocolManager::_GetAccounts(CayaProtocolAddOn* addOn, const char* subProtocol,
|
||||||
|
BHandler* target)
|
||||||
{
|
{
|
||||||
// Find accounts path for this protocol
|
// Find accounts path for this protocol
|
||||||
BPath path(CayaAccountPath(addOn->Signature()));
|
BPath path(CayaAccountPath(addOn->Signature(), subProtocol));
|
||||||
if (path.InitCheck() != B_OK)
|
if (path.InitCheck() != B_OK)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -144,3 +157,5 @@ ProtocolManager::_GetAccounts(CayaProtocolAddOn* addOn, BHandler* target)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,7 @@ private:
|
||||||
|
|
||||||
ProtocolManager();
|
ProtocolManager();
|
||||||
void _GetAccounts(CayaProtocolAddOn* addOn,
|
void _GetAccounts(CayaProtocolAddOn* addOn,
|
||||||
|
const char* subProtocol,
|
||||||
BHandler* target);
|
BHandler* target);
|
||||||
|
|
||||||
AddOnMap fAddOnMap;
|
AddOnMap fAddOnMap;
|
||||||
|
|
|
@ -75,9 +75,12 @@ ProtocolSettings::Accounts() const
|
||||||
{
|
{
|
||||||
BObjectList<BString> list(true);
|
BObjectList<BString> list(true);
|
||||||
|
|
||||||
BPath path(CayaAccountPath(fAddOn->Signature()));
|
CayaProtocol* proto = fAddOn->Protocol();
|
||||||
|
|
||||||
|
BPath path(CayaAccountPath(fAddOn->Signature(), proto->Signature()));
|
||||||
if (path.InitCheck() != B_OK)
|
if (path.InitCheck() != B_OK)
|
||||||
return list;
|
return list;
|
||||||
|
delete proto;
|
||||||
|
|
||||||
BDirectory dir(path.Path());
|
BDirectory dir(path.Path());
|
||||||
BEntry entry;
|
BEntry entry;
|
||||||
|
|
|
@ -57,6 +57,7 @@ PreferencesAccounts::PreferencesAccounts()
|
||||||
fProtosMenu = new BPopUpMenu(NULL, true);
|
fProtosMenu = new BPopUpMenu(NULL, true);
|
||||||
for (uint32 i = 0; i < pm->CountProtocolAddOns(); i++) {
|
for (uint32 i = 0; i < pm->CountProtocolAddOns(); i++) {
|
||||||
CayaProtocolAddOn* addOn = pm->ProtocolAddOnAt(i);
|
CayaProtocolAddOn* addOn = pm->ProtocolAddOnAt(i);
|
||||||
|
CayaProtocol* proto = addOn->Protocol();
|
||||||
ProtocolSettings* settings = new ProtocolSettings(addOn);
|
ProtocolSettings* settings = new ProtocolSettings(addOn);
|
||||||
|
|
||||||
// Add accounts to list view
|
// Add accounts to list view
|
||||||
|
@ -67,8 +68,9 @@ PreferencesAccounts::PreferencesAccounts()
|
||||||
msg->AddPointer("settings", settings);
|
msg->AddPointer("settings", settings);
|
||||||
|
|
||||||
BitmapMenuItem* item = new BitmapMenuItem(
|
BitmapMenuItem* item = new BitmapMenuItem(
|
||||||
addOn->FriendlySignature(), msg, addOn->Icon());
|
proto->FriendlySignature(), msg, proto->Icon());
|
||||||
fProtosMenu->AddItem(item);
|
fProtosMenu->AddItem(item);
|
||||||
|
delete proto;
|
||||||
}
|
}
|
||||||
|
|
||||||
ToolButton* proto = new ToolButton("Add", NULL);
|
ToolButton* proto = new ToolButton("Add", NULL);
|
||||||
|
|
|
@ -1,36 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2010, Pier Luigi Fiorini. All rights reserved.
|
|
||||||
* Distributed under the terms of the GPL v2 License.
|
|
||||||
*
|
|
||||||
* Authors:
|
|
||||||
* Pier Luigi Fiorini, pierluigi.fiorini@gmail.com
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <BeBuild.h>
|
|
||||||
|
|
||||||
#include "FacebookProtocol.h"
|
|
||||||
|
|
||||||
extern "C" _EXPORT CayaProtocol* protocol();
|
|
||||||
extern "C" _EXPORT const char* signature();
|
|
||||||
extern "C" _EXPORT const char* friendly_signature();
|
|
||||||
|
|
||||||
|
|
||||||
CayaProtocol*
|
|
||||||
protocol()
|
|
||||||
{
|
|
||||||
return (CayaProtocol*)new FacebookProtocol();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const char*
|
|
||||||
signature()
|
|
||||||
{
|
|
||||||
return kProtocolSignature;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const char*
|
|
||||||
friendly_signature()
|
|
||||||
{
|
|
||||||
return kProtocolName;
|
|
||||||
}
|
|
|
@ -8,8 +8,9 @@
|
||||||
|
|
||||||
#include "FacebookProtocol.h"
|
#include "FacebookProtocol.h"
|
||||||
|
|
||||||
const char* kProtocolSignature = "facebook";
|
#include <Resources.h>
|
||||||
const char* kProtocolName = "Facebook";
|
|
||||||
|
#include <libinterface/BitmapUtils.h>
|
||||||
|
|
||||||
|
|
||||||
FacebookProtocol::FacebookProtocol()
|
FacebookProtocol::FacebookProtocol()
|
||||||
|
@ -23,10 +24,25 @@ FacebookProtocol::~FacebookProtocol()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
const char*
|
||||||
FacebookProtocol::OverrideSettings()
|
FacebookProtocol::Signature() const
|
||||||
{
|
{
|
||||||
fServer = "chat.facebook.com";
|
return "facebook";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const char*
|
||||||
|
FacebookProtocol::FriendlySignature() const
|
||||||
|
{
|
||||||
|
return "Facebook";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BBitmap*
|
||||||
|
FacebookProtocol::Icon() const
|
||||||
|
{
|
||||||
|
BResources res(fPath.Path());
|
||||||
|
return IconFromResources(&res, 1, B_LARGE_ICON);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -37,6 +53,13 @@ FacebookProtocol::SettingsTemplate()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
FacebookProtocol::OverrideSettings()
|
||||||
|
{
|
||||||
|
fServer = "chat.facebook.com";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
BString
|
BString
|
||||||
FacebookProtocol::ComposeJID() const
|
FacebookProtocol::ComposeJID() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -12,7 +12,14 @@ public:
|
||||||
FacebookProtocol();
|
FacebookProtocol();
|
||||||
virtual ~FacebookProtocol();
|
virtual ~FacebookProtocol();
|
||||||
|
|
||||||
|
virtual const char* Signature() const;
|
||||||
|
virtual const char* FriendlySignature() const;
|
||||||
|
|
||||||
|
virtual BBitmap* Icon() const;
|
||||||
|
|
||||||
|
virtual BMessage SettingsTemplate();
|
||||||
virtual void OverrideSettings();
|
virtual void OverrideSettings();
|
||||||
|
|
||||||
virtual BString ComposeJID() const;
|
virtual BString ComposeJID() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,36 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2010, Pier Luigi Fiorini. All rights reserved.
|
|
||||||
* Distributed under the terms of the GPL v2 License.
|
|
||||||
*
|
|
||||||
* Authors:
|
|
||||||
* Pier Luigi Fiorini, pierluigi.fiorini@gmail.com
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <BeBuild.h>
|
|
||||||
|
|
||||||
#include "GoogleTalkProtocol.h"
|
|
||||||
|
|
||||||
extern "C" _EXPORT CayaProtocol* protocol();
|
|
||||||
extern "C" _EXPORT const char* signature();
|
|
||||||
extern "C" _EXPORT const char* friendly_signature();
|
|
||||||
|
|
||||||
|
|
||||||
CayaProtocol*
|
|
||||||
protocol()
|
|
||||||
{
|
|
||||||
return (CayaProtocol*)new GoogleTalkProtocol();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const char*
|
|
||||||
signature()
|
|
||||||
{
|
|
||||||
return kProtocolSignature;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const char*
|
|
||||||
friendly_signature()
|
|
||||||
{
|
|
||||||
return kProtocolName;
|
|
||||||
}
|
|
|
@ -8,8 +8,9 @@
|
||||||
|
|
||||||
#include "GoogleTalkProtocol.h"
|
#include "GoogleTalkProtocol.h"
|
||||||
|
|
||||||
const char* kProtocolSignature = "gtalk";
|
#include <Resources.h>
|
||||||
const char* kProtocolName = "GoogleTalk";
|
|
||||||
|
#include <libinterface/BitmapUtils.h>
|
||||||
|
|
||||||
|
|
||||||
GoogleTalkProtocol::GoogleTalkProtocol()
|
GoogleTalkProtocol::GoogleTalkProtocol()
|
||||||
|
@ -23,11 +24,25 @@ GoogleTalkProtocol::~GoogleTalkProtocol()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
const char*
|
||||||
GoogleTalkProtocol::OverrideSettings()
|
GoogleTalkProtocol::Signature() const
|
||||||
{
|
{
|
||||||
fServer = "talk.google.com";
|
return "gtalk";
|
||||||
fPort = 0;
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const char*
|
||||||
|
GoogleTalkProtocol::FriendlySignature() const
|
||||||
|
{
|
||||||
|
return "GTalk";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BBitmap*
|
||||||
|
GoogleTalkProtocol::Icon() const
|
||||||
|
{
|
||||||
|
BResources res(fPath.Path());
|
||||||
|
return IconFromResources(&res, 2, B_LARGE_ICON);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -38,6 +53,14 @@ GoogleTalkProtocol::SettingsTemplate()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
GoogleTalkProtocol::OverrideSettings()
|
||||||
|
{
|
||||||
|
fServer = "talk.google.com";
|
||||||
|
fPort = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
BString
|
BString
|
||||||
GoogleTalkProtocol::ComposeJID() const
|
GoogleTalkProtocol::ComposeJID() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -12,8 +12,13 @@ public:
|
||||||
GoogleTalkProtocol();
|
GoogleTalkProtocol();
|
||||||
virtual ~GoogleTalkProtocol();
|
virtual ~GoogleTalkProtocol();
|
||||||
|
|
||||||
virtual void OverrideSettings();
|
virtual const char* Signature() const;
|
||||||
|
virtual const char* FriendlySignature() const;
|
||||||
|
|
||||||
|
virtual BBitmap* Icon() const;
|
||||||
|
|
||||||
virtual BMessage SettingsTemplate();
|
virtual BMessage SettingsTemplate();
|
||||||
|
virtual void OverrideSettings();
|
||||||
|
|
||||||
virtual BString ComposeJID() const;
|
virtual BString ComposeJID() const;
|
||||||
};
|
};
|
||||||
|
|
|
@ -142,17 +142,17 @@ JabberHandler::Shutdown()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const char*
|
void
|
||||||
JabberHandler::Signature() const
|
JabberHandler::SetPath(BPath path)
|
||||||
{
|
{
|
||||||
return kProtocolSignature;
|
fPath = path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const char*
|
BPath
|
||||||
JabberHandler::FriendlySignature() const
|
JabberHandler::Path()
|
||||||
{
|
{
|
||||||
return kProtocolName;
|
return fPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -224,13 +224,6 @@ JabberHandler::MessengerInterface() const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uint32
|
|
||||||
JabberHandler::Version() const
|
|
||||||
{
|
|
||||||
return CAYA_VERSION_1_PRE_ALPHA_1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
gloox::Client*
|
gloox::Client*
|
||||||
JabberHandler::Client() const
|
JabberHandler::Client() const
|
||||||
{
|
{
|
||||||
|
@ -499,7 +492,7 @@ JabberHandler::_SendMessage(BMessage* msg)
|
||||||
if (!msg)
|
if (!msg)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
msg->AddString("protocol", kProtocolSignature);
|
msg->AddString("protocol", Signature());
|
||||||
fServerMessenger->SendMessage(msg);
|
fServerMessenger->SendMessage(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -554,7 +547,7 @@ JabberHandler::_SetupAvatarCache()
|
||||||
|
|
||||||
path.Append("Caya");
|
path.Append("Caya");
|
||||||
path.Append("Cache");
|
path.Append("Cache");
|
||||||
path.Append(kProtocolSignature);
|
path.Append(Signature());
|
||||||
|
|
||||||
if (create_directory(path.Path(), 0755) != B_OK)
|
if (create_directory(path.Path(), 0755) != B_OK)
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
@ -983,7 +976,7 @@ JabberHandler::handleSelfPresence(const gloox::RosterItem& item, const std::stri
|
||||||
{
|
{
|
||||||
BMessage msg(IM_MESSAGE);
|
BMessage msg(IM_MESSAGE);
|
||||||
msg.AddInt32("im_what", IM_OWN_CONTACT_INFO);
|
msg.AddInt32("im_what", IM_OWN_CONTACT_INFO);
|
||||||
msg.AddString("protocol", kProtocolSignature);
|
msg.AddString("protocol", Signature());
|
||||||
msg.AddString("id", item.jidJID().full().c_str());
|
msg.AddString("id", item.jidJID().full().c_str());
|
||||||
msg.AddString("name", item.name().c_str());
|
msg.AddString("name", item.name().c_str());
|
||||||
msg.AddInt32("subscription", item.subscription());
|
msg.AddInt32("subscription", item.subscription());
|
||||||
|
|
|
@ -47,8 +47,11 @@ public:
|
||||||
|
|
||||||
virtual status_t Shutdown();
|
virtual status_t Shutdown();
|
||||||
|
|
||||||
virtual const char* Signature() const;
|
virtual const char* Signature() const = 0;
|
||||||
virtual const char* FriendlySignature() const;
|
virtual const char* FriendlySignature() const = 0;
|
||||||
|
|
||||||
|
virtual void SetPath(BPath path);
|
||||||
|
virtual BPath Path();
|
||||||
|
|
||||||
virtual status_t UpdateSettings(BMessage* msg);
|
virtual status_t UpdateSettings(BMessage* msg);
|
||||||
|
|
||||||
|
@ -57,8 +60,6 @@ public:
|
||||||
virtual CayaProtocolMessengerInterface*
|
virtual CayaProtocolMessengerInterface*
|
||||||
MessengerInterface() const;
|
MessengerInterface() const;
|
||||||
|
|
||||||
virtual uint32 Version() const;
|
|
||||||
|
|
||||||
// Functions for gloox
|
// Functions for gloox
|
||||||
gloox::Client* Client() const;
|
gloox::Client* Client() const;
|
||||||
void HandleError(gloox::ConnectionError& e);
|
void HandleError(gloox::ConnectionError& e);
|
||||||
|
@ -74,6 +75,8 @@ protected:
|
||||||
BString fResource;
|
BString fResource;
|
||||||
uint16 fPort;
|
uint16 fPort;
|
||||||
|
|
||||||
|
BPath fPath;
|
||||||
|
|
||||||
BMessage _SettingsTemplate(const char* username, bool serverOption);
|
BMessage _SettingsTemplate(const char* username, bool serverOption);
|
||||||
private:
|
private:
|
||||||
CayaProtocolMessengerInterface*
|
CayaProtocolMessengerInterface*
|
||||||
|
@ -139,7 +142,4 @@ private:
|
||||||
gloox::StanzaError);
|
gloox::StanzaError);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern const char* kProtocolSignature;
|
|
||||||
extern const char* kProtocolName;
|
|
||||||
|
|
||||||
#endif // _JABBER_HANDLER_H
|
#endif // _JABBER_HANDLER_H
|
||||||
|
|
|
@ -8,29 +8,58 @@
|
||||||
|
|
||||||
#include <BeBuild.h>
|
#include <BeBuild.h>
|
||||||
|
|
||||||
|
#include "FacebookProtocol.h"
|
||||||
|
#include "GoogleTalkProtocol.h"
|
||||||
#include "JabberProtocol.h"
|
#include "JabberProtocol.h"
|
||||||
|
|
||||||
extern "C" _EXPORT CayaProtocol* protocol();
|
|
||||||
|
extern "C" _EXPORT CayaProtocol* protocol_at(int32 i);
|
||||||
|
extern "C" _EXPORT int32 protocol_count();
|
||||||
extern "C" _EXPORT const char* signature();
|
extern "C" _EXPORT const char* signature();
|
||||||
extern "C" _EXPORT const char* friendly_signature();
|
extern "C" _EXPORT const char* friendly_signature();
|
||||||
|
extern "C" _EXPORT uint32 version();
|
||||||
|
|
||||||
|
|
||||||
CayaProtocol*
|
CayaProtocol*
|
||||||
protocol()
|
protocol_at(int32 i)
|
||||||
{
|
{
|
||||||
return (CayaProtocol*)new JabberProtocol();
|
switch(i) {
|
||||||
|
case 0:
|
||||||
|
return (CayaProtocol*)new JabberProtocol();
|
||||||
|
case 1:
|
||||||
|
return (CayaProtocol*)new FacebookProtocol();
|
||||||
|
case 2:
|
||||||
|
return (CayaProtocol*)new GoogleTalkProtocol();
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int32
|
||||||
|
protocol_count()
|
||||||
|
{
|
||||||
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const char*
|
const char*
|
||||||
signature()
|
signature()
|
||||||
{
|
{
|
||||||
return kProtocolSignature;
|
return "jabber";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const char*
|
const char*
|
||||||
friendly_signature()
|
friendly_signature()
|
||||||
{
|
{
|
||||||
return kProtocolName;
|
return "Jabber";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint32
|
||||||
|
version()
|
||||||
|
{
|
||||||
|
return CAYA_VERSION_1_PRE_ALPHA_1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,9 +8,9 @@
|
||||||
|
|
||||||
#include "JabberProtocol.h"
|
#include "JabberProtocol.h"
|
||||||
|
|
||||||
|
#include <Resources.h>
|
||||||
|
|
||||||
const char* kProtocolSignature = "jabber";
|
#include <libinterface/BitmapUtils.h>
|
||||||
const char* kProtocolName = "Jabber";
|
|
||||||
|
|
||||||
|
|
||||||
JabberProtocol::JabberProtocol()
|
JabberProtocol::JabberProtocol()
|
||||||
|
@ -24,9 +24,24 @@ JabberProtocol::~JabberProtocol()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
const char*
|
||||||
JabberProtocol::OverrideSettings()
|
JabberProtocol::Signature() const
|
||||||
{
|
{
|
||||||
|
return "jabber";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const char*
|
||||||
|
JabberProtocol::FriendlySignature() const
|
||||||
|
{
|
||||||
|
return "Jabber";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BBitmap*
|
||||||
|
JabberProtocol::Icon() const
|
||||||
|
{
|
||||||
|
return ReadNodeIcon(fPath.Path(), B_LARGE_ICON, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -37,6 +52,12 @@ JabberProtocol::SettingsTemplate()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
JabberProtocol::OverrideSettings()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
BString
|
BString
|
||||||
JabberProtocol::ComposeJID() const
|
JabberProtocol::ComposeJID() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -12,8 +12,14 @@ public:
|
||||||
JabberProtocol();
|
JabberProtocol();
|
||||||
virtual ~JabberProtocol();
|
virtual ~JabberProtocol();
|
||||||
|
|
||||||
virtual void OverrideSettings();
|
virtual const char* Signature() const;
|
||||||
|
virtual const char* FriendlySignature() const;
|
||||||
|
|
||||||
|
virtual BBitmap* Icon() const;
|
||||||
|
|
||||||
virtual BMessage SettingsTemplate();
|
virtual BMessage SettingsTemplate();
|
||||||
|
virtual void OverrideSettings();
|
||||||
|
|
||||||
virtual BString ComposeJID() const;
|
virtual BString ComposeJID() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
|
|
||||||
resource app_version {
|
|
||||||
major = 0,
|
|
||||||
middle = 0,
|
|
||||||
minor = 1,
|
|
||||||
|
|
||||||
variety = B_APPV_ALPHA,
|
|
||||||
internal = 0,
|
|
||||||
|
|
||||||
short_info = "Facebook Protocol AddOn for Caya",
|
|
||||||
long_info = "©2010 Pier Luigi Fiorini"
|
|
||||||
};
|
|
||||||
|
|
||||||
resource vector_icon {
|
|
||||||
$"6E6369660202000602000000C000004000000000009220244C000067003C7FFF"
|
|
||||||
$"1A5EA805FF0206111B1111BD01C0A72B4828BF72B8033FBBBA3C39463F5C4A46"
|
|
||||||
$"523C4ABC4D4ABB7A4ABC4DC3D234C59634C51C34C659BB0E54352C0208242824"
|
|
||||||
$"2624BA4724C94924C528245AB6245C265CBA355CC94B5CC5285C5A5C5CC9565C"
|
|
||||||
$"5A5CC5485CB64A5CBA7B5C26C951245A24C55D242824BA53242624020A000101"
|
|
||||||
$"000A01010000"
|
|
||||||
};
|
|
|
@ -1,34 +0,0 @@
|
||||||
|
|
||||||
resource app_version {
|
|
||||||
major = 0,
|
|
||||||
middle = 0,
|
|
||||||
minor = 1,
|
|
||||||
|
|
||||||
variety = B_APPV_ALPHA,
|
|
||||||
internal = 0,
|
|
||||||
|
|
||||||
short_info = "GoogleTalk Protocol AddOn for Caya",
|
|
||||||
long_info = "©2010 Pier Luigi Fiorini"
|
|
||||||
};
|
|
||||||
|
|
||||||
resource vector_icon {
|
|
||||||
$"6E636966080501040046020106023E40000000000000003D4000494000470000"
|
|
||||||
$"7EFFFFFFFFE5E1DA02000602000000BBC0004000000000009220244AF0000000"
|
|
||||||
$"33CCFC3366FF02000602000000BA000040000000000092202448800000336699"
|
|
||||||
$"FF6699CC02000602000000B9000040000000000092202448E00000CC0000FFFF"
|
|
||||||
$"000002000602000000BA000040000000000092202448800000FF9900FFFBFF00"
|
|
||||||
$"02000602000000BA000040000000000092202448800000006600FF00CC000A02"
|
|
||||||
$"06C22622C7562239222E342E2B2E3D4146364441483C50404C3C504A444A4E55"
|
|
||||||
$"44CBB634CBB83E5E2A0206C22622C7562239222E342E2B2E3D4146364441483C"
|
|
||||||
$"50404C3C504C464A505744CBB634CBB83E5E2A02024C265928532A583B59335D"
|
|
||||||
$"350610CAFFFEAF375335543B3B5A3B5A395D325D355D2C5D274F275627483241"
|
|
||||||
$"2C413541BDA7C2A83942BDA7C2A8394A3F463F463C40324036402A40234F2346"
|
|
||||||
$"2358325E2A5E395EBF5C5A3F5CBF5C5A3F544053080234313C310404FE372C37"
|
|
||||||
$"393739373A393B383B3A3B3B393B3A3B390406FE0B4536403640363F363E383E"
|
|
||||||
$"373E383E393E393E3A403B3F3B413B453A0405FE03453C453445344533433244"
|
|
||||||
$"324332403240323F323E343E333E3408024D2C4D3C0803553C4F3655300D0A00"
|
|
||||||
$"01001001178400040A020101000A010102000A0101032021210A010204053021"
|
|
||||||
$"2101178200040A0102070630212101178200040A010108301D2101178200040A"
|
|
||||||
$"0102090830212101178200040A030103000A040204051001178200040A050207"
|
|
||||||
$"061001178200040A060108301C2001178200040A07020908100117820004"
|
|
||||||
};
|
|
|
@ -54,3 +54,35 @@ resource vector_icon {
|
||||||
$"4640053FFFFB01178000040A030110023EECA00000000000003EECA04640053F"
|
$"4640053FFFFB01178000040A030110023EECA00000000000003EECA04640053F"
|
||||||
$"FFFB0A010111023EECA00000000000003EECA04640053FFFFB"
|
$"FFFB0A010111023EECA00000000000003EECA04640053FFFFB"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
resource(1, "facebook") #'VICN' array {
|
||||||
|
$"6E6369660202000602000000C000004000000000009220244C000067003C7FFF"
|
||||||
|
$"1A5EA805FF0206111B1111BD01C0A72B4828BF72B8033FBBBA3C39463F5C4A46"
|
||||||
|
$"523C4ABC4D4ABB7A4ABC4DC3D234C59634C51C34C659BB0E54352C0208242824"
|
||||||
|
$"2624BA4724C94924C528245AB6245C265CBA355CC94B5CC5285C5A5C5CC9565C"
|
||||||
|
$"5A5CC5485CB64A5CBA7B5C26C951245A24C55D242824BA53242624020A000101"
|
||||||
|
$"000A01010000"
|
||||||
|
};
|
||||||
|
|
||||||
|
resource(2, "gtalk") #'VICN' array {
|
||||||
|
$"6E636966080501040046020106023E40000000000000003D4000494000470000"
|
||||||
|
$"7EFFFFFFFFE5E1DA02000602000000BBC0004000000000009220244AF0000000"
|
||||||
|
$"33CCFC3366FF02000602000000BA000040000000000092202448800000336699"
|
||||||
|
$"FF6699CC02000602000000B9000040000000000092202448E00000CC0000FFFF"
|
||||||
|
$"000002000602000000BA000040000000000092202448800000FF9900FFFBFF00"
|
||||||
|
$"02000602000000BA000040000000000092202448800000006600FF00CC000A02"
|
||||||
|
$"06C22622C7562239222E342E2B2E3D4146364441483C50404C3C504A444A4E55"
|
||||||
|
$"44CBB634CBB83E5E2A0206C22622C7562239222E342E2B2E3D4146364441483C"
|
||||||
|
$"50404C3C504C464A505744CBB634CBB83E5E2A02024C265928532A583B59335D"
|
||||||
|
$"350610CAFFFEAF375335543B3B5A3B5A395D325D355D2C5D274F275627483241"
|
||||||
|
$"2C413541BDA7C2A83942BDA7C2A8394A3F463F463C40324036402A40234F2346"
|
||||||
|
$"2358325E2A5E395EBF5C5A3F5CBF5C5A3F544053080234313C310404FE372C37"
|
||||||
|
$"393739373A393B383B3A3B3B393B3A3B390406FE0B4536403640363F363E383E"
|
||||||
|
$"373E383E393E393E3A403B3F3B413B453A0405FE03453C453445344533433244"
|
||||||
|
$"324332403240323F323E343E333E3408024D2C4D3C0803553C4F3655300D0A00"
|
||||||
|
$"01001001178400040A020101000A010102000A0101032021210A010204053021"
|
||||||
|
$"2101178200040A0102070630212101178200040A010108301D2101178200040A"
|
||||||
|
$"0102090830212101178200040A030103000A040204051001178200040A050207"
|
||||||
|
$"061001178200040A060108301C2001178200040A07020908100117820004"
|
||||||
|
};
|
||||||
|
|
||||||
|
|
Ŝarĝante…
Reference in New Issue