00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "kpttaskprogresspanel.h"
00021
00022 #include <q3buttongroup.h>
00023 #include <qradiobutton.h>
00024 #include <QCheckBox>
00025
00026 #include <klineedit.h>
00027 #include <ktextedit.h>
00028 #include <kdatetimewidget.h>
00029 #include <knuminput.h>
00030 #include <klocale.h>
00031 #include <kmessagebox.h>
00032 #include <kcommand.h>
00033
00034 #include <kdebug.h>
00035
00036 #include "kpttask.h"
00037 #include "kptcommand.h"
00038 #include "kptdurationwidget.h"
00039 #include "kptcalendar.h"
00040
00041 namespace KPlato
00042 {
00043
00044 TaskProgressPanel::TaskProgressPanel(Task &task, StandardWorktime *workTime, QWidget *parent, const char *name)
00045 : TaskProgressPanelImpl(parent, name),
00046 m_task(task),
00047 m_dayLength(24)
00048 {
00049 kDebug()<<k_funcinfo<<endl;
00050 m_progress = task.progress();
00051 started->setChecked(m_progress.started);
00052 finished->setChecked(m_progress.finished);
00053 startTime->setDateTime(m_progress.startTime);
00054 finishTime->setDateTime(m_progress.finishTime);
00055
00056 percentFinished->setValue(m_progress.percentFinished);
00057
00058 if (workTime) {
00059 kDebug()<<k_funcinfo<<"daylength="<<workTime->durationDay().hours()<<endl;
00060 m_dayLength = workTime->durationDay().hours();
00061 setEstimateScales(m_dayLength);
00062 }
00063 remainingEffort->setValue(m_progress.remainingEffort);
00064 remainingEffort->setVisibleFields(DurationWidget::Days | DurationWidget::Hours | DurationWidget::Minutes);
00065 remainingEffort->setFieldUnit(0, i18nc("day", "d"));
00066 remainingEffort->setFieldUnit(1, i18nc("hour", "h"));
00067 remainingEffort->setFieldUnit(2, i18nc("minute", "m"));
00068
00069 m_progress.totalPerformed = task.actualEffort();
00070 actualEffort->setValue(m_progress.totalPerformed);
00071 actualEffort->setVisibleFields(DurationWidget::Days | DurationWidget::Hours | DurationWidget::Minutes);
00072 actualEffort->setFieldUnit(0, i18nc("day", "d"));
00073 actualEffort->setFieldUnit(1, i18nc("hour", "h"));
00074 actualEffort->setFieldUnit(2, i18nc("minute", "m"));
00075
00076 scheduledStart->setDateTime(task.startTime());
00077 scheduledFinish->setDateTime(task.endTime());
00078 scheduledEffort->setValue(task.effort()->expected());
00079 scheduledEffort->setVisibleFields(DurationWidget::Days | DurationWidget::Hours | DurationWidget::Minutes);
00080 scheduledEffort->setFieldUnit(0, i18nc("day", "d"));
00081 scheduledEffort->setFieldUnit(1, i18nc("hour", "h"));
00082 scheduledEffort->setFieldUnit(2, i18nc("minute", "m"));
00083
00084 enableWidgets();
00085 started->setFocus();
00086
00087 }
00088
00089
00090 bool TaskProgressPanel::ok() {
00091 m_progress.started = started->isChecked();
00092 m_progress.finished = finished->isChecked();
00093 m_progress.startTime = startTime->dateTime();
00094 m_progress.finishTime = finishTime->dateTime();
00095 m_progress.percentFinished = percentFinished->value();
00096 m_progress.remainingEffort = remainingEffort->value();
00097 m_progress.totalPerformed = actualEffort->value();
00098 return true;
00099 }
00100
00101 KCommand *TaskProgressPanel::buildCommand(Part *part) {
00102 KCommand *cmd = 0;
00103 QString c = i18n("Modify progress");
00104 if (m_task.progress() != m_progress) {
00105 cmd = new TaskModifyProgressCmd(part, m_task, m_progress, c);
00106 }
00107 return cmd;
00108 }
00109
00110 void TaskProgressPanel::setEstimateScales( int day )
00111 {
00112 remainingEffort->setFieldScale(0, day);
00113 remainingEffort->setFieldRightscale(0, day);
00114 remainingEffort->setFieldLeftscale(1, day);
00115
00116 actualEffort->setFieldScale(0, day);
00117 actualEffort->setFieldRightscale(0, day);
00118 actualEffort->setFieldLeftscale(1, day);
00119
00120 scheduledEffort->setFieldScale(0, day);
00121 scheduledEffort->setFieldRightscale(0, day);
00122 scheduledEffort->setFieldLeftscale(1, day);
00123 }
00124
00125
00126
00127 TaskProgressPanelImpl::TaskProgressPanelImpl(QWidget *parent, const char *name)
00128 : QWidget(parent) {
00129
00130 setObjectName(name);
00131 setupUi(this);
00132 actualEffort = new DurationWidget(actualEffortHolder);
00133 if (actualEffortHolder->layout())
00134 actualEffortHolder->layout()->addWidget(actualEffort);
00135 remainingEffort = new DurationWidget(remainingEffortHolder);
00136 if (remainingEffortHolder->layout())
00137 remainingEffortHolder->layout()->addWidget(remainingEffort);
00138 scheduledEffort = new DurationWidget(scheduledEffortHolder);
00139 if (scheduledEffortHolder->layout())
00140 scheduledEffortHolder->layout()->addWidget(scheduledEffort);
00141
00142 connect(started, SIGNAL(toggled(bool)), SLOT(slotStartedChanged(bool)));
00143 connect(finished, SIGNAL(toggled(bool)), SLOT(slotFinishedChanged(bool)));
00144
00145 connect(percentFinished, SIGNAL(valueChanged(int)), SLOT(slotPercentFinishedChanged(int)));
00146 connect(percentFinished, SIGNAL(valueChanged(int)), SLOT(slotChanged()));
00147
00148 connect(startTime, SIGNAL(valueChanged(const QDateTime &)), SLOT(slotChanged()));
00149 connect(finishTime, SIGNAL(valueChanged(const QDateTime &)), SLOT(slotChanged()));
00150
00151 connect(remainingEffort, SIGNAL(valueChanged()), SLOT(slotChanged()));
00152 connect(actualEffort, SIGNAL(valueChanged()), SLOT(slotChanged()));
00153
00154 }
00155
00156 void TaskProgressPanelImpl::slotChanged() {
00157 emit changed();
00158 }
00159
00160 void TaskProgressPanelImpl::slotStartedChanged(bool state) {
00161 if (state) {
00162 startTime->setDateTime(QDateTime::currentDateTime());
00163 percentFinished->setValue(0);
00164 }
00165 enableWidgets();
00166 }
00167
00168
00169 void TaskProgressPanelImpl::slotFinishedChanged(bool state) {
00170 if (state) {
00171 percentFinished->setValue(100);
00172 if (!finishTime->dateTime().isValid()) {
00173 finishTime->setDateTime(QDateTime::currentDateTime());
00174 }
00175 }
00176 enableWidgets();
00177 }
00178
00179
00180 void TaskProgressPanelImpl::enableWidgets() {
00181 started->setEnabled(!finished->isChecked());
00182 finished->setEnabled(started->isChecked());
00183 finishTime->setEnabled(started->isChecked());
00184 startTime->setEnabled(started->isChecked() && !finished->isChecked());
00185 performedGroup->setEnabled(started->isChecked() && !finished->isChecked());
00186
00187 scheduledStart->setEnabled(false);
00188 scheduledFinish->setEnabled(false);
00189 scheduledEffort->setEnabled(false);
00190 }
00191
00192
00193 void TaskProgressPanelImpl::slotPercentFinishedChanged( int value ) {
00194 if (value == 100) {
00195
00196 }
00197 }
00198
00199
00200 }
00201
00202 #include "kpttaskprogresspanel.moc"