Source Code (Use browser search to find items of interest.)
Class Index
kcron'KTTask (./kdeadmin/kcron/kttask.h:35)
class KTTask : public QDialog
{
Q_OBJECT
public:
/**
* Initialize from CTTask.
*/
KTTask(CTTask* _cttask = 0);
/**
* Destroy.
*/
~KTTask();
private slots:
/**
* Browse for command file.
*/
void slotBrowse();
/**
* Command has been changed. Refresh icon.
*/
void slotCommandChanged();
/**
* Daily checkbox has been changed.
*/
void slotDailyChanged();
/**
* Apply changes and close.
*/
void slotOK();
/**
* Cancel and close.
*/
void slotCancel();
private:
/**
* Task.
*/
CTTask* cttask;
/**
* Key accelerator.
*/
KAccel* key_accel;
// Widgets.
QLabel* labUser;
QLineEdit* leUser;
QLabel* labIcon;
QLabel* labComment;
QLineEdit* leComment;
QLabel* labCommand;
QLineEdit* leCommand;
QPushButton* pbBrowse;
QCheckBox* chkEnabled;
QButtonGroup* bgMonth;
QCheckBox* cbMonth[13];
QButtonGroup* bgDayOfMonth;
QPushButton* pbDayOfMonth[32];
QButtonGroup* bgDayOfWeek;
QCheckBox* cbDayOfWeek[8];
QButtonGroup* bgEveryDay;
QCheckBox* cbEveryDay;
QButtonGroup* bgHour;
QLabel* labAM;
QLabel* labPM;
QPushButton* pbHour[25];
QButtonGroup* bgMinute;
QPushButton* pbMinute[61];
QPushButton* pbOk;
QPushButton* pbCancel;
};
kcron'KTTask::KTTask() (./kdeadmin/kcron/kttask.cpp:33)
KTTask::KTTask(CTTask* _cttask) :
QDialog(0, (const char*)"kttask", true, WStyle_DialogBorder)
{
cttask = _cttask;
bool everyDay(true);
// user
labUser = new QLabel(this, "labUser");
labUser->setGeometry(10, 17, 70, 25);
labUser->setText(i18n("&Run as:"));
leUser = new QLineEdit(this, "leUser");
leUser->setGeometry(90, 17, 120, 25);
labUser->setBuddy(leUser);
if (cttask->system())
{
leUser->setText(cttask->user.c_str());
}
else
{
labUser->hide();
leUser->hide();
}
// icon
labIcon = new QLabel(this, "labIcon");
labIcon->setGeometry(418, 10, 32, 32);
// comment
labComment = new QLabel(this, "labComment");
labComment->setGeometry(10, 52, 70, 25);
labComment->setText(i18n("&Comment:"));
leComment = new QLineEdit(this, "leComment");
leComment->setGeometry(90, 52, 360, 25);
leComment->setMaxLength(100);
labComment->setBuddy(leComment);
leComment->setText(cttask->comment.c_str());
// command
labCommand = new QLabel(this, "labCommand");
labCommand->setGeometry(10, 87, 70, 25);
labCommand->setText(i18n("&Program:"));
leCommand = new QLineEdit(this, "leCommand");
leCommand->setGeometry(90, 87, 280, 25);
// leCommand->setGeometry(90, 87, 360, 25);
leCommand->setMaxLength(100);
labCommand->setBuddy(leCommand);
leCommand->setText(cttask->command.c_str());
slotCommandChanged();
pbBrowse = new QPushButton(this, "pbBrowse");
pbBrowse->setGeometry(380, 87, 70, 25);
pbBrowse->setText(i18n("&Browse..."));
// enabled
chkEnabled = new QCheckBox(i18n("&Enabled"), this, "chkEnabled");
chkEnabled->setGeometry(10, 122, 350, 25);
chkEnabled->setChecked(cttask->enabled);
// months
bgMonth = new QButtonGroup(this, "bgMonth");
bgMonth->setGeometry(10, 155, 120, 300);
bgMonth->setTitle(i18n("Months"));
for (int mo = 1; mo <= 12; mo++)
{
cbMonth[mo] = new QCheckBox(bgMonth, "cbMonth");
cbMonth[mo]->setGeometry(10, (mo-1)*23+15, 100, 25);
cbMonth[mo]->setText(cttask->month.getName(mo).c_str());
cbMonth[mo]->setChecked(cttask->month.get(mo));
if (!cttask->month.get(mo)) everyDay = false;
}
// days of the month
bgDayOfMonth = new QButtonGroup(this, "bgDayOfMonth");
bgDayOfMonth->setGeometry(140, 155, 160, 130);
bgDayOfMonth->setTitle(i18n("Days of the Month"));
QPushButton* day;
QString tmp;
for (int dm = 1; dm <= 31; dm++)
{
day = new QPushButton(bgDayOfMonth);
day->setGeometry(10+((dm-1)%7)*20,
10+(dm-1)/7*20+10,20,20);
day->setText(tmp.setNum(dm));
day->setToggleButton(true);
day->setOn(cttask->dayOfMonth.get(dm));
pbDayOfMonth[dm] = day;
if (!cttask->dayOfMonth.get(dm)) everyDay = false;
}
// days of the week
bgDayOfWeek = new QButtonGroup(this, "bgDayOfWeek");
bgDayOfWeek->setGeometry(140, 290, 160, 165);
bgDayOfWeek->setTitle(i18n("Days of the Week"));
for (int dw = 1; dw <= 7; dw++)
{
cbDayOfWeek[dw] = new QCheckBox(bgDayOfWeek);
cbDayOfWeek[dw]->setGeometry(10, 20*(dw-1)+15, 140, 25);
cbDayOfWeek[dw]->setText(cttask->dayOfWeek.getName(dw).c_str());
cbDayOfWeek[dw]->setChecked(cttask->dayOfWeek.get(dw));
if (!cttask->dayOfWeek.get(dw)) everyDay = false;
}
// daily
bgEveryDay = new QButtonGroup(this, "bgEveryDay");
bgEveryDay->setGeometry(310, 155, 140, 47);
bgEveryDay->setTitle(i18n("Daily"));
cbEveryDay = new QCheckBox(bgEveryDay, "cbEveryDay");
cbEveryDay->setGeometry(10, 16, 120, 25);
cbEveryDay->setText(i18n("Run Every Day"));
cbEveryDay->setChecked(everyDay);
// hours
bgHour = new QButtonGroup(this, "bgHour");
bgHour->setGeometry(310, 205, 140, 165);
bgHour->setTitle(i18n("Hours"));
labAM = new QLabel(bgHour, "labAM");
labAM->setGeometry(90, 15, 40, 20);
labAM->setAlignment(AlignRight | AlignVCenter);
labAM->setText(i18n("AM"));
labPM = new QLabel(bgHour, "labPM");
labPM->setGeometry(90, 86, 40, 20);
labPM->setAlignment(AlignRight | AlignVCenter);
labPM->setText(i18n("PM"));
for (int ho = 0; ho <= 23; ho++)
{
pbHour[ho] = new QPushButton(bgHour);
pbHour[ho]->setText(tmp.setNum(ho));
pbHour[ho]->setToggleButton(true);
pbHour[ho]->setOn(cttask->hour.get(ho));
}
for (int ho1 = 0; ho1 <= 5; ho1++)
{
pbHour[ho1]->setGeometry(ho1*20+10, 40, 20, 20);
pbHour[ho1+6]->setGeometry(ho1*20+10, 60, 20, 20);
pbHour[ho1+12]->setGeometry(ho1*20+10, 111, 20, 20);
pbHour[ho1+18]->setGeometry(ho1*20+10, 131, 20, 20);
}
// minutes
bgMinute = new QButtonGroup(this, "bgMinute");
bgMinute->setGeometry(310, 375, 140, 80);
bgMinute->setTitle(i18n("Minutes"));
for (int mi = 0; mi <= 55; mi+=5)
{
pbMinute[mi] = new QPushButton(bgMinute);
pbMinute[mi]->setText(tmp.setNum(mi));
pbMinute[mi]->setToggleButton(true);
pbMinute[mi]->setOn(cttask->minute.get(mi));
}
for (int mi1 = 0; mi1 <= 25; mi1+=5)
{
pbMinute[mi1]->setGeometry(mi1*4+10, 25, 20, 20);
pbMinute[mi1+30]->setGeometry(mi1*4+10, 45, 20, 20);
}
// OK
pbOk = new QPushButton(i18n("&OK"), this, "pbOk");
pbOk->setGeometry(280, 465, 80, 25);
pbOk->setDefault(true);
// Cancel
pbCancel = new QPushButton(i18n("&Cancel"), this, "pbCancel");
pbCancel->setGeometry(370, 465, 80, 25);
// window
setIcon(KTIcon::application(true));
setCaption(i18n("Edit Task"));
setFixedSize(460, 500);
// set focus to first widget
if (cttask->system())
{
leUser->setFocus();
}
else
{
leComment->setFocus();
}
// connect them up
connect(pbBrowse, SIGNAL(clicked()), SLOT(slotBrowse()));
#ifdef KDE1
connect(leCommand, SIGNAL(textChanged(const char*)),
SLOT(slotCommandChanged()));
#else
connect(leCommand, SIGNAL(textChanged(const QString&)),
SLOT(slotCommandChanged()));
#endif
connect(cbEveryDay, SIGNAL(clicked()), SLOT(slotDailyChanged()));
connect(pbOk, SIGNAL(clicked()), SLOT(slotOK()));
connect(pbCancel, SIGNAL(clicked()), SLOT(slotCancel()));
// key acceleration
key_accel = new KAccel(this);
key_accel->connectItem(KStdAccel::Open, this, SLOT(slotOK()));
key_accel->connectItem(KStdAccel::Close, this, SLOT(slotCancel()));
key_accel->connectItem(KStdAccel::Quit, this, SLOT(slotCancel()));
key_accel->readSettings();
}
kcron'KTTask::~KTTask() (./kdeadmin/kcron/kttask.cpp:254)
KTTask::~KTTask()
{
}
kcron'KTTask::slotCommandChanged() (./kdeadmin/kcron/kttask.cpp:258)
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;
}
kcron'KTTask::slotDailyChanged() (./kdeadmin/kcron/kttask.cpp:282)
void KTTask::slotDailyChanged()
{
if (cbEveryDay->isChecked())
{
for (int mo = 1; mo <= 12; mo++)
{
cbMonth[mo]->setChecked(true);
}
for (int dm = 1; dm <= 31; dm++)
{
pbDayOfMonth[dm]->setOn(true);
}
for (int dw = 1; dw <= 7; dw++)
{
cbDayOfWeek[dw]->setChecked(true);
}
}
}
kcron'KTTask::slotOK() (./kdeadmin/kcron/kttask.cpp:301)
void KTTask::slotOK()
{
// validate
QString message(i18n("Please enter the following to schedule the task:\n"));
QString sep("\n- ");
bool showMessage(false);
if (QString(leCommand->text()) == "")
{
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)
{
#ifdef KDE1
QMessageBox::information(this,
kapp->getCaption(), message);
#else
QMessageBox::information(this,
kapp->caption(), message);
#endif
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 endPos(qs.findRev(" ", qs.length()));
if (endPos < 0) endPos = qs.length();
QString programName(qs.left(endPos));
QFileInfo file(programName);
if (!file.isReadable())
{
#ifdef KDE1
QMessageBox::information(this,
kapp->getCaption(),
i18n("Can not locate program. Please re-enter."));
#else
QMessageBox::information(this,
kapp->caption(),
i18n("Can not locate program. Please re-enter."));
#endif
leCommand->setFocus();
return;
}
if (!file.isExecutable())
{
#ifdef KDE1
QMessageBox::information(this,
kapp->getCaption(),
i18n("Program is not an executable file. Please re-enter."));
#else
QMessageBox::information(this,
kapp->caption(),
i18n("Program is not an executable file. Please re-enter."));
#endif
leCommand->setFocus();
return;
}
}
// save work in process
if (cttask->user != "")
{
cttask->user = leUser->text();
}
else
{
cttask->user = "";
}
cttask->comment = leComment->text();
cttask->command = leCommand->text();
cttask->enabled = chkEnabled->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();
}
kcron'KTTask::slotCancel() (./kdeadmin/kcron/kttask.cpp:482)
void KTTask::slotCancel()
{
close();
}
kcron'KTTask::slotBrowse() (./kdeadmin/kcron/kttask.cpp:487)
void KTTask::slotBrowse()
{
KURL url = KFileDialog::getOpenURL();
if( url.isLocalFile() )
{
if( !url.isEmpty() )
leCommand->setText((const char*)url.path());
}
else
{
KMessageBox::sorry( 0L, i18n( "Only local files are supported yet" ) );
}
leCommand->setFocus();
}