|
|
#include "offline.h"
HRESULT SubscriptionItemFromCookie(BOOL fCreateNew, const SUBSCRIPTIONCOOKIE UNALIGNED *pCookie, ISubscriptionItem **ppSubscriptionItem);
HRESULT AddUpdateSubscription(SUBSCRIPTIONCOOKIE UNALIGNED *pCookie, SUBSCRIPTIONITEMINFO *psii, LPCWSTR pwszURL, ULONG nProps, const LPWSTR rgwszName[], VARIANT rgValue[]);
BOOL ItemKeyNameFromCookie(const SUBSCRIPTIONCOOKIE *pCookie, TCHAR *pszKeyName, DWORD cchKeyName);
BOOL OpenItemKey(const SUBSCRIPTIONCOOKIE *pCookie, BOOL fCreate, REGSAM samDesired, HKEY *phkey);
HRESULT GetInfoFromDataObject(IDataObject *pido, TCHAR *pszPath, DWORD cchPath, TCHAR *pszFriendlyName, DWORD cchFriendlyName, TCHAR *pszURL, DWORD cchURL, INIT_SRC_ENUM *peInitSrc);
HRESULT DoGetItemFromURL(LPCTSTR pszURL, ISubscriptionItem **ppSubscriptionItem); HRESULT DoGetItemFromURLW(LPCWSTR pwszURL, ISubscriptionItem **ppSubscriptionItem);
HRESULT DoAbortItems( /* [in] */ DWORD dwNumCookies, /* [size_is][in] */ const SUBSCRIPTIONCOOKIE *pCookies);
HRESULT DoCreateSubscriptionItem( /* [in] */ const SUBSCRIPTIONITEMINFO *pSubscriptionItemInfo, /* [out] */ SUBSCRIPTIONCOOKIE *pNewCookie, /* [out] */ ISubscriptionItem **ppSubscriptionItem);
HRESULT DoCloneSubscriptionItem( /* [in] */ ISubscriptionItem *pSubscriptionItem, /* [out] */ SUBSCRIPTIONCOOKIE *pNewCookie, /* [out] */ ISubscriptionItem **ppSubscriptionItem);
HRESULT DoDeleteSubscriptionItem( /* [in] */ const SUBSCRIPTIONCOOKIE UNALIGNED *pCookie, /* [in] */ BOOL fAbortItem);
//
// Subscription manager
//
class CSubscriptionMgr : public IShellPropSheetExt, public IShellExtInit, public ISubscriptionMgr2, public ISubscriptionMgrPriv { friend INT_PTR CALLBACK SummarizeDesktopSubscriptionDlgProc(HWND, UINT, WPARAM, LPARAM); friend POOEBuf Summary_GetBuf(HWND hdlg);
protected: long m_cRef; LPMYPIDL _pidl; SUBSCRIPTIONCOOKIE m_cookie; TCHAR m_pszURL[INTERNET_MAX_URL_LENGTH]; TCHAR m_pszFriendly[MAX_PATH]; TCHAR m_pszPath[MAX_PATH]; POOEBuf m_pBuf; IUnknown * m_pUIHelper; UINT m_nPages; INIT_SRC_ENUM m_eInitSrc; SUBSCRIPTIONTYPE m_oldType;
private: ~CSubscriptionMgr();
public: CSubscriptionMgr();
// IUnknown members
STDMETHODIMP QueryInterface(REFIID, void **); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
// IShellExtInit members
STDMETHODIMP Initialize(LPCITEMIDLIST pidlFolder, LPDATAOBJECT lpdobj, HKEY hkeyProgID);
// IShellPropSheetExt
STDMETHODIMP AddPages(LPFNADDPROPSHEETPAGE lpfnAddPage, LPARAM lParam); STDMETHODIMP ReplacePage(UINT uPageID, LPFNADDPROPSHEETPAGE lpfnReplacePage, LPARAM lParam);
// ISubscriptionMgr
STDMETHODIMP DeleteSubscription(LPCWSTR pURL, HWND hwnd); STDMETHODIMP IsSubscribed(LPCWSTR pURL, BOOL *); STDMETHODIMP GetDefaultInfo(SUBSCRIPTIONTYPE subType, SUBSCRIPTIONINFO *pInfo); STDMETHODIMP GetSubscriptionInfo(LPCWSTR pwszURL, SUBSCRIPTIONINFO *pInfo); STDMETHODIMP ShowSubscriptionProperties(LPCWSTR pURL, HWND hwnd); STDMETHODIMP CreateSubscription(HWND hwnd, LPCWSTR pwszURL, LPCWSTR pwszFriendlyName, DWORD dwFlags, SUBSCRIPTIONTYPE subsType, SUBSCRIPTIONINFO *pInfo); STDMETHODIMP UpdateSubscription(LPCWSTR pwszURL); STDMETHODIMP UpdateAll();
// ISubscriptionMgr2
STDMETHODIMP GetItemFromURL(LPCWSTR pwszURL, ISubscriptionItem **ppSubscriptionItem); STDMETHODIMP GetItemFromCookie(const SUBSCRIPTIONCOOKIE *pSubscriptionCookie, ISubscriptionItem **ppSubscriptionItem); STDMETHODIMP GetSubscriptionRunState(DWORD dwNumCookies, const SUBSCRIPTIONCOOKIE *pCookies, DWORD *pdwRunState); STDMETHODIMP EnumSubscriptions(DWORD dwFlags, IEnumSubscription **ppEnumSubscriptions); STDMETHODIMP UpdateItems(DWORD dwFlags, DWORD dwNumCookies, const SUBSCRIPTIONCOOKIE *pCookies); STDMETHODIMP AbortItems(DWORD dwNumCookies, const SUBSCRIPTIONCOOKIE *pCookies); STDMETHODIMP AbortAll();
// ISubscriptionMgrPriv
STDMETHODIMP CreateSubscriptionItem(const SUBSCRIPTIONITEMINFO *pSubscriptionItemInfo, SUBSCRIPTIONCOOKIE *pNewCookie, ISubscriptionItem **ppSubscriptionItem); STDMETHODIMP CloneSubscriptionItem(ISubscriptionItem *pSubscriptionItem, SUBSCRIPTIONCOOKIE *pNewCookie, ISubscriptionItem **ppSubscriptionItem); STDMETHODIMP DeleteSubscriptionItem(const SUBSCRIPTIONCOOKIE *pCookie);
STDMETHODIMP RemovePages(HWND hdlg); STDMETHODIMP SaveSubscription(); STDMETHODIMP URLChange(LPCWSTR pwszNewURL);
HRESULT CountSubscriptions(SUBSCRIPTIONTYPE subType, PDWORD pdwCount);
protected: void ChangeSubscriptionValues(OOEBuf *pCurrent, SUBSCRIPTIONINFO *pNew); // HRESULT ResyncData(HWND);
BOOL IsValidSubscriptionInfo(SUBSCRIPTIONTYPE subType, SUBSCRIPTIONINFO *pSI);
//helpers for CreateSubscription -- not exported via ISubscriptionMgr
STDMETHODIMP CreateSubscriptionNoSummary(HWND hwnd, LPCWSTR pwszURL, LPCWSTR pwszFriendlyName, DWORD dwFlags, SUBSCRIPTIONTYPE subsType, SUBSCRIPTIONINFO *pInfo); STDMETHODIMP CreateDesktopSubscription(HWND hwnd, LPCWSTR pwszURL, LPCWSTR pwszFriendlyName, DWORD dwFlags, SUBSCRIPTIONTYPE subsType, SUBSCRIPTIONINFO *pInfo); };
class CEnumSubscription : public IEnumSubscription { public: CEnumSubscription(); HRESULT Initialize(DWORD dwFlags); HRESULT CopyRange(ULONG nStart, ULONG nCount, SUBSCRIPTIONCOOKIE *pCookies, ULONG *pnCopied);
// IUnknown members
STDMETHODIMP QueryInterface(REFIID riid, void **ppv); STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release();
// IEnumSubscription
STDMETHODIMP Next( /* [in] */ ULONG celt, /* [length_is][size_is][out] */ SUBSCRIPTIONCOOKIE *rgelt, /* [out] */ ULONG *pceltFetched); STDMETHODIMP Skip( /* [in] */ ULONG celt); STDMETHODIMP Reset( void); STDMETHODIMP Clone( /* [out] */ IEnumSubscription **ppenum); STDMETHODIMP GetCount( /* [out] */ ULONG *pnCount);
private: ~CEnumSubscription();
ULONG m_nCurrent; ULONG m_nCount; ULONG m_cRef;
SUBSCRIPTIONCOOKIE *m_pCookies; };
|