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.
kiosktool/kiostdetool/kioskrun.h

232 lines
6.7 KiB

/*
* kioskrun.h
*
* Copyright (C) 2004 Waldo Bastian <bastian@kde.org>
*
* 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 <tqdict.h>
#include <tqobject.h>
#include <tqregexp.h>
#include <tqstringlist.h>
#include <tqtimer.h>
#include <dcopclient.h>
#include <dcopref.h>
#include <kprogress.h>
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/kderc for writing
KSimpleConfig *openKderc();
// Install new /etc/kderc
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<TQString,TQStringList> 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<TDEConfig> m_saveConfigCache;
TQDict<ImmutableStatus> m_immutableStatusCache;
bool m_noRestrictions;
bool m_forceSycocaUpdate;
bool m_isRoot;
TQString m_kderc;
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