Beispiel #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;
}