Exemple #1
0
//
// Displays the fixed seed value for the current selection in the
// worker view.  If the selection is a manager or all managers, displays
// a value if all the children's values are the same.
//
void CPageDisk::ShowFixedSeedValue()
{
	Manager *manager;
	Worker *worker;
	DWORDLONG fixed_seed_value = 0;
	BOOL use_fixed_seed = 0;

	switch (theApp.pView->m_pWorkerView->GetSelectedType()) {
	case WORKER:
		// update controls with worker's data
		worker = theApp.pView->m_pWorkerView->GetSelectedWorker();
		if (IsType(worker->Type(), GenericDiskType)) {
			fixed_seed_value = worker->GetFixedSeedValue(GenericDiskType);
			use_fixed_seed = worker->GetUseFixedSeed(GenericDiskType);
		}
		break;
	case MANAGER:
		manager = theApp.pView->m_pWorkerView->GetSelectedManager();
		fixed_seed_value = manager->GetFixedSeedValue(GenericDiskType);
		use_fixed_seed = manager->GetUseFixedSeed(GenericDiskType);
		break;
	default:
		fixed_seed_value = theApp.manager_list.GetFixedSeedValue(GenericDiskType);
		use_fixed_seed = theApp.manager_list.GetUseFixedSeed(GenericDiskType);
		break;
	}
	// If the fixed seed values are different between a manager's
	// workers, set the state of the check box to AUTO3STATE and disable the
	// edit box and spin control.
	SetDlgItemInt64(EFixedSeed, fixed_seed_value, false);
	if (use_fixed_seed == AMBIGUOUS_VALUE) {
		m_CUseFixedSeed.SetButtonStyle(BS_AUTO3STATE);
		m_EFixedSeed.SetPasswordChar(32);
		m_EFixedSeed.Invalidate(TRUE);

		// Set check box to undetermined state.
		CheckDlgButton(CUseFixedSeed, 2);
	} else {
		m_CUseFixedSeed.SetButtonStyle(BS_AUTOCHECKBOX);
		CheckDlgButton(CUseFixedSeed, use_fixed_seed);

		if (use_fixed_seed == ENABLED_VALUE && fixed_seed_value != (DWORDLONG)AMBIGUOUS_VALUE) {
			m_EFixedSeed.SetPasswordChar(0);
		} else {
			m_EFixedSeed.SetPasswordChar(32);
			m_EFixedSeed.Invalidate();
		}
	}
}