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.
183 lines
4.2 KiB
183 lines
4.2 KiB
/*
|
|
* subeditor.cpp
|
|
*
|
|
* Copyright (C) 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 "subeditor.h"
|
|
|
|
|
|
|
|
SubEditor::SubEditor( ChannelDesc *chan, TQWidget *parent ) : SubEditorUI( parent )
|
|
{
|
|
TQString s, t;
|
|
int i;
|
|
|
|
channel = chan;
|
|
pidList->clear();
|
|
|
|
for ( i=0; i<channel->nsubpid; i++ ) insertItem( i );
|
|
|
|
if ( channel->nsubpid==channel->maxsubpid ) 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 SubEditor::insertItem( int index, bool updt )
|
|
{
|
|
TQString s, t;
|
|
|
|
s = t.setNum( channel->subpid[index].pid );
|
|
s = s+"("+t.setNum( channel->subpid[index].page )+")";
|
|
s = s+"("+t.setNum( channel->subpid[index].id )+")";
|
|
if ( !channel->subpid[index].lang.isEmpty() ) s = s+"("+channel->subpid[index].lang+")";
|
|
if ( updt ) pidList->changeItem( s, index );
|
|
else pidList->insertItem( s, index );
|
|
}
|
|
|
|
|
|
|
|
void SubEditor::showProp( int index )
|
|
{
|
|
if ( index<0 ) {
|
|
pidSpin->setValue( 0 );
|
|
pageSpin->setValue( 0 );
|
|
ancSpin->setValue( 0 );
|
|
langLe->setText( "" );
|
|
}
|
|
else {
|
|
pidSpin->setValue( channel->subpid[index].pid );
|
|
pageSpin->setValue( channel->subpid[index].page );
|
|
ancSpin->setValue( channel->subpid[index].id );
|
|
langLe->setText( channel->subpid[index].lang );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void SubEditor::itemUp()
|
|
{
|
|
SubPid a;
|
|
|
|
int n = pidList->currentItem();
|
|
|
|
if ( n<1 ) return;
|
|
|
|
a = channel->subpid[n-1];
|
|
channel->subpid[n-1] = channel->subpid[n];
|
|
channel->subpid[n] = a;
|
|
|
|
insertItem( n, true );
|
|
insertItem( n-1, true );
|
|
}
|
|
|
|
|
|
|
|
void SubEditor::itemDown()
|
|
{
|
|
SubPid a;
|
|
|
|
int n = pidList->currentItem();
|
|
|
|
if ( (n<0) || (n>(channel->nsubpid-2)) ) return;
|
|
|
|
a = channel->subpid[n+1];
|
|
channel->subpid[n+1] = channel->subpid[n];
|
|
channel->subpid[n] = a;
|
|
|
|
insertItem( n, true );
|
|
insertItem( n+1, true );
|
|
}
|
|
|
|
|
|
|
|
void SubEditor::itemDelete()
|
|
{
|
|
int n = pidList->currentItem();
|
|
|
|
if ( channel->nsubpid==0 || (n<0) ) return; //for sure
|
|
|
|
for ( int i=n; i<channel->nsubpid-1; i++ ) channel->subpid[i] = channel->subpid[i+1];
|
|
channel->nsubpid--;
|
|
pidList->removeItem( n );
|
|
|
|
newBtn->setEnabled( true );
|
|
}
|
|
|
|
|
|
|
|
void SubEditor::itemUpdate()
|
|
{
|
|
int n = pidList->currentItem();
|
|
|
|
if ( n<0 ) return;
|
|
|
|
channel->subpid[n].pid = pidSpin->value();
|
|
channel->subpid[n].page = pageSpin->value();
|
|
channel->subpid[n].id = ancSpin->value();
|
|
channel->subpid[n].lang = langLe->text().stripWhiteSpace();
|
|
|
|
insertItem( n, true );
|
|
}
|
|
|
|
|
|
|
|
void SubEditor::itemNew()
|
|
{
|
|
if ( channel->nsubpid==channel->maxsubpid ) { //for sure
|
|
newBtn->setEnabled( false );
|
|
return;
|
|
}
|
|
|
|
if ( !pidSpin->value() ) {
|
|
KMessageBox::sorry( this, i18n("Pid must be non zero!") );
|
|
return;
|
|
}
|
|
channel->nsubpid++;
|
|
channel->subpid[channel->nsubpid-1].pid = pidSpin->value();
|
|
channel->subpid[channel->nsubpid-1].page = pageSpin->value();
|
|
channel->subpid[channel->nsubpid-1].id = ancSpin->value();
|
|
channel->subpid[channel->nsubpid-1].lang = langLe->text().stripWhiteSpace();
|
|
insertItem( channel->nsubpid-1 );
|
|
if ( channel->nsubpid==channel->maxsubpid ) newBtn->setEnabled( false );
|
|
}
|
|
|
|
|
|
|
|
SubEditor::~SubEditor()
|
|
{
|
|
|
|
}
|
|
|
|
#include "subeditor.moc"
|