summaryrefslogtreecommitdiffstats
path: root/kio/kio/kfileitem.h
diff options
context:
space:
mode:
Diffstat (limited to 'kio/kio/kfileitem.h')
-rw-r--r--kio/kio/kfileitem.h671
1 files changed, 0 insertions, 671 deletions
diff --git a/kio/kio/kfileitem.h b/kio/kio/kfileitem.h
deleted file mode 100644
index 0fcba9f4a..000000000
--- a/kio/kio/kfileitem.h
+++ /dev/null
@@ -1,671 +0,0 @@
-/* This file is part of the KDE project
- Copyright (C) 1999 David Faure <faure@kde.org>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-#ifndef __kfileitem_h__
-#define __kfileitem_h__
-
-#include <tqstringlist.h>
-#include <sys/stat.h>
-
-#include <tqptrlist.h>
-#include <kio/global.h>
-#include <kurl.h>
-#include <kacl.h>
-#include <kmimetype.h>
-#include <kfilemetainfo.h>
-
-#define KFILEITEM_HAS_ISWRITABLE // only used in libkonq/konq_iconviewwidget.cc, will be removed for 3.4
-
-/**
- * A KFileItem is a generic class to handle a file, local or remote.
- * In particular, it makes it easier to handle the result of TDEIO::listDir
- * (UDSEntry isn't very friendly to use).
- * It includes many file attributes such as mimetype, icon, text, mode, link...
- */
-class TDEIO_EXPORT KFileItem
-{
-public:
- enum { Unknown = (mode_t) - 1 };
-
- /**
- * Creates an item representing a file, from a UDSEntry.
- * This is the preferred constructor when using TDEIO::listDir().
- *
- * @param _entry the KIO entry used to get the file, contains info about it
- * @param _url the file url
- * @param _determineMimeTypeOnDemand specifies if the mimetype of the given
- * URL should be determined immediately or on demand
- * @param _urlIsDirectory specifies if the url is just the directory of the
- * fileitem and the filename from the UDSEntry should be used.
- */
- KFileItem( const TDEIO::UDSEntry& _entry, const KURL& _url,
- bool _determineMimeTypeOnDemand = false,
- bool _urlIsDirectory = false );
-
- /**
- * Creates an item representing a file, from all the necessary info for it.
- * @param _mode the file mode (according to stat() (e.g. S_IFDIR...)
- * Set to KFileItem::Unknown if unknown. For local files, KFileItem will use stat().
- * @param _permissions the access permissions
- * If you set both the mode and the permissions, you save a ::stat() for
- * local files.
- * Set to KFileItem::Unknown if you don't know the mode or the permission.
- * @param _url the file url
- *
- * @param _determineMimeTypeOnDemand specify if the mimetype of the given URL
- * should be determined immediately or on demand
- */
- KFileItem( mode_t _mode, mode_t _permissions, const KURL& _url,
- bool _determineMimeTypeOnDemand = false );
-
- /**
- * Creates an item representing a file, for which the mimetype is already known.
- * @param url the file url
- * @param mimeType the name of the file's mimetype
- * @param mode the mode (S_IFDIR...)
- */
- KFileItem( const KURL &url, const TQString &mimeType, mode_t mode );
-
- /**
- * Copy constructor. Note that extra-data set via setExtraData() is not
- * deeply copied -- just the pointers are copied.
- */
- KFileItem( const KFileItem &item );
-
- /**
- * Destructs the KFileItem. Extra data set via setExtraData()
- * is not deleted.
- */
- virtual ~KFileItem();
-
- /**
- * Throw away and re-read (for local files) all information about the file.
- * This is called when the _file_ changes.
- */
- void refresh();
-
- /**
- * Re-reads mimetype information.
- * This is called when the mimetype database changes.
- */
- void refreshMimeType();
-
- /**
- * Returns the url of the file.
- * @return the url of the file
- */
- const KURL & url() const { return m_url; }
-
- /**
- * Sets the item's URL. Do not call unless you know what you are doing!
- * (used for example when an item got renamed).
- * @param url the item's URL
- */
- void setURL( const KURL &url );
-
- /**
- * Sets the item's name (i.e. the filename).
- * This is automatically done by setURL, to set the name from the URL's fileName().
- * This method is provided for some special cases like relative paths as names (KFindPart)
- * @param name the item's name
- */
- void setName( const TQString &name );
-
- /**
- * Returns the permissions of the file (stat.st_mode containing only permissions).
- * @return the permissions of the file
- */
- mode_t permissions() const { return m_permissions; }
-
- /**
- * Returns the access permissions for the file as a string.
- * @return the access persmission as string
- */
- TQString permissionsString() const;
-
- /**
- * Tells if the file has extended access level information ( Posix ACL )
- * @return true if the file has extend ACL information or false if it hasn't
- * @since 3.5
- */
- bool hasExtendedACL() const;
-
- /**
- * Returns the access control list for the file.
- * @return the access control list as a KACL
- * @since 3.5
- */
- KACL ACL() const;
-
- /**
- * Returns the default access control list for the directory.
- * @return the default access control list as a KACL
- * @since 3.5
- */
- KACL defaultACL() const;
-
- /**
- * Returns the file type (stat.st_mode containing only S_IFDIR, S_IFLNK, ...).
- * @return the file type
- */
- mode_t mode() const { return m_fileMode; }
-
- /**
- * Returns the owner of the file.
- * @return the file's owner
- */
- TQString user() const;
-
- /**
- * Returns the group of the file.
- * @return the file's group
- */
- TQString group() const;
-
- /**
- * Returns true if this item represents a link in the UNIX sense of
- * a link.
- * @return true if the file is a link
- */
- bool isLink() const { return m_bLink; }
-
- /**
- * Returns true if this item represents a directory.
- * @return true if the item is a directory
- */
- bool isDir() const;
-
- /**
- * Returns true if this item represents a file (and not a a directory)
- * @return true if the item is a file
- */
- bool isFile() const { return !isDir(); }
-
- /**
- * Checks whether the file or directory is readable. In some cases
- * (remote files), we may return true even though it can't be read.
- * @return true if the file can be read - more precisely,
- * false if we know for sure it can't
- */
- bool isReadable() const;
-
- /**
- * Checks whether the file or directory is writable. In some cases
- * (remote files), we may return true even though it can't be written to.
- * @return true if the file or directory can be written to - more precisely,
- * false if we know for sure it can't
- * @since 3.4
- */
- bool isWritable() const;
-
- /**
- * Checks whether the file is hidden.
- * @return true if the file is hidden.
- */
- bool isHidden() const;
-
- /**
- * Returns the link destination if isLink() == true.
- * @return the link destination. TQString::null if the item is not a link
- */
- TQString linkDest() const;
-
- /**
- * Returns the local path if isLocalFile() == true or the KIO item has
- * a UDS_LOCAL_PATH atom.
- * @return the item local path, or TQString::null if not known
- * @since 3.4
- */
- TQString localPath() const;
-
- //FIXME KDE4 deprecate this in favor of size(bool &hasSize)
- /**
- * Returns the size of the file, if known.
- * @return the file size, or 0 if not known
- */
- TDEIO::filesize_t size() const;
-
- /**
- * Returns the size of the file, if known, and sets @p hasSize to false if not known
- * @param @hasSize This is set to true if the size is known, and false if not known
- * @return the file size, or 0 if not known
- */
- TDEIO::filesize_t size(bool &hasSize) const;
-
- //FIXME KDE4 deprecate this in favor of time(unsigned int which, bool &hasSize)
- /**
- * Requests the modification, access or creation time, depending on @p which.
- * @param which UDS_MODIFICATION_TIME, UDS_ACCESS_TIME or UDS_CREATION_TIME
- * @return the time asked for, (time_t)0 if not available
- * @see timeString()
- */
- time_t time( unsigned int which ) const;
-
- /**
- * Requests the modification, access or creation time, depending on @p which.
- * @param which UDS_MODIFICATION_TIME, UDS_ACCESS_TIME or UDS_CREATION_TIME
- * @param hasTime This is set to true is the time is known, and false if not known
- * @return the time asked for, (time_t)0 if not known/available
- * @see timeString()
- */
- time_t time( unsigned int which, bool &hasTime ) const;
-
- /**
- * Requests the modification, access or creation time as a string, depending
- * on @p which.
- * @param which UDS_MODIFICATION_TIME, UDS_ACCESS_TIME or UDS_CREATION_TIME
- * @returns a formatted string of the requested time, TQString::null if time is not known
- * @see time
- */
- TQString timeString( unsigned int which = TDEIO::UDS_MODIFICATION_TIME ) const;
-
- /**
- * Returns true if the file is a local file.
- * @return true if the file is local, false otherwise
- */
- bool isLocalFile() const { return m_bIsLocalURL; }
-
- /**
- * Returns the text of the file item.
- * It's not exactly the filename since some decoding happens ('%2F'->'/').
- * @return the text of the file item
- */
- const TQString& text() const { return m_strText; }
-
- /**
- * Return the name of the file item (without a path).
- * Similar to text(), but unencoded, i.e. the original name.
- * @param lowerCase if true, the name will be returned in lower case,
- * which is useful to speed up sorting by name, case insensitively.
- * @return the file's name
- */
- const TQString& name( bool lowerCase = false ) const {
- if ( !lowerCase )
- return m_strName;
- else
- if ( m_strLowerCaseName.isNull() )
- m_strLowerCaseName = m_strName.lower();
- return m_strLowerCaseName;
- }
-
- /**
- * Returns the mimetype of the file item.
- * If @p _determineMimeTypeOnDemand was used in the constructor, this will determine
- * the mimetype first. Equivalent to determineMimeType()->name()
- * @return the mime type of the file
- */
- TQString mimetype() const;
-
- /**
- * Returns the mimetype of the file item.
- * If _determineMimeTypeOnDemand was used in the constructor, this will determine
- * the mimetype first.
- * @return the mime type
- */
- KMimeType::Ptr determineMimeType();
-
- /**
- * Returns the currently known mimetype of the file item.
- * This will not try to determine the mimetype if unknown.
- * @return the known mime type
- */
- KMimeType::Ptr mimeTypePtr() const { return m_pMimeType; }
-
- bool isMimeTypeKnown() const;
- /**
- * Returns the descriptive comment for this mime type, or
- * the mime type itself if none is present.
- * @return the mime type description, or the mime type itself
- */
- TQString mimeComment();
-
- /**
- * Returns the full path name to the icon that represents
- * this mime type.
- * @return iconName the name of the file's icon
- */
- TQString iconName();
-
- /**
- * Returns a pixmap representing the file.
- * @param _size Size for the pixmap in pixels. Zero will return the
- * globally configured default size.
- * @param _state The state of the icon: KIcon::DefaultState,
- * KIcon::ActiveState or KIcon::DisabledState.
- * @return the pixmap
- */
- TQPixmap pixmap( int _size, int _state=0 ) const;
-
- /**
- * Returns the overlays (bitfield of KIcon::*Overlay flags) that are used
- * for this item's pixmap. Overlays are used to show for example, whether
- * a file can be modified.
- * @return the overlays of the pixmap
- */
- int overlays() const;
-
- /**
- * Returns the string to be displayed in the statusbar,
- * e.g. when the mouse is over this item
- * @return the status bar information
- */
- TQString getStatusBarInfo();
-
- /**
- * Returns the string to be displayed in the tool tip when the mouse
- * is over this item. This may load a plugin to determine additional
- * information specific to the mimetype of the file.
- *
- * @param maxcount the maximum number of entries shown
- * @return the tool tip string
- */
- TQString getToolTipText(int maxcount = 6);
-
- /**
- * Returns true if files can be dropped over this item.
- * Contrary to popular belief, not only dirs will return true :)
- * Executables, .desktop files, will do so as well.
- * @return true if you can drop files over the item
- */
- bool acceptsDrops( );
-
- /**
- * Let's "KRun" this file !
- * (e.g. when file is clicked or double-clicked or return is pressed)
- */
- void run();
-
- /**
- * Returns the UDS entry. Used by the tree view to access all details
- * by position.
- * @return the UDS entry
- */
- const TDEIO::UDSEntry & entry() const { return m_entry; }
-
- /**
- * Used when updating a directory. marked == seen when refreshing.
- * @return true if the file item is marked
- */
- bool isMarked() const { return m_bMarked; }
- /**
- * Marks the item.
- * @see isMarked()
- */
- void mark() { m_bMarked = true; }
- /**
- * Unmarks the item.
- * @see isMarked()
- */
- void unmark() { m_bMarked = false; }
-
- /**
- * Somewhat like a comparison operator, but more explicit.
- * @param item the item to compare
- * @return true if all values are equal
- */
- bool cmp( const KFileItem & item );
-
- /**
- * This allows to associate some "extra" data to a KFileItem. As one
- * KFileItem can be used by several objects (often views) which all need
- * to add some data, you have to use a key to reference your extra data
- * within the KFileItem.
- *
- * That way a KFileItem can hold and provide access to all those views
- * separately.
- *
- * I.e. a KFileIconView that associates a KFileIconViewItem (an item suitable
- * for use with TQIconView) does
- *
- * \code
- * kfileItem->setExtraData( this, iconViewItem );
- * \endcode
- *
- * and can later access the iconViewItem by doing
- *
- * \code
- * KFileIconViewItem *iconViewItem = static_cast<KFileIconViewItem*>( kfileItem->extraData( this ));
- * \endcode
- *
- * This is usually more efficient then having every view associate data to
- * items by using a separate TQDict or TQMap.
- *
- * Note: you have to remove and destroy the data you associated yourself
- * when you don't need it anymore!
- *
- * @param key the key of the extra data
- * @param value the value of the extra data
- * @see extraData
- * @see removeExtraData
- */
- virtual void setExtraData( const void *key, void *value );
-
- /**
- * Retrieves the extra data with the given @p key.
- * @param key the key of the extra data
- * @return the extra data associated to an item with @p key via
- * setExtraData. 0L if nothing was associated with @p key.
- * @see extraData
- */
- virtual const void * extraData( const void *key ) const;
-
- /**
- * Retrieves the extra data with the given @p key.
- * @param key the key of the extra data
- * @return the extra data associated to an item with @p key via
- * setExtraData. 0L if nothing was associated with @p key.
- * @see extraData
- */
- virtual void * extraData( const void *key );
-
- /**
- * Removes the extra data associated with an item via @p key.
- * @param key the key of the extra data to remove
- */
- virtual void removeExtraData( const void *key );
-
- /**
- * Sets the metainfo of this item to @p info.
- * @param info the new meta info
- */
- void setMetaInfo( const KFileMetaInfo & info );
-
- /**
- * Sets the file type (stat.st_mode containing only S_IFDIR, S_IFLNK, ...).
- * @param m the new file type
- * @since 3.5.0
- * @todo Actually explain what this does -- does setting S_IFDIR
- * mean the file type is set to Directory?
- */
- void setFileMode( mode_t m );
-
- /**
- * Sets new mimetype for item
- * @param mimetype the new mimetype
- * @since 3.5.0
- */
- void setMimeType( const TQString& mimetype );
-
- /**
- * Returns the metainfo of this item.
- * @param autoget if true, the metainfo will automatically be created
- * @param what ignored
- */
- const KFileMetaInfo & metaInfo(bool autoget = true,
- int what = KFileMetaInfo::Fastest) const;
-
- /**
- * Somewhat like an assignment operator, but more explicit.
- * Note: extra-data set with setExtraData() is not copied, so be careful
- * what you do!
- *
- * @param item the item to copy
- */
- void assign( const KFileItem & item );
-
- /**
- * Reinitialize KFileItem with a new UDSEntry.
- *
- * Note: extra-data set with setExtraData() is not changed or deleted, so
- * be careful what you do!
- *
- * KDirListerCache uses it to save new/delete calls by updating existing
- * items that are otherwise not needed anymore.
- *
- * @param entry the UDSEntry to assign to this KFileItem
- * @param url the file url
- * @param determineMimeTypeOnDemand specifies if the mimetype of the given
- * URL should be determined immediately or on demand
- * @param urlIsDirectory specifies if the url is just the directory of the
- * fileitem and the filename from the UDSEntry should be used.
- * @since 3.4.1
- */
- void setUDSEntry( const TDEIO::UDSEntry& entry, const KURL& url,
- bool determineMimeTypeOnDemand = false,
- bool urlIsDirectory = false );
-
- /**
- * Assignment operator, calls assign()
- */
- KFileItem& operator=( const KFileItem& );
-
- /**
- * Tries to give a local URL for this file item if possible.
- * The given boolean indicates if the returned url is local or not.
- */
- KURL mostLocalURL(bool &local) const;
-
- /////////////
-
-protected:
- /**
- * Computes the text, mode, and mimetype from the UDSEntry
- * Called by constructor, but can be called again later
- */
- void init( bool _determineMimeTypeOnDemand );
-
- /**
- * Extracts the data from the UDSEntry member and updates the KFileItem
- * accordingly.
- * @since 3.4.1
- */
- void readUDSEntry( bool _urlIsDirectory );
-
- /**
- * Parses the given permission set and provides it for access()
- */
- TQString parsePermissions( mode_t perm ) const;
-
-private:
- /**
- * We keep a copy of the UDSEntry since we need it for getStatusBarInfo
- */
- TDEIO::UDSEntry m_entry;
- /**
- * The url of the file
- */
- KURL m_url;
-
- /**
- * The text for this item, i.e. the file name without path,
- */
- TQString m_strName;
-
- /**
- * The text for this item, i.e. the file name without path, decoded
- * ('%%' becomes '%', '%2F' becomes '/')
- */
- TQString m_strText;
-
- /**
- * the user and group assigned to the file.
- */
- mutable TQString m_user, m_group;
-
- /**
- * The filename in lower case (to speed up sorting)
- */
- mutable TQString m_strLowerCaseName;
-
- /**
- * The mimetype of the file
- */
- KMimeType::Ptr m_pMimeType;
-
- /**
- * The file mode
- */
- mode_t m_fileMode;
- /**
- * The permissions
- */
- mode_t m_permissions;
-
- /**
- * Marked : see mark()
- */
- bool m_bMarked:1;
- /**
- * Whether the file is a link
- */
- bool m_bLink:1;
- /**
- * True if local file
- */
- bool m_bIsLocalURL:1;
-
- bool m_bMimeTypeKnown:1;
-
- // Auto: check leading dot.
- enum { Auto, Hidden, Shown } m_hidden:3;
-
- // For special case like link to dirs over FTP
- TQString m_guessedMimeType;
- mutable TQString m_access;
- TQMap<const void*, void*> m_extra;
- mutable KFileMetaInfo m_metaInfo;
-
- enum { Modification = 0, Access = 1, Creation = 2, NumFlags = 3 };
- mutable time_t m_time[3];
- mutable TDEIO::filesize_t m_size;
-
-protected:
- virtual void virtual_hook( int id, void* data );
-private:
- class KFileItemPrivate;
- KFileItemPrivate * d;
- TDEIO_EXPORT friend TQDataStream & operator<< ( TQDataStream & s, const KFileItem & a );
- TDEIO_EXPORT friend TQDataStream & operator>> ( TQDataStream & s, KFileItem & a );
-};
-
-/**
- * List of KFileItems
- */
-typedef TQPtrList<KFileItem> KFileItemList;
-
-/**
- * Iterator for KFileItemList
- */
-typedef TQPtrListIterator<KFileItem> KFileItemListIterator;
-
-TDEIO_EXPORT TQDataStream & operator<< ( TQDataStream & s, const KFileItem & a );
-TDEIO_EXPORT TQDataStream & operator>> ( TQDataStream & s, KFileItem & a );
-
-
-#endif