You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
226 lines
7.1 KiB
226 lines
7.1 KiB
/*
|
|
mactioneditsdialog.cpp - An action editor
|
|
Copyright (C) 2003 Konrad Twardowski <kdtonline@poczta.onet.pl>
|
|
|
|
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.
|
|
|
|
This program 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 General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*/
|
|
|
|
#include "configuration.h"
|
|
#include "mactioneditdialog.h"
|
|
#include "miscutils.h"
|
|
#include "mtip.h"
|
|
|
|
#include <ntqcheckbox.h>
|
|
#include <ntqcombobox.h>
|
|
#include <ntqhbox.h>
|
|
#include <ntqlabel.h>
|
|
#include <ntqlayout.h>
|
|
#include <ntqvbox.h>
|
|
#include <ntqvgroupbox.h>
|
|
#include <ntqwhatsthis.h>
|
|
|
|
#include <klineedit.h>
|
|
#include <tdelocale.h>
|
|
#include <knuminput.h>
|
|
#include <kpushbutton.h>
|
|
|
|
MActionEditDialog::MActionEditDialog(TQWidget *parent, Action::Type action)
|
|
: KDialogBase(
|
|
parent,
|
|
"MActionEditDialog",
|
|
true,
|
|
"",
|
|
Default | Ok | Cancel,
|
|
Ok, // default button
|
|
true
|
|
),
|
|
_action(action),
|
|
_userCommand("")
|
|
{
|
|
TQVBox *main = new TQVBox(this);
|
|
setMainWidget(main);
|
|
|
|
// title
|
|
l_title = new TQLabel(main);
|
|
TQFont f = TQFont(l_title->font());
|
|
f.setPointSize(16);
|
|
l_title->setFont(f);
|
|
l_title->setMargin(10);
|
|
|
|
TQHBox *gb_south = new TQHBox(main);
|
|
gb_south->setSpacing(5);
|
|
|
|
TQVBox *gb_widgets = new TQVBox(gb_south);
|
|
|
|
TQVGroupBox *gb_method = new TQVGroupBox(i18n("Method"), gb_widgets);
|
|
|
|
// method label
|
|
TQLabel *l_method = new TQLabel(i18n("Select a method:"), gb_method);
|
|
|
|
// method combo box
|
|
_methods = new TQComboBox(gb_method, "TQComboBox::_methods");
|
|
_methods->setFocusPolicy(StrongFocus);
|
|
_methods->insertItem(i18n("TDE (default)"));
|
|
l_method->setBuddy(_methods);
|
|
connect(_methods, SIGNAL(activated(int)), SLOT(slotMethodChange(int)));
|
|
|
|
// command label
|
|
l_command = new TQLabel(i18n("Enter a custom command:"), gb_method);
|
|
|
|
// command edit line
|
|
in_command = new KLineEdit(gb_method, "KLineEdit::in_command");
|
|
l_command->setBuddy(in_command);
|
|
|
|
TQVGroupBox *gb_commandBeforeAction = new TQVGroupBox(i18n("Command before action"), gb_widgets);
|
|
c_runCommandBeforeAction = new TQCheckBox(i18n("Run command"), gb_commandBeforeAction);
|
|
i_commandBeforeAction = new KLineEdit(gb_commandBeforeAction, "KLineEdit::i_commandBeforeAction");
|
|
i_commandBeforeActionPause = new KIntNumInput(gb_commandBeforeAction, "KIntNumInput::i_commandBeforeActionPause");
|
|
i_commandBeforeActionPause->setLabel(i18n("Pause after run command:"));
|
|
i_commandBeforeActionPause->setRange(0, 300, 1, true);
|
|
i_commandBeforeActionPause->setSpecialValueText(i18n("No pause"));
|
|
i_commandBeforeActionPause->setSuffix(" " + i18n("second(s)"));
|
|
b_testCommandBeforeAction = new KPushButton(KStdGuiItem::test(), gb_commandBeforeAction, "KPushButton::b_testCommandBeforeAction");
|
|
connect(b_testCommandBeforeAction, SIGNAL(clicked()), SLOT(slotTestCommandBeforeAction()));
|
|
connect(
|
|
c_runCommandBeforeAction, SIGNAL(toggled(bool)),
|
|
i_commandBeforeAction, SLOT(setEnabled(bool)));
|
|
connect(
|
|
c_runCommandBeforeAction, SIGNAL(toggled(bool)),
|
|
i_commandBeforeActionPause, SLOT(setEnabled(bool)));
|
|
connect(
|
|
c_runCommandBeforeAction, SIGNAL(toggled(bool)),
|
|
b_testCommandBeforeAction, SLOT(setEnabled(bool)));
|
|
|
|
MTip *t_progs = new MTip(MTip::Warning, gb_south);
|
|
t_progs->setTipText(
|
|
MiscUtils::HTML(
|
|
i18n("In most cases you need privileges to shut down system (e.g. run /sbin/shutdown)") + "<br>" \
|
|
"<ul>" \
|
|
"<li>" + i18n("If you are using <b>TDE</b> and <b>TDM</b> (TDE Display Manager), then set all methods to <i>TDE</i>") + "</li>" \
|
|
"<li>" + i18n("If you are using <b>TDE</b> and display manager different than <b>TDM</b>, then set <i>Turn Off Computer</i> and <i>Restart Computer</i> methods to <i>/sbin/...</i>") + "</li>" \
|
|
"</ul>" +
|
|
i18n("Manuals:") +
|
|
"<ul>" \
|
|
"<li><a href=\"man:/halt\">halt, poweroff, reboot</a></li>" \
|
|
"<li><a href=\"man:/shutdown\">shutdown</a></li>" \
|
|
"<li><a href=\"man:/xlock\">xlock</a></li>" \
|
|
"<li><a href=\"man:/xscreensaver-command\">xscreensaver-command</a></li>" \
|
|
"</ul>" \
|
|
)
|
|
);
|
|
|
|
connect(this, SIGNAL(okClicked()), SLOT(slotOKClicked()));
|
|
|
|
Action::Method m = Action::Method_TDE;
|
|
TQString c;
|
|
TQString group = ks_actions->actionToConfigGroup(_action);
|
|
_methods->insertItem(ks_actions->getMethod(_action, m, c));
|
|
|
|
TQString s = ks_actions->getName(_action);
|
|
l_title->setText(s);
|
|
setCaption(s);
|
|
|
|
_methods->insertItem(i18n("User Command"));
|
|
|
|
// method
|
|
_userCommand = c;
|
|
setMethod(m);
|
|
|
|
// command before action
|
|
TDEConfig *conf = kshutdownrc->config();
|
|
conf->setGroup(group);
|
|
c_runCommandBeforeAction->setChecked(conf->readBoolEntry("RunCommandBeforeAction", false));
|
|
i_commandBeforeAction->setText(conf->readEntry("CommandBeforeAction", ""));
|
|
i_commandBeforeActionPause->setValue(conf->readNumEntry("CommandBeforeActionPause", 10));
|
|
|
|
bool runCommand = c_runCommandBeforeAction->isChecked();
|
|
i_commandBeforeAction->setEnabled(runCommand);
|
|
i_commandBeforeActionPause->setEnabled(runCommand);
|
|
b_testCommandBeforeAction->setEnabled(runCommand);
|
|
_methods->setFocus();
|
|
|
|
adjustSize();
|
|
disableResize();
|
|
}
|
|
|
|
MActionEditDialog::~MActionEditDialog()
|
|
{
|
|
}
|
|
|
|
void MActionEditDialog::setMethod(const Action::Method method) const
|
|
{
|
|
_methods->setCurrentItem(method);
|
|
l_command->setEnabled(method == Action::Method_UserCommand);
|
|
in_command->setEnabled(method == Action::Method_UserCommand);
|
|
switch (method)
|
|
{
|
|
case Action::Method_TDE:
|
|
in_command->setText("");
|
|
break;
|
|
case Action::Method_DefaultCommand:
|
|
in_command->setText(_methods->text(Action::Method_DefaultCommand));
|
|
break;
|
|
case Action::Method_UserCommand:
|
|
in_command->setText(_userCommand);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void MActionEditDialog::slotDefault()
|
|
{
|
|
setMethod(Action::Method_TDE);
|
|
c_runCommandBeforeAction->setChecked(false);
|
|
i_commandBeforeAction->clear();
|
|
i_commandBeforeActionPause->setValue(10);
|
|
}
|
|
|
|
void MActionEditDialog::slotMethodChange(int index)
|
|
{
|
|
if (in_command->isEnabled())
|
|
_userCommand = in_command->text();
|
|
setMethod((Action::Method)index);
|
|
}
|
|
|
|
void MActionEditDialog::slotOKClicked()
|
|
{
|
|
Action::Method m;
|
|
TQString c;
|
|
TQString group = ks_actions->actionToConfigGroup(_action);
|
|
|
|
// method
|
|
m = (Action::Method)_methods->currentItem();
|
|
if (m == Action::Method_UserCommand)
|
|
c = in_command->text();
|
|
else
|
|
c = "";
|
|
ks_actions->setMethod(group, m, c);
|
|
|
|
// command before action
|
|
TDEConfig *conf = kshutdownrc->config();
|
|
conf->setGroup(group);
|
|
conf->writeEntry("RunCommandBeforeAction", c_runCommandBeforeAction->isChecked());
|
|
conf->writeEntry("CommandBeforeAction", i_commandBeforeAction->text());
|
|
conf->writeEntry("CommandBeforeActionPause", i_commandBeforeActionPause->value());
|
|
}
|
|
|
|
void MActionEditDialog::slotTestCommandBeforeAction()
|
|
{
|
|
MiscUtils::runShellCommand(
|
|
i_commandBeforeAction->text(),
|
|
TDEProcess::DontCare,
|
|
i_commandBeforeActionPause->value()
|
|
);
|
|
}
|