Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

137 lines
5.7 KiB

  1. #ifndef _INC_ACCTVIEW_H
  2. #define _INC_ACCTVIEW_H
  3. #include "browser.h"
  4. #include <columns.h>
  5. class CEmptyList;
  6. class CFolderUpdateCB;
  7. class CGetNewGroups;
  8. typedef struct tagFLDRNODE
  9. {
  10. FOLDERID id;
  11. DWORD indent;
  12. DWORD dwDownload;
  13. } FLDRNODE;
  14. class CAccountView :
  15. public IViewWindow,
  16. public IOleCommandTarget,
  17. public IDatabaseNotify
  18. {
  19. public:
  20. CAccountView();
  21. ~CAccountView();
  22. // IUnknown
  23. virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject);
  24. virtual ULONG STDMETHODCALLTYPE AddRef(void);
  25. virtual ULONG STDMETHODCALLTYPE Release(void);
  26. // IOleWindow
  27. HRESULT STDMETHODCALLTYPE GetWindow(HWND * lphwnd);
  28. HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
  29. // IAthenaView
  30. HRESULT STDMETHODCALLTYPE TranslateAccelerator(LPMSG lpmsg);
  31. HRESULT STDMETHODCALLTYPE UIActivate(UINT uState);
  32. HRESULT STDMETHODCALLTYPE CreateViewWindow(IViewWindow *lpPrevView, IAthenaBrowser *psb,
  33. RECT *prcView, HWND *phWnd);
  34. HRESULT STDMETHODCALLTYPE DestroyViewWindow();
  35. HRESULT STDMETHODCALLTYPE SaveViewState();
  36. HRESULT STDMETHODCALLTYPE OnPopupMenu(HMENU hMenu, HMENU hMenuPopup, UINT uID);
  37. // IOleCommandTarget
  38. HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText);
  39. HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdExecOpt, VARIANTARG *pvaIn, VARIANTARG *pvaOut);
  40. // IDatabaseNotify
  41. STDMETHODIMP OnTransaction(HTRANSACTION hTransaction, DWORD_PTR dwCookie, IDatabase *pDB);
  42. HRESULT HrInit(FOLDERID idFolder);
  43. static LRESULT CALLBACK AcctViewWndProc(HWND, UINT, WPARAM, LPARAM);
  44. private:
  45. /////////////////////////////////////////////////////////////////////////
  46. //
  47. // Message Handling
  48. //
  49. LRESULT _WndProc(HWND, UINT, WPARAM, LPARAM);
  50. BOOL _OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct);
  51. void _OnSize(HWND hwnd, UINT state, int cxClient, int cyClient);
  52. LRESULT _OnNotify(HWND hwnd, int idFrom, LPNMHDR pnmhdr);
  53. void _OnSetFocus(HWND hwnd, HWND hwndOldFocus);
  54. void _PostCreate(void);
  55. HRESULT _InsertChildren(FOLDERID idFolder, DWORD indent, DWORD *piNode);
  56. HRESULT _InsertChildrenSpecial(FOLDERID idFolder, DWORD indent, DWORD *piNode);
  57. BOOL _OnWinIniChange(HWND hwnd);
  58. void _OnContextMenu(HWND hwnd, HWND hwndFrom, int x, int y);
  59. HRESULT _MarkForDownload(DWORD nCmdID);
  60. HRESULT _ToggleDownload(int iItem);
  61. HRESULT _GetDisplayInfo(LV_DISPINFO *pDispInfo, COLUMN_ID id);
  62. HRESULT _InsertFolder(LPFOLDERINFO pFolder);
  63. HRESULT _InsertFolderNews(LPFOLDERINFO pFolder);
  64. HRESULT _UpdateFolder(LPFOLDERINFO pFolder1, LPFOLDERINFO pFolder2);
  65. HRESULT _DeleteFolder(LPFOLDERINFO pFolder);
  66. HRESULT _Subscribe(BOOL fSubscribe);
  67. HRESULT _MarkAllRead(void);
  68. BOOL _IsSelectedFolder(FLDRFLAGS dwFlags, BOOL fCondition, BOOL fAll, BOOL fIgnoreSpecial = FALSE);
  69. DWORD _GetDownloadCmdStatus(int iSel, FLDRFLAGS dwFlags);
  70. LRESULT _OnPaint(HWND hwnd, HDC hdc);
  71. void _HandleItemStateChange(void);
  72. void _HandleSettingsButton(HWND hwnd);
  73. void _OnCommand(WPARAM wParam, LPARAM lParam);
  74. HRESULT _HandleAccountRename(LPFOLDERINFO pFolder);
  75. void _HandleDelete(BOOL fNoTrash);
  76. /////////////////////////////////////////////////////////////////////////
  77. //
  78. // Shell Interface Handling
  79. //
  80. BOOL _OnActivate(UINT uActivation);
  81. BOOL _OnDeactivate();
  82. int _GetFolderIndex(FOLDERID id);
  83. int _GetSubFolderCount(int index);
  84. inline FOLDERID _IdFromIndex(int index) { IxpAssert((DWORD)index < m_cnode); return((index >= 0 && (DWORD)index < m_cnode) ? m_rgnode[index].id : FOLDERID_INVALID); }
  85. inline FLDRNODE *_NodeFromIndex(int index) { IxpAssert((DWORD)index < m_cnode); return((index >= 0 && (DWORD)index < m_cnode) ? &m_rgnode[index] : NULL); }
  86. private:
  87. UINT m_cRef;
  88. FOLDERID m_idFolder;
  89. FOLDERTYPE m_ftType;
  90. DWORD m_dwDownloadDef;
  91. IAthenaBrowser *m_pShellBrowser;
  92. BOOL m_fFirstActive;
  93. CColumns *m_pColumns;
  94. UINT m_uActivation;
  95. HWND m_hwndOwner; // Owner window
  96. HWND m_hwnd; // Our window
  97. BOOL m_fRegistered;
  98. HWND m_hwndList;
  99. HWND m_hwndHeader;
  100. HWND m_rgBtns[3];
  101. int m_cBtns;
  102. RECT m_rcHeader;
  103. RECT m_rcMajor;
  104. LPSTR m_pszMajor;
  105. RECT m_rcMinor;
  106. LPSTR m_pszMinor;
  107. RECT m_rcButtons;
  108. DWORD m_cnode;
  109. DWORD m_cnodeBuf;
  110. FLDRNODE *m_rgnode;
  111. HIMAGELIST m_himlFolders;
  112. CEmptyList *m_pEmptyList;
  113. CGetNewGroups *m_pGroups;
  114. DWORD m_clrWatched;
  115. };
  116. #endif // _INC_ACCTVIEW_H