/* This file is part of the KDE project Copyright (C) 2002 Bo Thorsen bo@sonofthor.dk This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "kptprojectdialog.h" #include "kptproject.h" #include "kptresource.h" #include "kptprojectdialogbase.h" #include "kptresourcespanel.h" namespace KPlato { ProjectDialog::ProjectDialog(Project &p, TQWidget *parent, const char *name) : KDialogBase( Swallow, i18n("Project Settings"), Ok|Cancel, Ok, parent, name, true, true), project(p) { dia = new ProjectDialogImpl(this); resourcesTab = new ResourcesPanel(dia, &project); dia->daTabs->insertTab(resourcesTab, i18n("Resources"), 1); setMainWidget(dia); enableButtonOK(false); dia->namefield->setText(project.name()); dia->leaderfield->setText(project.leader()); connect(dia, TQ_SIGNAL( obligatedFieldsFilled(bool) ), this, TQ_SLOT( enableButtonOK(bool) )); connect(dia, TQ_SIGNAL( schedulingTypeChanged(int) ), this, TQ_SLOT( slotSchedulingChanged(int) )); slotSchedulingChanged(dia->schedulerType->currentItem()); dia->namefield->setFocus(); connect(resourcesTab, TQ_SIGNAL( changed() ), dia, TQ_SLOT( slotCheckAllFieldsFilled() )); } void ProjectDialog::slotOk() { project.setConstraint((Node::ConstraintType) dia->schedulerType->currentItem()); //FIXME project.setStartTime(TQDateTime(dia->schedulerDate->date(), dia->schedulerTime->time())); project.setConstraintStartTime(TQDateTime(dia->schedulerDate->date(), dia->schedulerTime->time())); project.setName(dia->namefield->text()); project.setLeader(dia->leaderfield->text()); project.setDescription(dia->descriptionfield->text()); resourcesTab->ok(); accept(); } void ProjectDialog::slotSchedulingChanged(int activated) { bool needDate = activated >= 2; dia->schedulerTime->setEnabled(needDate); dia->schedulerDate->setEnabled(needDate); TQString label = TQString("

%1

%2

"); switch(activated) { // TODO please provide nice explenations on this. case 0: // ASAP label = label.arg(i18n("As Soon as Possible")); label = label.arg(i18n("Place all events at the earliest possible moment permitted in the schedule")); break; case 1: // ALAP label = label.arg(i18n("As Late as Possible")); label = label.arg(i18n("Place all events at the last possible moment permitted in the schedule")); break; case 2: // Start not earlier then label = label.arg(i18n("Start not Earlier then")); label = label.arg(""); break; case 3: // Finish not later then label = label.arg(i18n("Finish not Later then")); label = label.arg(""); break; case 4: // Must start on label = label.arg(i18n("Must Start on")); label = label.arg(""); break; default: // error ... dia->lSchedulingExplain->setText(""); return; } dia->lSchedulingExplain->setText(label); } ProjectDialogImpl::ProjectDialogImpl (TQWidget *parent) : ProjectDialogBase(parent) { connect (namefield, TQ_SIGNAL(textChanged( const TQString& )), this, TQ_SLOT(slotCheckAllFieldsFilled()) ); connect (leaderfield, TQ_SIGNAL(textChanged( const TQString& )), this, TQ_SLOT(slotCheckAllFieldsFilled()) ); connect (schedulerType, TQ_SIGNAL(activated( int )), this, TQ_SLOT(slotSchedulingChanged( int )) ); connect (chooseLeader, TQ_SIGNAL(pressed()), this, TQ_SLOT(slotChooseLeader())); } void ProjectDialogImpl::slotCheckAllFieldsFilled() { emit obligatedFieldsFilled( !(namefield->text().isEmpty() || leaderfield->text().isEmpty())); } void ProjectDialogImpl::slotSchedulingChanged(int activated) { emit schedulingTypeChanged(activated); } void ProjectDialogImpl::slotChooseLeader() { TDEABC::Addressee a = TDEABC::AddresseeDialog::getAddressee(this); if (!a.isEmpty()) { leaderfield->setText(a.fullEmail()); } } } //KPlato namespace #include "kptprojectdialog.moc"