1 /*
2 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Distributed under the terms of the MIT License.
4 */
5
6 #include "LocatableDirectory.h"
7
8
LocatableDirectory(LocatableEntryOwner * owner,LocatableDirectory * parent,const BString & path)9 LocatableDirectory::LocatableDirectory(LocatableEntryOwner* owner,
10 LocatableDirectory* parent, const BString& path)
11 :
12 LocatableEntry(owner, parent),
13 fPath(path),
14 fLocatedPath()
15 {
16 }
17
18
~LocatableDirectory()19 LocatableDirectory::~LocatableDirectory()
20 {
21 }
22
23
24 const char*
Name() const25 LocatableDirectory::Name() const
26 {
27 if (fPath.Length() <= 1)
28 return fPath;
29
30 int32 lastSlash = fPath.FindLast('/');
31 // return -1, if not found
32 return fPath.String() + (lastSlash + 1);
33 }
34
35
36 const char*
Path() const37 LocatableDirectory::Path() const
38 {
39 return fPath.String();
40 }
41
42
43 void
GetPath(BString & _path) const44 LocatableDirectory::GetPath(BString& _path) const
45 {
46 _path = fPath;
47 }
48
49
50 bool
GetLocatedPath(BString & _path) const51 LocatableDirectory::GetLocatedPath(BString& _path) const
52 {
53 if (fLocatedPath.Length() == 0)
54 return false;
55 _path = fLocatedPath;
56 return true;
57 }
58
59
60 void
SetLocatedPath(const BString & path,bool implicit)61 LocatableDirectory::SetLocatedPath(const BString& path, bool implicit)
62 {
63 fLocatedPath = path;
64 fState = implicit
65 ? LOCATABLE_ENTRY_LOCATED_IMPLICITLY
66 : LOCATABLE_ENTRY_LOCATED_EXPLICITLY;
67 }
68
69
70 void
AddEntry(LocatableEntry * entry)71 LocatableDirectory::AddEntry(LocatableEntry* entry)
72 {
73 fEntries.Add(entry);
74 }
75
76
77 void
RemoveEntry(LocatableEntry * entry)78 LocatableDirectory::RemoveEntry(LocatableEntry* entry)
79 {
80 fEntries.Remove(entry);
81 }
82