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.
tdebase/kcontrol/kfontinst/kio/KioFonts.h

162 lines
5.4 KiB

#ifndef __KIO_FONTS_H__
#define __KIO_FONTS_H__
////////////////////////////////////////////////////////////////////////////////
//
// Class Name : KFI::CKioFonts
// Author : Craig Drummond
// Project : K Font Installer
// Creation Date : 05/03/2003
// Version : $Revision$ $Date$
//
////////////////////////////////////////////////////////////////////////////////
//
// 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
////////////////////////////////////////////////////////////////////////////////
// (C) Craig Drummond, 2003, 2004
////////////////////////////////////////////////////////////////////////////////
#include <fontconfig/fontconfig.h>
#include <time.h>
#include <kio/slavebase.h>
#include <kurl.h>
#include <klocale.h>
#include <tqstring.h>
#include <tqcstring.h>
#include <tqmap.h>
#include <tqvaluelist.h>
#include "Misc.h"
#include "KfiConstants.h"
namespace KFI
{
class CKioFonts : public KIO::SlaveBase
{
private:
enum EConstants
{
KFI_PARAMS = 8
};
enum EDest
{
DEST_UNCHANGED,
DEST_SYS,
DEST_USER
};
enum EFolder
{
FOLDER_SYS,
FOLDER_USER,
FOLDER_COUNT
};
enum EOp
{
OP_COPY,
OP_MOVE,
OP_DELETE
};
class CDirList : public TQStringList
{
public:
CDirList() { }
CDirList(const TQString &str) : TQStringList(str) { }
void add(const TQString &d) { if ( contains(d)) append(d); }
};
struct TFolder
{
TQString location;
CDirList modified;
TQMap<TQString, TQValueList<FcPattern *> > fontMap; // Maps from "Times New Roman" -> $HOME/.fonts/times.ttf
};
public:
CKioFonts(const TQCString &pool, const TQCString &app);
virtual ~CKioFonts();
static TQString getSect(const TQString &f) { return f.section('/', 1, 1); }
void listDir(const KURL &url);
void stat(const KURL &url);
bool createStatEntry(KIO::UDSEntry &entry, const KURL &url, EFolder folder);
void get(const KURL &url);
void put(const KURL &url, int mode, bool overwrite, bool resume);
void copy(const KURL &src, const KURL &dest, int mode, bool overwrite);
void rename(const KURL &src, const KURL &dest, bool overwrite);
void del(const KURL &url, bool isFile);
private:
bool putReal(const TQString &destOrig, const TQCString &destOrigC, bool origExists, int mode, bool resume);
void modified(EFolder folder, bool clearList=true, const CDirList &dirs=CDirList());
void special(const TQByteArray &a);
void createRootRefreshCmd(TQCString &cmd, const CDirList &dirs=CDirList(), bool reparseCfg=true);
void doModified();
TQString getRootPasswd(bool askPasswd=true);
bool doRootCmd(const char *cmd, const TQString &passwd);
bool doRootCmd(const char *cmd, bool askPasswd=true) { return doRootCmd(cmd, getRootPasswd(askPasswd)); }
bool confirmUrl(KURL &url);
void clearFontList();
bool updateFontList();
EFolder getFolder(const KURL &url);
TQMap<TQString, TQValueList<FcPattern *> >::Iterator getMap(const KURL &url);
TQValueList<FcPattern *> * getEntries(const KURL &url);
FcPattern * getEntry(EFolder folder, const TQString &file, bool full=false);
bool checkFile(const TQString &file);
bool getSourceFiles(const KURL &src, TQStringList &files);
bool checkDestFile(const KURL &src, const KURL &dest, EFolder destFolder, bool overwrite);
bool checkDestFiles(const KURL &src, TQMap<TQString, TQString> &map, const KURL &dest, EFolder destFolder, bool overwrite);
bool confirmMultiple(const KURL &url, const TQStringList &files, EFolder folder, EOp op);
bool confirmMultiple(const KURL &url, TQValueList<FcPattern *> *patterns, EFolder folder, EOp op);
bool checkUrl(const KURL &u, bool rootOk=false);
bool checkAllowed(const KURL &u);
void createAfm(const TQString &file, bool nrs=false, const TQString &passwd=TQString::null);
void reparseConfig();
private:
bool itsRoot,
itsCanStorePasswd,
itsUsingFcFpe,
itsUsingXfsFpe,
itsHasSys,
itsAddToSysFc;
TQString itsPasswd;
unsigned int itsFontChanges;
EDest itsLastDest;
time_t itsLastDestTime,
itsLastFcCheckTime;
FcFontSet *itsFontList;
TFolder itsFolders[FOLDER_COUNT];
char itsNrsKfiParams[KFI_PARAMS],
itsNrsNonMainKfiParams[KFI_PARAMS],
itsKfiParams[KFI_PARAMS];
};
}
#endif