www.pudn.com > GGBT.rar > CategoryBarWnd.h


#if !defined(AFX_CATEGORYBARWND_H__E3D48BF4_C720_47E5_BF74_F883FD69DD58__INCLUDED_) 
#define AFX_CATEGORYBARWND_H__E3D48BF4_C720_47E5_BF74_F883FD69DD58__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
// CategoryBarWnd.h : header file 
// 
#include "ctrlext.h" 
#include "val.h" 
#include "FileDB.h" 
#include "DownloadEngine.h" 
#include "CategoryFileDB.h" 
#include "CategoryDownload.h" 
 
 
 
class CFilesListCtrl; 
 
 
///////////////////////////////////////////////////////////////////////////// 
// CCategoryBarWnd window 
 
 
class CCategoryBarWnd : public CCategoryDownload// CCategoryFileDB //CTreeCtrlEx 
{ 
// Construction 
public: 
	CCategoryBarWnd(); 
 
// Attributes 
public:	 
	CImageList		m_ctlImage; 
	UINT			m_nIDClipFormat; 
 
// Operations 
public: 
	void OpenTorrentFile(string strTorrentFileName,  
		HTREEITEM hItemSel = 0, string strDirectorySave = string(), bool bOverwrite = false); 
 
	bool CreateNewCategory(CTreeCursor curSel, CTreeCursor& curNew); 
	 
	// command handler from mainframe. 
	void OnUpdateMenuitem(CCmdUI* pCmdUI); 
	void OnCommandMenuitem(UINT iID);		 
 
	void OnFindFile(); 
	void OnFindNext(); 
	void OnPopupCommand(UINT nMenuID); 
	void OnFileListViewInitialUpdate(); 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(CCategoryBarWnd) 
	public: 
	//}}AFX_VIRTUAL 
	virtual DROPEFFECT OnDragEnter(COleDataObject* pDataObject, DWORD dwKeyState, CPoint point); 
	virtual BOOL OnDrop(COleDataObject* pDataObject, DROPEFFECT dropEffect, CPoint point); 
	virtual DROPEFFECT OnDragOver(COleDataObject* pDataObject, DWORD dwKeyState, CPoint point); 
 
// Implementation 
public: 
	virtual ~CCategoryBarWnd(); 
 
	// Generated message map functions 
protected: 
	//{{AFX_MSG(CCategoryBarWnd) 
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); 
	afx_msg void OnDestroy(); 
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point); 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
 
	void OnRightClick(NMHDR *pNotifyStruct,LRESULT *result); 
	void DoPopupMenu(UINT nMenuID); 
	void OnNodeSelect(NMHDR *pNotifyStruct,LRESULT *result); 
	friend class CDownloadEngine; 
 
private: 
	bool CopyFileTorrent(string strTorrentFileName, string& strTorrentFileNameNoPath); 
	CTreeCursor findFileExist(CTreeCursor& curItem, string strInfohash, CFileDBItem*& pExistFileDBItem); 
	void findFileByConditions(bool bRefind, string strFindContion = "");	 
	static bool findDownloading(CTreeCursor curItem); 
 
	bool GetChildCount(CTreeCursor& curSrc, long& lCategoryCount, long& lFilesCount); 
	static bool IsChild(CTreeCursor curSrc, CTreeCursor curTarget); 
	static CTreeCursor MoveTree(CTreeCursor curSrc, CTreeCursor curTarget); 
	static bool MoveTreeEx(CTreeCursor curSrc, CTreeCursor curTarget); 
 
	CTreeCursor		m_ItemSel;	 
 
	/************************************************************** 
		CFindFileByConditions 
	**************************************************************/ 
	class CFindFileByConditions 
	{ 
	public: 
		CFindFileByConditions(); 
 
		void Create(CCategoryBarWnd* pCategoryBarWnd); 
		int findFileByConditions(bool bRefind, string strCondition); 
		void SetNewStartLocation(CTreeCursor curLocate, CFileDBItem* pFileDBItem); 
		bool CanFindNext(); 
		 
		CTreeCursor m_curLast; 
		CFileDBItem* m_pFileItem; 
 
	private: 
		CTreeCursor findFileByConditionsrec(CTreeCursor& curItem, string strCondition); 
 
		CCategoryBarWnd* m_pCategoryBarWnd; 
		bool m_bStart; 
		string m_strCondition; 
 
	}m_FindFileByConditions; 
	friend class CFindFileByConditions; 
	 
	/************************************************************** 
		CCategoryTarget  
	**************************************************************/ 
 
	class CCategoryTarget : public COleDropTarget 
	{ 
	public:	 
		DROPEFFECT OnDragEnter( CWnd* pWnd, COleDataObject* pDataObject, DWORD dwKeyState, CPoint point) 
		{ 
			return ((CCategoryBarWnd*) pWnd)->OnDragEnter(pDataObject, dwKeyState, point); 
		} 
		virtual DROPEFFECT OnDragOver( CWnd* pWnd, COleDataObject* pDataObject, DWORD dwKeyState, CPoint point) 
		{ 
			return ((CCategoryBarWnd*) pWnd)->OnDragOver( pDataObject, dwKeyState, point); 
		} 
		virtual BOOL OnDrop( CWnd* pWnd, COleDataObject* pDataObject, DROPEFFECT dropEffect, CPoint point) 
		{ 
			return ((CCategoryBarWnd*) pWnd)->OnDrop(pDataObject, dropEffect, point); 
		} 
		void OnDragLeave(CWnd* pWnd) 
		{ 
			COleDropTarget::OnDragLeave(pWnd); 
		} 
	}m_dropTarget; 
}; 
 
///////////////////////////////////////////////////////////////////////////// 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_CATEGORYBARWND_H__E3D48BF4_C720_47E5_BF74_F883FD69DD58__INCLUDED_)