//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1995 - 1995. // // File: jobfldr.hxx // // Contents: Declaration of COM object CJobFolder // // History: 1/4/1996 RaviR Created // 1-23-1997 DavidMun Add m_hwndNotify member // //---------------------------------------------------------------------------- #ifndef __JOBFLDR_HXX__ #define __JOBFLDR_HXX__ #include "dll.hxx" #include #define INVALID_LISTVIEW_STYLE 0xFFFFFFFF //____________________________________________________________________________ // // Class: CJobFolder // // History: 1/4/1996 RaviR Created //____________________________________________________________________________ class CJobFolder : public IShellFolder, #if (_WIN32_IE >= 0x0400) public IPersistFolder2, #else public IPersistFolder, #endif // (_WIN32_IE >= 0x0400) public IRemoteComputer, public IDropTarget { public: static HRESULT Create(CJobFolder ** ppJobFolder); ~CJobFolder(); // IUnknown methods DECLARE_STANDARD_IUNKNOWN; // IRemoteComputer method STDMETHOD(Initialize)(LPCWSTR pszMachine, BOOL bEnumerating); // IPersist methods STDMETHOD(GetClassID)(LPCLSID lpClassID); // IPersistFolder methods STDMETHOD(Initialize)(LPCITEMIDLIST pidl); #if (_WIN32_IE >= 0x0400) // IPersistFolder2 methods STDMETHOD(GetCurFolder)(LPITEMIDLIST *ppidl); #endif // (_WIN32_IE >= 0x0400) // IShellFolder methods STDMETHOD(ParseDisplayName)(HWND hwndOwner, LPBC pbcReserved, LPOLESTR lpszDisplayName, ULONG* pchEaten, LPITEMIDLIST* ppidl, ULONG* pdwAttributes); STDMETHOD(EnumObjects)(HWND hwndOwner, DWORD grfFlags, LPENUMIDLIST* ppenumIDList); STDMETHOD(BindToObject)(LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, LPVOID* ppvOut); STDMETHOD(BindToStorage)(LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, LPVOID* ppvObj); STDMETHOD(CompareIDs)(LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2); STDMETHOD(CreateViewObject)(HWND hwndOwner, REFIID riid, LPVOID* ppvOut); STDMETHOD(GetAttributesOf)(UINT cidl, LPCITEMIDLIST* apidl, ULONG* rgfInOut); STDMETHOD(GetUIObjectOf)(HWND hwndOwner, UINT cidl, LPCITEMIDLIST* apidl, REFIID riid, UINT* prgfInOut, LPVOID* ppvOut); STDMETHOD(GetDisplayNameOf)(LPCITEMIDLIST pidl, DWORD uFlags, LPSTRRET lpName); STDMETHOD(SetNameOf)(HWND hwndOwner, LPCITEMIDLIST pidl, LPCOLESTR lpszName, DWORD uFlags, LPITEMIDLIST* ppidlOut); // IDropTarget STDMETHOD(DragEnter)(LPDATAOBJECT pdtobj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect); STDMETHOD(DragOver)(DWORD grfKeyState, POINTL pt, DWORD *pdwEffect); STDMETHOD(DragLeave)(void); STDMETHOD(Drop)(LPDATAOBJECT pdtobj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect); // Method required to handle dir change notification LPCTSTR GetFolderPath(void) const { return m_pszFolderPath; } LPSHELLVIEW GetShellView(void) const { return m_pShellView; } HRESULT CreateAJobForApp(LPCTSTR pszApp); LRESULT HandleFsNotify(LONG lNotification, LPCITEMIDLIST* ppidl); void OnUpdateDir(void); HRESULT CopyToFolder(LPDATAOBJECT pdtobj, BOOL fMove, BOOL fDragDrop, POINTL * pPtl); LPCTSTR GetMachine() const { return m_pszMachine; } private: CJobFolder(void); HRESULT _GetJobScheduler(void); static HRESULT CALLBACK s_JobsFVCallBack(LPSHELLVIEW psvOuter, LPSHELLFOLDER psf, HWND hwndOwner, UINT uMsg, WPARAM wParam, LPARAM lParam); HRESULT CALLBACK _JobsFVCallBack(LPSHELLVIEW psvOuter, LPSHELLFOLDER psf, HWND hwndOwner, UINT uMsg, WPARAM wParam, LPARAM lParam); HRESULT _InitRest(void); int _UpdateJob(LPTSTR pszJob, FILETIME *pftLastWriteTime); BOOL _PopupRBMoveCtx(LONG x, LONG y, BOOL *pfMove); HRESULT _AddObject(PJOBID pjid, LPITEMIDLIST *ppidl = NULL); HRESULT _UpdateObject(PJOBID pjidOld, PJOBID pjidNew, LPITEMIDLIST *ppidl = NULL); INT_PTR _RemoveObject(PJOBID pjid) { return ShellFolderView_RemoveObject(m_hwndOwner, pjid); } BOOL _ObjectAlreadyPresent(LPTSTR pszObj); int _GetJobIDForTask(PJOBID * ppjid, int count, LPTSTR pszTask); ULONG _GetChildListViewMode(HWND hwndOwner); void _SetViewMode(HWND hwndOwner, ULONG ulStyle); HWND m_hwndOwner; HWND m_hwndNotify; // JF Notify window LPITEMIDLIST m_pidlFldr; ULONG m_uRegister; IShellView * m_pShellView; ITaskScheduler * m_pScheduler; LPTSTR m_pszMachine; LPCTSTR m_pszFolderPath; CDllRef m_DllRef; ULONG m_ulListViewModeOnEntry; // // Data used for drag drop // DWORD m_grfKeyStateLast; // // QCMINFO got during DVM_MERGEMENU and used during DVM_INVOKECOMMAND // in _JobsFVCallBack // QCMINFO m_qcm; // // data used by _OnUpdateDir // PBYTE m_pUpdateDirData; int m_cObjsAlloced; }; // class CJobFolder //____________________________________________________________________________ // // Member: CJobFolder::CJobFolder, Constructor //____________________________________________________________________________ inline CJobFolder::CJobFolder(void) : m_ulRefs(1), m_hwndOwner(NULL), m_hwndNotify(NULL), m_pidlFldr(NULL), m_uRegister(0), m_pShellView(NULL), m_pScheduler(NULL), m_pszMachine(NULL), m_pszFolderPath(NULL), m_pUpdateDirData(NULL), m_cObjsAlloced(0), m_ulListViewModeOnEntry(INVALID_LISTVIEW_STYLE) { TRACE(CJobFolder, CJobFolder); } //____________________________________________________________________________ // // Member: CJobFolder::_InitRest // // Returns: HRESULT // // History: 2/20/1996 RaviR Created // //____________________________________________________________________________ inline HRESULT CJobFolder::_InitRest(void) { TRACE(CJobFolder, _InitRest); // Get the scheduler & cache it return JFGetJobScheduler(m_pszMachine, &m_pScheduler, &m_pszFolderPath); } #endif // __JOBFLDR_HXX__