//
// C++ Implementation: 
//
// Description: 
//
//
// Author: Jean-Michel PETIT <k9copy@free.fr>, (C) 2007
//
// Copyright: See COPYING file that comes with this distribution
//
//

#include "k9common.h"
#include "k9mp4title.h"
#include "k9config.h"
#include "k9titleencopt.h"
#include "k9dvdtitle.h"
#include <tqcombobox.h>
#include <tqspinbox.h>
#include <tqcheckbox.h>
#include <tqlineedit.h>
#include <tqstringlist.h>
#include <tdelocale.h>
#include <tqlabel.h>
#include <tqframe.h>
#include <tqtabwidget.h>
#include <tqradiobutton.h>

k9MP4Title::k9MP4Title(TQWidget* parent, const char* name, WFlags fl)
: prefMPEG4(parent,name,fl)
{
    m_titleEncOpt=NULL;
    load();
    ckUseCache->hide();
    tabWidget->setEnabled(false);
    lTitle->setText(i18n("Select a Title in the treeview..."));
 
}

k9MP4Title::~k9MP4Title()
{
}


void k9MP4Title::load() {
    k9Config config;
    
    sbMp4Size->setValue(config.getPrefMp4Size());
    sbMp4Size->setSuffix(" "+ i18n("MB"));
    sbMp4NumberCD->setValue(config.getPrefMp4NumberCD());
    sbAudioGain->setValue(config.getPrefMp4AudioGain());

    
    leMp4Width->setText(config.getPrefMp4Width());
    leMp4Height->setText(config.getPrefMp4Height());

    ckMp4AspectRatio->setChecked(config.getPrefMp4AspectRatio());
    leMp4Height->setEnabled(!ckMp4AspectRatio->isChecked());

    ck2passes->setChecked(config.getPrefMp42Passes());
    ckUseCache->setChecked(config.getPrefUseCellCache());

    leMp4AudioBitrate->setText(config.getPrefMp4AudioBitrate());
    leMp4VideoBitrate->setText(config.getPrefMp4VideoBitrate());

    TQStringList m_codecLabels=config.getCodecLabels();
    TQStringList m_codecLabelsAudio=config.getCodecLabelsAudio();

    cbMp4Codec->clear();

    cbMp4Codec->insertStringList(m_codecLabels);
    cbMp4Codec->setCurrentItem(config.getPrefMp4Codec());

    cbMp4AudioCodec->clear();
    cbMp4AudioCodec->insertStringList(m_codecLabelsAudio);
    cbMp4AudioCodec->setCurrentItem(config.getPrefMp4AudioCodec());

    cbMp4AudioCodec->setCurrentItem(config.getPrefMp4AudioCodec());
    if(config.getPrefMp4VideoBitrate() =="") 
	rbSize->setChecked(true);
    else
	rbBitrate->setChecked(true);
}


/*$SPECIALIZATION$*/
void k9MP4Title::ckMp4AspectRatioClick()
{
  leMp4Height->setEnabled(!ckMp4AspectRatio->isChecked());
   if (m_titleEncOpt)
   	m_titleEncOpt->setKeepAspectRatio(ckMp4AspectRatio->isChecked());

}

void k9MP4Title::selectionChanged(k9DVD *_dvd,bool) {
   if (_dvd==NULL)
	m_titleEncOpt=NULL;
   if (m_titleEncOpt)
   	tabWidget->setEnabled(m_titleEncOpt->getTitle()->isSelected());;


}


void k9MP4Title::titleChanged( k9DVDTitle *_title) {
    if (_title==NULL) {
    	m_titleEncOpt=NULL;
    	tabWidget->setEnabled(false);
    	lTitle->setText(i18n("Select a Title in the treeview..."));
    }
    else {
        lTitle->setText(_title->getname());
    	tabWidget->setEnabled( _title->isSelected());
	m_titleEncOpt=_title->getEncOpt();
	k9TitleEncOpt *opt=m_titleEncOpt;
	sbMp4Size->setValue(opt->getMaxSize());
	sbMp4NumberCD->setValue(opt->getNumParts() );
	sbAudioGain->setValue(opt->getAudioGain() );
	
	leMp4Width->setText(opt->getWidth() );
	leMp4Height->setText(opt->getHeight());
	
	ckMp4AspectRatio->setChecked(opt->getKeepAspectRatio());
	leMp4Height->setEnabled(!ckMp4AspectRatio->isChecked());
	
	ck2passes->setChecked(opt->get2Passes());
        ckUseCache->setChecked(opt->getUseCache());	

	leMp4AudioBitrate->setText(opt->getAudioBr());
	leMp4VideoBitrate->setText(opt->getVideoBr());
	cbMp4Codec->setCurrentItem(opt->getCodec() );   
        cbMp4AudioCodec->setCurrentItem(opt->getAudioCodec());

	if(opt->getVideoBr() =="") 
		rbSize->setChecked(true);
	else
		rbBitrate->setChecked(true);
    }
   leMp4VideoBitrate->setEnabled(rbBitrate->isChecked());
   sbMp4Size->setEnabled(rbSize->isChecked());

}


void k9MP4Title::cbMp4CodecActivated( int _value) {
   if (m_titleEncOpt)
   	m_titleEncOpt->setCodec(_value);
}

void k9MP4Title::cbMp4AudioCodecActivated( int _value) {
   if (m_titleEncOpt)
   	m_titleEncOpt->setAudioCodec(_value);
}

void k9MP4Title::ck2passesClicked() {
   if (m_titleEncOpt)
   	m_titleEncOpt->set2Passes(ck2passes->isChecked());
}

void k9MP4Title::ckUseCacheClick() {
   if (m_titleEncOpt)
   	m_titleEncOpt->setUseCache(ckUseCache->isChecked());
}

void k9MP4Title::sbMp4SizeValueChanged( int _value) {
   if (m_titleEncOpt)   
   	m_titleEncOpt->setMaxSize(_value);
}

void k9MP4Title::sbMp4NumberCDValueChanged( int _value ) {
   if (m_titleEncOpt)   	
   	m_titleEncOpt->setNumParts(_value);
}

void k9MP4Title::sbAudioGainValueChanged( int _value ) {
   if (m_titleEncOpt)   	
   	m_titleEncOpt->setAudioGain(_value);
}

void k9MP4Title::leMp4WidthTextChanged( const TQString & _value) {
   if (m_titleEncOpt)
	m_titleEncOpt->setWidth(_value);
}

void k9MP4Title::leMp4HeightTextChanged( const TQString & _value) {
   if (m_titleEncOpt)
        m_titleEncOpt->setHeight(_value);
}

void k9MP4Title::leMp4AudioBitrateTextChanged( const TQString & _value) {
   if (m_titleEncOpt)
	m_titleEncOpt->setAudioBr(_value);
}


void k9MP4Title::leMp4VideoBitrateTextChanged( const TQString & _value) {
   if (m_titleEncOpt)
	m_titleEncOpt->setVideoBr(_value);
}


void k9MP4Title::rgVideoSizeChanged(){
   if (rbSize->isChecked()) 
	leMp4VideoBitrate->setText("");
   leMp4VideoBitrate->setEnabled(rbBitrate->isChecked());
   sbMp4Size->setEnabled(rbSize->isChecked());
}

#include "k9mp4title.moc"

