Make renaming markers undoable
This commit is contained in:
@@ -22,6 +22,8 @@
|
||||
|
||||
#include "common/xmlutils.h"
|
||||
#include "config/config.h"
|
||||
#include "core.h"
|
||||
#include "widget/marker/markerundo.h"
|
||||
|
||||
namespace olive {
|
||||
|
||||
@@ -55,6 +57,13 @@ void TimelineMarker::set_name(const QString &name)
|
||||
emit NameChanged(name_);
|
||||
}
|
||||
|
||||
void TimelineMarker::set_name_undo(QString name)
|
||||
{
|
||||
UndoCommand *command = new MarkerChangeNameCommand(Core::instance()->GetActiveProject(), this, name);
|
||||
|
||||
Core::instance()->undo_stack()->push(command);
|
||||
}
|
||||
|
||||
int TimelineMarker::color()
|
||||
{
|
||||
return color_;
|
||||
|
||||
@@ -50,6 +50,9 @@ public:
|
||||
void Load(QXmlStreamReader* reader);
|
||||
void Save(QXmlStreamWriter* writer) const;
|
||||
|
||||
public slots:
|
||||
void set_name_undo(QString name);
|
||||
|
||||
signals:
|
||||
void TimeChanged(const TimeRange& time);
|
||||
|
||||
|
||||
@@ -89,4 +89,27 @@ void MarkerChangeColorCommand::undo()
|
||||
marker_->set_color(old_color_);
|
||||
}
|
||||
|
||||
MarkerChangeNameCommand::MarkerChangeNameCommand(Project *project, TimelineMarker *marker, QString new_name) :
|
||||
project_(project),
|
||||
marker_(marker),
|
||||
old_name_(marker->name()),
|
||||
new_name_(new_name)
|
||||
{
|
||||
}
|
||||
|
||||
Project* MarkerChangeNameCommand::GetRelevantProject() const
|
||||
{
|
||||
return project_;
|
||||
}
|
||||
|
||||
void MarkerChangeNameCommand::redo()
|
||||
{
|
||||
marker_->set_name(new_name_);
|
||||
}
|
||||
|
||||
void MarkerChangeNameCommand::undo()
|
||||
{
|
||||
marker_->set_name(old_name_);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -78,6 +78,23 @@ class MarkerChangeColorCommand : public UndoCommand {
|
||||
int new_color_;
|
||||
};
|
||||
|
||||
class MarkerChangeNameCommand : public UndoCommand {
|
||||
public:
|
||||
MarkerChangeNameCommand(Project* project, TimelineMarker* marker, QString name);
|
||||
|
||||
virtual Project* GetRelevantProject() const override;
|
||||
|
||||
protected:
|
||||
virtual void redo() override;
|
||||
virtual void undo() override;
|
||||
|
||||
private:
|
||||
Project* project_;
|
||||
TimelineMarker* marker_;
|
||||
QString old_name_;
|
||||
QString new_name_;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // TIMELINEUNDOTRACK_H
|
||||
|
||||
@@ -211,7 +211,7 @@ void SeekableWidget::addMarker(TimelineMarker* marker)
|
||||
connect(marker_widget, &Marker::ActiveChanged, marker, &TimelineMarker::set_active);
|
||||
connect(marker, &TimelineMarker::ActiveChanged, marker_widget, &Marker::SetActive);
|
||||
|
||||
connect(marker_widget, &Marker::NameChanged, marker, &TimelineMarker::set_name);
|
||||
connect(marker_widget, &Marker::NameChanged, marker, &TimelineMarker::set_name_undo);
|
||||
connect(marker, &TimelineMarker::NameChanged, marker_widget, &Marker::SetName);
|
||||
|
||||
connect(marker_widget, &Marker::TimeChanged, marker, &TimelineMarker::set_time);
|
||||
|
||||
Reference in New Issue
Block a user