//+------------------------------------------------------------------------- // // Microsoft Windows // // Copyright (C) Microsoft Corporation, 1997 - 1999 // // File: statdlg.h // //-------------------------------------------------------------------------- #ifndef _INC_CSCUI_STATDLG_H #define _INC_CSCUI_STATDLG_H #ifndef _CSCST_H_ # include "cscst.h" #endif class CStatusDlg { public: enum Modes { MODE_NORMAL = 0, MODE_AUTOSYNC }; static int Create(HWND hwndParent, LPCTSTR pszText, eSysTrayState eState, Modes mode = MODE_NORMAL); private: CStatusDlg(HINSTANCE hInstance, LPCTSTR pszText, eSysTrayState eState, Modes mode = MODE_NORMAL); ~CStatusDlg(void); int Run(HWND hwndParent); void Destroy(void); enum { iIMAGELIST_ICON_SERVER = 0, iIMAGELIST_ICON_SERVER_OFFLINE, iIMAGELIST_ICON_SERVER_BACK, iIMAGELIST_ICON_SERVER_DIRTY }; // // An entry in the listview. // class LVEntry { public: LVEntry(HINSTANCE hInstance, LPCTSTR pszServer, bool bConnectable); ~LVEntry(void); LPCTSTR Server(void) const { return m_pszServer; } void GetStatusText(LPTSTR pszStatus, int cchStatus) const; void GetInfoText(LPTSTR pszInfo, int cchInfo) const; int GetImageIndex(void) const; bool AddShare(LPCTSTR pszShare, const CSCSHARESTATS& s, DWORD dwCscStatus); void GetStats(CSCSHARESTATS *ps, DWORD *pdwCscStatus) const; int GetShareCount(void) const; LPCTSTR GetShareName(int iShare) const; bool IsModified(void) const { return (0 < m_stats.cModified); } bool IsConnected(void) const { return (0 != (FLAG_CSC_SHARE_STATUS_CONNECTED & m_dwCscStatus)); } bool IsOffline(void) const { return (0 != (FLAG_CSC_SHARE_STATUS_DISCONNECTED_OP & m_dwCscStatus)); } bool IsConnectable(void) const { return m_bConnectable; } // // Structure describing the display info for one listview entry. // struct DispInfo { UINT idsStatusText; UINT idsInfoText; int iImage; }; private: // // Disp Info flags used to control what's displayed for the // entry in the listview. // enum { DIF_MODIFIED = 0x00000001, DIF_AVAILABLE = 0x00000002, DIF_ONLINE = 0x00000004 }; HINSTANCE m_hInstance; CSCSHARESTATS m_stats; DWORD m_dwCscStatus; LPTSTR m_pszServer; HDPA m_hdpaShares; mutable int m_iDispInfo; // Index into s_rgDispInfo[] bool m_bConnectable; static const TCHAR s_szBlank[]; static const DispInfo s_rgDispInfo[]; int GetDispInfoIndex(void) const; // // Prevent copy. // LVEntry(const LVEntry& rhs); LVEntry& operator = (const LVEntry& rhs); }; enum { iLVSUBITEM_SERVER = 0, iLVSUBITEM_STATUS, iLVSUBITEM_INFO }; HINSTANCE m_hInstance; HWND m_hwndDlg; HWND m_hwndLV; HIMAGELIST m_himl; LPTSTR m_pszText; Modes m_mode; // MODE_NORMAL etc. eSysTrayState m_eSysTrayState; int m_cyExpanded; int m_iLastColSorted; bool m_bExpanded; bool m_bSortAscending; BOOL OnInitDialog(WPARAM wParam, LPARAM lParam); BOOL OnCommand(WPARAM wParam, LPARAM lParam); BOOL OnNotify(WPARAM wParam, LPARAM lParam); BOOL OnDestroy(void); void OnLVN_GetDispInfo(LV_DISPINFO *plvdi); void OnLVN_ColumnClick(NM_LISTVIEW *pnmlv); void CreateListColumns(void); HIMAGELIST CreateImageList(void); void FillListView(void); void DestroyLVEntries(void); LVEntry *CreateLVEntry(LPCTSTR pszServer, bool bConnectable); LVEntry *FindLVEntry(LPCTSTR pszServer); bool ShouldIncludeLVEntry(const CStatusDlg::LVEntry& entry); bool ShouldCheckLVEntry(const CStatusDlg::LVEntry& entry); void PrepListForDisplay(void); void EnableListviewCheckboxes(bool bEnable); static int CALLBACK CompareLVItems(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort); static INT_PTR CALLBACK DlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); void ExpandDialog(bool bExpand); void UpdateDetailsBtnTitle(void); void RememberUsersDialogSizePref(bool bExpanded); bool UserLikesDialogExpanded(void); HRESULT SynchronizeServers(void); HRESULT BuildFilenameList(CscFilenameList *pfnl); }; BOOL TransitionShareOnline(LPCTSTR pszShare, BOOL bShareIsAlive, BOOL bCheckSpeed, DWORD dwPathSpeed); HRESULT ReconnectServers(CscFilenameList *pfnl, BOOL bCheckForOpenFiles, BOOL bCheckSpeed); #endif // _INC_CSCUI_STATDLG_H