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/k9author/k9newtitle.cpp

172 lines
4.8 KiB

//
// C++ Implementation:
//
// Description:
//
//
// Author: Jean-Michel PETIT <k9copy@free.fr>, (C) 2007
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "k9newtitle.h"
#include "k9import.h"
#include <tqradiobutton.h>
#include <knuminput.h>
#include <ktimewidget.h>
#include <k9avidecode.h>
#include <klocale.h>
#include "k9menu.h"
#include "k9menubutton.h"
#include "kpushbutton.h"
#include <kmessagebox.h>
#include <kcursor.h>
k9NewTitle::k9NewTitle(TQWidget* parent, const char* name, WFlags fl)
: newTitle(parent,name,fl) {
m_fileName="";
}
k9NewTitle::~k9NewTitle() {}
/*$SPECIALIZATION$*/
void k9NewTitle::fileSelected(const TQString &_fileName) {
m_fileName=_fileName;
k9AviDecode fileInfo(0,0);
fileInfo.open(m_fileName);
double duration=fileInfo.getDuration();
fileInfo.close();
TQTime t(0,0,0);
t=t.addSecs(duration);
lTotalTime->setText(t.toString("hh:mm:ss"));
bAdd->setEnabled(true);
}
void k9NewTitle::drawImage (TQImage *_image) {
m_image=*_image;
}
void k9NewTitle::bAddClicked() {
k9Config config;
k9AviDecode fileInfo(0,0);
if (!fileInfo.open(m_fileName)) {
KMessageBox::error(this,fileInfo.getError(),i18n("Add title"));
return;
}
this->setCursor(KCursor::waitCursor());
k9LvItemImport * item=new k9LvItemImport(m_k9Import->getRoot(),k9LvItemImport::TITLE);
item->setOpen(true);
k9Title *title=new k9Title( m_k9Import->getNewDVD());
item->setText(0,i18n("title %1").tqarg(title->getNum() +1));
connect( title->getButton(),TQT_SIGNAL(sigsetImage(k9MenuButton*, const TQImage&)),m_k9Import,TQT_SLOT(buttonUpdated(k9MenuButton*, const TQImage&)));
item->setTitle(title);
connect(&fileInfo,TQT_SIGNAL(drawFrame(TQImage*)),this,TQT_SLOT(drawImage(TQImage*)));
TQTime t;
m_k9Import->getRoot()->listView()->setColumnWidthMode(0,TQListView::Maximum);
item->setText(1,t.addSecs(fileInfo.getDuration()).toString("hh:mm:ss"));
double increment;
int maxCh;
if (rbLength->isOn()) {
TQTime t;
increment=t.secsTo(twLength->time());
maxCh=999;
}
if (rbNumber->isOn()) {
increment=fileInfo.getDuration() /nbChapters->value();
maxCh=nbChapters->value();
}
double pos=0;
k9AviFile *last=NULL;
int width=config.getPrefButtonWidth();
int height=config.getPrefButtonHeight();
int left=-width+20;
int top=50;
int i=-1;
while ( pos <fileInfo.getDuration() && i <maxCh-1){
//fileInfo.open(m_fileName);
i++;
fileInfo.readFrame(pos);
k9AviFile *file=new k9AviFile(title,0);
file->setImage(m_image);
if (i==0)
title->getButton()->setImage(m_image);
file->setPrevious(last);
if (last !=NULL)
last->setNext(file);
last=file;
file->setFileName(m_fileName);
file->setStart(t.addMSecs(pos*1000));
pos+=increment;
file->setEnd(t.addMSecs(TQMIN(pos,fileInfo.getDuration()) *1000));
k9LvItemImport * itemch=new k9LvItemImport(item,k9LvItemImport::CHAPTER);
itemch->setText(0,i18n("chapter %1").tqarg(i+1));
itemch->setText(1,file->getStart().toString("hh:mm:ss") +" - "+file->getEnd().toString("hh:mm:ss") );
itemch->setAviFile(file);
itemch->setTitle(title);
itemch->setPixmap(0,TQPixmap(m_image.smoothScale(50,40)));
connect(file,TQT_SIGNAL(aviFileUpdated(k9AviFile*)),m_k9Import,TQT_SLOT(aviFileUpdated(k9AviFile*)));
k9MenuButton *btn=title->getMenu()->addButton();
btn->setNum(i+1);
//_title->setButton(btn);
btn->setImage(m_image);
left +=width+10;
if (left +width >720) {
left=30;
top+=height+25;
}
btn->setTop(top);
btn->setLeft(left);
btn->setWidth(width);
btn->setHeight(height);
btn->setScript(TQString("jump title 1 chapter %1 ;").tqarg(i+1));
btn->setTextPosition(k9MenuButton::BOTTOM);
btn->setText(i18n("chapter %1").tqarg(i+1));
btn->setColor(config.getPrefButtonTextColor());
btn->setFont(config.getPrefButtonFont());
connect(file,TQT_SIGNAL(imageChanged(const TQImage&)),btn,TQT_SLOT(setImage(const TQImage&)));
}
title->getMenu()->setEndScript("call vmgm menu;");
fileInfo.close();
m_k9Import->lvDVD->setSortColumn(0);
m_k9Import->lvDVD->sort();
m_k9Import->setEnableCreate(true);
m_k9Import->updateTotalTime();
this->setCursor(KCursor::arrowCursor());
}
void k9NewTitle::rbNumberClicked() {
twLength->setEnabled(false);
nbChapters->setEnabled(true);
}
void k9NewTitle::rbLengthClicked() {
twLength->setEnabled(true);
nbChapters->setEnabled(false);
}
#include "k9newtitle.moc"
void k9NewTitle::setK9Import ( k9Import* _value ) {
m_k9Import = _value;
}