diff options
| author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-07-10 15:17:53 -0500 | 
|---|---|---|
| committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-07-10 15:17:53 -0500 | 
| commit | dda8474928bd7276e1fad8fb7a601e7c83ff2bc2 (patch) | |
| tree | 7f83910598b33b12730035f086df20b5a53ab99c /tqtinterface/qt4/src/kernel/tqurlinfo.cpp | |
| parent | 6260b6178868c03aab1644bf93b0ef043654bdb0 (diff) | |
| download | experimental-dda8474928bd7276e1fad8fb7a601e7c83ff2bc2.tar.gz experimental-dda8474928bd7276e1fad8fb7a601e7c83ff2bc2.zip | |
Added TQt4 HEAD
Diffstat (limited to 'tqtinterface/qt4/src/kernel/tqurlinfo.cpp')
| -rw-r--r-- | tqtinterface/qt4/src/kernel/tqurlinfo.cpp | 761 | 
1 files changed, 761 insertions, 0 deletions
| diff --git a/tqtinterface/qt4/src/kernel/tqurlinfo.cpp b/tqtinterface/qt4/src/kernel/tqurlinfo.cpp new file mode 100644 index 0000000..60b9f15 --- /dev/null +++ b/tqtinterface/qt4/src/kernel/tqurlinfo.cpp @@ -0,0 +1,761 @@ +/**************************************************************************** +** +** Implementation of TQUrlInfo class +** +** Created : 950429 +** +** Copyright (C) 2010 Timothy Pearson and (C) 1992-2008 Trolltech ASA. +** +** This file is part of the kernel module of the TQt GUI Toolkit. +** +** This file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free +** Software Foundation and appearing in the files LICENSE.GPL2 +** and LICENSE.GPL3 included in the packaging of this file. +** Alternatively you may (at your option) use any later version +** of the GNU General Public License if such license has been +** publicly approved by Trolltech ASA (or its successors, if any) +** and the KDE Free TQt Foundation. +** +** Please review the following information to ensure GNU General +** Public Licensing requirements will be met: +** http://trolltech.com/products/qt/licenses/licensing/opensource/. +** If you are unsure which license is appropriate for your use, please +** review the following information: +** http://trolltech.com/products/qt/licenses/licensing/licensingoverview +** or contact the sales department at sales@trolltech.com. +** +** This file may be used under the terms of the Q Public License as +** defined by Trolltech ASA and appearing in the file LICENSE.TQPL +** included in the packaging of this file.  Licensees holding valid TQt +** Commercial licenses may use this file in accordance with the TQt +** Commercial License Agreement provided with the Software. +** +** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, +** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted +** herein. +** +**********************************************************************/ + +#include "tqurlinfo.h" + +#ifndef TQT_NO_NETWORKPROTOCOL + +#include "tqurloperator.h" +#include "tqdir.h" +#include <limits.h> + +class TQUrlInfoPrivate +{ +public: +    TQUrlInfoPrivate() : +	permissions(0), +	size(0), +	isDir(FALSE), +	isFile(TRUE), +	isSymLink(FALSE), +	isWritable(TRUE), +	isReadable(TRUE), +	isExecutable(FALSE) +    {} + +    TQString name; +    int permissions; +    TQString owner; +    TQString group; +#if defined(TQT_LARGEFILE_SUPPORT) +    TQIODevice::Offset size; +#else +    uint size; +#endif +    TQDateTime lastModified; +    TQDateTime lastRead; +    bool isDir; +    bool isFile; +    bool isSymLink; +    bool isWritable; +    bool isReadable; +    bool isExecutable; +}; + + +/*! +    \class TQUrlInfo tqurlinfo.h +    \brief The TQUrlInfo class stores information about URLs. + +    \ingroup io +    \ingroup misc + +    This class is just a container for storing information about URLs, +    which is why all information must be passed in the constructor. + +    Unless you're reimplementing a network protocol you're unlikely to +    create TQUrlInfo objects yourself, but you may receive TQUrlInfo +    objects from functions, e.g. TQUrlOperator::info(). + +    The information that can be retrieved includes name(), +    permissions(), owner(), group(), size(), lastModified(), +    lastRead(), isDir(), isFile(), isSymLink(), isWritable(), +    isReadable() and isExecutable(). +*/ + +/*! +    \enum TQUrlInfo::PermissionSpec + +    This enum is used by the permissions() function to report the +    permissions of a file. + +    \value ReadOwner The file is readable by the owner of the file. +    \value WriteOwner The file is writable by the owner of the file. +    \value ExeOwner The file is executable by the owner of the file. +    \value ReadGroup The file is readable by the group. +    \value WriteGroup The file is writable by the group. +    \value ExeGroup The file is executable by the group. +    \value ReadOther The file is readable by anyone. +    \value WriteOther The file is writable by anyone. +    \value ExeOther The file is executable by anyone. +*/ + +/*! +    Constructs an invalid TQUrlInfo object with default values. + +    \sa isValid() +*/ + +TQUrlInfo::TQUrlInfo() +{ +    d = 0; +} + +/*! +    Constructs a TQUrlInfo object with information about the file \a +    file in the \a path. It tries to tqfind the information about the \a +    file in the TQUrlOperator \a path. + +    If the information is not found, this constructor creates an +    invalid TQUrlInfo, i.e. isValid() returns FALSE. You should always +    check if the URL info is valid before relying on the return values +    of any getter functions. + +    If \a file is empty, it defaults to the TQUrlOperator \a path, i.e. +    to the directory. + +    \sa isValid() TQUrlOperator::info() +*/ + +TQUrlInfo::TQUrlInfo( const TQUrlOperator &path, const TQString &file ) +{ +    TQString file_ = file; +    if ( file_.isEmpty() ) +	file_ = "."; + +    TQUrlInfo inf = path.info( file_ ); +    if ( inf.d ) { +	d = new TQUrlInfoPrivate; +	*d = *inf.d; +    } else { +	d = 0; +    } +} + +/*! +    Copy constructor, copies \a ui to this URL info object. +*/ + +TQUrlInfo::TQUrlInfo( const TQUrlInfo &ui ) +{ +    if ( ui.d ) { +	d = new TQUrlInfoPrivate; +	*d = *ui.d; +    } else { +	d = 0; +    } +} + +/*! +    Constructs a TQUrlInfo object by specifying all the URL's +    information. + +    The information that is passed is the \a name, file \a +    permissions, \a owner and \a group and the file's \a size. Also +    passed is the \a lastModified date/time and the \a lastRead +    date/time. Flags are also passed, specifically, \a isDir, \a +    isFile, \a isSymLink, \a isWritable, \a isReadable and \a +    isExecutable. +*/ + +#if defined(TQT_ABI_QT4) +TQUrlInfo::TQUrlInfo( const TQString &name, int permissions, const TQString &owner, +		    const TQString &group, TQIODevice::Offset size, const TQDateTime &lastModified, +		    const TQDateTime &lastRead, bool isDir, bool isFile, bool isSymLink, +		    bool isWritable, bool isReadable, bool isExecutable ) +#else +TQUrlInfo::TQUrlInfo( const TQString &name, int permissions, const TQString &owner, +		    const TQString &group, uint size, const TQDateTime &lastModified, +		    const TQDateTime &lastRead, bool isDir, bool isFile, bool isSymLink, +		    bool isWritable, bool isReadable, bool isExecutable ) +#endif +{ +    d = new TQUrlInfoPrivate; +    d->name = name; +    d->permissions = permissions; +    d->owner = owner; +    d->group = group; +    d->size = size; +    d->lastModified = lastModified; +    d->lastRead = lastRead; +    d->isDir = isDir; +    d->isFile = isFile; +    d->isSymLink = isSymLink; +    d->isWritable = isWritable; +    d->isReadable = isReadable; +    d->isExecutable = isExecutable; +} + + +/*! +    Constructs a TQUrlInfo object by specifying all the URL's +    information. + +    The information that is passed is the \a url, file \a +    permissions, \a owner and \a group and the file's \a size. Also +    passed is the \a lastModified date/time and the \a lastRead +    date/time. Flags are also passed, specifically, \a isDir, \a +    isFile, \a isSymLink, \a isWritable, \a isReadable and \a +    isExecutable. +*/ + +#if defined(TQT_ABI_QT4) +TQUrlInfo::TQUrlInfo( const TQUrl &url, int permissions, const TQString &owner, +		    const TQString &group, TQIODevice::Offset size, const TQDateTime &lastModified, +		    const TQDateTime &lastRead, bool isDir, bool isFile, bool isSymLink, +		    bool isWritable, bool isReadable, bool isExecutable ) +#else +TQUrlInfo::TQUrlInfo( const TQUrl &url, int permissions, const TQString &owner, +		    const TQString &group, uint size, const TQDateTime &lastModified, +		    const TQDateTime &lastRead, bool isDir, bool isFile, bool isSymLink, +		    bool isWritable, bool isReadable, bool isExecutable ) +#endif +{ +    d = new TQUrlInfoPrivate; +    d->name = TQFileInfo( url.path() ).fileName(); +    d->permissions = permissions; +    d->owner = owner; +    d->group = group; +    d->size = size; +    d->lastModified = lastModified; +    d->lastRead = lastRead; +    d->isDir = isDir; +    d->isFile = isFile; +    d->isSymLink = isSymLink; +    d->isWritable = isWritable; +    d->isReadable = isReadable; +    d->isExecutable = isExecutable; +} + + +/*! +    Sets the name of the URL to \a name. The name is the full text, +    for example, "http://doc.trolltech.com/tqurlinfo.html". + +    If you call this function for an invalid URL info, this function +    turns it into a valid one. + +    \sa isValid() +*/ + +void TQUrlInfo::setName( const TQString &name ) +{ +    if ( !d ) +	d = new TQUrlInfoPrivate; +    d->name = name; +} + + +/*! +    If \a b is TRUE then the URL is set to be a directory; if \b is +    FALSE then the URL is set not to be a directory (which normally +    means it is a file). (Note that a URL can refer to both a file and +    a directory even though most file systems do not support this.) + +    If you call this function for an invalid URL info, this function +    turns it into a valid one. + +    \sa isValid() +*/ + +void TQUrlInfo::setDir( bool b ) +{ +    if ( !d ) +	d = new TQUrlInfoPrivate; +    d->isDir = b; +} + + +/*! +    If \a b is TRUE then the URL is set to be a file; if \b is FALSE +    then the URL is set not to be a file (which normally means it is a +    directory). (Note that a URL can refer to both a file and a +    directory even though most file systems do not support this.) + +    If you call this function for an invalid URL info, this function +    turns it into a valid one. + +    \sa isValid() +*/ + +void TQUrlInfo::setFile( bool b ) +{ +    if ( !d ) +	d = new TQUrlInfoPrivate; +    d->isFile = b; +} + + +/*! +    Specifies that the URL refers to a symbolic link if \a b is TRUE +    and that it does not if \a b is FALSE. + +    If you call this function for an invalid URL info, this function +    turns it into a valid one. + +    \sa isValid() +*/ + +void TQUrlInfo::setSymLink( bool b ) +{ +    if ( !d ) +	d = new TQUrlInfoPrivate; +    d->isSymLink = b; +} + + +/*! +    Specifies that the URL is writable if \a b is TRUE and not +    writable if \a b is FALSE. + +    If you call this function for an invalid URL info, this function +    turns it into a valid one. + +    \sa isValid() +*/ + +void TQUrlInfo::setWritable( bool b ) +{ +    if ( !d ) +	d = new TQUrlInfoPrivate; +    d->isWritable = b; +} + + +/*! +    Specifies that the URL is readable if \a b is TRUE and not +    readable if \a b is FALSE. + +    If you call this function for an invalid URL info, this function +    turns it into a valid one. + +    \sa isValid() +*/ + +void TQUrlInfo::setReadable( bool b ) +{ +    if ( !d ) +	d = new TQUrlInfoPrivate; +    d->isReadable = b; +} + +/*! +    Specifies that the owner of the URL is called \a s. + +    If you call this function for an invalid URL info, this function +    turns it into a valid one. + +    \sa isValid() +*/ + +void TQUrlInfo::setOwner( const TQString &s ) +{ +    if ( !d ) +	d = new TQUrlInfoPrivate; +    d->owner = s; +} + +/*! +    Specifies that the owning group of the URL is called \a s. + +    If you call this function for an invalid URL info, this function +    turns it into a valid one. + +    \sa isValid() +*/ + +void TQUrlInfo::setGroup( const TQString &s ) +{ +    if ( !d ) +	d = new TQUrlInfoPrivate; +    d->group = s; +} + +/*! +    Specifies the \a size of the URL. + +    If you call this function for an invalid URL info, this function +    turns it into a valid one. + +    \sa isValid() +*/ + +#if defined(TQT_ABI_QT4) +void TQUrlInfo::setSize( TQIODevice::Offset size ) +#else +void TQUrlInfo::setSize( uint size ) +#endif +{ +    if ( !d ) +	d = new TQUrlInfoPrivate; +    d->size = size; +} + + +// ### reggie - what's the permission type? As in Unix? + +/*! +    Specifies that the URL has access permisions, \a p. + +    If you call this function for an invalid URL info, this function +    turns it into a valid one. + +    \sa isValid() +*/ + +void TQUrlInfo::setPermissions( int p ) +{ +    if ( !d ) +	d = new TQUrlInfoPrivate; +    d->permissions = p; +} + +/*! +    Specifies that the object the URL refers to was last modified at +    \a dt. + +    If you call this function for an invalid URL info, this function +    turns it into a valid one. + +    \sa isValid() +*/ + +void TQUrlInfo::setLastModified( const TQDateTime &dt ) +{ +    if ( !d ) +	d = new TQUrlInfoPrivate; +    d->lastModified = dt; +} + +/*! +    Destroys the URL info object. + +    The TQUrlOperator object to which this URL referred (if any) is not +    affected. +*/ + +TQUrlInfo::~TQUrlInfo() +{ +    delete d; +} + +/*! +    Assigns the values of \a ui to this TQUrlInfo object. +*/ + +TQUrlInfo &TQUrlInfo::operator=( const TQUrlInfo &ui ) +{ +    if ( ui.d ) { +	if ( !d ) +	    d= new TQUrlInfoPrivate; +	*d = *ui.d; +    } else { +	delete d; +	d = 0; +    } +    return *this; +} + +/*! +    Returns the file name of the URL. + +    \sa isValid() +*/ + +TQString TQUrlInfo::name() const +{ +    if ( !d ) +	return TQString::null; +    return d->name; +} + +/*! +    Returns the permissions of the URL. You can use the \c PermissionSpec flags +    to test for certain permissions. + +    \sa isValid() +*/ + +int TQUrlInfo::permissions() const +{ +    if ( !d ) +	return 0; +    return d->permissions; +} + +/*! +    Returns the owner of the URL. + +    \sa isValid() +*/ + +TQString TQUrlInfo::owner() const +{ +    if ( !d ) +	return TQString::null; +    return d->owner; +} + +/*! +    Returns the group of the URL. + +    \sa isValid() +*/ + +TQString TQUrlInfo::group() const +{ +    if ( !d ) +	return TQString::null; +    return d->group; +} + +/*! +    Returns the size of the URL. + +    \sa isValid() +*/ + +#if defined(TQT_ABI_QT4) +TQIODevice::Offset TQUrlInfo::size() const +#else +uint TQUrlInfo::size() const +#endif +{ +    if ( !d ) +	return 0; +#if defined(TQT_LARGEFILE_SUPPORT) && !defined(TQT_ABI_QT4) +    return d->size > UINT_MAX ? UINT_MAX : (uint)d->size; +#else +    return d->size; +#endif +} + +/*! +    Returns the last modification date of the URL. + +    \sa isValid() +*/ + +TQDateTime TQUrlInfo::lastModified() const +{ +    if ( !d ) +	return TQDateTime(); +    return d->lastModified; +} + +/*! +    Returns the date when the URL was last read. + +    \sa isValid() +*/ + +TQDateTime TQUrlInfo::lastRead() const +{ +    if ( !d ) +	return TQDateTime(); +    return d->lastRead; +} + +/*! +    Returns TRUE if the URL is a directory; otherwise returns FALSE. + +    \sa isValid() +*/ + +bool TQUrlInfo::isDir() const +{ +    if ( !d ) +	return FALSE; +    return d->isDir; +} + +/*! +    Returns TRUE if the URL is a file; otherwise returns FALSE. + +    \sa isValid() +*/ + +bool TQUrlInfo::isFile() const +{ +    if ( !d ) +	return FALSE; +    return d->isFile; +} + +/*! +    Returns TRUE if the URL is a symbolic link; otherwise returns FALSE. + +    \sa isValid() +*/ + +bool TQUrlInfo::isSymLink() const +{ +    if ( !d ) +	return FALSE; +    return d->isSymLink; +} + +/*! +    Returns TRUE if the URL is writable; otherwise returns FALSE. + +    \sa isValid() +*/ + +bool TQUrlInfo::isWritable() const +{ +    if ( !d ) +	return FALSE; +    return d->isWritable; +} + +/*! +    Returns TRUE if the URL is readable; otherwise returns FALSE. + +    \sa isValid() +*/ + +bool TQUrlInfo::isReadable() const +{ +    if ( !d ) +	return FALSE; +    return d->isReadable; +} + +/*! +    Returns TRUE if the URL is executable; otherwise returns FALSE. + +    \sa isValid() +*/ + +bool TQUrlInfo::isExecutable() const +{ +    if ( !d ) +	return FALSE; +    return d->isExecutable; +} + +/*! +    Returns TRUE if \a i1 is greater than \a i2; otherwise returns +    FALSE. The objects are compared by the value, which is specified +    by \a sortBy. This must be one of TQDir::Name, TQDir::Time or +    TQDir::Size. +*/ + +bool TQUrlInfo::greaterThan( const TQUrlInfo &i1, const TQUrlInfo &i2, +			    int sortBy ) +{ +    switch ( sortBy ) { +    case TQDir::Name: +	return i1.name() > i2.name(); +    case TQDir::Time: +	return i1.lastModified() > i2.lastModified(); +    case TQDir::Size: +	return i1.size() > i2.size(); +    default: +	return FALSE; +    } +} + +/*! +    Returns TRUE if \a i1 is less than \a i2; otherwise returns FALSE. +    The objects are compared by the value, which is specified by \a +    sortBy. This must be one of TQDir::Name, TQDir::Time or TQDir::Size. +*/ + +bool TQUrlInfo::lessThan( const TQUrlInfo &i1, const TQUrlInfo &i2, +			 int sortBy ) +{ +    return !greaterThan( i1, i2, sortBy ); +} + +/*! +    Returns TRUE if \a i1 equals to \a i2; otherwise returns FALSE. +    The objects are compared by the value, which is specified by \a +    sortBy. This must be one of TQDir::Name, TQDir::Time or TQDir::Size. +*/ + +bool TQUrlInfo::equal( const TQUrlInfo &i1, const TQUrlInfo &i2, +		      int sortBy ) +{ +    switch ( sortBy ) { +    case TQDir::Name: +	return i1.name() == i2.name(); +    case TQDir::Time: +	return i1.lastModified() == i2.lastModified(); +    case TQDir::Size: +	return i1.size() == i2.size(); +    default: +	return FALSE; +    } +} + +/*! +    Compares this TQUrlInfo with \a i and returns TRUE if they are +    equal; otherwise returns FALSE. +*/ + +bool TQUrlInfo::operator==( const TQUrlInfo &i ) const +{ +    if ( !d ) +	return i.d == 0; +    if ( !i.d ) +	return FALSE; + +    return ( d->name == i.d->name && +	     d->permissions == i.d->permissions && +	     d->owner == i.d->owner && +	     d->group == i.d->group && +	     d->size == i.d->size && +	     d->lastModified == i.d->lastModified && +	     d->lastRead == i.d->lastRead && +	     d->isDir == i.d->isDir && +	     d->isFile == i.d->isFile && +	     d->isSymLink == i.d->isSymLink && +	     d->isWritable == i.d->isWritable && +	     d->isReadable == i.d->isReadable && +	     d->isExecutable == i.d->isExecutable ); +} + +/*! +    Returns TRUE if the URL info is valid; otherwise returns FALSE. +    Valid means that the TQUrlInfo tqcontains real information. For +    example, a call to TQUrlOperator::info() might return a an invalid +    TQUrlInfo, if no information about the requested entry is +    available. + +    You should always check if the URL info is valid before relying on +    the values. +*/ +bool TQUrlInfo::isValid() const +{ +    return d != 0; +} + +#endif // TQT_NO_NETWORKPROTOCOL | 
