Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

195 lines
8.0 KiB

#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;
};