#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 #include #include #include #include #include #include #include #include #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 ( tqcontains(d)) append(d); } }; struct TFolder { TQString location; CDirList modified; TQMap > 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 >::Iterator getMap(const KURL &url); TQValueList * 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 &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 *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