/****************************************************************************
**
** Copyright (C) 1992-2008 Trolltech ASA.  All rights reserved.
**
** This file is part of an example program for TQt.  This example
** program may be used, distributed and modified without limitation.
**
*****************************************************************************/

#include "infodata.h"


// we hard code all nodes and data in InfoData class
InfoData::InfoData() :
    nodes( 17, TRUE ), data( 17, TRUE )
{
    nodes.setAutoDelete(TRUE);
    data.setAutoDelete(TRUE);
    TQStringList *item;

    nodes.insert( "/", item = new TQStringList( ) );
    (*item) << "D network";
    nodes.insert( "/network/", item = new TQStringList() );
    (*item) << "D workstations" << "D printers" << "D fax";
    nodes.insert( "/network/workstations/", item = new TQStringList() );
    (*item) << "D nibble" << "D douglas";
    nodes.insert( "/network/workstations/nibble/", item = new TQStringList() );
    (*item) << "F os" << "F cpu" << "F memory";
    nodes.insert( "/network/workstations/douglas/", item = new TQStringList() );
    (*item) << "F os" << "F cpu" << "F memory";
    nodes.insert( "/network/printers/", item = new TQStringList() );
    (*item) << "D overbitt" << "D kroksleiven";
    nodes.insert( "/network/printers/overbitt/", item = new TQStringList() );
    (*item) << "D jobs" << "F type";
    nodes.insert( "/network/printers/overbitt/jobs/", item = new TQStringList() );
    (*item) << "F job1" << "F job2";
    nodes.insert( "/network/printers/kroksleiven/", item = new TQStringList() );
    (*item) << "D jobs" << "F type";
    nodes.insert( "/network/printers/kroksleiven/jobs/", item = new TQStringList() );
    nodes.insert( "/network/fax/", item = new TQStringList() );
    (*item) << "F last_number";

    data.insert( "/network/workstations/nibble/os", new TQString( "Linux" ) );
    data.insert( "/network/workstations/nibble/cpu", new TQString( "AMD Athlon 1000" ) );
    data.insert( "/network/workstations/nibble/memory", new TQString( "256 MB" ) );
    data.insert( "/network/workstations/douglas/os", new TQString( "Windows 2000" ) );
    data.insert( "/network/workstations/douglas/cpu", new TQString( "2 x Intel Pentium III 800" ) );
    data.insert( "/network/workstations/douglas/memory", new TQString( "256 MB" ) );
    data.insert( "/network/printers/overbitt/type", new TQString( "Lexmark Optra S 1255 PS" ) );
    data.insert( "/network/printers/overbitt/jobs/job1", 
                 new TQString( "TQt manual\n" "A4 size\n" "3000 pages" ) );
    data.insert( "/network/printers/overbitt/jobs/job2", 
		 new TQString( "Monthly report\n" "Letter size\n" "24 pages\n" "8 copies" ) );
    data.insert( "/network/printers/kroksleiven/type", new TQString( "HP C LaserJet 4500-PS" ) );
    data.insert( "/network/fax/last_number", new TQString( "22 22 22 22" ) );
}

TQStringList InfoData::list( TQString path, bool *found ) const
{
    if ( !path.endsWith( "/" ) )
	path += "/";
    if ( !path.startsWith( "/" ) )
	path = "/" + path;
    TQStringList *list = nodes[ path ];
    if ( list ) {
	*found = TRUE;
	return *list;
    } else {
	*found = FALSE;
	TQStringList empty;
	return empty;
    }
}

TQString InfoData::get( TQString path, bool *found ) const
{
    if ( !path.startsWith( "/" ) )
	path = "/" + path;
    TQString *file = data[ path ];
    if ( file ) {
	*found = TRUE;
	return *file;
    } else {
	*found = FALSE;
	TQString empty;
	return empty;
    }
}
