#ifndef __SUBSCR_H__ #define __SUBSCR_H__ #include "grplist2.h" #define idtFindDelay 1 #define dtFindDelay 600 // SIZETABLE - This struct is used to make the dialog resizable. We keep one // of these for each control in the dialog. The rect's are updated // in WM_SIZE. A table of these is built in WM_INITDIALOG. typedef struct tagSIZETABLE { HWND hwndCtl; UINT id; RECT rc; } SIZETABLE, *PSIZETABLE; class CGroupListDlg : public IGroupListAdvise { public: CGroupListDlg(); ~CGroupListDlg(); // IUnknown virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject); virtual ULONG STDMETHODCALLTYPE AddRef(void); virtual ULONG STDMETHODCALLTYPE Release(void); // IGroupListAdvise HRESULT STDMETHODCALLTYPE ItemUpdate(void); HRESULT STDMETHODCALLTYPE ItemActivate(FOLDERID id); // CGroupListDlg BOOL FCreate(HWND hwndOwner, FOLDERTYPE type, FOLDERID *pGotoId, UINT iTabSelect, BOOL fEnableGoto, FOLDERID idSel); private: static INT_PTR CALLBACK GroupListDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); BOOL OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam); void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify); LRESULT OnNotify(HWND hwnd, int idFrom, LPNMHDR pnmhdr); void OnTimer(HWND hwnd, UINT id); void OnPaint(HWND hwnd); void OnClose(HWND hwnd); void OnDestroy(HWND hwnd); void OnSize(HWND hwnd, UINT state, int cx, int cy); void OnGetMinMaxInfo(HWND hwnd, LPMINMAXINFO lpmmi); void OnChangeServers(HWND hwnd); BOOL IsGrpDialogMessage(HWND hwnd, LPMSG pMsg); BOOL ChangeServers(FOLDERID id, BOOL fForce = FALSE); BOOL FillServerList(HWND hwndList, FOLDERID idSel); BOOL OnSwitchTabs(HWND hwnd, UINT iTab); // Whenever we do something that might update the state of a button on // the dialog, we call this to allow the subclasses to update their UI. void UpdateStateUI(void); UINT m_cRef; // Handy window handles to have available HWND m_hwnd; HWND m_hwndFindText; HWND m_hwndOwner; // State variables BOOL m_fAllowDesc; // TRUE if the user can search descriptions LPTSTR m_pszPrevQuery; // The string that we last searched on UINT m_cchPrevQuery; // The allocated length of m_pszPrevQuery // Values used in resizing UINT m_cxHorzSep; UINT m_cyVertSep; PSIZETABLE m_rgst; // st - SizeTable. I use this a lot so I wanted it short - SteveSer SIZE m_sizeDlg; POINT m_ptDragMin; HIMAGELIST m_himlServer; CGroupList *m_pGrpList; FOLDERTYPE m_type; UINT m_iTabSelect; FOLDERID m_idSel; FOLDERID m_idGoto; BOOL m_fEnableGoto; BOOL m_fServerListInited; FOLDERID m_idCurrent; HICON m_hIcon; CColumns *m_pColumns; }; ///////////////////////////////////////////////////////////////////////////// // Dialog Control ID's // #define idcGroupList 2001 // Group list listview #define idcFindText 2002 // Find query edit box #define idcShowFavorites 2003 // Filter favorites toggle #define idcUseDesc 2004 // Use Desc checkbox #define idcServers 2005 // Server Listview #define idcHelp 2006 // Help button #define idcResetList 2007 // Rebuild the group list #define idcUpdateNow 1001 #define idcFullWord 1004 #define idcPreview 1006 #define idcProgress 1007 #define idcApply 1008 #define idcFind 1010 #define idcDispText 1011 #define idcServerText 1012 #define idcPreviewBtn 1013 #define idcSubscribe 1014 #define idcUnsubscribe 1015 #define idcTabs 1016 #define idcStaticNewsServers 1017 #define idcStaticHorzLine 1019 #define idcGoto 1020 enum { iTabAll = 0, iTabSubscribed, iTabNew, iTabMax }; enum { iCtlFindText = 0, iCtlUseDesc, iCtlGroupList, iCtlSubscribe, iCtlUnsubscribe, iCtlResetList, iCtlGoto, iCtlOK, iCtlCancel, iCtlServers, iCtlStaticNewsServers, iCtlStaticHorzLine, iCtlTabs, iCtlMax }; HRESULT DoSubscriptionDialog(HWND hwnd, BOOL fNews, FOLDERID idFolder, BOOL fShowNew = FALSE); #endif // __SUBSCR_H__