]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/viewproperties.cpp
Only browse through zip and tar files if they are local (otherwise a cryptic error...
[dolphin.git] / src / viewproperties.cpp
index 319a06bc230a16c834fcd758fc366e70aa21570b..b46ecb87e13cad8cc6c35159cdc8ab278d801ebf 100644 (file)
@@ -59,7 +59,8 @@ ViewProperties::ViewProperties(const KUrl& url) :
     m_filepath = cleanUrl.path();
 
     if ((m_filepath.length() < 1) || (m_filepath.at(0) != QChar('/'))) {
-        m_node = new ViewPropertySettings();
+        const QString file = destinationDir("global") + FILE_NAME;
+        m_node = new ViewPropertySettings(KSharedConfig::openConfig(file));
         return;
     }
 
@@ -79,7 +80,7 @@ ViewProperties::ViewProperties(const KUrl& url) :
         m_filepath = destinationDir("remote") + m_filepath;
     }
 
-    const QString file(m_filepath + FILE_NAME);
+    const QString file = m_filepath + FILE_NAME;
     m_node = new ViewPropertySettings(KSharedConfig::openConfig(file));
 
     const bool useDefaultProps = !useGlobalViewProps &&
@@ -197,17 +198,65 @@ Qt::SortOrder ViewProperties::sortOrder() const
     return static_cast<Qt::SortOrder>(m_node->sortOrder());
 }
 
-void ViewProperties::setAdditionalInfo(KFileItemDelegate::AdditionalInformation info)
+void ViewProperties::setAdditionalInfo(KFileItemDelegate::InformationList list)
 {
+    int info = NoInfo;
+    foreach (KFileItemDelegate::Information currentInfo, list) {
+        switch (currentInfo) {
+        case KFileItemDelegate::Size:
+            info = info | SizeInfo;
+            break;
+        case KFileItemDelegate::ModificationTime:
+            info = info | DateInfo;
+            break;
+        case KFileItemDelegate::Permissions:
+            info = info | PermissionsInfo;
+            break;
+        case KFileItemDelegate::Owner:
+            info = info | OwnerInfo;
+            break;
+        case KFileItemDelegate::OwnerAndGroup:
+            info = info | GroupInfo;
+            break;
+        case KFileItemDelegate::FriendlyMimeType:
+            info = info | TypeInfo;
+            break;
+        default:
+            break;
+        }
+    }
+
     if (m_node->additionalInfo() != info) {
         m_node->setAdditionalInfo(info);
         updateTimeStamp();
     }
 }
 
-KFileItemDelegate::AdditionalInformation ViewProperties::additionalInfo() const
+KFileItemDelegate::InformationList ViewProperties::additionalInfo() const
 {
-    return static_cast<KFileItemDelegate::AdditionalInformation>(m_node->additionalInfo());
+    const int info = m_node->additionalInfo();
+
+    KFileItemDelegate::InformationList list;
+    if (info & SizeInfo) {
+        list.append(KFileItemDelegate::Size);
+    }
+    if (info & DateInfo) {
+        list.append(KFileItemDelegate::ModificationTime);
+    }
+    if (info & PermissionsInfo) {
+        list.append(KFileItemDelegate::Permissions);
+    }
+    if (info & OwnerInfo) {
+        list.append(KFileItemDelegate::Owner);
+    }
+    if (info & GroupInfo) {
+        list.append(KFileItemDelegate::OwnerAndGroup);
+    }
+    if (info & TypeInfo) {
+        list.append(KFileItemDelegate::FriendlyMimeType);
+    }
+
+    return list;
 }