You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
k9copy/src/k9playbackoptions.cpp

224 lines
5.7 KiB

//
// C++ Implementation:
//
// Description:
//
//
// Author: Jean-Michel PETIT <k9copy@free.fr>, (C) 2006
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "k9playbackoptions.h"
#include "k9config.h"
#include <kpushbutton.h>
#include <kiconloader.h>
k9PlaybackOptions::k9PlaybackOptions(k9Main *mainWindow, TQWidget* parent, const char* name, WFlags fl)
: PlaybackOptionsw(parent,name,fl)
{
setMain( mainWindow);
m_main->setPlaybackOptions(this);
enable(false);
bSeqUp->setPixmap(SmallIcon("1uparrow"));
bSeqDown->setPixmap(SmallIcon("1downarrow"));
k9Config config;
ckMenu->setChecked(config.getKeepMenus());
ckMenuClick();
}
k9PlaybackOptions::~k9PlaybackOptions()
{
}
/*$SPECIALIZATION$*/
void k9PlaybackOptions::setMain(k9Main* _value) {
m_main = _value; m_dvd=m_main->dvd;
}
void k9PlaybackOptions::fillTitleList() {
TQString txt=lbSequence->currentText();
lbSequence->clear();
k9DVDTitle *title=m_dvd->getstart();
bool found=title !=NULL;
//Reconstitution de l'ordre de lecture à partir des titres du DVD
while (found) {
if (title->isSelected()) {
lbItem *item=new lbItem(lbSequence,title->getname());
item->setTitle(title);
if (title->getname()==txt)
lbSequence->setCurrentItem(item);
}
title=title->getnextTitle();
found=title!=NULL;
}
for (int i=0;i<m_dvd->gettitleCount();i++) {
k9DVDTitle* l_track=m_dvd->gettitle(i);
if (l_track->getIndexed()) {
TQString sTitle=l_track->getname();
if(l_track->isSelected()) {
bool foundtitle=false;
for (uint j=0; j<lbSequence->count();j++) {
lbItem *tmp=(lbItem*)lbSequence->item(j);
if (tmp->getTitle() == l_track)
foundtitle=true;
}
if (!foundtitle) {
lbItem *item=new lbItem(lbSequence,sTitle);
item->setTitle(l_track);
if (sTitle==txt)
lbSequence->setCurrentItem(item);
}
}
}
}
if (lbSequence->currentItem()==-1)
lbSequence->setCurrentItem(0);
setSequence();
enable(!ckMenu->isChecked() );
}
void k9PlaybackOptions::ckMenuClick() {
if (m_main!=NULL) {
enable((!ckMenu->isChecked()) && m_dvd->getopened());
m_main->updateFactor();
} else
enable(false);
}
void k9PlaybackOptions::bSeqUpClick() {
int cur=lbSequence->currentItem();
if (cur >0) {
lbItem *lbi=(lbItem*)lbSequence->item(cur);
lbSequence->takeItem(lbi);
lbSequence->insertItem(lbi,cur-1);
lbSequence->setCurrentItem(lbi);
}
setSequence();
}
void k9PlaybackOptions::bSeqDownClick() {
uint cur=lbSequence->currentItem();
if (cur <lbSequence->count()) {
lbItem *lbi=(lbItem*)lbSequence->item(cur);
lbSequence->takeItem(lbi);
lbSequence->insertItem(lbi,cur+1);
lbSequence->setCurrentItem(lbi);
}
setSequence();
}
void k9PlaybackOptions::setSequence() {
for (int i=0;i <m_dvd->gettitleCount();i++)
m_dvd->gettitle(i)->setnextTitle( NULL);
lbItem *lbi = (lbItem*)lbSequence->item(lbSequence->topItem());
if (lbi !=NULL) {
lbItem *lbi2;
m_dvd->setstart(lbi->getTitle());
for (uint i=0 ; i < lbSequence->count()-1;i++) {
lbi=(lbItem*)lbSequence->item(i);
lbi2=(lbItem*)lbSequence->item(i+1);
lbi->getTitle()->setnextTitle(lbi2->getTitle());
}
}
}
void k9PlaybackOptions::lbSequenceChanged(TQListBoxItem *_item) {
if (_item == NULL)
return;
lbItem *lbi=(lbItem*) _item;
k9DVDTitle *title=lbi->getTitle();
cbDefAudio->clear();
cbDefSub->clear();
lstAudioDef.clear();
lstSubDef.clear();
cbDefAudio->insertItem(i18n("default"));
lstAudioDef.append(NULL);
cbDefSub->insertItem(i18n("none"));
lstSubDef.append(NULL);
for (int i=0;i < title->getaudioStreamCount();i++) {
if (title->getaudioStream(i)->getselected()) {
// if ( !title->getDefAudioSet())
// title->setDefAudio(title->getaudioStream(i));
cbDefAudio->insertItem( TQString("%1 - %2").arg(title->getaudioStream(i)->getID()).arg(title->getaudioStream(i)->getlanguage()));
if (title->getaudioStream(i)==title->getDefAudio()) {
cbDefAudio->setCurrentItem(cbDefAudio->count()-1);
}
lstAudioDef.append(title->getaudioStream(i));
}
}
for (int i=0;i < title->getsubPictureCount();i++) {
if (title->getsubtitle(i)->getselected()) {
TQPixmap icon;
cbDefSub->insertItem(TQString("%1 - %2").arg(title->getsubtitle(i)->getID().first()).arg(title->getsubtitle(i)->getlanguage()));
if (title->getsubtitle(i)==title->getDefSubtitle()) {
cbDefSub->setCurrentItem(cbDefSub->count()-1);
}
lstSubDef.append(title->getsubtitle(i));
}
}
}
void k9PlaybackOptions::cbDefAudioActivated(int _index) {
int cur=lbSequence->currentItem();
lbItem *lbi=(lbItem*)lbSequence->item(cur);
lbi->getTitle()->setDefAudio(lstAudioDef.at(_index));
}
void k9PlaybackOptions::cbDefSubActivated(int _index) {
int cur=lbSequence->currentItem();
lbItem *lbi=(lbItem*)lbSequence->item(cur);
lbi->getTitle()->setDefSubtitle(lstSubDef.at(_index));
}
void k9PlaybackOptions::titleRenamed (k9DVDTitle *_title, TQString _newName) {
for (uint j=0; j<lbSequence->count();j++) {
lbItem *tmp=(lbItem*)lbSequence->item(j);
if (tmp->getTitle() == _title) {
lbItem *item=new lbItem(NULL,_newName);
item->setTitle(_title);
lbSequence->changeItem(item,j);
break;
}
}
}
bool k9PlaybackOptions::withMenus() {
return ckMenu->isChecked();
}
void k9PlaybackOptions::setwithMenus(bool _value) {
ckMenu->setChecked(_value);
}
void k9PlaybackOptions::enable(bool _value) {
frPlayback->setEnabled(_value);
}
void k9PlaybackOptions::clear() {
lbSequence->clear();
enable(false);
}
#include "k9playbackoptions.moc"