<?

// меню выбора диска

class Mselect_disc {

	static $menu_name = 'disc_name';
	
	// ВНИМАНИЕ! Если решим обновлять список дисков, обязательно надо обновлять и Disc_unid
	static function Init() {
		// наполняем меню выбора диска
		$disc_mas = $GLOBALS['Disc_info']->get_all();
		// array_unshift($disc_mas, '-------');
		$menu = c('Fm->'.self::$menu_name);
		$menu->text = $disc_mas;
	}

	// выбор нужного пункта по серийному номеру
	// потому что диск могут отключить, буквы могут измениться
	static function set_by_unid($unid) {
		GLOBAL $Disc_info, $Disc_unid;

		$menu = c('Fm->'.self::$menu_name);
		$mas = $menu->items->lines;
		foreach($mas as $index=>$str) {
			// if($index == 0) continue; // пропускаем пункт =======
			
			list($disc) = explode(" ", $str);
			$cur_unid = $Disc_unid->get_by_disc_name(trim($disc));

			if($unid == $cur_unid) {
				self::set_by_index($index);
				return true;
			}
		}

		return false;
	}

	static function set_by_index($index) {
		$menu = c('Fm->'.self::$menu_name);
		$menu->itemIndex = $index;
		// поскольку событие onChange в меню не работает если устанавливать пункт програмно
		self::onChange($menu);
	}
	
	// событие "выбор пункта меню"
	static function onChange($menu) {
		GLOBAL $GOP, $log, $setting, $OP, $INFO, $Ui_steps_story, $Ui_thread, $Graphs, $Paths, $Disc_info, $Disc_unid;
		
		// проверка что поток не запущен
		if($Ui_thread->check_run_dialog())
			return false;

		/*
		if($menu->itemIndex == 0) {
			// сохраняем предыдущие настройки
			$setting->save();

			$setting->load('def');
			$INFO['step'] = 'select_disc';
			Ui_timers::tick_root();
			return true;
		}*/

		// нужно выделить букву диска из пункта меню. Там еще всякая дополнительная информация
		$t = explode(" ", trim($menu->items->selected));
		$disc_name = $t[0];

		$log->line("\r\n========= Выбор диска $disc_name =========");
		
		// определяем серийный номер диска/раздела
		$disc_unid = $Disc_unid->get_by_disc_name($disc_name);
		
		// показываем серийник
		c('Fm->select_disc_serial')->text = $disc_unid;
		
		// сохраняем предыдущие настройки
		$setting->save();

		// загружаем новые
		$Paths->disc_unid = $disc_unid;
		$Paths->disc_name = $disc_name;
		$Disc_info->setCur($disc_name);

		$setting = new Setting();
		$setting->load();


		// проверки настроек которые устанавливаются мною. Именно здесь чтобы если что ошибка сразу вылезла
		if($GLOBALS['Analize_autochoice']->get_podbor_max_speed() > $OP['speed_msgfrag']) {
			print "Максимальная скорость Analize_autochoice не может быть выше speed_msgfrag";
		}

		Ui_timers::$last_step = ''; // чтобы этап правильно активировался при смене диска, если на обоих дисках один и тот же этап. Иначе возникают проблемы с активацией полей.

		Ui_events::change_disk();
		Ui_timers::tick_root();
	}
}


?>