00001
00002
00003
00004
00005
00006 #if !defined(AFX_VMSDOWNLOADSGROUPSMGR_H__C90C07E2_3147_4BB8_A890_781C75428830__INCLUDED_)
00007 #define AFX_VMSDOWNLOADSGROUPSMGR_H__C90C07E2_3147_4BB8_A890_781C75428830__INCLUDED_
00008
00009 #if _MSC_VER > 1000
00010 #pragma once
00011 #endif
00012
00013 #include "vmsObjectSmartPtr.h"
00014 #include "tree.h"
00015
00016 #define GRP_OTHER_ID ((UINT)0)
00017
00018 struct vmsDownloadsGroup : public vmsObject
00019 {
00020 fsString strName;
00021 fsString strOutFolder;
00022 fsString strExts;
00023
00024 size_t cDownloads;
00025
00026 bool bAboutToBeDeleted;
00027
00028 UINT nId;
00029 };
00030
00031 typedef vmsObjectSmartPtr <vmsDownloadsGroup> vmsDownloadsGroupSmartPtr;
00032
00033 typedef fs::ListTree <vmsDownloadsGroupSmartPtr>* PDLDS_GROUPS_TREE;
00034
00035 #define DLDSGRPSFILE_CURRENT_VERSION ((WORD)1)
00036 #define DLDSGRPSFILE_SIG "FDM Groups"
00037 struct vmsDownloadsGroupsFileHdr
00038 {
00039 char szSig [sizeof (DLDSGRPSFILE_SIG) + 1];
00040 WORD wVer;
00041
00042 vmsDownloadsGroupsFileHdr ()
00043 {
00044 strcpy (szSig, DLDSGRPSFILE_SIG);
00045 wVer = DLDSGRPSFILE_CURRENT_VERSION;
00046 }
00047 };
00048
00049 class vmsDownloadsGroupsMgr
00050 {
00051 public:
00052 static LPCSTR GetAudioExts();
00053 static LPCSTR GetVideoExts ();
00054
00055 PDLDS_GROUPS_TREE Add (vmsDownloadsGroupSmartPtr pGroup, vmsDownloadsGroupSmartPtr pParentGroup, BOOL bKeepIdAsIs = FALSE);
00056 PDLDS_GROUPS_TREE Add (vmsDownloadsGroupSmartPtr grp, PDLDS_GROUPS_TREE pParentGroup, BOOL bKeepIdAsIs = FALSE);
00057
00058 void DeleteGroup (vmsDownloadsGroupSmartPtr pGroup);
00059
00060 size_t GetTotalCount();
00061
00062 vmsDownloadsGroupSmartPtr GetGroup (size_t nIndex);
00063
00064 PDLDS_GROUPS_TREE GetGroupsTree();
00065
00066 BOOL SaveToDisk();
00067 BOOL LoadFromDisk();
00068
00069 vmsDownloadsGroupSmartPtr FindGroup (UINT nId);
00070 vmsDownloadsGroupSmartPtr FindGroupByName (LPCSTR pszName);
00071 vmsDownloadsGroupSmartPtr FindGroupByExt (LPCSTR pszExt);
00072 fsString GetGroupFullName (UINT nId);
00073
00074 PDLDS_GROUPS_TREE FindGroupInTree (vmsDownloadsGroupSmartPtr pGroup);
00075
00076 void SetGroupsRootOutFolder (LPCSTR psz);
00077 fsString GetGroupsRootOutFolder();
00078
00079 void GetGroupWithSubgroups (vmsDownloadsGroupSmartPtr pGroup, std::vector <vmsDownloadsGroupSmartPtr> &v);
00080
00081 vmsDownloadsGroupsMgr();
00082 virtual ~vmsDownloadsGroupsMgr();
00083
00084 protected:
00085 void RebuildGroupsList (PDLDS_GROUPS_TREE pRoot, std::vector <PDLDS_GROUPS_TREE> &v);
00086 void RebuildGroupsList();
00087 BOOL SaveGroupToFile (HANDLE hFile, vmsDownloadsGroupSmartPtr pGroup);
00088 BOOL SaveGroupsTreeToFile(HANDLE hFile, PDLDS_GROUPS_TREE pRoot);
00089 vmsDownloadsGroupSmartPtr FindGroupByName (LPCSTR pszName, PDLDS_GROUPS_TREE pRoot);
00090 BOOL LoadGroupFromFile (HANDLE hFile, vmsDownloadsGroupSmartPtr pGroup);
00091 BOOL LoadGroupsTreeFromFile (HANDLE hFile, PDLDS_GROUPS_TREE pRoot);
00092 void SetGroupsRootOutFolder (PDLDS_GROUPS_TREE pRoot, LPCSTR pszFolder);
00093 void GetSubgroups (PDLDS_GROUPS_TREE pGroup, std::vector <vmsDownloadsGroupSmartPtr> &v);
00094 UINT m_nGrpNextId;
00095
00096 void CreateDefaultGroups();
00097
00098 fs::ListTree <vmsDownloadsGroupSmartPtr> m_tGroups;
00099
00100 std::vector <PDLDS_GROUPS_TREE> m_vGroups;
00101 };
00102
00103 #endif