Re: iChat "Sort by..." animation
Re: iChat "Sort by..." animation
- Subject: Re: iChat "Sort by..." animation
- From: zeno <email@hidden>
- Date: Tue, 13 Jan 2004 15:54:06 +0100
Does anybody know a way to get the wonderful animation used by iChat
to sort the buddies in the Buddy List?
(for those who don't know what I'm talking about.... lauch iChat =>
open the Buddy List => change "Sort by Availability", "Sort by Last
Name" or "Sort by First Name" from the "View" menu...and you'll see.
Disabling the "Show Offline buddies" from the "View" menu makes that
animation more "comprehensible")
IIRC, there is the beginning of an answer in this sample code:
http://www.gigliwood.com/tabletester/
thanks stephane...
I'm looking at that code right now, the animation they get is quite
cool, but not so cool as the one used in iChat.
I did a little "investigation": from a nib file inside the iChat.app I
found out that the "BuddyList" table is actually a
"AnimatingTableView". Then I found out that this class is part of the
InstantMessage.framework: normally one cannot look at the headers of
this framework since it's a "Private Framework" (located in
/System/Library/PrivateFrameworks); but I found the "InstantMessage.h"
header here:
http://cvs.sourceforge.net/viewcvs.py/icar/icar/InstantMessage.h?
rev=1.2
If you look inside InstantMessage.h you'll find the follwing:
------------------
@interface AnimatingTableView:FezExtendedTableView
{
char _animationEnabled;
NSMutableArray *_refArray;
NSMutableArray *_indexMapping;
NSTimer *_timer;
NSDate *_startTime;
double _animationTime;
int _curTableRows;
struct _NSRange _movementRange;
struct _NSRect _movementRect;
double _spline;
NSImage **_rowCache;
int _rowCacheSize;
}
- (float)_normalRowOffset:(int)fp12;
- (struct _NSPoint)_animatedRowOrigin:(int)fp16;
- (void)_clearRowCache;
- (void)_finishAnimation;
- (void)dealloc;
- (void)logDebugInfo;
- _mappingFromRefArray;
- (void)rememberIndexes;
- (void)animateMovementOverTime:(double)fp40;
- (void)oneStep:fp12;
- (void)setAnimationEnabled:(char)fp12;
- (char)isAnimationEnabled;
- (void)drawRow:(int)fp12 clipRect:(struct _NSRect)fp16;
- (struct _NSRect)frameOfCellAtColumn:(int)fp16 row:(int)fp20;
- (struct _NSRange)rowsInRect:(struct _NSRect)fp16;
- (int)numberOfRows;
- (void)tile;
- (void)reloadData;
@end
------------------
Hopefully this is the "original" class declaration used in ichat to get
that animation. AnimatingTableView inherits from FezExtendedTableView
which inherits from NSTableView.
Now, if someone could access or guess to the @implementation of the
AnimatingTableView class...
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.