// // listbox.h : header file // // // Custom Listboxes // #ifndef __LISTBOX_H_ #define __LISTBOX_H_ // // Forward declaration // class CPreferences; class CIpNamePair; class CIpAddressListBox : public CListBox { public: virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMIS); virtual void DrawItem(LPDRAWITEMSTRUCT lpDIS); virtual int CompareItem(LPCOMPAREITEMSTRUCT lpCIS); virtual void DeleteItem(LPDELETEITEMSTRUCT lpDIS); int FindItem(CIpAddress * pinpAddress); int AddItem (CIpAddress & inpAddress); inline CIpAddress * GetItem(UINT nIndex) { return (CIpAddress *)GetItemDataPtr(nIndex); } protected: virtual void DisplayItem(LPDRAWITEMSTRUCT lpDIS); }; // // CWinssListBox // class CWinssListBox : public CListBoxEx { DECLARE_DYNAMIC(CWinssListBox); public: static const int nBitmaps; // Number of bitmaps public: CWinssListBox( int nAddressDisplay = CPreferences::ADD_IP_ONLY ) { m_nAddressDisplay = nAddressDisplay; m_nTab = 0; } public: static LPSTR LongLongToText ( const LARGE_INTEGER& li ); public: virtual void ReSort(); public: virtual int CompareItem(LPCOMPAREITEMSTRUCT lpCIS); virtual void DeleteItem(LPDELETEITEMSTRUCT lpDIS); int FindItem(CIpNamePair * pinpAddress); int AddItem (CIpNamePair & inpAddress, BOOL fUnique = TRUE, BOOL fSort = TRUE); inline CIpNamePair * GetItem(UINT nIndex) { return (CIpNamePair *)GetItemDataPtr(nIndex); } int InsertItem(UINT nIndex, CIpNamePair & inpAddress); inline void SetAddressDisplay(int nAddressDisplay) { m_nAddressDisplay = nAddressDisplay; } inline void SetTab(int nTab) { m_nTab = nTab; } void SetIndexFromChar(CHAR ch, BOOL fMultiSelect = FALSE); protected: virtual void DrawItemEx( CListBoxExDrawStruct& ); virtual void Sort(int nLow, int nHigh); virtual void Swap(int nIndx1, int nIndx2); protected: int m_nAddressDisplay; CIpNamePair **m_pItems; int m_nTab; }; // // Owner's ListBox // class COwnersListBox : public CWinssListBox { DECLARE_DYNAMIC(COwnersListBox); public: COwnersListBox( int nAddressDisplay = CPreferences::ADD_IP_ONLY ) { m_nAddressDisplay = nAddressDisplay; } public: int AddItem (COwner & inpAddress, BOOL fFind = TRUE); inline COwner * GetItem(UINT nIndex) { return (COwner *)GetItemDataPtr(nIndex); } protected: virtual void DrawItemEx( CListBoxExDrawStruct& ); }; // // Static Mappings Listbox // #define PAGE_BOUNDARY 20 class CStaticMappingsListBox : public CListBoxEx { public: static const int nBitmaps; // Number of bitmaps public: CStaticMappingsListBox( int nMessageId, // Status bar message ID BOOL fMultiSelect, int nAddressDisplay = CPreferences::ADD_NB_IP, DWORD dwPageSize = 16, // Number of records to fetch at a time DWORD dwLargePageSize = 2000 // Number of records to fetch when reading whole list ); ~CStaticMappingsListBox(); public: inline void SetAddressDisplay( int nAddressDisplay ) { m_nAddressDisplay = nAddressDisplay; } inline void SetTab(int nTab) { m_nTab = nTab; } public: virtual int CompareItem(LPCOMPAREITEMSTRUCT lpCIS); void * GetItemDataPtr(int nIndex) const; void DownPage(BOOL fAddToListBox = FALSE); void GetAllPages(BOOL fAddToListBox = FALSE); void GetAllPagesUntil(LPBYTE lpName, BOOL fAddToListBox = FALSE); APIERR CreateList(PWINSINTF_ADD_T pOwnAdd, PADDRESS_MASK pMask, DWORD TypeOfRecs, int nSortBy); APIERR RefreshRecordByName( PWINSINTF_ADD_T pWinsAdd, CRawMapping * pRecord ); BOOL RemoveIndex( int nIndex ); void SortByIp(); void SortByName(); void SortByType(); void SortByVersion(); void SortByTime(); protected: virtual void DrawItemEx( CListBoxExDrawStruct& ); // Generated message map functions //}}AFX_MSG afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); DECLARE_MESSAGE_MAP() DECLARE_DYNAMIC(CStaticMappingsListBox) #ifdef WIN32S APIERR FillListBox(); APIERR AddToListBox(); #else int SetCount(int nCount); #endif // WIN32S protected: int m_nAddressDisplay; int m_nMessageId; BOOL m_fMultiSelect; PADDRESS_MASK m_pMask; COblWinsRecords * m_poblRecords; int m_nidxLastAdded; int m_nTab; }; // // All Mappings ListBox // class CAllMappingsListBox : public CStaticMappingsListBox { public: CAllMappingsListBox( int nMessageId, // Status bar message ID BOOL fMultiSelect, int nAddressDisplay = CPreferences::ADD_NB_IP, DWORD dwPageSize = 100, // Number of records to fetch at a time DWORD dwLargePageSize = 2000 // Number of records to fetch when reading whole list ); protected: virtual void DrawItemEx( CListBoxExDrawStruct& ); }; // // Replication Partners Listbox // class CPartnersListBox : public CWinssListBox { public: static const int nBitmaps; // Number of bitmap definitions public: CPartnersListBox(int nAddressDisplay = CPreferences::ADD_IP_ONLY); public: int AddItem (CWinsServer & ws, BOOL fUnique = TRUE, BOOL fSort = TRUE); inline CWinsServer * GetItem(UINT nIndex) { return (CWinsServer *)GetItemDataPtr(nIndex); } int InsertItem(UINT nIndex, CWinsServer & ws); protected: virtual void DrawItemEx( CListBoxExDrawStruct& ); }; #endif // __LISTBOX_H_