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.
kshutdown/kshutdown/actions.h

218 lines
5.5 KiB

/*
actions.h - Actions
Copyright (C) 2005 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
*/
#ifndef __ACTIONS_H__
#define __ACTIONS_H__
#include <tdeapplication.h>
// default external commands
const TQString
DEFAULT_LOCK_SCREEN_COMMAND("xscreensaver-command -lock"),
// TODO: 2.0: logout command for GNOME (gnome-session-save --kill?)
DEFAULT_LOGOUT_COMMAND(""),
DEFAULT_REBOOT_COMMAND("/sbin/reboot"),
DEFAULT_SHUT_DOWN_COMMAND("/sbin/poweroff");
#define ks_actions Action::getInstance()
class TQPixmap;
/** @short An action manager. */
class Action: public TQObject
{
Q_OBJECT
public:
/**
* Methods. Don't change these values!
*/
enum Method {
Method_TDE = 0, /**< Standard KDE/TDM method. (default) */
Method_DefaultCommand = 1, /**< Default external command. (e.g. /sbin/reboot) */
Method_UserCommand = 2 /**< User command. Any command that can be executed by @c KRun::run. */
};
/**
* Actions.
*/
enum Type {
Nothing = 0, /**< Nothing. */
ShutDown = 1, /**< System shut down. */
Reboot = 2, /**< System reboot. */
LockScreen = 3, /**< Screen lock. */
Logout = 4, /**< End current session. */
Extras = 5 /**< Extras. Execute an item selected from the "Extras..." menu. */
};
/** Destructor. */
virtual ~Action();
/**
* Converts @p action value to the configuration group name.
*/
TQString actionToConfigGroup(const Type action) const;
/**
* Returns @c true if the current action is active.
*/
inline bool active() const { return _active; }
/**
* Activates the current action if @p yes is @c true.
*/
inline void setActive(const bool yes) { _active = yes; }
/** Returns the currently selected action. */
inline Type current() const { return _current; }
/**
* Sets current action to @p action.
*/
inline void setCurrent(const Type action) { _current = action; }
/**
* Ends current session.
* This function is a wrapper for the @c kapp->requestShutDown().
* @param type A shut down type
* @param action An action to execute
* @return @c true if successful; otherwise @c false
*/
bool endSession(const TDEApplication::ShutdownType type, const Type action);
/**
* Executes an action.
* @param action An action to execute
* @param stopTimer If @c true, the current active action and its timer are stopped
* @return @c true if successful; otherwise @c false
*/
bool exec(const Type action, const bool stopTimer = true);
/**
* Executes an action.
* Displays confirmation message before execution.
* @param action An action to execute
* @param delay A selected delay
*/
bool execConfirm(const Type action, const TQString &delay = TQString::null);
/**
* Executes the current action without confirmation.
*/
bool execCurrent();
/**
* Returns the current action name as text.
*/
TQString getCurrentName() const;
/**
* Returns an icon for @p action.
*/
TQPixmap getIcon(const Type action) const;
/**
* Returns an icon name for @p action.
*/
TQString getIconName(const Type action) const;
/**
* Initializes and return singleton instance of the @c Action class.
*/
inline static Action *getInstance()
{
if (!_instance)
_instance = new Action();
return _instance;
}
/**
* Reads method for action from the configuration file.
* @param action An action
* @retval method A method to use
* @retval command A command to run
* @return A default command
*/
TQString getMethod(
const Type action,
Method &method,
TQString &command
);
/**
* Changes the action method.
* @param group A configuration group (in @b kshutdownrc file)
* @param method A new method
* @param command A new command
*/
void setMethod(const TQString &group, const Method method, const TQString &command) const;
/**
* Returns an action name as text.
* @param action An action
*/
TQString getName(const Type action) const;
/** Returns @c true if @p action is @b not disabled by KIOSK. */
bool isEnabled(const Type action);
/** Returns @c true if test mode is enabled. */
inline bool testMode() const { return _testMode; }
/**
* Enables/disables the <b>test mode</b>.
* @param yes @c true to enable test mode
*/
inline void setTestMode(const bool yes) { _testMode = yes; }
/**
* Executes the current action,
* and displays an error message if action failed.
*/
void totalExec();
/**
* Returns @c true if application/system is shutting down.
*/
inline bool totalExit() const { return _totalExit; }
/**
* Sets <b>total exit</b> info to @p yes.
*/
inline void setTotalExit(const bool yes) { _totalExit = yes; }
private:
static Action *_instance;
bool
_active,
_testMode,
_totalExit;
TQMap<Type, TQPixmap> *iconCache;
Type _current;
Action();
bool lockScreen();
public slots:
void slotLockScreen();
void slotLogout();
void slotReboot();
void slotShutDown();
};
#endif // __ACTIONS_H__