/***************************************************************************
    copyright            : (C) 2003 by Arnold Krille
    email                : arnold@arnoldarts.de
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; version 2 of the License.               *
 *                                                                         *
 ***************************************************************************/

#include "krecfileview.h"
#include "krecfileview.moc"

#include "krecfilewidgets.h"
#include "krecfileviewhelpers.h"
#include "krecfile.h"
#include "krecglobal.h"

#include <kdebug.h>
#include <tdelocale.h>
#include <tqlayout.h>
#include <tqlabel.h>
#include <tqpainter.h>
#include <tqpointarray.h>
#include <tqlineedit.h>

KRecFileView::KRecFileView( TQWidget* p, const char* n )
  : TQWidget( p,n )
{
kdDebug( 60005 ) << k_funcinfo << endl;
	_layout_td = new TQBoxLayout( this, TQBoxLayout::TopToBottom, 5, 5 );
	_filename = new TQLabel( i18n( "<no file>" ), this );
	_layout_td->addWidget( _filename, 1 );
	_fileview = new KRecFileWidget( 0, this );
	_layout_td->addWidget( _fileview, 100 );
	_timebar = new KRecTimeBar( this );
	_layout_td->addWidget( _timebar, 50 );
	_layout_lr = new TQBoxLayout( this, TQBoxLayout::LeftToRight, 5, 5 );
	_layout_td->addLayout( _layout_lr, 1 );
	_layout_lr->addStretch( 20 );
	_timedisplay = new KRecTimeDisplay( this );
	_layout_td->addWidget( _timedisplay, 1 );
	_file = 0;
}
KRecFileView::~KRecFileView() {
kdDebug( 60005 ) << k_funcinfo << endl;
}

void KRecFileView::setFile( KRecFile* file ) {
kdDebug( 60005 ) << k_funcinfo << file << endl;
	if ( _file != file ) {
		_file = file;
		_fileview->setFile( _file );
		if ( _file ) {
			if ( !_file->filename().isNull() ) setFilename( _file->filename() );
				else _filename->setText( i18n( "file with no name" ) );
			connect( _file, TQ_SIGNAL( posChanged( int ) ), this, TQ_SLOT( setPos( int ) ) );
			connect( _file, TQ_SIGNAL( posChanged( int ) ), _timebar, TQ_SLOT( newPos( int ) ) );
			connect( _file, TQ_SIGNAL( posChanged( int ) ), _timedisplay, TQ_SLOT( newPos( int ) ) );
			connect( _file, TQ_SIGNAL( sizeChanged( int ) ), this, TQ_SLOT( setSize( int ) ) );
			connect( _file, TQ_SIGNAL( sizeChanged( int ) ), _timebar, TQ_SLOT( newSize( int ) ) );
			connect( _file, TQ_SIGNAL( sizeChanged( int ) ), _timedisplay, TQ_SLOT( newSize( int ) ) );
			connect( _file, TQ_SIGNAL( filenameChanged( const TQString &) ), this, TQ_SLOT( setFilename( const TQString &) ) );
			connect( _file, TQ_SIGNAL( filenameChanged( const TQString &) ), _timedisplay, TQ_SLOT( newFilename( const TQString &) ) );
			connect( _timebar, TQ_SIGNAL( sNewPos( int ) ), _file, TQ_SLOT( newPos( int ) ) );
			_timebar->newPos( _file->position() );
			_timebar->newSize( _file->size() );
			_timedisplay->newSamplingRate( _file->samplerate() );
			_timedisplay->newChannels( _file->channels() );
			_timedisplay->newBits( _file->bits() );
			_timedisplay->newFilename( _file->filename() );
			_timedisplay->newPos( _file->position() );
			_timedisplay->newSize( _file->size() );
		} else {
			disconnect( this, TQ_SLOT( setPos( TQIODevice::Offset ) ) );
			_filename->setText( i18n( "<no file>" ) );
			_timedisplay->newFilename( TQString() );
		}
	}
}

void KRecFileView::updateGUI() { _fileview->resizeEvent(); }
void KRecFileView::setPos( int ) {}
void KRecFileView::setSize( int ) {}
void KRecFileView::setFilename( const TQString &n ) { _filename->setText( n );}

