summaryrefslogtreecommitdiff
path: root/plugins/FloatingContacts/src/thumbs.h
blob: ee6db80097fb7c3fb75658b788259474a3ec6dce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/////////////////////////////////////////////////////////////////////////////
//
#define	USERNAME_LEN				50
class CDropTarget;

typedef struct _DockOpt
{
	HWND	hwndLeft;
	HWND	hwndRight;
}
DockOpt;

struct ThumbInfo
{
public: // TODO: make private
	HWND			hwnd;
	TCHAR			ptszName[ USERNAME_LEN ];
	HANDLE			hContact;
	int				iIcon;
	CDropTarget *	dropTarget;
	DockOpt			dockOpt;
	BOOL			fTipActive;
	BOOL			fTipTimerActive;
	POINT			ptTipSt;

	BYTE			btAlpha;
	MyBitmap		bmpContent;

	POINT			ptPos;
	SIZE			szSize;

public:
	ThumbInfo();
	~ThumbInfo();

	void GetThumbRect			(RECT *rc);
	void PositionThumb			(short nX, short nY); 
	void PositionThumbWorker	(short nX, short nY, POINT *rcNewPos); 
	void ResizeThumb			();
	void RefreshContactIcon		(int iIcon);
	void RefreshContactStatus	(int idStatus);
	void DeleteContactPos		();
	void OnLButtonDown			(short nX, short nY);
	void OnLButtonUp			();
	void OnMouseMove			(short nX, short nY, WPARAM wParam);
	void ThumbSelect			(BOOL bMouse);
	void ThumbDeselect			(BOOL bMouse);
	void SetThumbOpacity		(BYTE btAlpha);
	void KillTip				();
	void UpdateContent			();
	void PopUpMessageDialog		();
	void OnTimer				(BYTE idTimer);
};

void UndockThumbs	( ThumbInfo *pThumb1, ThumbInfo *pThumb2 );
void DockThumbs		( ThumbInfo *pThumbLeft, ThumbInfo *pThumbRight, BOOL bMoveLeft );

class ThumbList: public LIST<ThumbInfo>
{
public:
	ThumbList();
	~ThumbList();

	ThumbInfo*	AddThumb			(HWND hwnd, TCHAR *ptszName, HANDLE hContact);
	void		RemoveThumb			(ThumbInfo *pThumb);

	ThumbInfo*	FindThumb			(HWND hwnd);
	ThumbInfo*	FindThumbByContact	(HANDLE hContact);

private:
	static int cmp(const ThumbInfo *p1, const ThumbInfo *p2);
};

extern ThumbList thumbList;