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.
kaffeine/kaffeine/src/input/dvb/audioeditor.cpp

161 lines
4.0 KiB

/*
* audioeditor.cpp
*
* Copyright (C) 2004-2005 Christophe Thommeret <hftom@free.fr>
*
* 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; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <tqlistbox.h>
#include <tqspinbox.h>
#include <tqpushbutton.h>
#include <tqlineedit.h>
#include <tqcheckbox.h>
#include <tdemessagebox.h>
#include <tdelocale.h>
#include "audioeditor.h"
AudioEditor::AudioEditor( ChannelDesc *chan, TQWidget *parent ) : AudioEditorUI( parent )
{
TQString s, t;
int i;
channel = chan;
pidList->clear();
for ( i=0; i<channel->napid; i++ ) insertItem( i );
if ( channel->napid==channel->maxapid ) newBtn->setEnabled( false );
connect( pidList, TQ_SIGNAL(highlighted(int)), this, TQ_SLOT(showProp(int)) );
connect( upBtn, TQ_SIGNAL(clicked()), this, TQ_SLOT(itemUp()) );
connect( downBtn, TQ_SIGNAL(clicked()), this, TQ_SLOT(itemDown()) );
connect( delBtn, TQ_SIGNAL(clicked()), this, TQ_SLOT(itemDelete()) );
connect( updateBtn, TQ_SIGNAL(clicked()), this, TQ_SLOT(itemUpdate()) );
connect( newBtn, TQ_SIGNAL(clicked()), this, TQ_SLOT(itemNew()) );
}
void AudioEditor::insertItem( int index, bool updt )
{
TQString s, t;
s = t.setNum( channel->apid[index].pid );
if ( !channel->apid[index].lang.isEmpty() ) s = s+"("+channel->apid[index].lang+")";
if ( channel->apid[index].ac3 ) s = s+"(ac3)";
if ( updt ) pidList->changeItem( s, index );
else pidList->insertItem( s, index );
}
void AudioEditor::showProp( int index )
{
if ( index<0 ) {
pidSpin->setValue( 0 );
langLe->setText( "" );
ac3Cb->setChecked( false );
}
else {
pidSpin->setValue( channel->apid[index].pid );
langLe->setText( channel->apid[index].lang );
ac3Cb->setChecked( channel->apid[index].ac3 );
}
}
void AudioEditor::itemUp()
{
AudioPid a;
int n = pidList->currentItem();
if ( n<1 ) return;
a = channel->apid[n-1];
channel->apid[n-1] = channel->apid[n];
channel->apid[n] = a;
insertItem( n, true );
insertItem( n-1, true );
}
void AudioEditor::itemDown()
{
AudioPid a;
int n = pidList->currentItem();
if ( (n<0) || (n>(channel->napid-2)) ) return;
a = channel->apid[n+1];
channel->apid[n+1] = channel->apid[n];
channel->apid[n] = a;
insertItem( n, true );
insertItem( n+1, true );
}
void AudioEditor::itemDelete()
{
int n = pidList->currentItem();
if ( channel->napid==0 || (n<0) ) return; //for sure
for ( int i=n; i<channel->napid-1; i++ ) channel->apid[i] = channel->apid[i+1];
channel->napid--;
pidList->removeItem( n );
newBtn->setEnabled( true );
}
void AudioEditor::itemUpdate()
{
int n = pidList->currentItem();
if ( n<0 ) return;
channel->apid[n].pid = pidSpin->value();
channel->apid[n].lang = langLe->text().stripWhiteSpace();
if ( ac3Cb->isChecked() ) channel->apid[n].ac3 = 1;
else channel->apid[n].ac3 = 0;
insertItem( n, true );
}
void AudioEditor::itemNew()
{
if ( channel->napid==channel->maxapid ) { //for sure
newBtn->setEnabled( false );
return;
}
if ( !pidSpin->value() ) {
KMessageBox::sorry( this, i18n("Pid must be non zero!") );
return;
}
channel->napid++;
channel->apid[channel->napid-1].pid = pidSpin->value();
channel->apid[channel->napid-1].lang = langLe->text().stripWhiteSpace();
if ( ac3Cb->isChecked() ) channel->apid[channel->napid-1].ac3 = 1;
else channel->apid[channel->napid-1].ac3 = 0;
insertItem( channel->napid-1 );
if ( channel->napid==channel->maxapid ) newBtn->setEnabled( false );
}
AudioEditor::~AudioEditor()
{
}
#include "audioeditor.moc"