summaryrefslogtreecommitdiffstats
path: root/kcron/kttask.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kcron/kttask.cpp')
-rw-r--r--kcron/kttask.cpp900
1 files changed, 900 insertions, 0 deletions
diff --git a/kcron/kttask.cpp b/kcron/kttask.cpp
new file mode 100644
index 0000000..8b78b49
--- /dev/null
+++ b/kcron/kttask.cpp
@@ -0,0 +1,900 @@
+/***************************************************************************
+ * KT task editor window implementation *
+ * -------------------------------------------------------------------- *
+ * Copyright (C) 1999, Gary Meyer <gary@meyer.net> *
+ * -------------------------------------------------------------------- *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#include "kttask.h"
+
+#include <qlabel.h>
+#include <qstring.h>
+#include <qfileinfo.h>
+#include <qlayout.h>
+#include <qlineedit.h>
+#include <qcheckbox.h>
+#include <qbuttongroup.h>
+#include <qpainter.h>
+#include <qpalette.h>
+
+#include <kapplication.h>
+#include <kaccel.h>
+#include <klocale.h>
+#include <kfiledialog.h>
+#include <kmessagebox.h>
+#include <kpushbutton.h>
+#include <kstdguiitem.h>
+
+#include "cttask.h"
+
+#include "kticon.h"
+
+class KTPushButton : public QPushButton
+{
+public:
+ KTPushButton(QWidget * parent, const char * name = 0 )
+ : QPushButton(parent, name), isSelected(false), isDirty(false)
+ {
+ updatePalette();
+ }
+
+ void updatePalette()
+ {
+ palNormal = ((QWidget *)parent())->palette();
+ palSelected = palNormal;
+ for(int cg = (int) QPalette::Disabled; cg < (int) QPalette::NColorGroups; cg++)
+ {
+ palSelected.setColor((QPalette::ColorGroup)cg, QColorGroup::Button,
+ palSelected.color((QPalette::ColorGroup)cg, QColorGroup::Highlight));
+ palSelected.setColor((QPalette::ColorGroup)cg, QColorGroup::ButtonText,
+ palSelected.color((QPalette::ColorGroup)cg, QColorGroup::HighlightedText));
+ }
+ isDirty = true;
+ }
+
+ bool event( QEvent *e)
+ {
+ if (e->type() == QEvent::ParentPaletteChange)
+ {
+ updatePalette();
+ update();
+ }
+ return QPushButton::event(e);
+ }
+
+ void drawButton ( QPainter *p )
+ {
+ if (isDirty || (isOn() != isSelected)) // Prevent infinite recursion
+ {
+ isDirty = false;
+ isSelected = isOn();
+ if (isSelected)
+ setPalette(palSelected);
+ else
+ setPalette(palNormal);
+ }
+ QPushButton::drawButton(p);
+ }
+ void drawButtonLabel ( QPainter *p )
+ {
+ p->save();
+ if (isOn())
+ {
+ QFont f = p->font();
+ f.setUnderline(true);
+ p->setFont(f);
+ }
+ QPushButton::drawButtonLabel(p);
+ p->restore();
+ }
+ bool isSelected;
+ bool isDirty;
+ QPalette palSelected;
+ QPalette palNormal;
+};
+
+KTTask::KTTask(CTTask* _cttask, const QString & _caption)
+ :KDialog( 0, "kttask", true, WStyle_DialogBorder )
+{
+ cttask = _cttask;
+
+ bool everyDay(true);
+
+ QVBoxLayout *ml = new QVBoxLayout( this, KDialogBase::spacingHint() );
+
+ QHBoxLayout *h1 = new QHBoxLayout( ml, KDialogBase::spacingHint() );
+
+ // user
+ labUser = new QLabel( i18n("&Run as:"), this, "labUser" );
+ h1->addWidget( labUser );
+
+ leUser = new QLineEdit( this, "leUser");
+ labUser->setBuddy(leUser);
+ h1->addWidget( leUser );
+
+ if (cttask->system())
+ {
+ leUser->setText(QString::fromLocal8Bit(cttask->user.c_str()));
+ }
+ else
+ {
+ labUser->hide();
+ leUser->hide();
+ }
+
+ // icon
+ labIcon = new QLabel(this, "labIcon");
+ labIcon->setFixedSize(32, 32);
+ h1->addStretch( 1 );
+ h1->addWidget( labIcon );
+
+ // comment
+ QHBoxLayout *h2 = new QHBoxLayout( ml, KDialogBase::spacingHint() );
+
+ labComment = new QLabel( i18n("&Comment:"), this, "labComment" );
+ h2->addWidget( labComment );
+
+ leComment = new QLineEdit(this, "leComment");
+ labComment->setBuddy(leComment);
+ h2->addWidget( leComment );
+
+ leComment->setText(QString::fromLocal8Bit(cttask->comment.c_str()));
+
+ // command
+ QHBoxLayout *h3 = new QHBoxLayout( ml, KDialogBase::spacingHint() );
+
+ labCommand = new QLabel( i18n("&Program:"), this, "labCommand" );
+ h3->addWidget( labCommand );
+
+ leCommand = new QLineEdit(this, "leCommand");
+ labCommand->setBuddy(leCommand);
+ h3->addWidget( leCommand );
+
+ leCommand->setText(QString::fromLocal8Bit(cttask->command.c_str()));
+
+ labComment->setFixedWidth( QMAX( labComment->width(), labCommand->width()) );
+ labCommand->setFixedWidth( QMAX( labComment->width(), labCommand->width()) );
+
+ slotCommandChanged();
+
+ pbBrowse = new QPushButton(this, "pbBrowse");
+ pbBrowse->setText(i18n("&Browse..."));
+ h3->addWidget( pbBrowse );
+
+ QHBoxLayout *h3a = new QHBoxLayout( ml, KDialogBase::spacingHint() );
+
+ // enabled
+ chkEnabled = new QCheckBox(i18n("&Enabled"), this, "chkEnabled");
+ chkEnabled->setChecked(cttask->enabled);
+ h3a->addWidget( chkEnabled );
+
+ // enabled
+ chkSilent = new QCheckBox(i18n("&Silent"), this, "chkSilent");
+ chkSilent->setChecked(cttask->silent);
+ h3a->addWidget( chkSilent );
+
+ QHBoxLayout *h4 = new QHBoxLayout( ml, KDialogBase::spacingHint() );
+
+ ml->addSpacing( 2 * KDialogBase::spacingHint() );
+
+ // months
+ bgMonth = new QButtonGroup( i18n("Months"), this, "bgMonth");
+ h4->addWidget( bgMonth );
+
+ QVBoxLayout *vmonths = new QVBoxLayout( bgMonth, KDialogBase::spacingHint() );
+ vmonths->addSpacing( 2 * KDialogBase::spacingHint() );
+
+ for (int mo = 1; mo <= 12; mo++)
+ {
+ cbMonth[mo] = new QCheckBox(bgMonth, "cbMonth");
+ cbMonth[mo]->setText(QString::fromLocal8Bit(cttask->month.getName(mo).c_str()));
+ cbMonth[mo]->setChecked(cttask->month.get(mo));
+ vmonths->addWidget( cbMonth[mo], AlignLeft );
+
+ if (!cttask->month.get(mo)) everyDay = false;
+ }
+ pbAllMonths = new QPushButton(bgMonth, "pbAllMonths");
+ pbAllMonths->setText( i18n("Set All") );
+ vmonths->addWidget( pbAllMonths, AlignLeft );
+
+ QVBoxLayout *v1 = new QVBoxLayout( h4, KDialogBase::spacingHint() );
+
+ // days of the month
+ bgDayOfMonth = new QButtonGroup( i18n("Days of Month"), this, "bgDayOfMonth");
+ v1->addWidget( bgDayOfMonth );
+
+ QPushButton* day;
+ QString tmp;
+
+ QVBoxLayout *vdays = new QVBoxLayout( bgDayOfMonth, KDialogBase::spacingHint() );
+ vdays->addSpacing( 2 * KDialogBase::spacingHint() );
+ QHBoxLayout *hdays = 0;
+
+ for (int dm = 1; dm <= 31; dm++)
+ {
+ if( (dm % 7) == 1 )
+ hdays = new QHBoxLayout( vdays, KDialogBase::spacingHint() );
+
+ day = new KTPushButton(bgDayOfMonth);
+ day->setFixedSize(25, 25);
+ day->setText(tmp.setNum(dm));
+ day->setToggleButton(true);
+ day->setOn(cttask->dayOfMonth.get(dm));
+ pbDayOfMonth[dm] = day;
+ if (!cttask->dayOfMonth.get(dm)) everyDay = false;
+
+ hdays->addWidget( day, AlignLeft );
+ }
+ hdays->addStretch( 1 );
+ pbAllDaysOfMonth = new QPushButton(bgDayOfMonth, "pbAllDaysOfMonth");
+ pbAllDaysOfMonth->setText( i18n("Set All") );
+ hdays->addWidget( pbAllDaysOfMonth, AlignLeft );
+
+ // days of the week
+ bgDayOfWeek = new QButtonGroup( i18n("Days of Week"), this, "bgDayOfWeek");
+ v1->addWidget( bgDayOfWeek );
+
+ QVBoxLayout *v3 = new QVBoxLayout( bgDayOfWeek, KDialogBase::spacingHint() );
+ v3->addSpacing( 2 * KDialogBase::spacingHint() );
+
+ for (int dw = 1; dw <= 7; dw++)
+ {
+ cbDayOfWeek[dw] = new QCheckBox(bgDayOfWeek);
+ cbDayOfWeek[dw]->setText(QString::fromLocal8Bit(cttask->dayOfWeek.getName(dw).c_str()));
+ cbDayOfWeek[dw]->setChecked(cttask->dayOfWeek.get(dw));
+ v3->addWidget( cbDayOfWeek[dw] );
+
+ if (!cttask->dayOfWeek.get(dw)) everyDay = false;
+ }
+ pbAllDaysOfWeek = new QPushButton(bgDayOfWeek, "pbAllDaysOfWeek");
+ pbAllDaysOfWeek->setText( i18n("Set All") );
+ v3->addWidget( pbAllDaysOfWeek, AlignLeft );
+
+ QVBoxLayout *v2 = new QVBoxLayout( h4, KDialogBase::spacingHint() );
+
+ // daily
+ bgEveryDay = new QButtonGroup( i18n("Daily"), this, "bgEveryDay");
+ v2->addWidget( bgEveryDay );
+
+ QVBoxLayout *v9 = new QVBoxLayout( bgEveryDay, KDialogBase::spacingHint() );
+ v9->addSpacing( 2 * KDialogBase::spacingHint() );
+
+ cbEveryDay = new QCheckBox( i18n("Run every day"), bgEveryDay, "cbEveryDay");
+ cbEveryDay->setChecked(everyDay);
+ v9->addWidget( cbEveryDay );
+
+ // hours
+ bgHour = new QButtonGroup( i18n("Hours"), this, "bgHour");
+ v2->addWidget( bgHour );
+ QVBoxLayout *v4 = new QVBoxLayout( bgHour, KDialogBase::spacingHint() );
+ v4->addSpacing( 2 * KDialogBase::spacingHint() );
+
+ labAM = new QLabel( i18n("AM"), bgHour, "labAM");
+ labAM->setAlignment(AlignRight | AlignVCenter);
+ v4->addWidget( labAM );
+
+
+ for (int ho = 0; ho <= 23; ho++)
+ {
+ pbHour[ho] = new KTPushButton(bgHour);
+ pbHour[ho]->setText(tmp.setNum(ho));
+ pbHour[ho]->setToggleButton(true);
+ pbHour[ho]->setOn(cttask->hour.get(ho));
+ pbHour[ho]->setFixedSize(25, 25);
+ }
+
+ QHBoxLayout *hhours = new QHBoxLayout( v4, KDialogBase::spacingHint() );
+ for (int ho1 = 0; ho1 <= 11; ho1++)
+ {
+ if( ho1 == 6 )
+ hhours = new QHBoxLayout( v4, KDialogBase::spacingHint() );
+
+ hhours->addWidget( pbHour[ho1] );
+ }
+
+ labPM = new QLabel( i18n("PM"), bgHour, "labPM");
+ labPM->setAlignment(AlignRight | AlignVCenter);
+ v4->addWidget( labPM );
+
+ hhours = new QHBoxLayout( v4, KDialogBase::spacingHint() );
+ for (int ho1 = 12; ho1 <= 23; ho1++)
+ {
+ if( ho1 == 18 )
+ hhours = new QHBoxLayout( v4, KDialogBase::spacingHint() );
+
+ hhours->addWidget( pbHour[ho1] );
+ }
+
+ hhours = new QHBoxLayout( v4, KDialogBase::spacingHint() );
+ pbAllHours = new QPushButton(bgHour, "pbAllHours");
+ pbAllHours->setText( i18n("Set All") );
+ hhours->addWidget( pbAllHours, AlignLeft );
+
+ // minutes
+ bgMinute = new QButtonGroup( i18n("Minutes"), this, "bgMinute");
+ v2->addWidget( bgMinute );
+ QVBoxLayout *vmin = new QVBoxLayout( bgMinute, KDialogBase::spacingHint() );
+ vmin->addSpacing( 2 * KDialogBase::spacingHint() );
+
+ for (int mi = 0; mi <= 55; mi+=5)
+ {
+ pbMinute[mi] = new KTPushButton(bgMinute);
+ pbMinute[mi]->setText(tmp.setNum(mi));
+ pbMinute[mi]->setToggleButton(true);
+ pbMinute[mi]->setOn(cttask->minute.get(mi));
+ pbMinute[mi]->setFixedSize(25, 25);
+ }
+
+ QHBoxLayout *hmin = new QHBoxLayout( vmin, KDialogBase::spacingHint() );
+ for (int mi1 = 0; mi1 <= 55; mi1+=5)
+ {
+ if( mi1 == 30 )
+ hmin = new QHBoxLayout( vmin, KDialogBase::spacingHint() );
+
+ hmin->addWidget( pbMinute[mi1] );
+ }
+
+ hmin = new QHBoxLayout( vmin, KDialogBase::spacingHint() );
+ pbAllMinutes = new QPushButton(bgMinute, "pbAllMinutes");
+ pbAllMinutes->setText( i18n("Set All") );
+ hmin->addWidget( pbAllMinutes, AlignLeft );
+
+ QHBoxLayout *h5 = new QHBoxLayout( ml, KDialogBase::spacingHint() );
+ h5->addStretch( 1 );
+
+ // OK
+ pbOk = new KPushButton(KStdGuiItem::ok(), this, "pbOk");
+ pbOk->setDefault(true);
+ h5->addWidget( pbOk );
+
+ // Cancel
+ pbCancel = new KPushButton(KStdGuiItem::cancel(), this, "pbCancel");
+ h5->addWidget( pbCancel );
+
+ // window
+ setIcon(KTIcon::application(true));
+ setCaption(_caption/*i18n("Edit Task")*/);
+
+ // set focus to first widget
+ if (cttask->system())
+ {
+ leUser->setFocus();
+ }
+ else
+ {
+ leComment->setFocus();
+ }
+
+ // connect them up
+ connect(pbBrowse, SIGNAL(clicked()), SLOT(slotBrowse()));
+ connect(leCommand, SIGNAL(textChanged(const QString&)),
+ SLOT(slotCommandChanged()));
+ connect(cbEveryDay, SIGNAL(clicked()), SLOT(slotDailyChanged()));
+ connect(pbOk, SIGNAL(clicked()), SLOT(slotOK()));
+ connect(pbCancel, SIGNAL(clicked()), SLOT(slotCancel()));
+ connect(pbAllMonths, SIGNAL(clicked()), SLOT(slotAllMonths()));
+ for (int mo = 1; mo <= 12; mo++) {
+ connect(cbMonth[mo], SIGNAL(clicked()), SLOT(slotMonthChanged()));
+ }
+ connect(pbAllDaysOfMonth, SIGNAL(clicked()), SLOT(slotAllDaysOfMonth()));
+ for (int dm = 1; dm <= 31; dm++)
+ {
+ connect(pbDayOfMonth[dm], SIGNAL(clicked()), SLOT(slotDayOfMonthChanged()));
+ }
+ connect(pbAllDaysOfWeek, SIGNAL(clicked()), SLOT(slotAllDaysOfWeek()));
+ for (int dw = 1; dw <= 7; dw++)
+ {
+ connect(cbDayOfWeek[dw], SIGNAL(clicked()), SLOT(slotDayOfWeekChanged()));
+ }
+ connect(pbAllHours, SIGNAL(clicked()), SLOT(slotAllHours()));
+ for (int ho = 0; ho <= 23; ho++)
+ {
+ connect(pbHour[ho], SIGNAL(clicked()), SLOT(slotHourChanged()));
+ }
+ connect(pbAllMinutes, SIGNAL(clicked()), SLOT(slotAllMinutes()));
+ for (int mi = 0; mi <= 55; mi+=5)
+ {
+ connect(pbMinute[mi], SIGNAL(clicked()), SLOT(slotMinuteChanged()));
+ }
+
+ // key acceleration
+ key_accel = new KAccel(this);
+ key_accel->insert(KStdAccel::Open, this, SLOT(slotOK()));
+ key_accel->insert(KStdAccel::Close, this, SLOT(slotCancel()));
+ key_accel->insert(KStdAccel::Quit, this, SLOT(slotCancel()));
+ key_accel->readSettings();
+
+ setFixedSize( minimumSize() );
+ slotDailyChanged();
+ slotMonthChanged();
+ slotDayOfMonthChanged();
+ slotDayOfWeekChanged();
+ slotHourChanged();
+ slotMinuteChanged();
+}
+
+KTTask::~KTTask()
+{
+}
+
+void KTTask::slotCommandChanged()
+{
+ /*
+ QString qs(leCommand->text());
+
+ int beginPos(qs.findRev("/", qs.length()) + 1);
+ if (beginPos < 0) beginPos = 0;
+
+ int endPos(qs.findRev(" ", qs.length()));
+ if (endPos < 0) endPos = qs.length();
+
+ QString iconName(qs.mid(beginPos, endPos-beginPos) + ".xpm");
+
+ QPixmap qp(KTIcon::getIcon(iconName));
+ if (qp.isNull())
+ labIcon->setPixmap(KTIcon::task(false));
+ else
+ labIcon->setPixmap(qp);
+ */
+
+ labIcon->setPixmap(KTIcon::task(false));
+ return;
+}
+
+void KTTask::slotDailyChanged()
+{
+ if (cbEveryDay->isChecked())
+ {
+ for (int mo = 1; mo <= 12; mo++)
+ {
+ cbMonth[mo]->setChecked(true);
+ cbMonth[mo]->setEnabled(false);
+ }
+ for (int dm = 1; dm <= 31; dm++)
+ {
+ pbDayOfMonth[dm]->setOn(true);
+ pbDayOfMonth[dm]->setEnabled(false);
+ }
+ for (int dw = 1; dw <= 7; dw++)
+ {
+ cbDayOfWeek[dw]->setChecked(true);
+ cbDayOfWeek[dw]->setEnabled(false);
+ }
+ pbAllMonths->setEnabled(false);
+ pbAllDaysOfMonth->setEnabled(false);
+ pbAllDaysOfWeek->setEnabled(false);
+ }
+ else
+ {
+ for (int mo = 1; mo <= 12; mo++)
+ {
+ cbMonth[mo]->setEnabled(true);
+ }
+ for (int dm = 1; dm <= 31; dm++)
+ {
+ pbDayOfMonth[dm]->setEnabled(true);
+ }
+ for (int dw = 1; dw <= 7; dw++)
+ {
+ cbDayOfWeek[dw]->setEnabled(true);
+ }
+ pbAllMonths->setEnabled(true);
+ pbAllDaysOfMonth->setEnabled(true);
+ pbAllDaysOfWeek->setEnabled(true);
+ }
+ slotMonthChanged();
+ slotDayOfMonthChanged();
+ slotDayOfWeekChanged();
+}
+
+void KTTask::slotOK()
+{
+ // Make it friendly for just selecting days of the month or
+ // days of the week.
+
+ int monthDaysSelected(0);
+ for (int dm = 1; dm <= 31; dm++)
+ {
+ if (pbDayOfMonth[dm]->isOn()) monthDaysSelected++;
+ }
+
+ int weekDaysSelected(0);
+ for (int dw = 1; dw <= 7; dw++)
+ {
+ if (cbDayOfWeek[dw]->isChecked()) weekDaysSelected++;
+ }
+
+ if ((monthDaysSelected == 0) && (weekDaysSelected > 0))
+ {
+ for (int dm = 1; dm <= 31; dm++)
+ {
+ pbDayOfMonth[dm]->setOn(1);
+ }
+ }
+
+ if ((weekDaysSelected == 0) && (monthDaysSelected > 0))
+ {
+ for (int dw = 1; dw <= 7; dw++)
+ {
+ cbDayOfWeek[dw]->setChecked(1);
+ }
+ }
+
+ // Now validate
+ QString message(i18n("Please enter the following to schedule the task:\n"));
+ QString sep("\n- ");
+ bool showMessage(false);
+
+ if (leCommand->text().isEmpty())
+ {
+ message += sep + i18n("the program to run");
+ leCommand->setFocus();
+ showMessage = true;
+ }
+
+ bool valid(false);
+ for (int mo = 1; mo <= 12; mo++)
+ {
+ if (cbMonth[mo]->isChecked()) valid = true;
+ }
+ if (!valid)
+ {
+ message += sep + i18n("the months");
+ if (!showMessage)
+ {
+ cbMonth[1]->setFocus();
+ }
+ showMessage = true;
+ }
+
+ valid = false;
+ for (int dm = 1; dm <= 31; dm++)
+ {
+ if (pbDayOfMonth[dm]->isOn()) valid = true;
+ }
+ for (int dw = 1; dw <= 7; dw++)
+ {
+ if (cbDayOfWeek[dw]->isChecked()) valid = true;
+ }
+
+ if (!valid)
+ {
+ message += sep +
+ i18n("either the days of the month or the days of the week");
+ if (!showMessage)
+ {
+ pbDayOfMonth[1]->setFocus();
+ }
+ showMessage = true;
+ }
+
+ valid = false;
+ for (int ho = 0; ho <= 23; ho++)
+ {
+ if (pbHour[ho]->isOn()) valid = true;
+ }
+
+ if (!valid)
+ {
+ message += sep + i18n("the hours");
+ if (!showMessage)
+ {
+ pbHour[0]->setFocus();
+ }
+ showMessage = true;
+ }
+
+ valid = false;
+ for (int mi1 = 0; mi1 <= 55; mi1+=5)
+ {
+ if (pbMinute[mi1]->isOn()) valid = true;
+ }
+
+ if (!valid)
+ {
+ message += sep + i18n("the minutes");
+ if (!showMessage)
+ {
+ pbMinute[0]->setFocus();
+ }
+ showMessage = true;
+ }
+
+ if (showMessage)
+ {
+ KMessageBox::information(this, message);
+ return;
+ }
+
+ // make sure the file name is a good one if we have an
+ // absolute path
+
+ QString qs(leCommand->text());
+ if (qs.find("/") == 0)
+ {
+ int spacePos(qs.find(" "));
+ if (spacePos < 0) spacePos = qs.length();
+ QString programName(qs.left(spacePos));
+ QFileInfo file(programName);
+
+ if (!file.isReadable())
+ {
+ KMessageBox::information(this,
+ i18n("Cannot locate program. Please re-enter."));
+ leCommand->setFocus();
+ return;
+ }
+
+ if (!file.isExecutable())
+ {
+ KMessageBox::information(this,
+ i18n("Program is not an executable file. Please re-enter."));
+ leCommand->setFocus();
+ return;
+ }
+ }
+
+ // save work in process
+ if (!cttask->user.empty())
+ {
+ cttask->user = QFile::encodeName(leUser->text());
+ }
+ else
+ {
+ cttask->user = "";
+ }
+
+ cttask->comment = (const char *)leComment->text().local8Bit();
+ cttask->command = (const char *)leCommand->text().local8Bit();
+ cttask->enabled = chkEnabled->isChecked();
+ cttask->silent = chkSilent->isChecked();
+
+ for (int mo = 1; mo <= 12; mo++)
+ {
+ cttask->month.set(mo, cbMonth[mo]->isChecked());
+ }
+
+ for (int dm = 1; dm <= 31; dm++)
+ {
+ cttask->dayOfMonth.set(dm, pbDayOfMonth[dm]->isOn());
+ }
+ for (int dw = 1; dw <= 7; dw++)
+ {
+ cttask->dayOfWeek.set(dw, cbDayOfWeek[dw]->isChecked());
+ }
+ for (int ho = 0; ho <= 23; ho++)
+ {
+ cttask->hour.set(ho, pbHour[ho]->isOn());
+ }
+ for (int mi = 0; mi <= 59; mi++)
+ {
+ cttask->minute.set(mi, false);
+ }
+ for (int mi1 = 0; mi1 <= 55; mi1+=5)
+ {
+ cttask->minute.set(mi1, pbMinute[mi1]->isOn());
+ }
+
+ close();
+}
+
+void KTTask::slotCancel()
+{
+ close();
+}
+
+void KTTask::slotBrowse()
+{
+ KURL url = KFileDialog::getOpenURL();
+
+ if(!url.isEmpty())
+ {
+ if(url.isLocalFile())
+ {
+ leCommand->setText(url.path());
+ }
+ else
+ {
+ KMessageBox::sorry(this,
+ i18n("Only local or mounted files can be executed by crontab."));
+ }
+ }
+
+ leCommand->setFocus();
+}
+
+void KTTask::slotAllMonths()
+{
+ if (pbAllMonths->text() == i18n("Set All")) {
+ for (int mo = 1; mo <= 12; mo++)
+ {
+ cbMonth[mo]->setChecked(true);
+ }
+ }
+ else {
+ for (int mo = 1; mo <= 12; mo++)
+ {
+ cbMonth[mo]->setChecked(false);
+ }
+ }
+ slotMonthChanged();
+}
+
+void KTTask::slotMonthChanged()
+{
+ bool allChecked = true;
+ bool allCleared = true;
+ for (int mo = 1; mo <= 12; mo++)
+ {
+ if (cbMonth[mo]->isChecked()) {
+ allCleared = false;
+ }
+ else {
+ allChecked = false;
+ }
+ }
+ if (allCleared) {
+ pbAllMonths->setText( i18n("Set All") );
+ }
+ else {
+ pbAllMonths->setText( i18n("Clear All") );
+ }
+}
+
+void KTTask::slotAllDaysOfMonth()
+{
+ if (pbAllDaysOfMonth->text() == i18n("Set All")) {
+ for (int dm = 1; dm <= 31; dm++)
+ {
+ pbDayOfMonth[dm]->setOn(true);
+ }
+ }
+ else {
+ for (int dm = 1; dm <= 31; dm++)
+ {
+ pbDayOfMonth[dm]->setOn(false);
+ }
+ }
+ slotDayOfMonthChanged();
+}
+
+void KTTask::slotDayOfMonthChanged()
+{
+ bool allChecked = true;
+ bool allCleared = true;
+ for (int dm = 1; dm <= 31; dm++)
+ {
+ if (pbDayOfMonth[dm]->isOn()) {
+ allCleared = false;
+ }
+ else {
+ allChecked = false;
+ }
+ }
+ if (allCleared) {
+ pbAllDaysOfMonth->setText( i18n("Set All") );
+ }
+ else {
+ pbAllDaysOfMonth->setText( i18n("Clear All") );
+ }
+ }
+
+void KTTask::slotAllDaysOfWeek()
+{
+ if (pbAllDaysOfWeek->text() == i18n("Set All")) {
+ for (int dw = 1; dw <= 7; dw++)
+ {
+ cbDayOfWeek[dw]->setChecked(true);
+ }
+ }
+ else {
+ for (int dw = 1; dw <= 7; dw++)
+ {
+ cbDayOfWeek[dw]->setChecked(false);
+ }
+ }
+ slotDayOfWeekChanged();
+}
+
+void KTTask::slotDayOfWeekChanged()
+{
+ bool allChecked = true;
+ bool allCleared = true;
+ for (int dw = 1; dw <= 7; dw++)
+ {
+ if (cbDayOfWeek[dw]->isChecked()) {
+ allCleared = false;
+ }
+ else {
+ allChecked = false;
+ }
+ }
+ if (allCleared) {
+ pbAllDaysOfWeek->setText( i18n("Set All") );
+ }
+ else {
+ pbAllDaysOfWeek->setText( i18n("Clear All") );
+ }
+ }
+
+void KTTask::slotAllHours()
+{
+ if (pbAllHours->text() == i18n("Set All")) {
+ for (int ho = 0; ho <= 23; ho++)
+ {
+ pbHour[ho]->setOn(true);
+ }
+ }
+ else {
+ for (int ho = 0; ho <= 23; ho++)
+ {
+ pbHour[ho]->setOn(false);
+ }
+ }
+ slotHourChanged();
+}
+
+void KTTask::slotHourChanged()
+{
+ bool allChecked = true;
+ bool allCleared = true;
+ for (int ho = 0; ho <= 23; ho++)
+ {
+ if (pbHour[ho]->isOn()) {
+ allCleared = false;
+ }
+ else {
+ allChecked = false;
+ }
+ }
+ if (allCleared) {
+ pbAllHours->setText( i18n("Set All") );
+ }
+ else {
+ pbAllHours->setText( i18n("Clear All") );
+ }
+ }
+
+void KTTask::slotAllMinutes()
+{
+ if (pbAllMinutes->text() == i18n("Set All")) {
+ for (int mi = 0; mi <= 55; mi+=5)
+ {
+ pbMinute[mi]->setOn(true);
+ }
+ }
+ else {
+ for (int mi = 0; mi <= 55; mi+=5)
+ {
+ pbMinute[mi]->setOn(false);
+ }
+ }
+ slotMinuteChanged();
+}
+
+void KTTask::slotMinuteChanged()
+{
+ bool allChecked = true;
+ bool allCleared = true;
+ for (int mi = 0; mi <= 55; mi+=5)
+ {
+ if (pbMinute[mi]->isOn()) {
+ allCleared = false;
+ }
+ else {
+ allChecked = false;
+ }
+ }
+ if (allCleared) {
+ pbAllMinutes->setText( i18n("Set All") );
+ }
+ else {
+ pbAllMinutes->setText( i18n("Clear All") );
+ }
+ }
+
+#include "kttask.moc"