const int TEXTITEM = 8;
static bool insertingValues = false;
-TitleWidget::TitleWidget(KUrl url, QString projectTitlePath, Render *render, QWidget *parent) :
+TitleWidget::TitleWidget(KUrl url, Timecode tc, QString projectTitlePath, Render *render, QWidget *parent) :
QDialog(parent),
Ui::TitleWidget_UI(),
m_startViewport(NULL),
m_render(render),
m_count(0),
m_unicodeDialog(new UnicodeDialog(UnicodeDialog::InputHex)),
- m_projectTitlePath(projectTitlePath)
+ m_projectTitlePath(projectTitlePath),
+ m_tc(tc)
{
setupUi(this);
setFont(KGlobalSettings::toolBarFont());
//toolBox->setFont(KGlobalSettings::toolBarFont());
frame_properties->setEnabled(false);
rect_properties->setFixedHeight(frame_properties->height() + 4);
+ no_properties->setFixedHeight(frame_properties->height() + 4);
+ image_properties->setFixedHeight(frame_properties->height() + 4);
text_properties->setFixedHeight(frame_properties->height() + 4);
+ frame_properties->setFixedHeight(frame_toolbar->height());
m_frameWidth = render->renderWidth();
m_frameHeight = render->renderHeight();
+ showToolbars(TITLE_NONE);
+
+ //TODO: get default title duration instead of hardcoded one
+ title_duration->setText(m_tc.getTimecode(GenTime(5000 / 1000.0)));
connect(kcolorbutton, SIGNAL(clicked()), this, SLOT(slotChangeBackground())) ;
connect(horizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(slotChangeBackground())) ;
// initialize graphic scene
m_scene = new GraphicsSceneRectMove(this);
graphicsView->setScene(m_scene);
- m_titledocument.setScene(m_scene);
+ m_titledocument.setScene(m_scene, m_frameWidth, m_frameHeight);
connect(m_scene, SIGNAL(changed(QList<QRectF>)), this, SLOT(slotChanged()));
// a gradient background
readChoices();
initViewports();
- QTimer::singleShot(500, this, SLOT(slotAdjustZoom()));
graphicsView->show();
//graphicsView->setRenderHint(QPainter::Antialiasing);
graphicsView->setInteractive(true);
kDebug() << "// TITLE WIDGWT: " << graphicsView->viewport()->width() << "x" << graphicsView->viewport()->height();
//toolBox->setItemEnabled(2, false);
if (!url.isEmpty()) {
- m_count = m_titledocument.loadDocument(url, m_startViewport, m_endViewport) + 1;
+ double out;
+ m_count = m_titledocument.loadDocument(url, m_startViewport, m_endViewport, &out) + 1;
+ adjustFrameSize();
+ title_duration->setText(m_tc.getTimecode(GenTime(out)));
slotSelectTool();
} else {
slotTextTool();
}
-
- showToolbars(TITLE_NONE);
+ QTimer::singleShot(200, this, SLOT(slotAdjustZoom()));
}
TitleWidget::~TitleWidget()
void TitleWidget::loadTitle()
{
- KUrl url = KFileDialog::getOpenUrl(KUrl(m_projectTitlePath), "*.kdenlivetitle", this, i18n("Load Title"));
+ KUrl url = KFileDialog::getOpenUrl(KUrl(m_projectTitlePath), "application/x-kdenlivetitle", this, i18n("Load Title"));
if (!url.isEmpty()) {
QList<QGraphicsItem *> items = m_scene->items();
for (int i = 0; i < items.size(); i++) {
if (items.at(i)->zValue() > -1000) delete items.at(i);
}
m_scene->clearTextSelection();
- m_count = m_titledocument.loadDocument(url, m_startViewport, m_endViewport) + 1;
+ double out;
+ m_count = m_titledocument.loadDocument(url, m_startViewport, m_endViewport, &out) + 1;
+ adjustFrameSize();
+ title_duration->setText(m_tc.getTimecode(GenTime(out / 1000.0)));
insertingValues = true;
startViewportX->setValue(m_startViewport->data(0).toInt());
startViewportY->setValue(m_startViewport->data(1).toInt());
endViewportSize->setValue(m_endViewport->data(2).toInt());
insertingValues = false;
slotSelectTool();
+ slotAdjustZoom();
}
}
void TitleWidget::saveTitle(KUrl url)
{
- if (url.isEmpty()) url = KFileDialog::getSaveUrl(KUrl(m_projectTitlePath), "*.kdenlivetitle", this, i18n("Save Title"));
+ if (url.isEmpty()) url = KFileDialog::getSaveUrl(KUrl(m_projectTitlePath), "application/x-kdenlivetitle", this, i18n("Save Title"));
if (!url.isEmpty()) {
- if (m_titledocument.saveDocument(url, m_startViewport, m_endViewport) == false)
+ if (m_titledocument.saveDocument(url, m_startViewport, m_endViewport, GenTime(m_tc.getFrameCount(title_duration->text()), m_render->fps()).ms()) == false)
KMessageBox::error(this, i18n("Cannot write to file %1", url.path()));
}
}
QDomDocument TitleWidget::xml()
{
QDomDocument doc = m_titledocument.xml(m_startViewport, m_endViewport);
+ doc.documentElement().setAttribute("out", GenTime(m_tc.getFrameCount(title_duration->text())).ms());
if (cropImage->isChecked()) {
doc.documentElement().setAttribute("crop", 1);
}
return doc;
}
+int TitleWidget::duration() const
+{
+ return GenTime(m_tc.getFrameCount(title_duration->text())).frames(m_render->fps());
+}
+
void TitleWidget::setXml(QDomDocument doc)
{
- m_count = m_titledocument.loadFromXml(doc, m_startViewport, m_endViewport);
+ double out;
+ m_count = m_titledocument.loadFromXml(doc, m_startViewport, m_endViewport, &out);
+ adjustFrameSize();
+ title_duration->setText(m_tc.getTimecode(GenTime(out / 1000.0)));
+ /*if (doc.documentElement().hasAttribute("out")) {
+ GenTime duration = GenTime(doc.documentElement().attribute("out").toDouble() / 1000.0);
+ title_duration->setText(m_tc.getTimecode(duration));
+ }
+ else title_duration->setText(m_tc.getTimecode(GenTime(5000)));*/
+
QDomElement e = doc.documentElement();
cropImage->setChecked(e.hasAttribute("crop"));
m_transformations.clear();
kcolorbutton->setColor(background_color);
horizontalSlider->blockSignals(false);
kcolorbutton->blockSignals(false);
-
+ QTimer::singleShot(200, this, SLOT(slotAdjustZoom()));
slotSelectTool();
}
cropImage->setChecked(titleConfig.readEntry("crop_image", cropImage->isChecked()));
}
+void TitleWidget::adjustFrameSize()
+{
+ m_frameWidth = m_titledocument.frameWidth();
+ m_frameHeight = m_titledocument.frameHeight();
+ m_frameBorder->setRect(0, 0, m_frameWidth, m_frameHeight);
+ displayBackgroundFrame();
+}
+
+
+
+