Zrythm v2.0.0-alpha.1
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
change_timebase_override_command.h
1// SPDX-FileCopyrightText: © 2026 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include <optional>
7
8#include "dsp/timebase.h"
9
10#include <QUndoCommand>
11
12namespace zrythm::commands
13{
14
27class ChangeTimebaseOverrideCommand : public QUndoCommand
28{
29public:
30 ChangeTimebaseOverrideCommand (
31 dsp::TimebaseProvider &provider,
32 std::optional<dsp::Timebase> timebase)
33 : QUndoCommand (QObject::tr ("Change Timebase")), provider_ (provider),
34 new_override_ (timebase)
35 {
36 }
37
38 void undo () override
39 {
40 if (old_override_.has_value ())
41 provider_.setOverride (*old_override_);
42 else
43 provider_.clearOverride ();
44 }
45
46 void redo () override
47 {
48 old_override_ = provider_.overrideValue ();
49 if (new_override_.has_value ())
50 provider_.setOverride (*new_override_);
51 else
52 provider_.clearOverride ();
53 }
54
55private:
56 dsp::TimebaseProvider &provider_;
57 std::optional<dsp::Timebase> old_override_;
58 std::optional<dsp::Timebase> new_override_;
59};
60
61} // namespace zrythm::commands