]> git.sesse.net Git - kdenlive/blobdiff - src/titlewidget.cpp
Clean up timecode handling, improves:
[kdenlive] / src / titlewidget.cpp
index 1cf5cc1ce6ff3ea1b580d7827d3419a85bad6d59..028f1a73cad946e9d9e1131e407064c8e31fbf33 100644 (file)
@@ -68,7 +68,7 @@ TitleWidget::TitleWidget(KUrl url, Timecode tc, QString projectTitlePath, Render
     showToolbars(TITLE_NONE);
 
     //TODO: get default title duration instead of hardcoded one
-    title_duration->setText(m_tc.getTimecode(GenTime(5000 / 1000.0), m_render->fps()));
+    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())) ;
@@ -221,7 +221,7 @@ TitleWidget::TitleWidget(KUrl url, Timecode tc, QString projectTitlePath, Render
     // 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
@@ -261,7 +261,6 @@ TitleWidget::TitleWidget(KUrl url, Timecode tc, QString projectTitlePath, Render
     readChoices();
 
     initViewports();
-    QTimer::singleShot(500, this, SLOT(slotAdjustZoom()));
     graphicsView->show();
     //graphicsView->setRenderHint(QPainter::Antialiasing);
     graphicsView->setInteractive(true);
@@ -271,11 +270,13 @@ TitleWidget::TitleWidget(KUrl url, Timecode tc, QString projectTitlePath, Render
     if (!url.isEmpty()) {
         double out;
         m_count = m_titledocument.loadDocument(url, m_startViewport, m_endViewport, &out) + 1;
-        title_duration->setText(m_tc.getTimecode(GenTime(out), m_render->fps()));
+        adjustFrameSize();
+        title_duration->setText(m_tc.getTimecode(GenTime(out)));
         slotSelectTool();
     } else {
         slotTextTool();
     }
+    QTimer::singleShot(200, this, SLOT(slotAdjustZoom()));
 }
 
 TitleWidget::~TitleWidget()
@@ -1305,7 +1306,7 @@ void TitleWidget::setupViewports()
 
 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++) {
@@ -1314,7 +1315,8 @@ void TitleWidget::loadTitle()
         m_scene->clearTextSelection();
         double out;
         m_count = m_titledocument.loadDocument(url, m_startViewport, m_endViewport, &out) + 1;
-        title_duration->setText(m_tc.getTimecode(GenTime(out / 1000.0), m_render->fps()));
+        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());
@@ -1324,14 +1326,15 @@ void TitleWidget::loadTitle()
         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, GenTime(m_tc.getFrameCount(title_duration->text(), m_render->fps()), m_render->fps()).ms()) == 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()));
     }
 }
@@ -1339,7 +1342,7 @@ void TitleWidget::saveTitle(KUrl url)
 QDomDocument TitleWidget::xml()
 {
     QDomDocument doc = m_titledocument.xml(m_startViewport, m_endViewport);
-    doc.documentElement().setAttribute("out", GenTime(m_tc.getFrameCount(title_duration->text(), m_render->fps()), m_render->fps()).ms());
+    doc.documentElement().setAttribute("out", GenTime(m_tc.getFrameCount(title_duration->text())).ms());
     if (cropImage->isChecked()) {
         doc.documentElement().setAttribute("crop", 1);
     }
@@ -1348,20 +1351,20 @@ QDomDocument TitleWidget::xml()
 
 int TitleWidget::duration() const
 {
-    return GenTime(m_tc.getFrameCount(title_duration->text(), m_render->fps()), m_render->fps()).frames(m_render->fps());
+    return GenTime(m_tc.getFrameCount(title_duration->text())).frames(m_render->fps());
 }
 
 void TitleWidget::setXml(QDomDocument doc)
 {
     double out;
     m_count = m_titledocument.loadFromXml(doc, m_startViewport, m_endViewport, &out);
-    kDebug() << "\n\n// TITLE OUT: " << out;
-    title_duration->setText(m_tc.getTimecode(GenTime(out / 1000.0), m_render->fps()));
+    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, m_render->fps()));
+    title_duration->setText(m_tc.getTimecode(duration));
     }
-    else title_duration->setText(m_tc.getTimecode(GenTime(5000), m_render->fps()));*/
+    else title_duration->setText(m_tc.getTimecode(GenTime(5000)));*/
 
     QDomElement e = doc.documentElement();
     cropImage->setChecked(e.hasAttribute("crop"));
@@ -1385,7 +1388,7 @@ void TitleWidget::setXml(QDomDocument doc)
     kcolorbutton->setColor(background_color);
     horizontalSlider->blockSignals(false);
     kcolorbutton->blockSignals(false);
-
+    QTimer::singleShot(200, this, SLOT(slotAdjustZoom()));
     slotSelectTool();
 }
 
@@ -1505,3 +1508,14 @@ void TitleWidget::readChoices()
     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();
+}
+
+
+
+