⛏️ index : haiku.git

/*
 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
 * Distributed under the terms of the MIT License.
 */

#include "LocatableDirectory.h"


LocatableDirectory::LocatableDirectory(LocatableEntryOwner* owner,
	LocatableDirectory* parent, const BString& path)
	:
	LocatableEntry(owner, parent),
	fPath(path),
	fLocatedPath()
{
}


LocatableDirectory::~LocatableDirectory()
{
}


const char*
LocatableDirectory::Name() const
{
	if (fPath.Length() <= 1)
		return fPath;

	int32 lastSlash = fPath.FindLast('/');
		// return -1, if not found
	return fPath.String() + (lastSlash + 1);
}


const char*
LocatableDirectory::Path() const
{
	return fPath.String();
}


void
LocatableDirectory::GetPath(BString& _path) const
{
	_path = fPath;
}


bool
LocatableDirectory::GetLocatedPath(BString& _path) const
{
	if (fLocatedPath.Length() == 0)
		return false;
	_path = fLocatedPath;
	return true;
}


void
LocatableDirectory::SetLocatedPath(const BString& path, bool implicit)
{
	fLocatedPath = path;
	fState = implicit
		? LOCATABLE_ENTRY_LOCATED_IMPLICITLY
		: LOCATABLE_ENTRY_LOCATED_EXPLICITLY;
}


void
LocatableDirectory::AddEntry(LocatableEntry* entry)
{
	fEntries.Add(entry);
}


void
LocatableDirectory::RemoveEntry(LocatableEntry* entry)
{
	fEntries.Remove(entry);
}