/* * kioskrun.h * * Copyright (C) 2004 Waldo Bastian * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _KIOSKRUN_H_ #define _KIOSKRUN_H_ #include #include #include #include #include #include #include #include class ImmutableStatus; class TDEConfig; class TDEProcess; class KSimpleConfig; class KioskGui; class KioskRun : public TQObject { friend class KioskGui; Q_OBJECT public: static KioskRun* self() { return s_self; } void setKdeDirs(const TQStringList &dirs); void setUser(const TQString &user); TQString homeDir() { return m_homeDir; } TQStringList kdeDirs() { return m_kdeDirs; } TQString desktopPath() { return m_desktopPath; } // Locate existing anywhere TQString locate(const char *resource, const TQString &filename=TQString()); // Locate for saving TQString locateSave(const char *resource, const TQString &filename=TQString()); // Locate for reading saved changed TQString locateLocal(const char *resource, const TQString &filename=TQString()); // Prepare runtime environment for run() bool prepare(); // Update sycoca database in runtime environment void updateSycoca(); // Request sycoca update in install environment after flushing config files void scheduleSycocaUpdate(); // Request sycoca update in install environment void forceSycocaUpdate(); // Run a program inside the runtime test environment TDEProcess* run(const TQString &cmd, const TQStringList &args=TQStringList()); // A DCOPRef to make dcop calls into the runtime test environment DCOPRef dcopRef(const TQCString &appId, const TQCString &objId); // A DCOPClient to make dcop calls into the runtime test environment DCOPClient *dcopClient() { return m_dcopClient; } // Open config file in the install directory TDEConfig *configFile(const TQString &filename); // Make config files temporary mutable. void makeMutable(bool bMutable); // Returns whether specific config group is immutable, // or entire file if group is empty bool isConfigImmutable(const TQString &filename, const TQString &group); // Make specific config group immutable, // or entire file if group is empty void setConfigImmutable(const TQString &filename, const TQString &group, bool bImmutable); // Close all opened config files. bool flushConfigCache(); // Return all config files created by the user TQStringList newConfigFiles(); // Merge new settings from the test directory into the installation directory void mergeConfigFile(const TQString &filename); // Lookup the setting for a custom action bool lookupCustomAction(const TQString &action); // Change the setting for a custom action void setCustomAction(const TQString &action, bool checked); // Create installation directory and its parent dirs bool createDir(const TQString &dir); // Install file bool install(const TQString &file, const TQString &destination); // Delete file bool remove(const TQString &destination); // Move file or directory bool move(const TQString &source, const TQString &destination, const TQStringList &files); // Delete directory in test home dir void deleteDir(const TQString &); // Open /etc/tderc for writing KSimpleConfig *openKderc(); // Install new /etc/tderc bool closeKderc(); // Read information of profile @p profile void getProfileInfo(const TQString &profile, TQString &description, TQString &installDir, TQString &installUser); // Store information for profile @p profile bool setProfileInfo(const TQString &profile, const TQString &description, const TQString &installDir, const TQString &installUser, bool b=false, bool deleteFiles=true); // Get new, non-existing, profile name TQString newProfile(); // Delete profile @p profile bool deleteProfile(const TQString &profile, bool deleteFiles = true); // Get list of all existing profiles TQStringList allProfiles(); // Maps a single group or user to a one or more profiles typedef TQMap ProfileMapping; // Read mappings between groups/users and profiles void getUserProfileMappings( ProfileMapping &groups, ProfileMapping &users, TQStringList &groupOrder); // Store mappings between groups/users and profiles bool setUserProfileMappings( const ProfileMapping &groups, const ProfileMapping &users, const TQStringList &groupOrder); // Read profile prefix TQString getProfilePrefix(); // Store profile prefix bool setProfilePrefix(const TQString &prefix); // Create upload directory bool createRemoteDir(const KURL &dir); // Create upload directory and all its parent dirs and be polite if ask = true bool createRemoteDirRecursive(const KURL &dir, bool ask); // Upload file bool uploadRemote(const TQString &file, const KURL &dest); protected: KioskRun( TQObject* parent = 0, const char* name = 0); ~KioskRun(); bool setupRuntimeEnv(); void shutdownRuntimeEnv(); void setupConfigEnv(); void shutdownConfigEnv(); void applyEnvironment(TDEProcess *p); TQString saveImmutableStatus(const TQString &filename); bool restoreImmutableStatus(const TQString &filename, bool force); void setCustomRestrictionFileBrowsing(bool restrict); private: static KioskRun* s_self; TQString m_homeDir; TQString m_configDir; TQString m_desktopPath; TQString m_user; TQStringList m_kdeDirs; TQStringList m_xdgDataDirs; TQStringList m_xdgConfigDirs; DCOPClient *m_dcopClient; TDEInstance *m_instance; TDEInstance *m_saveInstance; TQDict m_saveConfigCache; TQDict m_immutableStatusCache; bool m_noRestrictions; bool m_forceSycocaUpdate; bool m_isRoot; TQString m_tderc; TQString m_localKderc; KSimpleConfig *m_localKdercConfig; }; class KioskRunProgressDialog : public KProgressDialog { Q_OBJECT public: KioskRunProgressDialog(TQWidget *parent, const char *name, const TQString &caption, const TQString &text); public slots: void slotProgress(); void slotFinished(); private: TQTimer m_timer; int m_timeStep; }; #endif