Hi Jon, 

good to know that I'm not the only one who is "a bit stressed" with the
current licq :)

With the "least common denominator" I mean that every IM which can handle
multiple protocols only supports what all have in common, leaving out the
things that are important to decide for a specific protocol/program - the
unique features. I really don't think that there is no chance to support as
much of these features as possible (as long as there is no patents-stuff). 

Your suggestions and the things you said are exactly what I meant. However,
letting the plugin export functions is a good idea in my eyes. 
For icqnd I built an API (onto the original Licq API) which I find not that
bad. Maybe you'll like it too:
Every user is an object (of course), that handles nothing but event
management. Also it has a list of managers which do the real work. Both, the
user and the manager are "signal sources", that means they both can store
functions to call when an event is created/deletet ... 
In the end things work the following way:

"IMUserDaemon" is a user. Now a window wants the possibility to receive a
message, it creates a
IMMessageManager (which listens to events of type "message") and adds it to
the IMUserDaemon by doing a
IMUserDaemon->addManager(IMMessageManager);
Now IMUserDaemon goes through his list of events and gives those to the
IMMessageManager it listens to (-> message events). Also IMUserDaemon starts
a call to its connected signal functions (which is another class that does
the general graphics stuff for the user, eg contact list, window management
...). 
Next IMMessageManager processes this event further, eg converting it into
the right charset, getting the important information ... and sends a call to
its signal functions (which is the window that created the instance). The
window can then do whatever it wants with the event and then delete it by
calling something like IMUserDaemon->deleteEvent(event);

If the window sends a message it can call
IMMessageManager->sendMessage("bla");
because the message manager is connected to the user it can then do the
work. This API is some way flexible, because you can easily add new
managers, connect as many as you like and connect as many callback functions
as you like and widen the list of capabilities without changing the core. 
I don't suggest to take this engine but just wanted to present you what I
find somehow better ...


Regarding a road map I'd really like to have a specific plan made. Let's
make an appointment (somewhere next week) to meet at a chat with everyone
that is interested for a first brain storming session.


Regards,
Joachim

-- 
GMX Produkte empfehlen und ganz einfach Geld verdienen!
Satte Provisionen für GMX Partner: http://www.gmx.net/de/go/partner


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Licq-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/licq-devel

Reply via email to