/************************************************************************** * Copyright (C) 2006 by Danny Kukawka * * , * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of version 2 of the GNU General Public License * * as published by the Free Software Foundation. * * * * 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., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef _INACTIVITY_H_ #define _INACTIVITY_H_ /* this is needed to avoid typedef clash with X11 */ #ifndef TQT_CLEAN_NAMESPACE #define TQT_CLEAN_NAMESPACE #endif // KDE Header #include // QT Header #include #include #include #include #include // X11 Header #include #include #include #include // from project #include "kpowersave_debug.h" /*! * \file inactivity.h * \brief Headerfile for inactivity.cpp and the class \ref inactivity. */ /*! * \class inactivity * \brief class for detect inactivity related funtionality * \author Danny Kukawka, , * \date 2006 */ class inactivity : public TQWidget { Q_OBJECT TQ_OBJECT public: //! default constructor inactivity(); //! default destructor ~inactivity(); //! to start the monitoring of the X-Server void start(int, TQStringList); //! to stop the monitoring of the X-Server void stop(); //! to get the current user inactivity unsigned long getXInactivity(); signals: //! signal emited if the with \ref start() set time of inactivity is expired void inactivityTimeExpired(); //! signal to emit error msg void displayErrorMsg( TQString ); private: //! pointer to the process to call pidof KProcess *proc; //! about the call result of pidof /*! * This boolean tells if call of the command pidof failed. * \li true: if failed * \li false: if not */ bool pidof_call_failed; //! about the call of command pidof /*! * This boolean tells if the call of the command pidof was started or if * the command is running * \li true: if is started/running * \li false: if not */ bool pidof_call_started; //! if pidof return value is recieved /*! * This boolean tells if the call of the command pidof returned and the * returnvalue was parsed to set \ref blacklisted_running * \li true: if returned and parsed * \li false: if not */ bool pidof_call_returned; //! if a blacklisted program/process is running /*! * This boolean tells if a blacklisted program/process is currently running. * \li true: if a blacklisted program/process is running * \li false: if not */ bool blacklisted_running; //! TQStringList with blacklisted programs for autosuspend TQStringList blacklist; //! time which must expire befor emit signal for autosuspend unsigned long timeToInactivity; //! time of inactivity from the last check unsigned long idleTime; //! time of inactivity from the last check unsigned long blacklisted_running_last; //! if the XServer-has XScreenSaverExtension int has_XSC_Extension; //! TQTimer intervall for the \ref checkInactivity Timer /*! * The time intervall to check for the current status and time of * userinactivity. The timeslice is currently 30 sec. */ static const int CHECK_for_INACTIVITY = 30000; //! TQTimer for check inactivity /*! * This timer is used to check the currently status and time of * userinactivity on the X-Server. The timerinterval is defined trough * \ref CHECK_for_INACTIVITY . */ TQTimer *checkInactivity; // -------- FUNCTIONS ------------ //! to check the user-inactivity on the XServer void checkXInactivity(); //! to check for running blacklisted programs void checkBlacklisted(); //! to monitor the values void check( bool recheck ); //! to workaround a strange behavior of the XScreenSaver extension unsigned long workaroundCreepyXServer( unsigned long ); private slots: //! to monitor the values void check(); //! to monitor the values void recheck(); //! to get the PIDs of blacklisted programs/processes void getPIDs(KProcess *, char *, int); //! to get the signal if the command call is exited void getPIDsExited(KProcess *); }; #endif