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.
tellico/src/filehandler.h

172 lines
5.6 KiB

/***************************************************************************
copyright : (C) 2003-2006 by Robby Stephenson
email : robby@periapsis.org
***************************************************************************/
/***************************************************************************
* *
* 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; *
* *
***************************************************************************/
#ifndef FILEHANDLER_H
#define FILEHANDLER_H
#include <tqstring.h>
#include <tqcstring.h> // needed for TQByteArray
#include <tqptrlist.h>
class KURL;
class KSaveFile;
class KFileItem;
namespace TDEIO {
class Job;
}
class TQDomDocument;
class TQIODevice;
namespace Tellico {
class ImageFactory;
namespace Data {
class Image;
}
/**
* The FileHandler class contains some utility functions for reading files.
*
* @author Robby Stephenson
*/
class FileHandler {
friend class ImageFactory;
public:
/**
* An internal class to handle TDEIO stuff. Exposed so a FileRef pointer
* can be returned from FileHandler.
*/
class FileRef {
public:
bool open(bool quiet=false);
TQIODevice* file() const { return m_device; }
const TQString& fileName() const { return m_filename; }
bool isValid() const { return m_isValid; }
~FileRef();
private:
friend class FileHandler;
FileRef(const KURL& url, bool quiet=false, bool allowCompressed=false);
TQIODevice* m_device;
TQString m_filename;
bool m_isValid;
};
friend class FileRef;
/**
* Creates a FileRef for a given url. It's not meant to be used by methods in the class,
* Rather by a class wanting direct access to a file. The caller takes ownership of the pointer.
*
* @param url The url
* @param quiet Whether error messages should be shown
* @return The fileref
*/
static FileRef* fileRef(const KURL& url, bool quiet=false);
/**
* Read contents of a file into a string.
*
* @param url The URL of the file
* @param quiet whether the importer should report errors or not
* @param useUTF8 Whether the file should be read as UTF8 or use user locale
* @param allowCompressed Whether to check if the file is compressed or not
* @return A string containing the contents of a file
*/
static TQString readTextFile(const KURL& url, bool quiet=false, bool useUTF8=false, bool allowCompressed=false);
/**
* Read contents of an XML file into a TQDomDocument.
*
* @param url The URL of the file
* @param processNamespace Whether to process the namespace of the XML file
* @param quiet Whether error messages should be shown
* @return A TQDomDocument containing the contents of a file
*/
static TQDomDocument readXMLFile(const KURL& url, bool processNamespace, bool quiet=false);
/**
* Read contents of a data file into a TQByteArray.
*
* @param url The URL of the file
* @param quiet Whether error messages should be shown
* @return A TQByteArray of the file's contents
*/
static TQByteArray readDataFile(const KURL& url, bool quiet=false);
/**
* Writes the contents of a string to a url. If the file already exists, a "~" is appended
* and the existing file is moved. If the file is remote, a temporary file is written and
* then uploaded.
*
* @param url The url
* @param text The text
* @param encodeUTF8 Whether to use UTF-8 encoding, or Locale
* @param force Whether to force the write
* @return A boolean indicating success
*/
static bool writeTextURL(const KURL& url, const TQString& text, bool encodeUTF8, bool force=false, bool quiet=false);
/**
* Writes data to a url. If the file already exists, a "~" is appended
* and the existing file is moved. If the file is remote, a temporary file is written and
* then uploaded.
*
* @param url The url
* @param data The data
* @param force Whether to force the write
* @return A boolean indicating success
*/
static bool writeDataURL(const KURL& url, const TQByteArray& data, bool force=false, bool quiet=false);
/**
* Checks to see if a URL exists already, and if so, queries the user.
*
* @param url The target URL
* @return True if it is ok to continue, false otherwise.
*/
static bool queryExists(const KURL& url);
static void clean();
private:
class ItemDeleter;
friend class ItemDeleter;
static TQPtrList<ItemDeleter> s_deleterList;
/**
* Read contents of a file into an image. It's private since everything should use the
* ImageFactory methods.
*
* @param url The URL of the file
* @param quiet If errors should be quiet
* @return The image
*/
static Data::Image* readImageFile(const KURL& url, bool quiet=false);
static Data::Image* readImageFile(const KURL& url, bool quiet, const KURL& referrer);
/**
* Writes the contents of a string to a file.
*
* @param file The file object
* @param text The string
* @param encodeUTF8 Whether to use UTF-8 encoding, or Locale
* @return A boolean indicating success
*/
static bool writeTextFile(KSaveFile& file, const TQString& text, bool encodeUTF8);
/**
* Writes data to a file.
*
* @param file The file object
* @param data The data
* @return A boolean indicating success
*/
static bool writeDataFile(KSaveFile& file, const TQByteArray& data);
};
} // end namespace
#endif