36class ResizeArrangerObjectsCommand : public QUndoCommand
38 static constexpr int ID = 1762503480;
44 units::precise_tick_t position = units::ticks (0);
45 units::precise_tick_t length = units::ticks (0);
46 units::precise_tick_t clipStart = units::ticks (0);
47 units::precise_tick_t loopStart = units::ticks (0);
48 units::precise_tick_t loopEnd = units::ticks (0);
50 units::precise_tick_t fadeInOffset = units::ticks (0);
51 units::precise_tick_t fadeOutOffset = units::ticks (0);
54 std::optional<units::precise_tick_t> firstChildTicks;
57 ResizeArrangerObjectsCommand (
58 std::vector<structure::arrangement::ArrangerObjectUuidReference> objects,
60 ResizeDirection direction,
63 int id ()
const override {
return ID; }
65 bool mergeWith (
const QUndoCommand * other)
override
67 if (other->id () != id ())
72 const auto * other_cmd =
74 const auto cur_time = std::chrono::steady_clock::now ();
75 const auto duration = cur_time - last_redo_timestamp_;
77 std::chrono::duration_cast<std::chrono::milliseconds> (duration).count ()
84 if (type_ != other_cmd->type_ || direction_ != other_cmd->direction_)
87 if (objects_.size () != other_cmd->objects_.size ())
92 objects_, other_cmd->objects_, {},
93 &structure::arrangement::ArrangerObjectUuidReference::id,
94 &structure::arrangement::ArrangerObjectUuidReference::id))
99 last_redo_timestamp_ = cur_time;
100 delta_ += other_cmd->delta_;
104 void undo ()
override;
105 void redo ()
override;
108 std::vector<structure::arrangement::ArrangerObjectUuidReference> objects_;
110 ResizeDirection direction_;
114 std::vector<OriginalState> original_states_;
116 std::chrono::time_point<std::chrono::steady_clock> last_redo_timestamp_;