using System.Collections;
using System;
using libsecondlife;
namespace libsecondlife.InventorySystem
{
///
/// Summary description for InventoryFolder.
///
public class InventoryFolder : InventoryBase
{
public string Name
{
get { return _Name; }
set
{
_Name = value;
base.iManager.FolderRename( this );
}
}
private LLUUID _FolderID;
public LLUUID FolderID
{
get { return _FolderID; }
}
private LLUUID _ParentID;
public LLUUID ParentID
{
get { return _ParentID; }
set
{
InventoryFolder ifParent = iManager.getFolder( this.ParentID );
ifParent.alContents.Remove( this );
ifParent = iManager.getFolder( value );
ifParent.alContents.Add( this );
this._ParentID = value;
base.iManager.FolderMove( this, value );
}
}
internal sbyte _Type;
public sbyte Type
{
get { return _Type; }
}
public ArrayList alContents = new ArrayList();
internal InventoryFolder( InventoryManager manager ) : base(manager)
{
_Name = "";
_FolderID = new LLUUID();
_ParentID = new LLUUID();
_Type = -1;
}
internal InventoryFolder( InventoryManager manager, String name, LLUUID folderID, LLUUID parentID ) : base(manager)
{
this._Name = name;
this._FolderID = folderID;
this._ParentID = parentID;
this._Type = 0;
}
internal InventoryFolder( InventoryManager manager, String name, LLUUID folderID, LLUUID parentID, sbyte Type ) : base(manager)
{
this._Name = name;
this._FolderID = folderID;
this._ParentID = parentID;
this._Type = Type;
}
internal InventoryFolder( InventoryManager manager, Hashtable htData ) : base(manager)
{
this._Name = (string)htData["name"];
this._FolderID = new LLUUID( (string)htData["folder_id"] );
this._ParentID = new LLUUID( (string)htData["parent_id"] );
this._Type = sbyte.Parse( htData["type_default"].ToString() );
}
public InventoryFolder CreateFolder( string name )
{
return base.iManager.FolderCreate( name, FolderID );
}
public void Delete()
{
iManager.getFolder( this.ParentID ).alContents.Remove(this);
iManager.FolderRemove(this);
}
public void MoveTo( InventoryFolder newParent )
{
MoveTo( newParent.FolderID );
}
public void MoveTo( LLUUID newParentID )
{
this.ParentID = newParentID;
}
public InventoryNotecard NewNotecard( string name, string description, string body )
{
return base.iManager.NewNotecard( name, description, body, this.FolderID );
}
public InventoryImage NewImage( string name, string description, byte[] j2cdata )
{
return base.iManager.NewImage( name, description, j2cdata, this.FolderID );
}
public ArrayList GetItemByName( string name )
{
ArrayList items = new ArrayList();
foreach( InventoryBase ib in alContents )
{
if( ib is InventoryFolder )
{
items.AddRange( ((InventoryFolder)ib).GetItemByName(name) );
} else if ( ib is InventoryItem ) {
if( ((InventoryItem)ib).Name.Equals( name ) )
{
items.Add( ib );
}
}
}
return items;
}
///
/// Output this folder as XML
///
/// Include an asset data as well, TRUE/FALSE
override public string toXML(bool outputAssets)
{
string output = "\n";
foreach( Object oContent in alContents )
{
output += ((InventoryBase)oContent).toXML( outputAssets );
}
output += "\n";
return output;
}
}
}