예제 #1
0
bool CTaskList::LoadTasks()
{
    CINIFile* pTasksIni = new CINIFile(cTasksFile);

	CTask* pTask = NULL;

	CDateTime dtNow = DTNow();

    int iSections = pTasksIni->GetSectionsCount();
    for (int t = 0; t < iSections; t++)
	{
        CString sSect = pTasksIni->GetNextSection();

        if (sSect.Empty())
            continue;

		pTask = new CTask();
		m_aTasks.Add(pTask);

        // Получим указатель на структуру, содержащую данные задачи
		PTaskInfo pTaskInfo = pTask->GetPTaskInfo();

        // Заполним данные задачи из INI файла
		pTaskInfo->sName            = sSect;
        pTaskInfo->sSrcFolder       = pTasksIni->GetString(sSect.C(), TEXT("Source folder"));
        pTaskInfo->sDestFolder      = pTasksIni->GetString(sSect.C(), TEXT("Dest folder"));
		pTaskInfo->sDestGenName     = pTasksIni->GetString(sSect.C(), TEXT("Generate name"));
		pTaskInfo->sIncludeMask     = pTasksIni->GetString(sSect.C(), TEXT("Incl mask"));
		pTaskInfo->sExcludeMask     = pTasksIni->GetString(sSect.C(), TEXT("Excl mask"));
		pTaskInfo->bSubFolders      = pTasksIni->GetBool(sSect.C(), TEXT("Subfolders"));

		pTaskInfo->bScheduled       = pTasksIni->GetBool(sSect.C(), TEXT("Scheduled"));
		pTaskInfo->sSchedule        = pTasksIni->GetString(sSect.C(), TEXT("Schedule"));

		pTaskInfo->bDoArchive       = pTasksIni->GetBool(sSect.C(), TEXT("Do archive"));
        pTaskInfo->bArchCompress    = pTasksIni->GetNumeric<BYTE>(sSect.C(), TEXT("Compress level"));
		pTaskInfo->bArchSFX         = pTasksIni->GetBool(sSect.C(), TEXT("SFX"));
		pTaskInfo->bArchDelFiles    = pTasksIni->GetBool(sSect.C(), TEXT("Del files"));
		pTaskInfo->bArchLock        = pTasksIni->GetBool(sSect.C(), TEXT("Lock"));
		pTaskInfo->sArchTaskCmd     = pTasksIni->GetString(sSect.C(), TEXT("Archiver cmd"));

        pTaskInfo->i64FinishedBytes = pTasksIni->GetNumeric<__int64>(sSect.C(), TEXT("Finished bytes"));

        // "Распакуем" строку последнего запуска в CDateTime
        CDateTime dtLastRun;
		dtLastRun.UnpackFromString(pTasksIni->GetString(sSect.C(), TEXT("Last run"), TEXT("00000000000000")));
		pTask->SetLastRun(dtLastRun);

		// построим дерево расписания для задачи
		pTask->BuildScheduleTree();

		// и подсчитаем время след. запуска
		pTask->CalcNextRun(dtNow);
	}

    delete pTasksIni;

	return true;
}
예제 #2
0
CTask* CTaskList::AddTask(PTaskInfo TaskInfo)
{
	// Создадим новый объект-задачу
	CTask* pTask = new CTask();
	m_aTasks.Add(pTask);

	// Присвоим переданную информацию о задаче только что созданному объекту
	*(pTask->GetPTaskInfo()) = *TaskInfo;

	return pTask;
}
예제 #3
0
bool CTaskList::SaveTasks()
{
	//CMemTextFile* pTasks = new CMemTextFile();
    //CMemOutUStream* pTasks = new CMemOutUStream(cTasksFile);
    CMemIniOutW* pTasks = new CMemIniOutW(cTasksFile);

    pTasks->AddString(L"Desc         ", L"Small Backup tasks file");
	pTasks->AddString(L"Version      ", L"1");
	pTasks->WriteLine();

	for (int t = 0; t < m_aTasks.Size(); t++)
	{
		CTask* pTask = m_aTasks[t];
		PTaskInfo pTaskInfo = pTask->GetPTaskInfo();

		pTasks->AddSection( pTaskInfo->sName.C()                                         );
		pTasks->AddString(  L"Source folder  ", pTaskInfo->sSrcFolder.C()                );
		
		pTasks->AddString(  L"Dest folder    ", pTaskInfo->sDestFolder.C()               );
		
		pTasks->AddString(  L"Generate name  ", pTaskInfo->sDestGenName.C()              );
		pTasks->AddString(  L"Incl mask      ", pTaskInfo->sIncludeMask.C()              );
		pTasks->AddString(  L"Excl mask      ", pTaskInfo->sExcludeMask.C()              );
		pTasks->AddBoolean( L"Subfolders     ", pTaskInfo->bSubFolders                   );

		pTasks->AddBoolean( L"Scheduled      ", pTaskInfo->bScheduled                    );
		pTasks->AddString(  L"Schedule       ", pTaskInfo->sSchedule.C()                 );
		pTasks->AddString(  L"Last run       ", pTask->GetLastRun().PackToString().C()   );

		pTasks->AddBoolean( L"Do archive     ", pTaskInfo->bDoArchive                    );
		pTasks->AddNumeric( L"Compress level ", pTaskInfo->bArchCompress                 );
		pTasks->AddBoolean( L"SFX            ", pTaskInfo->bArchSFX                      );
		pTasks->AddBoolean( L"Del files      ", pTaskInfo->bArchDelFiles                 );
		pTasks->AddBoolean( L"Lock           ", pTaskInfo->bArchLock                     );
		pTasks->AddString(  L"Archiver cmd   ", pTaskInfo->sArchTaskCmd.C()              );
		pTasks->WriteLine();

		pTasks->AddNumeric( L"Finished bytes ", pTaskInfo->i64FinishedBytes              );
	}

	pTasks->SaveFile();
	delete pTasks;

	return true;
}