todo-cli
Loading...
Searching...
No Matches
actions.h
Go to the documentation of this file.
1#pragma once
2
3#include <vector>
4
5#include "model.h"
6#include "types.h"
7
8namespace todo {
9class Action {
10protected:
11 Model *model_{nullptr};
12 std::vector<u64> exe_path_;
13
16
17public:
21 Action(Model &model, std::vector<u64> &&path);
22
24 virtual ~Action() = default;
25
27 virtual void execute() = 0;
28
30 virtual void undo() = 0;
31};
32
33class RemoveAction : public Action {
34private:
35 Task task_{};
36
37public:
41 RemoveAction(Model &model, std::vector<u64> &&path);
42
44 virtual void execute() override;
45
47 virtual void undo() override;
48};
49
50class AddAction : public Action {
51private:
52 Task task_{};
53
54public:
59 AddAction(Model &model, std::vector<u64> &&path, Task &&task);
60
62 virtual void execute() override;
63
65 virtual void undo() override;
66};
67
68class DescChangeAction : public Action {
69private:
70 std::string old_desc_;
71 std::string new_desc_;
72
73public:
77 DescChangeAction(Model &model, std::vector<u64> &&path, std::string &&desc);
78
80 virtual void execute() override;
81
83 virtual void undo() override;
84};
85
86class StatusChangeAction : public Action {
87private:
88 Status new_status_{};
89 Status old_status_{};
90
91public:
97 Model &model, std::vector<u64> &&path, Status new_status
98 );
99
101 virtual void execute() override;
102
104 virtual void undo() override;
105};
106
108private:
109 u16 new_priority_{};
110 u16 old_priority_{};
111
112public:
118 Model &model, std::vector<u64> &&path, u16 new_priority
119 );
120
122 virtual void execute() override;
123
125 virtual void undo() override;
126};
127} // namespace todo
Model * model_
Model to perform actions on.
Definition actions.h:11
virtual void undo()=0
Undo action.
Task * find_task()
Finds specified task.
std::vector< u64 > exe_path_
Path of execution.
Definition actions.h:12
virtual void execute()=0
Execute action.
virtual ~Action()=default
Default destructor.
Action(Model &model, std::vector< u64 > &&path)
Parameterized constructor.
Definition actions.cpp:4
virtual void execute() override
execute action.
Definition actions.cpp:39
virtual void undo() override
undo action.
Definition actions.cpp:44
AddAction(Model &model, std::vector< u64 > &&path, Task &&task)
Parameterized constructor.
Definition actions.cpp:29
DescChangeAction(Model &model, std::vector< u64 > &&path, std::string &&desc)
Parameterized constructor.
Definition actions.cpp:49
virtual void execute() override
execute action.
Definition actions.cpp:59
virtual void undo() override
undo action.
Definition actions.cpp:64
Definition model.h:11
virtual void undo() override
undo action.
Definition actions.cpp:106
PriorityChangeAction(Model &model, std::vector< u64 > &&path, u16 new_priority)
Parameterized constructor.
Definition actions.cpp:91
virtual void execute() override
execute action.
Definition actions.cpp:101
virtual void undo() override
undo action.
Definition actions.cpp:24
virtual void execute() override
execute action.
Definition actions.cpp:19
RemoveAction(Model &model, std::vector< u64 > &&path)
Parameterized constructor.
Definition actions.cpp:10
virtual void undo() override
undo action.
Definition actions.cpp:86
virtual void execute() override
execute action.
Definition actions.cpp:81
StatusChangeAction(Model &model, std::vector< u64 > &&path, Status new_status)
Parameterized constructor.
Definition actions.cpp:69
Definition actions.cpp:3
uint16_t u16
Definition types.h:14
todo::Task::Status Status
Definition types.h:18
Definition task.h:10