vd писал(а):Здесь вопрос не в надежности, а в понимании, как оно должно работать. Думаете, у нас не сделаны такие операции из вредности или лени? В основном потому, что нелогично это в некоторых ситуациях.
Проще и надежнее всего - просто запретить отменять или заменять строки в расписании, которые сейчас исполняются, и могут быть изменены командами "Paste/Undo".
Грубо говоря, если пытаетесь отменить вставку блока роликов, середина которого уже сейчас играется, появляется сообщение: "Отмена невозможна". Или, если пытаются командой "Paste" заменить уже играющийся сейчас ролик - то же самое: "Выполнить это действие невозможно". Так устроит?
Приведу пример. Представьте кусок расписания, начинающийся в 12:00, что-то вроде (в скобках длительность роликов):
12:00 Ролик1.avi [2:00]
12:02 Ролик2.avi [3:00]
12:05 Ролик3.avi [10:00]
12:15 Ролик4.mpg [5:00]
12:20 Ролик5.mpg [1:00]
12:21 ...
Этот блок из 5 роликов был вставлен командой Paste в конец расписания. В 12:07 берем и делаем Undo вставки. OnAir не прерывает воспроизведение ролика, который в данный момент играется - это Ролик3.avi. Но его воспроизведение должно закончиться в 12:15.
Если мы считаем, что расписание должно после Undo полностью вернуться в предыдущий вид, то должно оказаться, что в 12:00 в расписании полная пустота. Допустим, что мы вставим сразу после команды Undo в конец расписания Ролик6.avi с длительностью 1 минута. После окончания воспроизведения Ролик3.avi настанет момент времени 12:15.
Только что вставленный Ролик6.avi должен начаться в 12:00, закончиться в 12:01. Что должно произойти? OnAir должен полностью "прокинуть" этот ролик, или он должен считать, что он вставился встык с только что закончившимся роликом, и считать, что до времени 12:15 в расписании "дырка", а новый Ролик6.avi, на самом деле, вставится в расписание со временем старта 12:15 (предыдущее время окончания ролика, который сейчас играется)?
Да всё правильно, именно это я и имел ввиду, именно не давать корректировать (отменять) то, что уже исполняется, если вставили группу роликов, то участь отмены постигает всего, отменяется либо вся группа (если не исполняется), либо не отменяется вся группа (если исполняется один из роликов). Хочешь подкорректировать один из роликов - меняй по одному (совет пользователю).
По финальным вопросам, я бы подошёл к этому вопросу так: машины времени не существует, то, что уже воспроизвелось уже не вернёшь (если вы всё-таки сделаете способ воспроизведения по системному времени) и просто блокировать для изменения то, что уже воспроизвелось, позволять оттуда копировать ролики в буфер, чтобы потом вставить позже, но не менять то, что было раньше. Тогда глянув на плей-лист (из прошлого дня например) мы точно можем сказать что и когда воспроизводилось (для отчётов).