[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/kio/kio
From: David Faure <faure () kde ! org>
Date: 2006-10-31 20:33:38
Message-ID: 1162326818.691403.11120.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 600782 by dfaure:
Reduce KFileItem memory usage: now that UDSEntry is a QHash<int,...> we can look up \
stuff directly (and even use it to store calculated values) Can probably be done for \
size and time too.
M +34 -43 kfileitem.cpp
--- trunk/KDE/kdelibs/kio/kio/kfileitem.cpp #600781:600782
@@ -107,9 +107,9 @@
QString parsePermissions( mode_t perm ) const;
/**
- * We keep a copy of the UDSEntry since we need it for getStatusBarInfo
+ * The UDSEntry that contains the data for this fileitem, if it came from a \
directory listing.
*/
- KIO::UDSEntry m_entry;
+ mutable KIO::UDSEntry m_entry;
/**
* The url of the file
*/
@@ -127,11 +127,6 @@
QString m_strText;
/**
- * the user and group assigned to the file.
- */
- mutable QString m_user, m_group; // TODO remove, and use m_entry.stringValue( \
KIO::UDS_USER ) instead.
-
- /**
* The filename in lower case (to speed up sorting)
*/
mutable QString m_strLowerCaseName;
@@ -172,7 +167,6 @@
// For special case like link to dirs over FTP
QString m_guessedMimeType;
mutable QString m_access;
- QString m_iconName;
QMap<const void*, void*> m_extra; // DEPRECATED
mutable KFileMetaInfo m_metaInfo;
@@ -241,8 +235,6 @@
m_strText = other.m_strText;
m_fileMode = other.m_fileMode;
m_permissions = other.m_permissions;
- m_user = other.m_user;
- m_group = other.m_group;
m_bLink = other.m_bLink;
m_pMimeType = other.m_pMimeType;
m_strLowerCaseName = other.m_strLowerCaseName;
@@ -259,8 +251,6 @@
// We had a mimetype previously (probably), so we need to re-determine it
determineMimeType();
-
- m_iconName = other.m_iconName;
}
#endif
@@ -270,8 +260,6 @@
m_fileMode = m_entry.numberValue( KIO::UDS_FILE_TYPE );
m_permissions = m_entry.numberValue( KIO::UDS_ACCESS );
- m_user = m_entry.stringValue( KIO::UDS_USER );
- m_group = m_entry.stringValue( KIO::UDS_GROUP );
m_strName = m_entry.stringValue( KIO::UDS_NAME );
m_strText = KIO::decodeFileName( m_strName );
const QString urlStr = m_entry.stringValue( KIO::UDS_URL );
@@ -289,8 +277,6 @@
m_guessedMimeType = m_entry.stringValue( KIO::UDS_GUESSED_MIME_TYPE );
m_bLink = !m_entry.stringValue( KIO::UDS_LINK_DEST ).isEmpty(); // we don't \
store the link dest
- m_iconName = m_entry.stringValue( KIO::UDS_ICON_NAME );
-
const int hiddenVal = m_entry.numberValue( KIO::UDS_HIDDEN, -1 );
m_hidden = hiddenVal == 1 ? Hidden : ( hiddenVal == 0 ? Shown : Auto );
@@ -370,13 +356,14 @@
&& m_bIsLocalUrl == item.m_bIsLocalUrl
&& m_fileMode == item.m_fileMode
&& m_permissions == item.m_permissions
- && m_user == item.m_user
- && m_group == item.m_group
+ && m_entry.stringValue( KIO::UDS_USER ) == item.m_entry.stringValue( \
KIO::UDS_USER ) + && m_entry.stringValue( KIO::UDS_GROUP ) == \
item.m_entry.stringValue( KIO::UDS_GROUP ) && m_bLink == item.m_bLink
&& m_hidden == item.m_hidden
&& size() == item.size()
&& time(KIO::UDS_MODIFICATION_TIME) == \
item.time(KIO::UDS_MODIFICATION_TIME)
- && m_iconName == m_iconName );
+ && m_entry.stringValue( KIO::UDS_ICON_NAME ) == \
item.m_entry.stringValue( KIO::UDS_ICON_NAME ) + );
// Don't compare the mimetypes here. They might not be known, and we don't want \
to // do the slow operation of determining them here.
@@ -484,8 +471,6 @@
d->m_fileMode = KFileItem::Unknown;
d->m_permissions = KFileItem::Unknown;
d->m_pMimeType = 0;
- d->m_user.clear();
- d->m_group.clear();
d->m_metaInfo = KFileMetaInfo();
d->m_hidden = KFileItemPrivate::Auto;
@@ -586,38 +571,44 @@
QString KFileItem::user() const
{
- if ( d->m_user.isEmpty() && d->m_bIsLocalUrl )
+ QString userName = d->m_entry.stringValue( KIO::UDS_USER );
+ if ( userName.isEmpty() && d->m_bIsLocalUrl )
{
KDE_struct_stat buff;
if ( KDE_lstat( QFile::encodeName(d->m_url.path( KUrl::RemoveTrailingSlash \
)), &buff ) == 0) // get uid/gid of the link, if it's a link {
- struct passwd *user = getpwuid( buff.st_uid );
- if ( user != 0L )
- d->m_user = QString::fromLocal8Bit(user->pw_name);
+ struct passwd *pwuser = getpwuid( buff.st_uid );
+ if ( pwuser != 0 ) {
+ userName = QString::fromLocal8Bit(pwuser->pw_name);
+ d->m_entry.insert( KIO::UDS_USER, userName );
+ }
}
}
- return d->m_user;
+ return userName;
}
QString KFileItem::group() const
{
-#ifdef Q_OS_UNIX
- if (d->m_group.isEmpty() && d->m_bIsLocalUrl )
+ QString groupName = d->m_entry.stringValue( KIO::UDS_GROUP );
+ if (groupName.isEmpty() && d->m_bIsLocalUrl )
{
KDE_struct_stat buff;
if ( KDE_lstat( QFile::encodeName(d->m_url.path( KUrl::RemoveTrailingSlash \
)), &buff ) == 0) // get uid/gid of the link, if it's a link {
+#ifdef Q_OS_UNIX
struct group *ge = getgrgid( buff.st_gid );
- if ( ge != 0L ) {
- d->m_group = QString::fromLocal8Bit(ge->gr_name);
- if (d->m_group.isEmpty())
- d->m_group.sprintf("%d",ge->gr_gid);
- } else
- d->m_group.sprintf("%d",buff.st_gid);
+ if ( ge != 0 ) {
+ groupName = QString::fromLocal8Bit(ge->gr_name);
+ if (groupName.isEmpty())
+ groupName.sprintf("%d",ge->gr_gid);
+ }
+ else
+#endif
+ groupName.sprintf("%d",buff.st_gid);
+ d->m_entry.insert( KIO::UDS_GROUP, groupName );
}
}
-#endif
- return d->m_group;
+ return groupName;
}
QString KFileItem::mimetype() const
@@ -667,7 +658,9 @@
QString KFileItem::iconName() const
{
- if (!d->m_iconName.isEmpty()) return d->m_iconName;
+ const QString iconName = d->m_entry.stringValue( KIO::UDS_ICON_NAME );
+ if (!iconName.isEmpty())
+ return iconName;
bool isLocalUrl;
KUrl url = mostLocalUrl(isLocalUrl);
@@ -706,8 +699,9 @@
QPixmap KFileItem::pixmap( int _size, int _state ) const
{
- if ( !d->m_iconName.isEmpty() )
- return DesktopIcon(d->m_iconName, _size, _state);
+ const QString iconName = d->m_entry.stringValue( KIO::UDS_ICON_NAME );
+ if ( !iconName.isEmpty() )
+ return DesktopIcon(iconName, _size, _state);
if ( !d->m_pMimeType )
{
@@ -912,7 +906,7 @@
#ifndef Q_WS_WIN //TODO: show win32-specific permissions
+start + i18n("Owner:") + mid + user() + " - " + group() + end +
start + i18n("Permissions:") + mid +
- d->parsePermissions(d->m_permissions) + end
+ permissionsString() + end
#endif
;
@@ -972,8 +966,6 @@
d->m_url = _url;
d->m_strName.clear();
d->m_strText.clear();
- d->m_user.clear();
- d->m_group.clear();
d->m_strLowerCaseName.clear();
d->m_pMimeType = 0;
d->m_fileMode = KFileItem::Unknown;
@@ -985,7 +977,6 @@
d->m_hidden = KFileItemPrivate::Auto;
d->m_guessedMimeType.clear();
d->m_metaInfo = KFileMetaInfo();
- d->m_iconName.clear();
d->m_bDetermineMimeTypeOnDemand = _determineMimeTypeOnDemand;
d->readUDSEntry( _urlIsDirectory );
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic