bool vmsMediaConvertMgr::loadObjectItselfFromStateBuffer(LPBYTE pbtBuffer, LPDWORD pdwSize, DWORD dwVer)
{
	if (pbtBuffer == NULL || pdwSize == NULL)
		return false;

	if (*pdwSize < sizeof(size_t))
		return false;

	m_vTasks.clear ();

	size_t* pszBuffer = (size_t*)pbtBuffer;
	size_t szTaskCount = *pszBuffer;

	size_t szIndex = 0;
	for (szIndex = 0; szIndex < szTaskCount; szIndex++) {
		vmsMediaConvertMgr::vmsConvertMediaFileContextSmartPtr pCtxPtr;
		pCtxPtr.CreateInstance();
		m_vTasks.push_back(pCtxPtr);
		vmsMediaConvertMgr::vmsConvertMediaFileContext* ctx = (vmsMediaConvertMgr::vmsConvertMediaFileContext*)m_vTasks.back();
		if (ctx == 0)
			return false;
		ctx->pvData = &m_vTasks;
		ctx->clehEventHandler = FdmCtfxLoadEventhandler;
		getPersistObjectChildren ()->addPersistObject ((vmsPersistObject*)(vmsMediaConvertMgr::vmsConvertMediaFileContext*)m_vTasks.back());
	}

	*pdwSize = sizeof(size_t);

	return true;
}
bool vmsDownloadsGroupsMgr::loadObjectItselfFromStateBuffer(LPBYTE pbtBuffer, LPDWORD pdwSize, DWORD dwVer)
{
	LPBYTE pbtCurrentPos = pbtBuffer;

	if (!getVarFromBuffer(m_nGrpNextId, pbtCurrentPos, pbtBuffer, *pdwSize))
		return false;

	int nChildren = 0;
	getVarFromBuffer(nChildren, pbtCurrentPos, pbtBuffer, *pdwSize); 

	int i = 0;
	for (i = 0; i < nChildren; i++) {
		vmsDownloadsGroupSmartPtr pGroup;
		pGroup.CreateInstance ();

		pGroup->nChildren = 0;
		pGroup->glehEventHandler = FdmGroupLoadEventHandler;
		
		TGroupLoadEventData gledData;
		gledData.pdgmGroupsMgr = this;
		gledData.pgtParent = m_tGroups;
		gledData.pGroupPtr = pGroup;
		pGroup->pvData = (void*)&AddGroupLoadEventData(gledData);
		getPersistObjectChildren ()->addPersistObject ((vmsDownloadsGroup*)pGroup);
	}

	*pdwSize = pbtCurrentPos - pbtBuffer;

	
	

	return true;
}
void vmsDownloadsGroupsMgr::DeleteGroup(vmsDownloadsGroupSmartPtr pGroup)
{
	PDLDS_GROUPS_TREE pGrp = FindGroupInTree (pGroup);
	PDLDS_GROUPS_TREE pRoot = pGrp->GetRoot ();
	for (int i = 0; i < pRoot->GetLeafCount (); i++)
	{
		if (pRoot->GetLeaf (i) == pGrp)
		{
			pRoot->DeleteLeaf (i);
			RebuildGroupsList ();

			if (pRoot == m_tGroups) {
				setDirty();
				getPersistObjectChildren ()->removePersistObject (i);
			} else {
				vmsDownloadsGroupSmartPtr pRootGroupPtr = pRoot->GetData();
				if ((vmsDownloadsGroup*)pRootGroupPtr != 0) {
					pRootGroupPtr->nChildren--;
					pRootGroupPtr->getPersistObjectChildren ()->removePersistObject (i);
					pRootGroupPtr->setDirty();
				}
			}

			
			
			
			return;
		}
	}
}
void fsWebPageDownloadsMgr::Add(fsWebPageDownloader *wpd)
{
	wpd->SetEventFunc (_DownloaderEvents, this);
	m_vWPDs.add (wpd);
	setDirty();
	wpd->setDirty();
	wpd->GetWDPS()->m_ppoOwner = (vmsPersistObject*)wpd;
	getPersistObjectChildren ()->addPersistObject ((vmsPersistObject*)wpd);
}
void fsEventsMgr::clear()
{


    for (int i = m_vEvents.size () - 1; i >= 0; i--)
        delete [] m_vEvents [i]->deEvent.pszEvent;
    setDirty();
    getPersistObjectChildren ()->removeAllPersistObjects ();
    m_vEvents.clear ();
}
void fsWebPageDownloadsMgr::Delete(fsWebPageDownloader *wpd)
{
	for (int i = 0; i < m_vWPDs.size (); i++)
	{
		if (m_vWPDs [i] == wpd)
		{
			m_vWPDs.del (i);
			setDirty();
			getPersistObjectChildren ()->removePersistObject (i);
			return;
		}
	}
}
void vmsDownloadMgrEx::DetachDownloadMgr ()
{
	vmsPersistObject *pObj = NULL;
	if (m_pMgr)
		pObj = m_pMgr;
	else if (m_spBtMgr)
		pObj = m_spBtMgr;
	else if (m_pTpMgr)
		pObj = m_pTpMgr;
	getPersistObjectChildren ()->removePersistObject (pObj);
	SAFE_DELETE (m_pMgr);
	m_spBtMgr = NULL;
	SAFE_DELETE (m_pTpMgr);
}
void vmsMediaConvertMgr::AddTask(vmsDownloadSmartPtr dld, const vmsMediaFileConvertSettings &stgs)
{
	vmsConvertMediaFileContextSmartPtr pCtxPtr;
	pCtxPtr.CreateInstance();

	
	pCtxPtr->dld = dld;
	pCtxPtr->stgs = stgs;
	m_vTasks.push_back (pCtxPtr);
	setDirty();
	m_vTasks.back()->setDirty();
	getPersistObjectChildren ()->addPersistObject ((vmsConvertMediaFileContext*)m_vTasks.back());
	
	
}
void fsEventsMgr::add(fsDescEvent *ev)
{
    vmsPersistableDescEventWrapperSmartPtr pEventPtr;
    pEventPtr.CreateInstance();
    fsDescEvent* pdeEvent = &pEventPtr->deEvent;

    SYSTEMTIME time;
    GetLocalTime (&time);

    SystemTimeToFileTime (&time, &ev->timeEvent);

    *pdeEvent = *ev;


    m_vEvents.add (pEventPtr);
    getPersistObjectChildren ()->addPersistObject ((vmsPersistableDescEventWrapper*)pEventPtr);
}
void vmsMediaConvertMgr::ConvertMediaFile(vmsDownloadSmartPtr dld, vmsMediaConvertMgr_OptionsSource enOs)
{
	vmsConvertMediaFileContext *pcmfc = new vmsConvertMediaFileContext;

	if (enOs == MCM_OS_SEARCH_IN_MGR)
	{
		int nIndex = FindDownload (dld);
		if (nIndex == -1)
			return;

		vmsConvertMediaFileContext* ctx = (vmsConvertMediaFileContext*)m_vTasks [nIndex];
		if (ctx == 0)
			return;
		pcmfc->dld = ctx->dld;	
		pcmfc->stgs = ctx->stgs;
		
		
		m_vTasks.erase (m_vTasks.begin () + nIndex);
		setDirty();
		getPersistObjectChildren ()->removePersistObject (nIndex);
		
		
	}
	else
	{
		pcmfc->dld = dld;
		GetDefaultSettings (pcmfc->stgs);

		if (enOs == MCM_OS_SHOW_OPTIONS_UI)
		{
			CDlg_Convert dlg (&pcmfc->stgs);
			if (IDOK != _DlgMgr.DoModal (&dlg))
			{
				delete pcmfc;
				return;
			}
		}
	}

	CWaitDlg *dlg = new CWaitDlg;
	dlg->StartWaiting (LS (L_CONVERTING), _threadConvertMediaFile, TRUE, pcmfc, 
		(LPVOID)(enOs == MCM_OS_SHOW_OPTIONS_UI), 
		NULL, NULL, NULL, NULL, FALSE);
}
bool fsEventsMgr::loadObjectItselfFromStateBuffer(LPBYTE pbtBuffer, LPDWORD pdwSize, DWORD dwVer)
{

    LPBYTE pbtCurrentPos = pbtBuffer;
    int cRecs = 0;

    m_vEvents.clear ();

    if (!getVarFromBuffer(cRecs, pbtCurrentPos, pbtBuffer, *pdwSize))
        return false;

    int i = 0;
    for (i = 0; i < cRecs; i++) {
        vmsPersistableDescEventWrapperSmartPtr pEventPtr;
        pEventPtr.CreateInstance();
        m_vEvents.add (pEventPtr);
        getPersistObjectChildren ()->addPersistObject ((vmsPersistableDescEventWrapper*)pEventPtr);
    }

    *pdwSize = pbtCurrentPos - pbtBuffer;
    return true;
}
PDLDS_GROUPS_TREE vmsDownloadsGroupsMgr::Add(vmsDownloadsGroupSmartPtr grp, PDLDS_GROUPS_TREE pParentGroup, BOOL bKeepIdAsIs, bool bDontQueryStoringGroupsInformation)
{
	if (pParentGroup == NULL)
		pParentGroup = GetGroupsTree ();

	if (bKeepIdAsIs == FALSE)
		grp->nId = m_nGrpNextId++;
	else
		m_nGrpNextId = max (m_nGrpNextId, grp->nId + 1);

	grp->cDownloads = 0;
	grp->bAboutToBeDeleted = false;

	PDLDS_GROUPS_TREE pGrp = pParentGroup->AddLeaf (grp);
	m_vGroups.push_back (pGrp);

	if (!bDontQueryStoringGroupsInformation) {

		vmsDownloadsGroupSmartPtr pParentPtr = pParentGroup->GetData();
		if ((vmsDownloadsGroup*)pParentPtr != 0) {
			pParentPtr->setDirty();
			pParentPtr->nChildren++;
			pParentPtr->getPersistObjectChildren ()->addPersistObject ((vmsDownloadsGroup*)grp);
		} else {
			getPersistObjectChildren ()->addPersistObject ((vmsDownloadsGroup*)grp);
			setDirty();
		}
		grp->setDirty();
		grp->nChildren = 0;
		

		
		
	}

	return pGrp;
}
BOOL fsEventsMgr::Load(HANDLE hFile)
{
    int cRecs;
    DWORD dw;

    m_vEvents.clear ();

    if (!ReadFile (hFile, &cRecs, sizeof (cRecs), &dw, NULL) || dw != sizeof (cRecs))
        return FALSE;

    while (cRecs-- > 0)
    {

        vmsPersistableDescEventWrapperSmartPtr pEventPtr;
        pEventPtr.CreateInstance();
        fsDescEvent& ev = pEventPtr->deEvent;

        if (!ReadFile (hFile, &ev, sizeof (fsDescEvent), &dw, NULL) || dw != sizeof (fsDescEvent))
        {
            m_vEvents.clear ();
            return FALSE;
        }

        if (!fsReadStrFromFile (&ev.pszEvent, hFile))
        {
            m_vEvents.clear ();
            return FALSE;
        }


        m_vEvents.add (pEventPtr);
        getPersistObjectChildren ()->addPersistObject ((vmsPersistableDescEventWrapper*)pEventPtr);
    }

    return TRUE;
}
BOOL fsWebPageDownloadsMgr::Load()
{
	m_vWPDs.clear ();

	HANDLE hFile = CreateFile (fsGetDataFilePath (_T("spider.sav")), GENERIC_READ, FILE_SHARE_READ, NULL,
		OPEN_ALWAYS, FILE_ATTRIBUTE_HIDDEN, NULL);

	if (hFile == INVALID_HANDLE_VALUE)
		return FALSE;

	if (GetLastError () != ERROR_ALREADY_EXISTS)
	{
		CloseHandle (hFile);
		return TRUE;
	}

	int cWPD = 0;
	DWORD dw;
	fsSpiderFileHdr hdr;
	WORD wVer = SPIDERFILE_CURRENT_VERSION;
	DWORD dwRequiredSize = ::GetFileSize(hFile, NULL);

	if (FALSE == ReadFile (hFile, &hdr, sizeof (hdr), &dw, NULL))
	{
		wVer = 1;
	}
	else
	{
		if (dw < sizeof(hdr) || strcmp (hdr.szSig, SPIDERFILE_SIG))
		{
			wVer = 1;
			SetFilePointer (hFile, 0, NULL, FILE_BEGIN);
		}
		else
		{
			wVer = hdr.wVer;
			dwRequiredSize -= sizeof (hdr);
		}
	}

	if (wVer == 1) {

		if (FALSE == ReadFile (hFile, &cWPD, sizeof (cWPD), &dw, NULL))
		{
			CloseHandle (hFile);
			return FALSE;
		}

		for (int i = 0; i < cWPD; i++)
		{
			fsWebPageDownloaderPtr wpd; wpd.CreateInstance ();
			if (FALSE == wpd->Load (hFile, wVer))
			{
				CloseHandle (hFile);
				return FALSE;
			}
			Add (wpd);
		}

		resetDirty();

		CloseHandle (hFile);
		return TRUE;

	}

	if (dwRequiredSize == 0) {
		CloseHandle (hFile);
		return TRUE;
	}

	std::auto_ptr<BYTE> pbtBufferGuard( new BYTE[dwRequiredSize] );
	LPBYTE pbtBuffer = pbtBufferGuard.get();
	if (pbtBuffer == 0) {
		CloseHandle (hFile);
		return FALSE;
	}
	memset(pbtBuffer, 0, dwRequiredSize);

	if (!ReadFile (hFile, pbtBuffer, dwRequiredSize, &dw, NULL) || dw != dwRequiredSize) {
		CloseHandle (hFile);
		return FALSE;
	}

	if (!loadFromStateBuffer(pbtBuffer, &dwRequiredSize, hdr.wVer)) {
		getPersistObjectChildren ()->removeAllPersistObjects ();
		m_vWPDs.clear ();
		CloseHandle (hFile);
		return FALSE;
	}

	resetDirty();

	CloseHandle (hFile);
	return TRUE;
}
void vmsDownloadMgrEx::Attach(vmsBtDownloadManager *pBtMgr)
{
	DetachDownloadMgr ();
	m_spBtMgr = pBtMgr;
	getPersistObjectChildren ()->addPersistObject (m_spBtMgr);
}
Exemple #16
0
CStateInfo::CStateInfo()
	: m_nId(0)
{
	getPersistObjectChildren ()->addPersistObject (&m_frlFileRecentList);
}
void vmsDownloadMgrEx::Attach(vmsTpDownloadMgr *pTpMgr)
{
	DetachDownloadMgr ();
	m_pTpMgr = pTpMgr;
	getPersistObjectChildren ()->addPersistObject (m_pTpMgr);
}