173 lines
6.0 KiB
C++
173 lines
6.0 KiB
C++
// ==============================================================================
|
|
// MIMEOLE'd Attachment Manger v2. - brettm
|
|
// ==============================================================================
|
|
#ifndef __ATTMAN_H
|
|
#define __ATTMAN_H
|
|
|
|
// ==============================================================================
|
|
// Depends On
|
|
// ==============================================================================
|
|
#include "mimeolep.h"
|
|
|
|
#define ATTN_RESIZEPARENT 10000
|
|
|
|
// from common\dragdrop.h
|
|
typedef struct tagDATAOBJINFO *PDATAOBJINFO;
|
|
|
|
// ==============================================================================
|
|
// Defines
|
|
// ==============================================================================
|
|
//#define BASE_ATTACH_CMD_ID (ULONG)(WM_USER + 1)
|
|
|
|
// ==============================================================================
|
|
// CAttMan Definition
|
|
// ==============================================================================
|
|
class CAttMan :
|
|
public IDropSource,
|
|
public IPersistMime
|
|
{
|
|
public:
|
|
// *** IUnknown methods ***
|
|
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject);
|
|
ULONG STDMETHODCALLTYPE AddRef(void);
|
|
ULONG STDMETHODCALLTYPE Release(void);
|
|
|
|
// *** IDropSource methods ***
|
|
HRESULT STDMETHODCALLTYPE QueryContinueDrag(BOOL fEscapePressed, DWORD grfKeyState);
|
|
HRESULT STDMETHODCALLTYPE GiveFeedback(DWORD dwEffect);
|
|
|
|
// IPersistMime
|
|
HRESULT STDMETHODCALLTYPE Load(LPMIMEMESSAGE pMsg);
|
|
HRESULT STDMETHODCALLTYPE Save(LPMIMEMESSAGE pMsg, DWORD dwFlags);
|
|
HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClsID);
|
|
|
|
CAttMan ();
|
|
~CAttMan ();
|
|
|
|
// Load function, unload and close
|
|
HRESULT HrInit (HWND hwnd, BOOL fReadOnly, BOOL fDeleteVCards, BOOL fAllowUnsafe);
|
|
HRESULT HrUnload();
|
|
HRESULT HrClose();
|
|
|
|
HRESULT HrIsDragSource();
|
|
|
|
HRESULT HrGetAttachCount(ULONG *pcAttach);
|
|
HRESULT HrIsDirty();
|
|
HRESULT HrClearDirtyFlag();
|
|
|
|
LPTSTR GetUnsafeAttachList();
|
|
ULONG GetUnsafeAttachCount();
|
|
|
|
// handling of windows messages
|
|
BOOL WMCommand(HWND hwndCmd, INT id, WORD wCmd);
|
|
BOOL WMNotify(int idFrom, NMHDR *pnmhdr);
|
|
BOOL WMContextMenu (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
|
|
static BOOL CALLBACK InsertFileDlgHookProc(HWND, UINT, WPARAM, LPARAM);
|
|
|
|
// handlign of WM_DROPFILE
|
|
HRESULT HrDropFiles(HDROP hDrop, BOOL fMakeLinks);
|
|
|
|
// toobar and menu update
|
|
HRESULT HrUpdateToolbar(HWND);
|
|
|
|
// external sizing
|
|
HRESULT HrGetHeight(INT cxWidth, ULONG *pcy);
|
|
HRESULT HrSetSize (RECT *prc);
|
|
|
|
HWND Hwnd() {return m_hwndList;};
|
|
|
|
// enable flags for the browser menus
|
|
HRESULT HrCmdEnabled(UINT idm, LPBOOL pbEnable);
|
|
HRESULT HrFVCard();
|
|
HRESULT HrShowVCardProp();
|
|
HRESULT HrCheckVCardExists(BOOL fMail);
|
|
HRESULT GetTabStopArray(HWND *rgTSArray, int *pcArrayCount);
|
|
HRESULT HrAddAttachment (LPWSTR lpszPathName, LPSTREAM pstm, BOOL fShortCut);
|
|
HRESULT HrSwitchView(DWORD dwView);
|
|
HRESULT HrGetRequiredAction(DWORD *pdwEffect, POINTL pt);
|
|
HRESULT HrDropFileDescriptor(LPDATAOBJECT pDataObj, BOOL fLink);
|
|
HRESULT CheckAttachNameSafeWithCP(CODEPAGEID cpID);
|
|
|
|
private:
|
|
LPMIMEMESSAGE m_pMsg;
|
|
HIMAGELIST m_himlSmall;
|
|
HIMAGELIST m_himlLarge;
|
|
ULONG m_cRef;
|
|
HWND m_hwndList,
|
|
m_hwndParent; // we stuff this for UI when there's no m_hwndList
|
|
CLIPFORMAT m_cfAccept;
|
|
DWORD m_dwDragType,
|
|
m_grfKeyState,
|
|
m_dwEffect;
|
|
int m_cxMaxText,
|
|
m_cyHeight;
|
|
BOOL m_fReadOnly :1,
|
|
m_fDirty :1,
|
|
m_fDragSource :1,
|
|
m_fDropTargetRegister :1,
|
|
m_fShowingContext :1,
|
|
m_fRightClick :1,
|
|
m_fModal :1,
|
|
m_fDeleteVCards :1,
|
|
m_fWarning :1,
|
|
m_fSafeOnly :1;
|
|
LPATTACHDATA *m_rgpAttach;
|
|
ULONG m_cAttach,
|
|
m_cAlloc,
|
|
m_cUnsafeAttach;
|
|
HMENU m_hMenuSaveAttach;
|
|
INT m_iVCard;
|
|
LPTSTR m_szUnsafeAttachList;
|
|
|
|
|
|
// Listview stuff
|
|
HRESULT HrInitImageLists();
|
|
HRESULT HrFillListView();
|
|
HRESULT HrCreateListView(HWND hwnd);
|
|
HRESULT HrAddToList(LPATTACHDATA pAttach, BOOL fIniting);
|
|
HRESULT HrBuildAttachList();
|
|
|
|
// menu stuff
|
|
HRESULT HrGetAttMenu(HMENU *phMenu, BOOL fContextMenu);
|
|
HRESULT HrCleanMenu(HMENU hMenu);
|
|
HRESULT HrGetAttachmentById(HMENU hMenu, ULONG id, HBODY *phBody);
|
|
HRESULT HrGetItemTextExtent(HWND hwnd, LPSTR szDisp, LPSIZE pSize);
|
|
HRESULT HrAttachFromMenuID(int idm, LPATTACHDATA *ppAttach);
|
|
|
|
HRESULT HrInsertFile();
|
|
HRESULT HrRemoveAttachments();
|
|
HRESULT HrRemoveAttachment(int ili);
|
|
HRESULT HrDeleteAttachments();
|
|
|
|
HRESULT HrExecFile(int iVerb);
|
|
|
|
HRESULT HrInsertFileFromStgMed(LPWSTR pwszFileName, LPSTGMEDIUM pstgmed, BOOL fLink);
|
|
|
|
HRESULT HrBeginDrag();
|
|
HRESULT HrBuildHDrop(PDATAOBJINFO *ppdoi);
|
|
|
|
HRESULT HrResizeParent();
|
|
HRESULT HrDblClick(int idFrom, NMHDR *pnmhdr);
|
|
|
|
HRESULT HrCheckVCard();
|
|
|
|
// data table
|
|
HRESULT HrFreeAllData();
|
|
HRESULT HrAddData(HBODY hAttach);
|
|
HRESULT HrAddData(LPWSTR lpszPathName, LPSTREAM pstm, LPATTACHDATA *ppAttach);
|
|
HRESULT HrAllocNewEntry(LPATTACHDATA pAttach);
|
|
|
|
// Attachment commands
|
|
HRESULT HrDoVerb(LPATTACHDATA pAttach, INT nVerb);
|
|
HRESULT HrSaveAs(LPATTACHDATA lpAttach);
|
|
HRESULT HrGetTempFile(LPATTACHDATA lpAttach);
|
|
HRESULT HrCleanTempFile(LPATTACHDATA lpAttach);
|
|
HRESULT HrSave(HBODY hAttach, LPWSTR lpszFileName);
|
|
|
|
};
|
|
|
|
typedef CAttMan *LPATTMAN;
|
|
|
|
#endif __ATTMAN_H
|