[haiku-commits] r35126 - haiku/trunk/src/kits/tracker

  • From: anevilyak@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 17 Jan 2010 19:12:39 +0100 (CET)

Author: anevilyak
Date: 2010-01-17 19:12:39 +0100 (Sun, 17 Jan 2010)
New Revision: 35126
Changeset: http://dev.haiku-os.org/changeset/35126/haiku

Modified:
   haiku/trunk/src/kits/tracker/Model.cpp
   haiku/trunk/src/kits/tracker/Model.h
Log:
Add a special node type for the Trash analogous to the one used for the root 
dir. This allows the model to return an arbitrary name not directly tied to the 
on-disk name for the Trash directory, which a) makes it localizable in the 
future, and b) means it's not tied to the on-disk name, which removes the 
requirement that the Trash dir name be uppercase on disk.



Modified: haiku/trunk/src/kits/tracker/Model.cpp
===================================================================
--- haiku/trunk/src/kits/tracker/Model.cpp      2010-01-17 17:35:06 UTC (rev 
35125)
+++ haiku/trunk/src/kits/tracker/Model.cpp      2010-01-17 18:12:39 UTC (rev 
35126)
@@ -331,10 +331,17 @@
        switch (fBaseType) {
                case kRootNode:
                        return "Disks";
+                       
                case kVolumeNode:
                        if (fVolumeName)
                                return fVolumeName;
-                       // fall thru
+                               
+               case kTrashNode:
+                       return "Trash";
+                       
+               default:
+                       break;
+
        }
        return fEntryRef.name;
 }
@@ -402,6 +409,7 @@
                case kDirectoryNode:
                case kVolumeNode:
                case kRootNode:
+               case kTrashNode:
                        if (!IsNodeOpen())
                                fNode = new BDirectory(&fEntryRef);
 
@@ -542,6 +550,7 @@
 Model::FinishSettingUpType()
 {
        char mimeString[B_MIME_TYPE_LENGTH];
+       BEntry entry;
 
        // while we are reading the node, do a little
        // snooping to see if it even makes sense to look for a node-based
@@ -587,6 +596,10 @@
 
        switch (fBaseType) {
                case kDirectoryNode:
+                       entry.SetTo(&fEntryRef);
+                       if (entry.InitCheck() == B_OK && FSIsTrashDir(&entry)) 
+                               fBaseType = kTrashNode;
+                       
                        fMimeType = B_DIR_MIMETYPE;     // should use a shared 
string here
                        if (IsNodeOpen()) {
                                BNodeInfo info(fNode);
@@ -672,7 +685,8 @@
                return;
 
        // mirror the logic from FinishSettingUpType
-       if ((fBaseType == kDirectoryNode || fBaseType == kVolumeNode)
+       if ((fBaseType == kDirectoryNode || fBaseType == kVolumeNode
+               || fBaseType == kTrashNode)
                && !CheckNodeIconHintPrivate(fNode, dynamic_cast<TTracker 
*>(be_app) == NULL)) {
                if (WellKnowEntryList::Match(NodeRef()) > (directory_which)-1) {
                        fIconFrom = kTrackerSupplied;
@@ -1249,6 +1263,7 @@
                        break;
 
                case kDirectoryNode:
+               case kTrashNode:
                        PRINT(("dir\n"));
                        break;
 

Modified: haiku/trunk/src/kits/tracker/Model.h
===================================================================
--- haiku/trunk/src/kits/tracker/Model.h        2010-01-17 17:35:06 UTC (rev 
35125)
+++ haiku/trunk/src/kits/tracker/Model.h        2010-01-17 18:12:39 UTC (rev 
35126)
@@ -227,6 +227,7 @@
                        kQueryTemplateNode,
                        kVolumeNode,
                        kRootNode,
+                       kTrashNode,
                        kUnknownNode
                };
 
@@ -369,7 +370,8 @@
 {
        return fBaseType == kDirectoryNode
                || fBaseType == kVolumeNode
-               || fBaseType == kRootNode;
+               || fBaseType == kRootNode
+               || fBaseType == kTrashNode;
 }
 
 inline bool


Other related posts: