no answers on this subject ? I'm still waiting for everyone's feedback on this so I can start a bit of code... I have some code done, but I don't want to commit it... Harry, u there ?
KKRT On Sat, 27 May 2006 04:25:06 -0400, Youness Alaoui <[EMAIL PROTECTED]> wrote: > Hi, > I wanted a separate mail to explain some more the design I have in mind, > don't worry it will be fast since I'm tired :p > I'm thinking about having a new amsn2 module, in which this whole new cl > thing would go, it should be compatible with amsn1 code, so we could plug > it in and out as much as we want. first my idea is to have some structure > like this : > > amsn2 > | > +---- GUI > | | > | +---- clgroup.tcl > | +---- clcontact.tcl > | +---- clwidget.tcl > | > +---- Data > | | > | +---- account.tcl > | +---- group.tcl > | +---- contact.tcl > | +---- groupmanager.tcl > | +---- eventsystem.tcl > | > +---- Protocol > | | > | +---- telepathy2amsn.tcl > | +---- telepathy > | | > | +------- ?????? > | > +---- Core > | > +---- ???? > > > We could divide into more subdirs.. the protocol dir could have the > msnp13.tcl file, the msncam.tcl, msnp2p.tcl, etc... the GUI could have a > Dialogs subdir with all our dialogs (add new smiley, add group, add > contact, check for newer version, etc...), and a Preferences subdir for > our preferences window for example... or it could go into Dialogs > The Data is only to store data > the Protocol dir could be used in order to hook the new data and gui to > the current amsn, until the MSN connection manager for telepathy is > created, in the meantime, if our design is good enough, I think we should > be able to use the jabber connection manager instead of MSN without even > noticing the difference... > This reminds me!!!! I thought about an intermediate class that we'd call > Capabilities.. damn, wait, I first need to say something else... > ok, so far, we've always been talking about "separate the protocol and > the > GUI, separate the protocol and the GUI", but we never talked about the > data in itself... if the protocol sends us "hey, you have a new contact > named [EMAIL PROTECTED]" what do you want to do with it ? you want the GUI > to catch that then what ? show it ? then how you update it ? you have to > keep stored somewhere who is who, if he's blocked etc... that's what > we've > been talking in the other thread, kind of... > now, if we abstract the data from the GUI, it means we could have ANY > GUI, > it would query our common interface/API for the Data, so it will always > know what your account is, etc... > it abstracts the protocol into an API (to quote Harry), and the protocol > underlying there ? who knows what it is, could be msn, could be jabber, > as > long as a 'contact' is a 'contact' and a groupmanager is a > groupmanager... > Now, here's when we enter the big game, does jabber have winks ? I don't > know (I never used/tried/seen jabber, so no idea, but let's assume > everything I say is true), assuming it doesn't have winks, cool, so our > Data/winks.tcl file will not be used (don't get it wrong, it's not the > implementation of the winks in that file, NOT AT ALL.. it's only > abstracting the protocol into an API, so you actually receive an event > WinkReceived, and you get a 'wink' object in argument to which you do > [$wink getDestination] or [$wink getWinkAsFlashMovie] or [$wink > getWinkAsMpeg] (or Gif), or [$wink doYouSupportGifs] or [$wink > getWinkPreview], etc...), ok you understand ? our poor winks.tcl won't be > used in jabber, but oh well, assuming jabber has winks, but it's mpeg > movies, not flash movies.. so we should call getWinkAsMpeg not > getWinkAsFlashMovie... oh, so confusing... ok, assume we have no winks in > jabber but we have something else that is nudges, and MSN doesn't support > nudges (I know, it does, but assume I'm all mighty), so your > Data/nudge.tcl (again, only abstracted info about the nudge, like the > destination, the received time, whatever... it's not the protocol nor > the > GUI implementation of it)... > so your GUI, it doesn't know what to do.. you're chatting with a user, > you > send a wink, you get an error, you nudge, no prob, with another user, the > winks work, the nudges don't... (assuming you have one big contact list > managing multiple $account objects from different protocols)... so what > do > you do in that case ? > oh, that's where my Capabilities class comes in place. you open the > chatwinow object, it has a reference to a contact, then it does > set account [$contact cget -parent] > set protocol [$account cget -protocol] > set caps [$protocol getCapabiltiies] > set enableNudgeButton [$caps supportsNudge] > > this is a very explicit example, but the Capabilities object should be > used for almost everything, to know if you have the right to block a user > or not for example (assuming jabber doesn't support blocking a contact), > if you have the right to leave an offline message, etc... > it's Capabilities, but can be considered, in a java perspective, as a > SecurityManager (although I know very little in that domain), it tells > you > what you can do or not, it's specific to the protocol, not an account, > nor > a contact. > > What do you think ? I know this design is very poor so far, which is why > I'm sending it... hoping you'll send meaningfull comments! > > Thanks all, > Youness. > > > > _______________________________________________ > Amsn-devel mailing list > Amsn-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/amsn-devel -- KaKaRoTo _______________________________________________ Amsn-devel mailing list Amsn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/amsn-devel