123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727 |
- #include "qurlinfo.h"
- #include "qurl.h"
- #include "qdir.h"
- #include <limits.h>
- QT_BEGIN_NAMESPACE
- class QUrlInfoPrivate
- {
- public:
- QUrlInfoPrivate() :
- permissions(0),
- size(0),
- isDir(false),
- isFile(true),
- isSymLink(false),
- isWritable(true),
- isReadable(true),
- isExecutable(false)
- {}
- QString name;
- int permissions;
- QString owner;
- QString group;
- qint64 size;
- QDateTime lastModified;
- QDateTime lastRead;
- bool isDir;
- bool isFile;
- bool isSymLink;
- bool isWritable;
- bool isReadable;
- bool isExecutable;
- };
- QUrlInfo::QUrlInfo()
- {
- d = nullptr;
- }
- QUrlInfo::QUrlInfo(const QUrlInfo &ui)
- {
- if (ui.d) {
- d = new QUrlInfoPrivate;
- *d = *ui.d;
- } else {
- d = nullptr;
- }
- }
- QUrlInfo::QUrlInfo(const QString &name, int permissions, const QString &owner,
- const QString &group, qint64 size, const QDateTime &lastModified,
- const QDateTime &lastRead, bool isDir, bool isFile, bool isSymLink,
- bool isWritable, bool isReadable, bool isExecutable)
- {
- d = new QUrlInfoPrivate;
- 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;
- }
- QUrlInfo::QUrlInfo(const QUrl &url, int permissions, const QString &owner,
- const QString &group, qint64 size, const QDateTime &lastModified,
- const QDateTime &lastRead, bool isDir, bool isFile, bool isSymLink,
- bool isWritable, bool isReadable, bool isExecutable)
- {
- d = new QUrlInfoPrivate;
- d->name = QFileInfo(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;
- }
- void QUrlInfo::setName(const QString &name)
- {
- if (!d)
- d = new QUrlInfoPrivate;
- d->name = name;
- }
- void QUrlInfo::setDir(bool b)
- {
- if (!d)
- d = new QUrlInfoPrivate;
- d->isDir = b;
- }
- void QUrlInfo::setFile(bool b)
- {
- if (!d)
- d = new QUrlInfoPrivate;
- d->isFile = b;
- }
- void QUrlInfo::setSymLink(bool b)
- {
- if (!d)
- d = new QUrlInfoPrivate;
- d->isSymLink = b;
- }
- void QUrlInfo::setWritable(bool b)
- {
- if (!d)
- d = new QUrlInfoPrivate;
- d->isWritable = b;
- }
- void QUrlInfo::setReadable(bool b)
- {
- if (!d)
- d = new QUrlInfoPrivate;
- d->isReadable = b;
- }
- void QUrlInfo::setOwner(const QString &s)
- {
- if (!d)
- d = new QUrlInfoPrivate;
- d->owner = s;
- }
- void QUrlInfo::setGroup(const QString &s)
- {
- if (!d)
- d = new QUrlInfoPrivate;
- d->group = s;
- }
- void QUrlInfo::setSize(qint64 size)
- {
- if (!d)
- d = new QUrlInfoPrivate;
- d->size = size;
- }
- void QUrlInfo::setPermissions(int p)
- {
- if (!d)
- d = new QUrlInfoPrivate;
- d->permissions = p;
- }
- void QUrlInfo::setLastModified(const QDateTime &dt)
- {
- if (!d)
- d = new QUrlInfoPrivate;
- d->lastModified = dt;
- }
- void QUrlInfo::setLastRead(const QDateTime &dt)
- {
- if (!d)
- d = new QUrlInfoPrivate;
- d->lastRead = dt;
- }
- QUrlInfo::~QUrlInfo()
- {
- delete d;
- }
- QUrlInfo &QUrlInfo::operator=(const QUrlInfo &ui)
- {
- if (ui.d) {
- if (!d)
- d= new QUrlInfoPrivate;
- *d = *ui.d;
- } else {
- delete d;
- d = nullptr;
- }
- return *this;
- }
- QString QUrlInfo::name() const
- {
- if (!d)
- return QString();
- return d->name;
- }
- int QUrlInfo::permissions() const
- {
- if (!d)
- return 0;
- return d->permissions;
- }
- QString QUrlInfo::owner() const
- {
- if (!d)
- return QString();
- return d->owner;
- }
- QString QUrlInfo::group() const
- {
- if (!d)
- return QString();
- return d->group;
- }
- qint64 QUrlInfo::size() const
- {
- if (!d)
- return 0;
- return d->size;
- }
- QDateTime QUrlInfo::lastModified() const
- {
- if (!d)
- return QDateTime();
- return d->lastModified;
- }
- QDateTime QUrlInfo::lastRead() const
- {
- if (!d)
- return QDateTime();
- return d->lastRead;
- }
- bool QUrlInfo::isDir() const
- {
- if (!d)
- return false;
- return d->isDir;
- }
- bool QUrlInfo::isFile() const
- {
- if (!d)
- return false;
- return d->isFile;
- }
- bool QUrlInfo::isSymLink() const
- {
- if (!d)
- return false;
- return d->isSymLink;
- }
- bool QUrlInfo::isWritable() const
- {
- if (!d)
- return false;
- return d->isWritable;
- }
- bool QUrlInfo::isReadable() const
- {
- if (!d)
- return false;
- return d->isReadable;
- }
- bool QUrlInfo::isExecutable() const
- {
- if (!d)
- return false;
- return d->isExecutable;
- }
- bool QUrlInfo::greaterThan(const QUrlInfo &i1, const QUrlInfo &i2,
- int sortBy)
- {
- switch (sortBy) {
- case QDir::Name:
- return i1.name() > i2.name();
- case QDir::Time:
- return i1.lastModified() > i2.lastModified();
- case QDir::Size:
- return i1.size() > i2.size();
- default:
- return false;
- }
- }
- bool QUrlInfo::lessThan(const QUrlInfo &i1, const QUrlInfo &i2,
- int sortBy)
- {
- return !greaterThan(i1, i2, sortBy);
- }
- bool QUrlInfo::equal(const QUrlInfo &i1, const QUrlInfo &i2,
- int sortBy)
- {
- switch (sortBy) {
- case QDir::Name:
- return i1.name() == i2.name();
- case QDir::Time:
- return i1.lastModified() == i2.lastModified();
- case QDir::Size:
- return i1.size() == i2.size();
- default:
- return false;
- }
- }
- bool QUrlInfo::operator==(const QUrlInfo &other) const
- {
- if (!d)
- return other.d == nullptr;
- if (!other.d)
- return false;
- return (d->name == other.d->name &&
- d->permissions == other.d->permissions &&
- d->owner == other.d->owner &&
- d->group == other.d->group &&
- d->size == other.d->size &&
- d->lastModified == other.d->lastModified &&
- d->lastRead == other.d->lastRead &&
- d->isDir == other.d->isDir &&
- d->isFile == other.d->isFile &&
- d->isSymLink == other.d->isSymLink &&
- d->isWritable == other.d->isWritable &&
- d->isReadable == other.d->isReadable &&
- d->isExecutable == other.d->isExecutable);
- }
- bool QUrlInfo::isValid() const
- {
- return d != nullptr;
- }
- QT_END_NAMESPACE
|