[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/3.5/kdelibs/kio/kio
From:       David Faure <faure () kde ! org>
Date:       2005-08-09 2:10:28
Message-ID: 1123553428.117901.30535.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 444176 by dfaure:

Commit patch by Tobi Vollebregt <tobivollebregt gmail.com> to add
support for UDS_HIDDEN, i.e. a kioslave can decide which files should be hidden
by default.

Till: I think the new UDS type will conflict with your ACL's UDS type,
sorry about that, first one wins :)


 M  +4 -1      global.h  
 M  +1 -1      kdirlister.cpp  
 M  +1 -1      kfilefilter.cpp  
 M  +17 -0     kfileitem.cpp  
 M  +7 -3      kfileitem.h  


--- branches/KDE/3.5/kdelibs/kio/kio/global.h #444175:444176
@@ -325,8 +325,11 @@
     /// A local file path if the ioslave display files sitting
     /// on the local filesystem (but in another hierarchy, e.g. media:/)
     UDS_LOCAL_PATH = 72 | UDS_STRING,
+    /// Treat the file as a hidden file or as a normal file,
+    /// regardless of (the absence of) a leading dot in the filename.
+    UDS_HIDDEN = 80 | UDS_LONG,
 
-    // available: 80, 88, 92, 100, 108 etc.
+    // available: 88, 92, 100, 108 etc.
 
     /// Access permissions (part of the mode returned by stat)
     UDS_ACCESS = 128 | UDS_LONG,
--- branches/KDE/3.5/kdelibs/kio/kio/kdirlister.cpp #444175:444176
@@ -2113,7 +2113,7 @@
   if ( item->text() == dotdot )
     return false;
 
-  if ( !d->isShowingDotFiles && item->text()[0] == '.' )
+  if ( !d->isShowingDotFiles && item->isHidden() )
     return false;
 
   if ( item->isDir() || d->lstFilters.isEmpty() )
--- branches/KDE/3.5/kdelibs/kio/kio/kfilefilter.cpp #444175:444176
@@ -84,7 +84,7 @@
 
     const QString& name = item->name();
 
-    if ( m_filterDotFiles && name.at(0) == '.' )
+    if ( m_filterDotFiles && item->isHidden() )
         return false;
 
     if ( m_filterSpecials && (name == dot || name == dotdot) )
--- branches/KDE/3.5/kdelibs/kio/kio/kfileitem.cpp #444175:444176
@@ -62,6 +62,7 @@
   m_bLink( false ),
   m_bIsLocalURL( _url.isLocalFile() ),
   m_bMimeTypeKnown( false ),
+  m_hidden( Auto ),
   d(0)
 {
   readUDSEntry( _urlIsDirectory );
@@ -80,6 +81,7 @@
   m_bLink( false ),
   m_bIsLocalURL( _url.isLocalFile() ),
   m_bMimeTypeKnown( false ),
+  m_hidden( Auto ),
   d(0)
 {
   init( _determineMimeTypeOnDemand );
@@ -96,6 +98,7 @@
   m_bLink( false ),
   m_bIsLocalURL( url.isLocalFile() ),
   m_bMimeTypeKnown( !mimeType.isEmpty() ),
+  m_hidden( Auto ),
   d(0)
 {
   if (m_bMimeTypeKnown)
@@ -238,6 +241,13 @@
           d = new KFileItemPrivate();
         d->iconName = (*it).m_str;
         break;
+
+      case KIO::UDS_HIDDEN:
+        if ( (*it).m_long )
+          m_hidden = Hidden;
+        else
+          m_hidden = Shown;
+        break;
     }
   }
 
@@ -255,6 +265,7 @@
   m_user = QString::null;
   m_group = QString::null;
   m_metaInfo = KFileMetaInfo();
+  m_hidden = Auto;
 
   // Basically, we can't trust any information we got while listing.
   // Everything could have changed...
@@ -597,6 +608,9 @@
 
 bool KFileItem::isHidden() const
 {
+  if ( m_hidden != Auto )
+      return m_hidden == Hidden;
+
   if ( !m_url.isEmpty() )
       return m_url.fileName()[0] == '.';
   else // should never happen
@@ -779,6 +793,7 @@
              && m_user == item.m_user
              && m_group == item.m_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)
              && mimetype() == item.mimetype()
@@ -802,6 +817,7 @@
     m_pMimeType = item.m_pMimeType;
     m_strLowerCaseName = item.m_strLowerCaseName;
     m_bMimeTypeKnown = item.m_bMimeTypeKnown;
+    m_hidden = item.m_hidden;
     m_guessedMimeType   = item.m_guessedMimeType;
     m_access            = item.m_access;
     m_metaInfo          = item.m_metaInfo;
@@ -841,6 +857,7 @@
   m_bLink = false;
   m_bIsLocalURL = _url.isLocalFile();
   m_bMimeTypeKnown = false;
+  m_hidden = Auto;
   m_guessedMimeType = QString::null;
   m_metaInfo = KFileMetaInfo();
 
--- branches/KDE/3.5/kdelibs/kio/kio/kfileitem.h #444175:444176
@@ -458,20 +458,20 @@
    * 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
@@ -576,6 +576,10 @@
 
   bool m_bMimeTypeKnown:1;
 
+  enum { Auto = 0, Hidden = 1, Shown = 2 };
+  // One of Auto, Hidden, Shown. Auto: check leading dot.
+  unsigned char m_hidden:2;
+
    // For special case like link to dirs over FTP
   QString m_guessedMimeType;
   mutable QString m_access;
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic