]> git.sesse.net Git - kdenlive/commitdiff
Use TimecodeDisplay in marker dialog
authorTill Theato <root@ttill.de>
Tue, 15 Jun 2010 16:21:54 +0000 (16:21 +0000)
committerTill Theato <root@ttill.de>
Tue, 15 Jun 2010 16:21:54 +0000 (16:21 +0000)
svn path=/trunk/kdenlive/; revision=4518

src/markerdialog.cpp
src/markerdialog.h
src/timecode.cpp
src/widgets/markerdialog_ui.ui

index c7c04809d0d12c32f8f7031fafbb7d44b06e7869..0ee5657f72685a0fb9d3e8f338798e75cda5832b 100644 (file)
@@ -30,17 +30,20 @@ MarkerDialog::MarkerDialog(DocClipBase *clip, CommentedTime t, Timecode tc, cons
         QDialog(parent),
         m_producer(NULL),
         m_profile(NULL),
-        m_clip(clip),
-        m_tc(tc),
-        m_frameDisplay(KdenliveSettings::frametimecode())
+        m_clip(clip)
 {
     setFont(KGlobalSettings::toolBarFont());
-    m_fps = m_tc.fps();
     setupUi(this);
     setWindowTitle(caption);
+
+    m_in = new TimecodeDisplay(tc, this);
+    inputLayout->addWidget(m_in);
+    m_in->setValue(t.time());
+
     m_previewTimer = new QTimer(this);
 
     if (m_clip != NULL) {
+        m_in->setRange(0, m_clip->duration().frames(tc.fps()));
         m_previewTimer->setInterval(500);
         connect(m_previewTimer, SIGNAL(timeout()), this, SLOT(slotUpdateThumb()));
         m_profile = new Mlt::Profile((char*) KdenliveSettings::current_profile().data());
@@ -58,6 +61,7 @@ MarkerDialog::MarkerDialog(DocClipBase *clip, CommentedTime t, Timecode tc, cons
         if (width % 2 == 1) width++;
         QPixmap p(width, 100);
         QString colour = clip->getProperty("colour");
+
         switch (m_clip->clipType()) {
         case VIDEO:
         case AV:
@@ -66,7 +70,7 @@ MarkerDialog::MarkerDialog(DocClipBase *clip, CommentedTime t, Timecode tc, cons
             connect(this, SIGNAL(updateThumb()), m_previewTimer, SLOT(start()));
         case IMAGE:
         case TEXT:
-            p = QPixmap::fromImage(KThumb::getFrame(m_producer, t.time().frames(m_fps), width, 100));
+            p = QPixmap::fromImage(KThumb::getFrame(m_producer, m_in->value(), width, 100));
             break;
         case COLOR:
             colour = colour.replace(0, 2, "#");
@@ -75,30 +79,21 @@ MarkerDialog::MarkerDialog(DocClipBase *clip, CommentedTime t, Timecode tc, cons
         default:
             p.fill(Qt::black);
         }
+
         if (!p.isNull()) {
             clip_thumb->setFixedWidth(p.width());
             clip_thumb->setFixedHeight(p.height());
             clip_thumb->setPixmap(p);
         }
-        connect(marker_position, SIGNAL(textChanged(const QString &)), this, SIGNAL(updateThumb()));
-    } else clip_thumb->setHidden(true);
-
-    marker_position->setInputMask("");
-    if (m_frameDisplay) {
-        QIntValidator *valid = new QIntValidator(this);
-        valid->setBottom(0);
-        marker_position->setValidator(valid);
-    } else
-        marker_position->setValidator(tc.validator());
-    marker_position->setText(tc.getDisplayTimecode(t.time(), m_frameDisplay));
+        connect(m_in, SIGNAL(editingFinished()), this, SIGNAL(updateThumb()));
+    } else {
+        clip_thumb->setHidden(true);
+    }
 
     marker_comment->setText(t.comment());
     marker_comment->selectAll();
     marker_comment->setFocus();
 
-    connect(position_up, SIGNAL(clicked()), this, SLOT(slotTimeUp()));
-    connect(position_down, SIGNAL(clicked()), this, SLOT(slotTimeDown()));
-
     adjustSize();
 }
 
@@ -112,43 +107,19 @@ MarkerDialog::~MarkerDialog()
 void MarkerDialog::slotUpdateThumb()
 {
     m_previewTimer->stop();
-    int pos = m_tc.getDisplayFrameCount(marker_position->text(), m_frameDisplay);
+    int pos = m_in->value();
     int width = 100.0 * m_dar;
     if (width % 2 == 1) width++;
     QPixmap p = QPixmap::fromImage(KThumb::getFrame(m_producer, pos, width, 100));
-    if (!p.isNull()) clip_thumb->setPixmap(p);
-    else kDebug() << "!!!!!!!!!!!  ERROR CREATING THUMB";
-}
-
-void MarkerDialog::slotTimeUp()
-{
-    int duration = m_tc.getDisplayFrameCount(marker_position->text(), m_frameDisplay);
-    if (m_clip && duration >= m_clip->duration().frames(m_fps)) return;
-    duration ++;
-    marker_position->setText(m_tc.getDisplayTimecode(GenTime(duration, m_fps), m_frameDisplay));
-}
-
-void MarkerDialog::slotTimeDown()
-{
-    int duration = m_tc.getDisplayFrameCount(marker_position->text(), m_frameDisplay);
-    if (duration <= 0) return;
-    duration --;
-    marker_position->setText(m_tc.getDisplayTimecode(GenTime(duration, m_fps), m_frameDisplay));
+    if (!p.isNull())
+        clip_thumb->setPixmap(p);
+    else
+        kDebug() << "!!!!!!!!!!!  ERROR CREATING THUMB";
 }
 
 CommentedTime MarkerDialog::newMarker()
 {
-    return CommentedTime(GenTime(m_tc.getDisplayFrameCount(marker_position->text(), m_frameDisplay), m_fps), marker_comment->text());
-}
-
-void MarkerDialog::wheelEvent(QWheelEvent * event)
-{
-    if (marker_position->underMouse() || clip_thumb->underMouse()) {
-        if (event->delta() > 0)
-            slotTimeUp();
-        else
-            slotTimeDown();
-    }
+    return CommentedTime(m_in->gentime(), marker_comment->text());
 }
 
 #include "markerdialog.moc"
index a3867a2551de821d4835b9fce1c57da8dcb77b7c..88960ca480d596aff5d926a785f8ab1574692968 100644 (file)
 #define MARKERDIALOG_H
 
 
+#include "ui_markerdialog_ui.h"
 #include "docclipbase.h"
 #include "timecode.h"
-#include "ui_markerdialog_ui.h"
+#include "timecodedisplay.h"
 
 namespace Mlt
 {
@@ -32,6 +33,12 @@ class Producer;
 class Profile;
 };
 
+/**
+ * @class MarkerDialog
+ * @brief A dialog for editing markers and guides.
+ * @author Jean-Baptiste Mardelle
+ */
+
 class MarkerDialog : public QDialog, public Ui::MarkerDialog_UI
 {
     Q_OBJECT
@@ -42,22 +49,15 @@ public:
     CommentedTime newMarker();
 
 private slots:
-    void slotTimeUp();
-    void slotTimeDown();
     void slotUpdateThumb();
 
-protected:
-    void wheelEvent(QWheelEvent * event);
-
 private:
     Mlt::Producer *m_producer;
     Mlt::Profile *m_profile;
     DocClipBase *m_clip;
-    Timecode m_tc;
-    double m_fps;
+    TimecodeDisplay *m_in;
     double m_dar;
     QTimer *m_previewTimer;
-    bool m_frameDisplay;
 
 signals:
     void updateThumb();
index 3fcc5ad52e537f66ae157e61c3276f356d90a1ef..6973e81eeaa4e08eaa4003f9be37cf5fd577235f 100644 (file)
@@ -60,8 +60,6 @@ const QValidator *Timecode::validator() const
     return m_validator;
 }
 
-
-
 QString Timecode::reformatSeparators(QString duration) const
 {
     if (m_dropFrame)
index 35ad987e2d2dd8acfe5acf601eede8bde590a463..089c87a5d9753e49cc5f526da8a41ba7549c257e 100644 (file)
@@ -6,7 +6,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>321</width>
+    <width>322</width>
     <height>111</height>
    </rect>
   </property>
    <string>Marker</string>
   </property>
   <layout class="QGridLayout" name="gridLayout">
-   <item row="0" column="2">
-    <layout class="QHBoxLayout" name="horizontalLayout">
-     <item>
-      <widget class="KRestrictedLine" name="marker_position">
-       <property name="inputMask">
-        <string>99:99:99:99; </string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <layout class="QVBoxLayout" name="verticalLayout">
-       <property name="spacing">
-        <number>0</number>
-       </property>
-       <item>
-        <widget class="QToolButton" name="position_up">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="Fixed" vsizetype="Maximum">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="maximumSize">
-          <size>
-           <width>16777215</width>
-           <height>18</height>
-          </size>
-         </property>
-         <property name="text">
-          <string>...</string>
-         </property>
-         <property name="autoRaise">
-          <bool>true</bool>
-         </property>
-         <property name="arrowType">
-          <enum>Qt::UpArrow</enum>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QToolButton" name="position_down">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="Fixed" vsizetype="Maximum">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="maximumSize">
-          <size>
-           <width>16777215</width>
-           <height>18</height>
-          </size>
-         </property>
-         <property name="text">
-          <string>...</string>
-         </property>
-         <property name="autoRaise">
-          <bool>true</bool>
-         </property>
-         <property name="arrowType">
-          <enum>Qt::DownArrow</enum>
-         </property>
-        </widget>
-       </item>
-      </layout>
-     </item>
-    </layout>
-   </item>
    <item row="3" column="0" colspan="3">
     <widget class="QDialogButtonBox" name="buttonBox">
      <property name="orientation">
      </property>
     </widget>
    </item>
+   <item row="0" column="2">
+    <layout class="QHBoxLayout" name="inputLayout"/>
+   </item>
   </layout>
   <zorder>buttonBox</zorder>
   <zorder>clip_filesize_3</zorder>
   <zorder>clip_thumb</zorder>
   <zorder>marker_comment</zorder>
   <zorder>clip_filesize_2</zorder>
+  <zorder></zorder>
  </widget>
  <customwidgets>
   <customwidget>
    <extends>QLineEdit</extends>
    <header>klineedit.h</header>
   </customwidget>
-  <customwidget>
-   <class>KRestrictedLine</class>
-   <extends>KLineEdit</extends>
-   <header>krestrictedline.h</header>
-  </customwidget>
  </customwidgets>
  <resources/>
  <connections>