20#include "kptrequestresourcespanel.h"
22#include "kptproject.h"
23#include "kptresource.h"
24#include "kptcalendar.h"
27#include <tdemessagebox.h>
29#include <kptcommand.h>
32#include <tqpushbutton.h>
33#include <tqlineedit.h>
36#include <tqvalidator.h>
37#include <tqcombobox.h>
38#include <tqdatetime.h>
39#include <tqdatetimeedit.h>
44ResourceTableItem::ResourceTableItem(
Resource *resource, ResourceRequest *request,
bool check) {
45 m_resource = resource;
48 m_origChecked = check;
55ResourceTableItem::~ResourceTableItem() {
59void ResourceTableItem::update() {
61 m_checked = m_checkitem->isChecked();
65void ResourceTableItem::insert(TQTable *table,
int row) {
67 m_checkitem =
new TQCheckTableItem(table, m_resource->name());
68 m_checkitem->setChecked(m_checked);
69 table->setItem(row, 0, m_checkitem);
75 : TQListViewItem(parent, group->name(), TQString(
"%1").arg(group->units())),
80 m_request = task.resourceGroupRequest(group);
82 m_units = m_request->units();
84 TQPtrListIterator<Resource> it(group->resources());
85 for (; it.current(); ++it) {
87 ResourceRequest *req=0;
89 req = m_request->find(it.current());
91 m_resources.append(
new ResourceTableItem(it.current(), req, (
bool)req));
94 m_resources.setAutoDelete(
true);
97GroupLVItem::~GroupLVItem() {
101void GroupLVItem::update() {
102 TQPtrListIterator<ResourceTableItem> it(m_resources);
103 for (; it.current(); ++it) {
104 it.current()->update();
108void GroupLVItem::insert(TQTable *table) {
111 for (
int i = table->numRows(); i > 0; --i)
112 table->removeRow(i-1);
114 if (m_group->numResources() == 0) {
115 table->setNumRows(1);
116 table->setItem(0, 0,
new TQCheckTableItem(table,i18n(
"None")));
117 table->setItem(0, 1,
new TQComboTableItem(table,i18n(
"None")));
119 table->setNumRows(m_group->numResources());
120 TQPtrListIterator<ResourceTableItem> it(m_resources);
121 for (
int i = 0; it.current(); ++it, ++i) {
122 it.current()->insert(table, i);
125 table->adjustColumn(0);
128int GroupLVItem::numRequests() {
131 TQPtrListIterator<ResourceTableItem> it(m_resources);
132 for (; it.current(); ++it) {
133 value += it.current()->numRequests();
138bool GroupLVItem::isNull()
const {
140 TQPtrListIterator<ResourceTableItem> it(m_resources);
141 for (; it.current(); ++it) {
142 if (it.current()->isChecked())
150RequestResourcesPanel::RequestResourcesPanel(TQWidget *parent, Task &task,
bool baseline)
151 : TaskResourcesPanelBase(parent),
155 m_blockChanged(false) {
157 Project *p =
dynamic_cast<Project*
>(task.projectNode());
159 m_worktime = p->standardWorktime();
161 TQPtrListIterator<ResourceGroup> git(p->resourceGroups());
162 for(
int i=0; git.current(); ++git, ++i) {
163 ResourceGroup *grp = git.current();
164 GroupLVItem *grpitem =
new GroupLVItem(groupList, grp, task);
165 groupList->insertItem(grpitem);
169 TQListViewItem *item = groupList->firstChild();
171 groupList->setSelected(item,
true);
175 resourceTable->setReadOnly(baseline);
177 connect(groupList, TQ_SIGNAL(selectionChanged(TQListViewItem*)), TQ_SLOT(groupChanged(TQListViewItem*)));
178 connect(resourceTable, TQ_SIGNAL(valueChanged(
int,
int)), TQ_SLOT(resourceChanged(
int,
int)));
183void RequestResourcesPanel::groupChanged(TQListViewItem *item) {
185 GroupLVItem *grp =
dynamic_cast<GroupLVItem *
>(item);
190 selectedGroup->update();
198 grp->insert(resourceTable);
201void RequestResourcesPanel::resourceChanged(
int ,
int ) {
206void RequestResourcesPanel::unitsChanged(
int units) {
209 selectedGroup->m_units = units;
214KCommand *RequestResourcesPanel::buildCommand(Part *part) {
216 KMacroCommand *cmd = 0;
218 selectedGroup->update();
220 TQListViewItem *item = groupList->firstChild();
221 for (; item; item = item->nextSibling()) {
222 GroupLVItem *grp =
static_cast<GroupLVItem*
>(item);
223 TQPtrListIterator<ResourceTableItem> it = grp->resources();
224 for (; it.current(); ++it) {
225 if (it.current()->isChecked() != it.current()->isOrigChecked()) {
226 if (!cmd) cmd =
new KMacroCommand(
"");
227 if (it.current()->isChecked()) {
228 if (!grp->m_request) {
229 grp->m_request =
new ResourceGroupRequest(grp->m_group, grp->m_units);
230 cmd->addCommand(
new AddResourceGroupRequestCmd(part, m_task, grp->m_request));
232 cmd->addCommand(
new AddResourceRequestCmd(part, grp->m_request,
new ResourceRequest(it.current()->resource(), it.current()->units())));
236 if (grp->m_request && it.current()->request()) {
237 cmd->addCommand(
new RemoveResourceRequestCmd(part, grp->m_request, it.current()->request()));
239 cmd->addCommand(
new RemoveResourceGroupRequestCmd(part, m_task, grp->m_request));
242 kdError()<<k_funcinfo<<
"Remove failed"<<endl;
246 if (!it.current()->isChecked()) {
254bool RequestResourcesPanel::ok() {
256 selectedGroup->update();
260void RequestResourcesPanel::sendChanged() {
261 if (!m_blockChanged) emit changed();
266#include "kptrequestresourcespanel.moc"
This class represents a group of similar resources to be assigned to a task e.g.
Any resource that is used by a task.
A task in the scheduling software is represented by this class.