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


// CategoryFileDB.h: interface for the CCategoryFileDB class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_CATEGORYFILEDB_H__B8B8E016_0450_41EB_A7C2_424943981800__INCLUDED_) 
#define AFX_CATEGORYFILEDB_H__B8B8E016_0450_41EB_A7C2_424943981800__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
#include "ctrlext.h" 
 
 
class CCategoryBarWnd; 
class CFileDBItem; 
class CVal; 
class CSetupRegister; 
 
class CCategoryFileDB  : public CTreeCtrlEx 
{	 
public: 
	class CCategoryDBItem 
	{ 
	public : 
		CCategoryDBItem(string strDefaultDirectory, long lDirectoryID) 
		{ 
			m_strDefaultDirectory = strDefaultDirectory; 
			m_lDirectoryID = lDirectoryID; 
			 
		} 
		 
		long m_lDirectoryID; 
		string  m_strDefaultDirectory; 
		vector m_vFileDBItems; 
	}; 
 
public: 
	CCategoryFileDB(); 
	virtual ~CCategoryFileDB(); 
	 
	BOOL CreateEx(CWnd *pParent, CRect &rc, long lParam, CSetupRegister* pSetupRegister ); 
 
	CTreeCursor findCursorByDirid(long lDirectoryID); 
 
	void NewDatabase(); 
	bool OpenDBFile(string strDatabasePath); 
	void SaveAs(string strDatabasePath); 
	void Save(); 
	bool IsModifyed(); 
	void SetModifed(bool bModified = true); 
	string GetDatabaseName(); 
	string GetDatabaseFullPath(); 
	string GetDBSavePath() const; 
 
	CSetupRegister* GetSetupRegister() const; 
	 
	// data 
	CTreeCursor m_curRoot; 
	CTreeCursor m_curDownloading; 
	CTreeCursor m_curDownloaded; 
	CTreeCursor m_curRecycle; 
 
protected: 
	string _GetDBSavePath(const string strDatabaseFileName) const; 
	void LoadDBFile(); 
	void SaveDatabase(string strDatabasePath); 
	bool LoadDatabase(string strDatabasePath); 
	virtual void DeleteAllData(CTreeCursor& curDel); 
	// bool IsLinkFileDBItem(CTreeCursor curItem, CFileDBItem* pFileDBItem); 
	 
	// data	 
	CSetupRegister* m_pSetupRegister; 
	bool		m_bNoNotifications; 
	long		m_lDirectoryIDMax;	 
	enum ImageIDS{IID_ROOT = 0, IID_DOWNLOADED_DIRECTORY, IID_DOWNLOADING_DIRECTORY, IID_RECYCLE, IID_DIRECTORY}; 
 
	class CUnclosed 
	{ 
	public: 
		CUnclosed(CFileDBItem* pFileDBItem, HTREEITEM hTreeItem) 
		{ 
			m_pFileDBItem = pFileDBItem; 
			m_hTreeItem = hTreeItem; 
		} 
		CFileDBItem* m_pFileDBItem; 
		HTREEITEM m_hTreeItem; 
	}; 
	vector m_vUncloseds; 
 
private: 
	CVal* bencode_rec(CTreeCursor& curItem); 
	CVal* bencode_FileDBItems(vector& vFileDbItems); 
	bool bdencode_FileDBItems(CVal* pVal, vector& vFileDbItems, HTREEITEM hTreeItem); 
	bool bdencode_rec(CVal* pVal, CTreeCursor& curItem);	 
	CVal* bencode_UnNeededFiles(vector& vUnNeededFiles); 
	bool bdencode_UnNeedFiles(CVal* pVal, vector& vFileDbItems); 
 
	// bool LoadGenerateLinks(); 
	// CFileDBItem* GetLinkTrueFileDBItem(CFileDBItem* pLinkFileDBItem); 
	static CTreeCursor findCursorByDiridRec(CTreeCursor curItem, long lDirectoryID); 
 
	string	m_strDatabaseFileName; 
	static string GetDefaultDatabasePath(); 
	bool m_bModified; 
 
	 
	 
	// string GetDBSavePath(); 
	// void SetDBSavePath(CSetupRegister* pSetupRegister); 
	// string		m_strDBSavePath; 
}; 
 
#endif // !defined(AFX_CATEGORYFILEDB_H__B8B8E016_0450_41EB_A7C2_424943981800__INCLUDED_)