20#include "kptcommand.h"
21#include "kptaccount.h"
22#include "kptappointment.h"
24#include "kptproject.h"
26#include "kptcalendar.h"
27#include "kptrelation.h"
28#include "kptresource.h"
39void NamedCommand::setCommandType(
int type) {
41 m_part->setCommandType(type);
44void NamedCommand::setSchDeleted() {
45 TQMap<Schedule*, bool>::Iterator it;
46 for (it = m_schedules.begin(); it != m_schedules.end(); ++it) {
47 kdDebug()<<k_funcinfo<<it.key()->id()<<
": "<<it.data()<<endl;
48 it.key()->setDeleted(it.data());
51void NamedCommand::setSchDeleted(
bool state) {
52 TQMap<Schedule*, bool>::Iterator it;
53 for (it = m_schedules.begin(); it != m_schedules.end(); ++it) {
54 kdDebug()<<k_funcinfo<<it.key()->id()<<
": "<<state<<endl;
55 it.key()->setDeleted(state);
58void NamedCommand::setSchScheduled() {
59TQMap<Schedule*, bool>::Iterator it;
60 for (it = m_schedules.begin(); it != m_schedules.end(); ++it) {
61 kdDebug()<<k_funcinfo<<it.key()->id()<<
": "<<it.data()<<endl;
62 it.key()->setScheduled(it.data());
65void NamedCommand::setSchScheduled(
bool state) {
66 TQMap<Schedule*, bool>::Iterator it;
67 for (it = m_schedules.begin(); it != m_schedules.end(); ++it) {
68 kdDebug()<<k_funcinfo<<it.key()->id()<<
": "<<state<<endl;
69 it.key()->setScheduled(state);
72void NamedCommand::addSchScheduled(
Schedule *sch) {
73 kdDebug()<<k_funcinfo<<sch->id()<<
": "<<sch->isScheduled()<<endl;
74 m_schedules.insert(sch, sch->isScheduled());
75 TQPtrListIterator<Appointment> it = sch->appointments();
76 for (; it.current(); ++it) {
77 if (it.current()->node() == sch) {
78 m_schedules.insert(it.current()->resource(), it.current()->resource()->isScheduled());
79 }
else if (it.current()->resource() == sch) {
80 m_schedules.insert(it.current()->node(), it.current()->node()->isScheduled());
84void NamedCommand::addSchDeleted(
Schedule *sch) {
85 kdDebug()<<k_funcinfo<<sch->id()<<
": "<<sch->isDeleted()<<endl;
86 m_schedules.insert(sch, sch->isDeleted());
87 TQPtrListIterator<Appointment> it = sch->appointments();
88 for (; it.current(); ++it) {
89 if (it.current()->node() == sch) {
90 m_schedules.insert(it.current()->resource(), it.current()->resource()->isDeleted());
91 }
else if (it.current()->resource() == sch) {
92 m_schedules.insert(it.current()->node(), it.current()->node()->isDeleted());
98CalendarAddCmd::CalendarAddCmd(Part *part,
Project *project,
Calendar *cal, TQString name)
99 : NamedCommand(part, name),
103 cal->setDeleted(
true);
107void CalendarAddCmd::execute() {
108 if (!m_added && m_project) {
109 m_project->addCalendar(m_cal);
112 m_cal->setDeleted(
false);
118void CalendarAddCmd::unexecute() {
119 m_cal->setDeleted(
true);
125CalendarDeleteCmd::CalendarDeleteCmd(Part *part, Calendar *cal, TQString name)
126 : NamedCommand(part, name),
131 TQIntDictIterator<Schedule> it = part->getProject().schedules();
132 for (; it.current(); ++it) {
133 addSchScheduled(it.current());
138void CalendarDeleteCmd::execute() {
139 m_cal->setDeleted(
true);
140 setSchScheduled(
false);
144void CalendarDeleteCmd::unexecute() {
145 m_cal->setDeleted(
false);
150CalendarModifyNameCmd::CalendarModifyNameCmd(Part *part, Calendar *cal, TQString newvalue, TQString name)
151 : NamedCommand(part, name),
154 m_oldvalue = cal->name();
155 m_newvalue = newvalue;
158void CalendarModifyNameCmd::execute() {
159 m_cal->setName(m_newvalue);
163void CalendarModifyNameCmd::unexecute() {
164 m_cal->setName(m_oldvalue);
169CalendarModifyParentCmd::CalendarModifyParentCmd(Part *part, Calendar *cal, Calendar *newvalue, TQString name)
170 : NamedCommand(part, name),
173 m_oldvalue = cal->parent();
174 m_newvalue = newvalue;
178 TQIntDictIterator<Schedule> it = part->getProject().schedules();
179 for (; it.current(); ++it) {
180 addSchScheduled(it.current());
184void CalendarModifyParentCmd::execute() {
185 m_cal->setParent(m_newvalue);
186 setSchScheduled(
false);
189void CalendarModifyParentCmd::unexecute() {
190 m_cal->setParent(m_oldvalue);
195CalendarAddDayCmd::CalendarAddDayCmd(Part *part, Calendar *cal, CalendarDay *newvalue, TQString name)
196 : NamedCommand(part, name),
200 m_newvalue = newvalue;
204 TQIntDictIterator<Schedule> it = part->getProject().schedules();
205 for (; it.current(); ++it) {
206 addSchScheduled(it.current());
210CalendarAddDayCmd::~CalendarAddDayCmd() {
215void CalendarAddDayCmd::execute() {
217 m_cal->addDay(m_newvalue);
219 setSchScheduled(
false);
222void CalendarAddDayCmd::unexecute() {
224 m_cal->takeDay(m_newvalue);
230CalendarRemoveDayCmd::CalendarRemoveDayCmd(Part *part, Calendar *cal,
const TQDate &day, TQString name)
231 : NamedCommand(part, name),
235 m_value = cal->findDay(day);
239 TQIntDictIterator<Schedule> it = part->getProject().schedules();
240 for (; it.current(); ++it) {
241 addSchScheduled(it.current());
245void CalendarRemoveDayCmd::execute() {
247 m_cal->takeDay(m_value);
249 setSchScheduled(
false);
252void CalendarRemoveDayCmd::unexecute() {
254 m_cal->addDay(m_value);
260CalendarModifyDayCmd::CalendarModifyDayCmd(Part *part, Calendar *cal, CalendarDay *value, TQString name)
261 : NamedCommand(part, name),
266 m_oldvalue = cal->findDay(value->date());
270 TQIntDictIterator<Schedule> it = part->getProject().schedules();
271 for (; it.current(); ++it) {
272 addSchScheduled(it.current());
276CalendarModifyDayCmd::~CalendarModifyDayCmd() {
284void CalendarModifyDayCmd::execute() {
286 m_cal->takeDay(m_oldvalue);
287 m_cal->addDay(m_newvalue);
289 setSchScheduled(
false);
292void CalendarModifyDayCmd::unexecute() {
294 m_cal->takeDay(m_newvalue);
295 m_cal->addDay(m_oldvalue);
301CalendarModifyWeekdayCmd::CalendarModifyWeekdayCmd(Part *part, Calendar *cal,
int weekday, CalendarDay *value, TQString name)
302 : NamedCommand(part, name),
308 kdDebug()<<k_funcinfo<<cal->name()<<
" ("<<value<<
")"<<endl;
311 TQIntDictIterator<Schedule> it = part->getProject().schedules();
312 for (; it.current(); ++it) {
313 addSchScheduled(it.current());
317CalendarModifyWeekdayCmd::~CalendarModifyWeekdayCmd() {
318 kdDebug()<<k_funcinfo<<m_weekday<<
": "<<m_value<<endl;
322void CalendarModifyWeekdayCmd::execute() {
323 m_value = m_cal->weekdays()->replace(m_weekday, m_value);
324 setSchScheduled(
false);
327void CalendarModifyWeekdayCmd::unexecute() {
328 m_value = m_cal->weekdays()->replace(m_weekday, m_value);
333NodeDeleteCmd::NodeDeleteCmd(Part *part, Node *node, TQString name)
334 : NamedCommand(part, name),
338 m_parent = node->getParent();
340 m_index = m_parent->findChildNode(node);
342 m_appointments.setAutoDelete(
true);
344 m_project =
static_cast<Project*
>(node->projectNode());
346 TQIntDictIterator<Schedule> it = m_project->schedules();
347 for (; it.current(); ++it) {
348 Schedule *s = node->findSchedule(it.current()->id());
349 if (s && s->isScheduled()) {
351 addSchScheduled(it.current());
356NodeDeleteCmd::~NodeDeleteCmd() {
360void NodeDeleteCmd::execute() {
361 if (m_parent && m_project) {
363 TQPtrListIterator<Appointment> it = m_node->appointments();
364 for (; it.current(); ++it) {
365 it.current()->detach();
366 m_appointments.append(it.current());
368 m_project->delTask(m_node);
370 setSchScheduled(
false);
374void NodeDeleteCmd::unexecute() {
375 if (m_parent && m_project) {
377 m_project->addSubTask(m_node, m_index, m_parent);
379 for (a = m_appointments.first(); a != 0; m_appointments.take()) {
388TaskAddCmd::TaskAddCmd(Part *part, Project *project, Node *node, Node *after, TQString name)
389 : NamedCommand(part, name),
396 if (after && after->getParent() && after->getParent() != project) {
397 node->setStartTime(after->getParent()->startTime());
398 node->setEndTime(node->startTime() + node->duration());
400 if (project->constraint() == Node::MustFinishOn) {
401 node->setEndTime(project->endTime());
402 node->setStartTime(node->endTime() - node->duration());
404 node->setStartTime(project->startTime());
405 node->setEndTime(node->startTime() + node->duration());
408 node->setEarliestStart(node->startTime());
409 node->setLatestFinish(node->endTime());
410 node->setWorkStartTime(node->startTime());
411 node->setWorkEndTime(node->endTime());
413TaskAddCmd::~TaskAddCmd() {
417void TaskAddCmd::execute() {
419 m_project->addTask(m_node, m_after);
424void TaskAddCmd::unexecute() {
425 m_project->delTask(m_node);
431SubtaskAddCmd::SubtaskAddCmd(Part *part, Project *project, Node *node, Node *parent, TQString name)
432 : NamedCommand(part, name),
439 node->setStartTime(parent->startTime());
440 node->setEndTime(node->startTime() + node->duration());
441 node->setEarliestStart(node->startTime());
442 node->setLatestFinish(node->endTime());
443 node->setWorkStartTime(node->startTime());
444 node->setWorkEndTime(node->endTime());
446SubtaskAddCmd::~SubtaskAddCmd() {
450void SubtaskAddCmd::execute() {
451 m_project->addSubTask(m_node, m_parent);
456void SubtaskAddCmd::unexecute() {
457 m_project->delTask(m_node);
463NodeModifyNameCmd::NodeModifyNameCmd(Part *part, Node &node, TQString nodename, TQString name)
464 : NamedCommand(part, name),
467 oldName(node.name()) {
470void NodeModifyNameCmd::execute() {
471 m_node.setName(newName);
475void NodeModifyNameCmd::unexecute() {
476 m_node.setName(oldName);
481NodeModifyLeaderCmd::NodeModifyLeaderCmd(Part *part, Node &node, TQString leader, TQString name)
482 : NamedCommand(part, name),
485 oldLeader(node.leader()) {
488void NodeModifyLeaderCmd::execute() {
489 m_node.setLeader(newLeader);
493void NodeModifyLeaderCmd::unexecute() {
494 m_node.setLeader(oldLeader);
499NodeModifyDescriptionCmd::NodeModifyDescriptionCmd(Part *part, Node &node, TQString description, TQString name)
500 : NamedCommand(part, name),
502 newDescription(description),
503 oldDescription(node.description()) {
506void NodeModifyDescriptionCmd::execute() {
507 m_node.setDescription(newDescription);
511void NodeModifyDescriptionCmd::unexecute() {
512 m_node.setDescription(oldDescription);
517NodeModifyConstraintCmd::NodeModifyConstraintCmd(Part *part, Node &node, Node::ConstraintType c, TQString name)
518 : NamedCommand(part, name),
521 oldConstraint(static_cast<Node::ConstraintType>(node.constraint())) {
523 TQIntDictIterator<Schedule> it = node.schedules();
524 for (; it.current(); ++it) {
525 addSchScheduled(it.current());
528void NodeModifyConstraintCmd::execute() {
529 m_node.setConstraint(newConstraint);
530 setSchScheduled(
false);
533void NodeModifyConstraintCmd::unexecute() {
534 m_node.setConstraint(oldConstraint);
539NodeModifyConstraintStartTimeCmd::NodeModifyConstraintStartTimeCmd(Part *part, Node &node, TQDateTime dt, TQString name)
540 : NamedCommand(part, name),
543 oldTime(node.constraintStartTime()) {
545 TQIntDictIterator<Schedule> it = node.schedules();
546 for (; it.current(); ++it) {
547 addSchScheduled(it.current());
550void NodeModifyConstraintStartTimeCmd::execute() {
551 m_node.setConstraintStartTime(newTime);
552 setSchScheduled(
false);
555void NodeModifyConstraintStartTimeCmd::unexecute() {
556 m_node.setConstraintStartTime(oldTime);
561NodeModifyConstraintEndTimeCmd::NodeModifyConstraintEndTimeCmd(Part *part, Node &node, TQDateTime dt, TQString name)
562 : NamedCommand(part, name),
565 oldTime(node.constraintEndTime()) {
567 TQIntDictIterator<Schedule> it = node.schedules();
568 for (; it.current(); ++it) {
569 addSchScheduled(it.current());
572void NodeModifyConstraintEndTimeCmd::execute() {
573 m_node.setConstraintEndTime(newTime);
574 setSchScheduled(
false);
577void NodeModifyConstraintEndTimeCmd::unexecute() {
578 m_node.setConstraintEndTime(oldTime);
583NodeModifyStartTimeCmd::NodeModifyStartTimeCmd(Part *part, Node &node, TQDateTime dt, TQString name)
584 : NamedCommand(part, name),
587 oldTime(node.startTime()) {
590void NodeModifyStartTimeCmd::execute() {
591 m_node.setStartTime(newTime);
595void NodeModifyStartTimeCmd::unexecute() {
596 m_node.setStartTime(oldTime);
601NodeModifyEndTimeCmd::NodeModifyEndTimeCmd(Part *part, Node &node, TQDateTime dt, TQString name)
602 : NamedCommand(part, name),
605 oldTime(node.endTime()) {
608void NodeModifyEndTimeCmd::execute() {
609 m_node.setEndTime(newTime);
613void NodeModifyEndTimeCmd::unexecute() {
614 m_node.setEndTime(oldTime);
619NodeModifyIdCmd::NodeModifyIdCmd(Part *part, Node &node, TQString
id, TQString name)
620 : NamedCommand(part, name),
626void NodeModifyIdCmd::execute() {
631void NodeModifyIdCmd::unexecute() {
637NodeIndentCmd::NodeIndentCmd(Part *part, Node &node, TQString name)
638 : NamedCommand(part, name),
644void NodeIndentCmd::execute() {
645 m_oldparent = m_node.getParent();
646 m_oldindex = m_oldparent->findChildNode(&m_node);
647 Project *p =
dynamic_cast<Project *
>(m_node.projectNode());
648 if (p && p->indentTask(&m_node)) {
649 m_newparent = m_node.getParent();
650 m_newindex = m_newparent->findChildNode(&m_node);
651 m_node.setParent(m_newparent);
656void NodeIndentCmd::unexecute() {
657 if (m_newindex != -1) {
658 m_newparent->delChildNode(m_newindex,
false);
659 m_oldparent->insertChildNode(m_oldindex, &m_node);
660 m_node.setParent(m_oldparent);
667NodeUnindentCmd::NodeUnindentCmd(Part *part, Node &node, TQString name)
668 : NamedCommand(part, name),
673void NodeUnindentCmd::execute() {
674 m_oldparent = m_node.getParent();
675 m_oldindex = m_oldparent->findChildNode(&m_node);
676 Project *p =
dynamic_cast<Project *
>(m_node.projectNode());
677 if (p && p->unindentTask(&m_node)) {
678 m_newparent = m_node.getParent();
679 m_newindex = m_newparent->findChildNode(&m_node);
680 m_node.setParent(m_newparent);
685void NodeUnindentCmd::unexecute() {
686 if (m_newindex != -1) {
687 m_newparent->delChildNode(m_newindex,
false);
688 m_oldparent->insertChildNode(m_oldindex, &m_node);
689 m_node.setParent(m_oldparent);
696NodeMoveUpCmd::NodeMoveUpCmd(Part *part, Node &node, TQString name)
697 : NamedCommand(part, name),
701 m_project =
static_cast<Project *
>(m_node.projectNode());
703void NodeMoveUpCmd::execute() {
705 m_moved = m_project->moveTaskUp(&m_node);
710void NodeMoveUpCmd::unexecute() {
711 if (m_project && m_moved) {
712 m_project->moveTaskDown(&m_node);
718NodeMoveDownCmd::NodeMoveDownCmd(Part *part, Node &node, TQString name)
719 : NamedCommand(part, name),
723 m_project =
static_cast<Project *
>(m_node.projectNode());
725void NodeMoveDownCmd::execute() {
727 m_moved = m_project->moveTaskDown(&m_node);
731void NodeMoveDownCmd::unexecute() {
732 if (m_project && m_moved) {
733 m_project->moveTaskUp(&m_node);
739AddRelationCmd::AddRelationCmd(Part *part, Relation *rel, TQString name)
740 : NamedCommand(part, name),
744 Node *p = rel->parent()->projectNode();
746 TQIntDictIterator<Schedule> it = p->schedules();
747 for (; it.current(); ++it) {
748 addSchScheduled(it.current());
752AddRelationCmd::~AddRelationCmd() {
756void AddRelationCmd::execute() {
759 m_rel->parent()->addDependChildNode(m_rel);
760 m_rel->child()->addDependParentNode(m_rel);
761 setSchScheduled(
false);
764void AddRelationCmd::unexecute() {
766 m_rel->parent()->takeDependChildNode(m_rel);
767 m_rel->child()->takeDependParentNode(m_rel);
772DeleteRelationCmd::DeleteRelationCmd(Part *part, Relation *rel, TQString name)
773 : NamedCommand(part, name),
777 Node *p = rel->parent()->projectNode();
779 TQIntDictIterator<Schedule> it = p->schedules();
780 for (; it.current(); ++it) {
781 addSchScheduled(it.current());
785DeleteRelationCmd::~DeleteRelationCmd() {
789void DeleteRelationCmd::execute() {
792 m_rel->parent()->takeDependChildNode(m_rel);
793 m_rel->child()->takeDependParentNode(m_rel);
794 setSchScheduled(
false);
797void DeleteRelationCmd::unexecute() {
799 m_rel->parent()->addDependChildNode(m_rel);
800 m_rel->child()->addDependParentNode(m_rel);
805ModifyRelationTypeCmd::ModifyRelationTypeCmd(Part *part, Relation *rel, Relation::Type type, TQString name)
806 : NamedCommand(part, name),
810 m_oldtype = rel->type();
811 Node *p = rel->parent()->projectNode();
813 TQIntDictIterator<Schedule> it = p->schedules();
814 for (; it.current(); ++it) {
815 addSchScheduled(it.current());
819void ModifyRelationTypeCmd::execute() {
820 m_rel->setType(m_newtype);
821 setSchScheduled(
false);
824void ModifyRelationTypeCmd::unexecute() {
825 m_rel->setType(m_oldtype);
830ModifyRelationLagCmd::ModifyRelationLagCmd(Part *part, Relation *rel, Duration lag, TQString name)
831 : NamedCommand(part, name),
835 m_oldlag = rel->lag();
836 Node *p = rel->parent()->projectNode();
838 TQIntDictIterator<Schedule> it = p->schedules();
839 for (; it.current(); ++it) {
840 addSchScheduled(it.current());
844void ModifyRelationLagCmd::execute() {
845 m_rel->setLag(m_newlag);
846 setSchScheduled(
false);
849void ModifyRelationLagCmd::unexecute() {
850 m_rel->setLag(m_oldlag);
855AddResourceRequestCmd::AddResourceRequestCmd(Part *part, ResourceGroupRequest *group, ResourceRequest *request, TQString name)
856 : NamedCommand(part, name),
862AddResourceRequestCmd::~AddResourceRequestCmd() {
866void AddResourceRequestCmd::execute() {
868 m_group->addResourceRequest(m_request);
870 setSchScheduled(
false);
873void AddResourceRequestCmd::unexecute() {
875 m_group->takeResourceRequest(m_request);
881RemoveResourceRequestCmd::RemoveResourceRequestCmd(Part *part, ResourceGroupRequest *group, ResourceRequest *request, TQString name)
882 : NamedCommand(part, name),
888 Task *t = request->task();
890 TQIntDictIterator<Schedule> it = t->schedules();
891 for (; it.current(); ++it) {
892 addSchScheduled(it.current());
896RemoveResourceRequestCmd::~RemoveResourceRequestCmd() {
900void RemoveResourceRequestCmd::execute() {
901 m_group->takeResourceRequest(m_request);
903 setSchScheduled(
false);
906void RemoveResourceRequestCmd::unexecute() {
907 m_group->addResourceRequest(m_request);
913ModifyEffortCmd::ModifyEffortCmd(Part *part, Node &node, Duration oldvalue, Duration newvalue, TQString name)
914 : NamedCommand(part, name),
915 m_effort(node.effort()),
916 m_oldvalue(oldvalue),
917 m_newvalue(newvalue) {
919 TQIntDictIterator<Schedule> it = node.schedules();
920 for (; it.current(); ++it) {
921 addSchScheduled(it.current());
924void ModifyEffortCmd::execute() {
925 m_effort->set(m_newvalue);
926 setSchScheduled(
false);
929void ModifyEffortCmd::unexecute() {
930 m_effort->set(m_oldvalue);
935EffortModifyOptimisticRatioCmd::EffortModifyOptimisticRatioCmd(Part *part, Node &node,
int oldvalue,
int newvalue, TQString name)
936 : NamedCommand(part, name),
937 m_effort(node.effort()),
938 m_oldvalue(oldvalue),
939 m_newvalue(newvalue) {
941 TQIntDictIterator<Schedule> it = node.schedules();
942 for (; it.current(); ++it) {
943 addSchScheduled(it.current());
946void EffortModifyOptimisticRatioCmd::execute() {
947 m_effort->setOptimisticRatio(m_newvalue);
948 setSchScheduled(
false);
951void EffortModifyOptimisticRatioCmd::unexecute() {
952 m_effort->setOptimisticRatio(m_oldvalue);
957EffortModifyPessimisticRatioCmd::EffortModifyPessimisticRatioCmd(Part *part, Node &node,
int oldvalue,
int newvalue, TQString name)
958 : NamedCommand(part, name),
959 m_effort(node.effort()),
960 m_oldvalue(oldvalue),
961 m_newvalue(newvalue) {
963 TQIntDictIterator<Schedule> it = node.schedules();
964 for (; it.current(); ++it) {
965 addSchScheduled(it.current());
968void EffortModifyPessimisticRatioCmd::execute() {
969 m_effort->setPessimisticRatio(m_newvalue);
970 setSchScheduled(
false);
973void EffortModifyPessimisticRatioCmd::unexecute() {
974 m_effort->setPessimisticRatio(m_oldvalue);
979ModifyEffortTypeCmd::ModifyEffortTypeCmd(Part *part, Node &node,
int oldvalue,
int newvalue, TQString name)
980 : NamedCommand(part, name),
981 m_effort(node.effort()),
982 m_oldvalue(oldvalue),
983 m_newvalue(newvalue) {
985 TQIntDictIterator<Schedule> it = node.schedules();
986 for (; it.current(); ++it) {
987 addSchScheduled(it.current());
990void ModifyEffortTypeCmd::execute() {
991 m_effort->setType(
static_cast<Effort::Type
>(m_newvalue));
992 setSchScheduled(
false);
995void ModifyEffortTypeCmd::unexecute() {
996 m_effort->setType(
static_cast<Effort::Type
>(m_oldvalue));
1001EffortModifyRiskCmd::EffortModifyRiskCmd(Part *part, Node &node,
int oldvalue,
int newvalue, TQString name)
1002 : NamedCommand(part, name),
1003 m_effort(node.effort()),
1004 m_oldvalue(oldvalue),
1005 m_newvalue(newvalue) {
1007 TQIntDictIterator<Schedule> it = node.schedules();
1008 for (; it.current(); ++it) {
1009 addSchScheduled(it.current());
1012void EffortModifyRiskCmd::execute() {
1013 m_effort->setRisktype(
static_cast<Effort::Risktype
>(m_newvalue));
1014 setSchScheduled(
false);
1017void EffortModifyRiskCmd::unexecute() {
1018 m_effort->setRisktype(
static_cast<Effort::Risktype
>(m_oldvalue));
1023AddResourceGroupRequestCmd::AddResourceGroupRequestCmd(Part *part, Task &task, ResourceGroupRequest *request, TQString name)
1024 : NamedCommand(part, name),
1026 m_request(request) {
1030void AddResourceGroupRequestCmd::execute() {
1032 m_task.addRequest(m_request);
1037void AddResourceGroupRequestCmd::unexecute() {
1039 m_task.takeRequest(m_request);
1045RemoveResourceGroupRequestCmd::RemoveResourceGroupRequestCmd(Part *part, ResourceGroupRequest *request, TQString name)
1046 : NamedCommand(part, name),
1047 m_task(request->parent()->task()),
1048 m_request(request) {
1053RemoveResourceGroupRequestCmd::RemoveResourceGroupRequestCmd(Part *part, Task &task, ResourceGroupRequest *request, TQString name)
1054 : NamedCommand(part, name),
1056 m_request(request) {
1060void RemoveResourceGroupRequestCmd::execute() {
1062 m_task.takeRequest(m_request);
1067void RemoveResourceGroupRequestCmd::unexecute() {
1069 m_task.addRequest(m_request);
1075AddResourceCmd::AddResourceCmd(Part *part, ResourceGroup *group, Resource *resource, TQString name)
1076 : NamedCommand(part, name),
1078 m_resource(resource) {
1082AddResourceCmd::~AddResourceCmd() {
1088void AddResourceCmd::execute() {
1089 m_group->addResource(m_resource, 0);
1094void AddResourceCmd::unexecute() {
1095 m_group->takeResource(m_resource);
1102RemoveResourceCmd::RemoveResourceCmd(Part *part, ResourceGroup *group, Resource *resource, TQString name)
1103 : AddResourceCmd(part, group, resource, name) {
1106 m_requests = m_resource->requests();
1108 TQIntDictIterator<Schedule> it = resource->schedules();
1109 for (; it.current(); ++it) {
1110 addSchScheduled(it.current());
1113RemoveResourceCmd::~RemoveResourceCmd() {
1114 m_appointments.setAutoDelete(
true);
1116void RemoveResourceCmd::execute() {
1117 TQPtrListIterator<ResourceRequest> it = m_requests;
1118 for (; it.current(); ++it) {
1119 it.current()->parent()->takeResourceRequest(it.current());
1122 TQPtrListIterator<Appointment> ait = m_resource->appointments();
1123 for (; ait.current(); ++ait) {
1124 m_appointments.append(ait.current());
1126 TQPtrListIterator<Appointment> mit = m_appointments;
1127 for (; mit.current(); ++mit) {
1128 mit.current()->detach();
1131 AddResourceCmd::unexecute();
1132 setSchScheduled(
false);
1134void RemoveResourceCmd::unexecute() {
1135 m_appointments.first();
1136 while (m_appointments.current()) {
1138 m_appointments.take()->attach();
1140 TQPtrListIterator<ResourceRequest> it = m_requests;
1141 for (; it.current(); ++it) {
1142 it.current()->parent()->addResourceRequest(it.current());
1145 AddResourceCmd::execute();
1149ModifyResourceNameCmd::ModifyResourceNameCmd(Part *part, Resource *resource, TQString value, TQString name)
1150 : NamedCommand(part, name),
1151 m_resource(resource),
1153 m_oldvalue = resource->name();
1155void ModifyResourceNameCmd::execute() {
1156 m_resource->setName(m_newvalue);
1160void ModifyResourceNameCmd::unexecute() {
1161 m_resource->setName(m_oldvalue);
1165ModifyResourceInitialsCmd::ModifyResourceInitialsCmd(Part *part, Resource *resource, TQString value, TQString name)
1166 : NamedCommand(part, name),
1167 m_resource(resource),
1169 m_oldvalue = resource->initials();
1171void ModifyResourceInitialsCmd::execute() {
1172 m_resource->setInitials(m_newvalue);
1176void ModifyResourceInitialsCmd::unexecute() {
1177 m_resource->setInitials(m_oldvalue);
1181ModifyResourceEmailCmd::ModifyResourceEmailCmd(Part *part, Resource *resource, TQString value, TQString name)
1182 : NamedCommand(part, name),
1183 m_resource(resource),
1185 m_oldvalue = resource->email();
1187void ModifyResourceEmailCmd::execute() {
1188 m_resource->setEmail(m_newvalue);
1192void ModifyResourceEmailCmd::unexecute() {
1193 m_resource->setEmail(m_oldvalue);
1197ModifyResourceTypeCmd::ModifyResourceTypeCmd(Part *part, Resource *resource,
int value, TQString name)
1198 : NamedCommand(part, name),
1199 m_resource(resource),
1201 m_oldvalue = resource->type();
1203 TQIntDictIterator<Schedule> it = resource->schedules();
1204 for (; it.current(); ++it) {
1205 addSchScheduled(it.current());
1208void ModifyResourceTypeCmd::execute() {
1209 m_resource->setType((Resource::Type)m_newvalue);
1210 setSchScheduled(
false);
1213void ModifyResourceTypeCmd::unexecute() {
1214 m_resource->setType((Resource::Type)m_oldvalue);
1218ModifyResourceUnitsCmd::ModifyResourceUnitsCmd(Part *part, Resource *resource,
int value, TQString name)
1219 : NamedCommand(part, name),
1220 m_resource(resource),
1222 m_oldvalue = resource->units();
1224 TQIntDictIterator<Schedule> it = resource->schedules();
1225 for (; it.current(); ++it) {
1226 addSchScheduled(it.current());
1229void ModifyResourceUnitsCmd::execute() {
1230 m_resource->setUnits(m_newvalue);
1231 setSchScheduled(
false);
1234void ModifyResourceUnitsCmd::unexecute() {
1235 m_resource->setUnits(m_oldvalue);
1240ModifyResourceAvailableFromCmd::ModifyResourceAvailableFromCmd(Part *part, Resource *resource, DateTime value, TQString name)
1241 : NamedCommand(part, name),
1242 m_resource(resource),
1244 m_oldvalue = resource->availableFrom();
1246 TQIntDictIterator<Schedule> it = resource->schedules();
1247 if (!it.isEmpty() && resource->project()) {
1250 for (; it.current(); ++it) {
1251 Schedule *sch = resource->project()->findSchedule(it.current()->id());
1255 kdDebug()<<k_funcinfo<<
"old="<<m_oldvalue<<
" new="<<value<<
" s="<<s<<
" e="<<e<<endl;
1257 if (!s.isValid() || !e.isValid() || ((m_oldvalue > s || value > s) && (m_oldvalue < e || value < e))) {
1258 addSchScheduled(it.current());
1263void ModifyResourceAvailableFromCmd::execute() {
1264 m_resource->setAvailableFrom(m_newvalue);
1265 setSchScheduled(
false);
1268void ModifyResourceAvailableFromCmd::unexecute() {
1269 m_resource->setAvailableFrom(m_oldvalue);
1274ModifyResourceAvailableUntilCmd::ModifyResourceAvailableUntilCmd(Part *part, Resource *resource, DateTime value, TQString name)
1275 : NamedCommand(part, name),
1276 m_resource(resource),
1278 m_oldvalue = resource->availableUntil();
1280 TQIntDictIterator<Schedule> it = resource->schedules();
1281 if (!it.isEmpty()) {
1284 for (; it.current(); ++it) {
1285 Schedule *sch = resource->project()->findSchedule(it.current()->id());
1289 kdDebug()<<k_funcinfo<<
"old="<<m_oldvalue<<
" new="<<value<<
" s="<<s<<
" e="<<e<<endl;
1291 if (!s.isValid() || !e.isValid() || ((m_oldvalue > s || value > s) && (m_oldvalue < e || value < e))) {
1292 addSchScheduled(it.current());
1297void ModifyResourceAvailableUntilCmd::execute() {
1298 m_resource->setAvailableUntil(m_newvalue);
1299 setSchScheduled(
false);
1302void ModifyResourceAvailableUntilCmd::unexecute() {
1303 m_resource->setAvailableUntil(m_oldvalue);
1308ModifyResourceNormalRateCmd::ModifyResourceNormalRateCmd(Part *part, Resource *resource,
double value, TQString name)
1309 : NamedCommand(part, name),
1310 m_resource(resource),
1312 m_oldvalue = resource->normalRate();
1314void ModifyResourceNormalRateCmd::execute() {
1315 m_resource->setNormalRate(m_newvalue);
1319void ModifyResourceNormalRateCmd::unexecute() {
1320 m_resource->setNormalRate(m_oldvalue);
1324ModifyResourceOvertimeRateCmd::ModifyResourceOvertimeRateCmd(Part *part, Resource *resource,
double value, TQString name)
1325 : NamedCommand(part, name),
1326 m_resource(resource),
1328 m_oldvalue = resource->overtimeRate();
1330void ModifyResourceOvertimeRateCmd::execute() {
1331 m_resource->setOvertimeRate(m_newvalue);
1335void ModifyResourceOvertimeRateCmd::unexecute() {
1336 m_resource->setOvertimeRate(m_oldvalue);
1341ModifyResourceCalendarCmd::ModifyResourceCalendarCmd(Part *part, Resource *resource, Calendar *value, TQString name)
1342 : NamedCommand(part, name),
1343 m_resource(resource),
1345 m_oldvalue = resource->calendar(
true);
1347 TQIntDictIterator<Schedule> it = resource->schedules();
1348 for (; it.current(); ++it) {
1349 addSchScheduled(it.current());
1352void ModifyResourceCalendarCmd::execute() {
1353 m_resource->setCalendar(m_newvalue);
1354 setSchScheduled(
false);
1357void ModifyResourceCalendarCmd::unexecute() {
1358 m_resource->setCalendar(m_oldvalue);
1363RemoveResourceGroupCmd::RemoveResourceGroupCmd(Part *part, ResourceGroup *group, TQString name)
1364 : NamedCommand(part, name),
1369RemoveResourceGroupCmd::~RemoveResourceGroupCmd() {
1373void RemoveResourceGroupCmd::execute() {
1376 TQPtrListIterator<ResourceGroupRequest> it = m_group->requests();
1377 for (; it.current(); ++it) {
1378 if (it.current()->parent()) {
1379 it.current()->parent()->takeRequest(it.current());
1383 if (m_group->project())
1384 m_group->project()->takeResourceGroup(m_group);
1389void RemoveResourceGroupCmd::unexecute() {
1392 TQPtrListIterator<ResourceGroupRequest> it = m_group->requests();
1393 for (; it.current(); ++it) {
1394 if (it.current()->parent()) {
1395 it.current()->parent()->addRequest(it.current());
1399 if (m_group->project())
1400 m_group->project()->addResourceGroup(m_group);
1407AddResourceGroupCmd::AddResourceGroupCmd(Part *part, ResourceGroup *group, TQString name)
1408 : RemoveResourceGroupCmd(part, group, name) {
1412void AddResourceGroupCmd::execute() {
1413 RemoveResourceGroupCmd::unexecute();
1415void AddResourceGroupCmd::unexecute() {
1416 RemoveResourceGroupCmd::execute();
1419ModifyResourceGroupNameCmd::ModifyResourceGroupNameCmd(Part *part, ResourceGroup *group, TQString value, TQString name)
1420 : NamedCommand(part, name),
1423 m_oldvalue = group->name();
1425void ModifyResourceGroupNameCmd::execute() {
1426 m_group->setName(m_newvalue);
1430void ModifyResourceGroupNameCmd::unexecute() {
1431 m_group->setName(m_oldvalue);
1436TaskModifyProgressCmd::TaskModifyProgressCmd(Part *part, Task &task,
struct Task::Progress &value, TQString name)
1437 : NamedCommand(part, name),
1440 m_oldvalue = task.progress();
1442void TaskModifyProgressCmd::execute() {
1443 m_task.progress() = m_newvalue;
1447void TaskModifyProgressCmd::unexecute() {
1448 m_task.progress() = m_oldvalue;
1453ProjectModifyBaselineCmd::ProjectModifyBaselineCmd(Part *part, Project &project,
bool value, TQString name)
1454 : NamedCommand(part, name),
1457 m_oldvalue = project.isBaselined();
1459void ProjectModifyBaselineCmd::execute() {
1460 m_project.setBaselined(m_newvalue);
1464void ProjectModifyBaselineCmd::unexecute() {
1465 m_project.setBaselined(m_oldvalue);
1470AddAccountCmd::AddAccountCmd(Part *part, Project &project, Account *account, TQString parent, TQString name)
1471 : NamedCommand(part, name),
1475 m_parentName(parent) {
1479AddAccountCmd::AddAccountCmd(Part *part, Project &project, Account *account, Account *parent, TQString name)
1480 : NamedCommand(part, name),
1487AddAccountCmd::~AddAccountCmd() {
1492void AddAccountCmd::execute() {
1493 if (m_parent == 0 && !m_parentName.isEmpty()) {
1494 m_parent = m_project.accounts().findAccount(m_parentName);
1497 m_parent->append(m_account);
1499 m_project.accounts().append(m_account);
1504void AddAccountCmd::unexecute() {
1506 m_parent->take(m_account);
1508 m_project.accounts().take(m_account);
1514RemoveAccountCmd::RemoveAccountCmd(Part *part, Project &project, Account *account, TQString name)
1515 : NamedCommand(part, name),
1517 m_account(account) {
1519 m_isDefault = account == project.accounts().defaultAccount();
1522RemoveAccountCmd::~RemoveAccountCmd() {
1527void RemoveAccountCmd::execute() {
1529 m_project.accounts().setDefaultAccount(0);
1531 if (m_account->parent())
1532 m_account->parent()->take(m_account);
1534 m_project.accounts().take(m_account);
1539void RemoveAccountCmd::unexecute() {
1540 if (m_account->parent())
1541 m_account->parent()->append(m_account);
1543 m_project.accounts().append(m_account);
1546 m_project.accounts().setDefaultAccount(m_account);
1552RenameAccountCmd::RenameAccountCmd(Part *part, Account *account, TQString value, TQString name)
1553 : NamedCommand(part, name),
1554 m_account(account) {
1555 m_oldvalue = account->name();
1559void RenameAccountCmd::execute() {
1560 m_account->setName(m_newvalue);
1563void RenameAccountCmd::unexecute() {
1564 m_account->setName(m_oldvalue);
1568ModifyAccountDescriptionCmd::ModifyAccountDescriptionCmd(Part *part, Account *account, TQString value, TQString name)
1569 : NamedCommand(part, name),
1570 m_account(account) {
1571 m_oldvalue = account->description();
1575void ModifyAccountDescriptionCmd::execute() {
1576 m_account->setDescription(m_newvalue);
1579void ModifyAccountDescriptionCmd::unexecute() {
1580 m_account->setDescription(m_oldvalue);
1585NodeModifyStartupCostCmd::NodeModifyStartupCostCmd(Part *part, Node &node,
double value, TQString name)
1586 : NamedCommand(part, name),
1588 m_oldvalue = node.startupCost();
1592void NodeModifyStartupCostCmd::execute() {
1593 m_node.setStartupCost(m_newvalue);
1596void NodeModifyStartupCostCmd::unexecute() {
1597 m_node.setStartupCost(m_oldvalue);
1601NodeModifyShutdownCostCmd::NodeModifyShutdownCostCmd(Part *part, Node &node,
double value, TQString name)
1602 : NamedCommand(part, name),
1604 m_oldvalue = node.startupCost();
1608void NodeModifyShutdownCostCmd::execute() {
1609 m_node.setShutdownCost(m_newvalue);
1612void NodeModifyShutdownCostCmd::unexecute() {
1613 m_node.setShutdownCost(m_oldvalue);
1617NodeModifyRunningAccountCmd::NodeModifyRunningAccountCmd(Part *part, Node &node, Account *oldvalue, Account *newvalue, TQString name)
1618 : NamedCommand(part, name),
1620 m_oldvalue = oldvalue;
1621 m_newvalue = newvalue;
1624void NodeModifyRunningAccountCmd::execute() {
1627 m_oldvalue->removeRunning(m_node);
1630 m_newvalue->addRunning(m_node);
1634void NodeModifyRunningAccountCmd::unexecute() {
1637 m_newvalue->removeRunning(m_node);
1640 m_oldvalue->addRunning(m_node);
1645NodeModifyStartupAccountCmd::NodeModifyStartupAccountCmd(Part *part, Node &node, Account *oldvalue, Account *newvalue, TQString name)
1646 : NamedCommand(part, name),
1648 m_oldvalue = oldvalue;
1649 m_newvalue = newvalue;
1653void NodeModifyStartupAccountCmd::execute() {
1656 m_oldvalue->removeStartup(m_node);
1659 m_newvalue->addStartup(m_node);
1663void NodeModifyStartupAccountCmd::unexecute() {
1666 m_newvalue->removeStartup(m_node);
1669 m_oldvalue->addStartup(m_node);
1674NodeModifyShutdownAccountCmd::NodeModifyShutdownAccountCmd(Part *part, Node &node, Account *oldvalue, Account *newvalue, TQString name)
1675 : NamedCommand(part, name),
1677 m_oldvalue = oldvalue;
1678 m_newvalue = newvalue;
1682void NodeModifyShutdownAccountCmd::execute() {
1685 m_oldvalue->removeShutdown(m_node);
1688 m_newvalue->addShutdown(m_node);
1692void NodeModifyShutdownAccountCmd::unexecute() {
1695 m_newvalue->removeShutdown(m_node);
1698 m_oldvalue->addShutdown(m_node);
1703ModifyDefaultAccountCmd::ModifyDefaultAccountCmd(Part *part, Accounts &acc, Account *oldvalue, Account *newvalue, TQString name)
1704 : NamedCommand(part, name),
1706 m_oldvalue = oldvalue;
1707 m_newvalue = newvalue;
1711void ModifyDefaultAccountCmd::execute() {
1713 m_accounts.setDefaultAccount(m_newvalue);
1716void ModifyDefaultAccountCmd::unexecute() {
1718 m_accounts.setDefaultAccount(m_oldvalue);
1722ProjectModifyConstraintCmd::ProjectModifyConstraintCmd(Part *part, Project &node, Node::ConstraintType c, TQString name)
1723 : NamedCommand(part, name),
1726 oldConstraint(static_cast<Node::ConstraintType>(node.constraint())) {
1728 TQIntDictIterator<Schedule> it = node.schedules();
1729 for (; it.current(); ++it) {
1730 addSchScheduled(it.current());
1733void ProjectModifyConstraintCmd::execute() {
1734 m_node.setConstraint(newConstraint);
1735 setSchScheduled(
false);
1738void ProjectModifyConstraintCmd::unexecute() {
1739 m_node.setConstraint(oldConstraint);
1744ProjectModifyStartTimeCmd::ProjectModifyStartTimeCmd(Part *part, Project &node, TQDateTime dt, TQString name)
1745 : NamedCommand(part, name),
1748 oldTime(node.startTime()) {
1750 TQIntDictIterator<Schedule> it = node.schedules();
1751 for (; it.current(); ++it) {
1752 addSchScheduled(it.current());
1756void ProjectModifyStartTimeCmd::execute() {
1757 m_node.setConstraintStartTime(newTime);
1758 setSchScheduled(
false);
1761void ProjectModifyStartTimeCmd::unexecute() {
1762 m_node.setConstraintStartTime(oldTime);
1767ProjectModifyEndTimeCmd::ProjectModifyEndTimeCmd(Part *part, Project &node, TQDateTime dt, TQString name)
1768 : NamedCommand(part, name),
1771 oldTime(node.endTime()) {
1773 TQIntDictIterator<Schedule> it = node.schedules();
1774 for (; it.current(); ++it) {
1775 addSchScheduled(it.current());
1778void ProjectModifyEndTimeCmd::execute() {
1779 m_node.setEndTime(newTime);
1780 m_node.setConstraintEndTime(newTime);
1781 setSchScheduled(
false);
1784void ProjectModifyEndTimeCmd::unexecute() {
1785 m_node.setConstraintEndTime(oldTime);
1790CalculateProjectCmd::CalculateProjectCmd(Part *part, Project &node, TQString tname,
int type, TQString name)
1791 : NamedCommand(part, name),
1797 oldCurrent = node.currentSchedule();
1800void CalculateProjectCmd::execute() {
1801 if (newSchedule == 0) {
1803 newSchedule = m_node.createSchedule(m_typename, (Schedule::Type)m_type);
1804 m_node.calculate(newSchedule);
1807 newSchedule->setDeleted(
false);
1808 m_node.setCurrentSchedulePtr(newSchedule);
1812void CalculateProjectCmd::unexecute() {
1814 newSchedule->setDeleted(
true);
1815 m_node.setCurrentSchedulePtr(oldCurrent);
1820RecalculateProjectCmd::RecalculateProjectCmd(Part *part, Project &node, Schedule &sch, TQString name)
1821 : NamedCommand(part, name),
1825 oldDeleted(sch.isDeleted()) {
1827 oldCurrent = node.currentSchedule();
1830void RecalculateProjectCmd::execute() {
1831 oldSchedule.setDeleted(
true);
1832 if (newSchedule == 0) {
1833 newSchedule = m_node.createSchedule(oldSchedule.name(), oldSchedule.type());
1834 m_node.calculate(newSchedule);
1836 newSchedule->setDeleted(
false);
1837 m_node.setCurrentSchedulePtr(newSchedule);
1842void RecalculateProjectCmd::unexecute() {
1844 newSchedule->setDeleted(
true);
1845 oldSchedule.setDeleted(oldDeleted);
1846 m_node.setCurrentSchedulePtr(oldCurrent);
1852ModifyStandardWorktimeYearCmd::ModifyStandardWorktimeYearCmd(Part *part, StandardWorktime *wt,
double oldvalue,
double newvalue, TQString name)
1853 : NamedCommand(part, name),
1855 m_oldvalue(oldvalue),
1856 m_newvalue(newvalue) {
1859void ModifyStandardWorktimeYearCmd::execute() {
1860 swt->setYear(m_newvalue);
1863void ModifyStandardWorktimeYearCmd::unexecute() {
1864 swt->setYear(m_oldvalue);
1868ModifyStandardWorktimeMonthCmd::ModifyStandardWorktimeMonthCmd(Part *part, StandardWorktime *wt,
double oldvalue,
double newvalue, TQString name)
1869 : NamedCommand(part, name),
1871 m_oldvalue(oldvalue),
1872 m_newvalue(newvalue) {
1875void ModifyStandardWorktimeMonthCmd::execute() {
1876 swt->setMonth(m_newvalue);
1879void ModifyStandardWorktimeMonthCmd::unexecute() {
1880 swt->setMonth(m_oldvalue);
1884ModifyStandardWorktimeWeekCmd::ModifyStandardWorktimeWeekCmd(Part *part, StandardWorktime *wt,
double oldvalue,
double newvalue, TQString name)
1885 : NamedCommand(part, name),
1887 m_oldvalue(oldvalue),
1888 m_newvalue(newvalue) {
1891void ModifyStandardWorktimeWeekCmd::execute() {
1892 swt->setWeek(m_newvalue);
1895void ModifyStandardWorktimeWeekCmd::unexecute() {
1896 swt->setWeek(m_oldvalue);
1900ModifyStandardWorktimeDayCmd::ModifyStandardWorktimeDayCmd(Part *part, StandardWorktime *wt,
double oldvalue,
double newvalue, TQString name)
1901 : NamedCommand(part, name),
1903 m_oldvalue(oldvalue),
1904 m_newvalue(newvalue) {
1908void ModifyStandardWorktimeDayCmd::execute() {
1909 swt->setDay(m_newvalue);
1912void ModifyStandardWorktimeDayCmd::unexecute() {
1913 swt->setDay(m_oldvalue);
Calendar defines the working and nonworking days and hours.
Project is the main node in a project, it contains child nodes and possibly sub-projects.
The Schedule class holds data calculated during project calculation and scheduling,...