|
|
|
//
|
|
|
|
// 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* tqparent, const char* name, WFlags fl)
|
|
|
|
: newTitle(tqparent,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;
|
|
|
|
}
|