35class ResizeArrangerObjectsCommand : public QUndoCommand
37 static constexpr int ID = 1762503480;
43 units::precise_tick_t position = units::ticks (0);
44 units::precise_tick_t length = units::ticks (0);
45 units::precise_tick_t clipStart = units::ticks (0);
46 units::precise_tick_t loopStart = units::ticks (0);
47 units::precise_tick_t loopEnd = units::ticks (0);
49 units::precise_tick_t fadeInOffset = units::ticks (0);
50 units::precise_tick_t fadeOutOffset = units::ticks (0);
51 units::precise_tick_t firstChildTicks = units::ticks (0);
54 ResizeArrangerObjectsCommand (
55 std::vector<structure::arrangement::ArrangerObjectUuidReference> objects,
57 ResizeDirection direction,
60 int id ()
const override {
return ID; }
62 bool mergeWith (
const QUndoCommand * other)
override
64 if (other->id () != id ())
69 const auto * other_cmd =
71 const auto cur_time = std::chrono::steady_clock::now ();
72 const auto duration = cur_time - last_redo_timestamp_;
74 std::chrono::duration_cast<std::chrono::milliseconds> (duration).count ()
81 if (type_ != other_cmd->type_ || direction_ != other_cmd->direction_)
84 if (objects_.size () != other_cmd->objects_.size ())
89 objects_, other_cmd->objects_, {},
90 &structure::arrangement::ArrangerObjectUuidReference::id,
91 &structure::arrangement::ArrangerObjectUuidReference::id))
96 last_redo_timestamp_ = cur_time;
97 delta_ += other_cmd->delta_;
101 void undo ()
override;
102 void redo ()
override;
105 std::vector<structure::arrangement::ArrangerObjectUuidReference> objects_;
107 ResizeDirection direction_;
111 std::vector<OriginalState> original_states_;
113 std::chrono::time_point<std::chrono::steady_clock> last_redo_timestamp_;