]> git.sesse.net Git - kdenlive/blobdiff - src/recmonitor.h
Replace uppercase enums into camel into.
[kdenlive] / src / recmonitor.h
index c2f2c37ab3651cff660bd3cc84a0dfc03b2124f1..62d9459424954faae2230466f861f3555c4b18d9 100644 (file)
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA          *
  ***************************************************************************/
 
+/**
+* @class RecMonitor
+* @brief Records video via dvgrab, video4linux and recordmydesktop
+* @author Jean-Baptiste Mardelle
+*/
 
 #ifndef RECMONITOR_H
 #define RECMONITOR_H
 
+#include "widgets/abstractmonitor.h"
+#include "definitions.h"
+#include "ui_recmonitor_ui.h"
+
 #include <QToolBar>
 #include <QTimer>
 #include <QProcess>
 #include <KIcon>
 #include <KAction>
 #include <KRestrictedLine>
+#include <KDateTime>
+#include <kdeversion.h>
+#include <KComboBox>
+#include <kcapacitybar.h>
 
-#include "ui_recmonitor_ui.h"
-#include "smallruler.h"
+#if KDE_IS_VERSION(4,7,0)
+#include <KMessageWidget>
+#endif
 
-class RecMonitor : public QWidget {
+class MonitorManager;
+class MltDeviceCapture;
+class AbstractRender;
+
+class RecMonitor : public AbstractMonitor, public Ui::RecMonitor_UI
+{
     Q_OBJECT
 
 public:
-    RecMonitor(QString name, QWidget *parent = 0);
-    QString name() const;
-
+    explicit RecMonitor(Kdenlive::MonitorId name, MonitorManager *manager, QWidget *parent = 0);
+    ~RecMonitor();
+
+    AbstractRender *abstractRender();
+    void analyseFrames(bool analyse);
+    enum CaptureDevice {
+        Firewire = 0,
+        Video4Linux = 1,
+        ScreenBag = 2,
+        BlackMagic = 3
+    };
 
 protected:
-    virtual void mousePressEvent(QMouseEvent * event);
+    void mousePressEvent(QMouseEvent * event);
+    void mouseDoubleClickEvent(QMouseEvent * event);
 
 private:
-    Ui::RecMonitor_UI ui;
-    QString m_tmpFolder;
-    QString m_name;
-
-    bool m_isActive;
-
+    KDateTime m_captureTime;
+    /** @brief Provide feedback about dvgrab operations */
+    QLabel m_dvinfo;
+    
+    /** @brief Keeps a brief (max ten items) history of warning or error messages
+     *         (currently only used for BLACKMAGIC). */
+    KComboBox m_logger;
+    QString m_capturePath;
+
+    KCapacityBar *m_freeSpace;
+    QTimer m_spaceTimer;
 
     KUrl m_captureFile;
     KIcon m_playIcon;
     KIcon m_pauseIcon;
 
-    QProcess *captureProcess;
-    QProcess *displayProcess;
-    QTimer *m_initTimer;
+    QProcess *m_captureProcess;
+    QProcess *m_displayProcess;
     bool m_isCapturing;
+    /** did the user capture something ? */
+    bool m_didCapture;
     bool m_isPlaying;
     QStringList m_captureArgs;
     QStringList m_displayArgs;
@@ -70,27 +104,63 @@ private:
     QAction *m_stopAction;
     QAction *m_discAction;
 
+    MonitorManager *m_manager;
+    MltDeviceCapture *m_captureDevice;
+    VideoContainer *m_videoBox;
+    QAction *m_addCapturedClip;
+    QAction *m_previewSettings;
+    QString m_error;
+
+#if KDE_IS_VERSION(4,7,0)
+    KMessageWidget *m_infoMessage;
+#endif
+
+    bool m_analyse;
+    void checkDeviceAvailability();
+    QPixmap mergeSideBySide(const QPixmap& pix, const QString &txt);
+    void manageCapturedFiles();
+    /** @brief Build MLT producer for device, using path as profile. */
+    void buildMltDevice(const QString &path);
+    /** @brief Create string containing an XML playlist for v4l capture. */
+    const QString getV4lXmlPlaylist(const MltVideoProfile &profile, bool *isXml);
+    /** @brief Display an error message to user. */
+    void showWarningMessage(const QString &text, bool logAction = false);
+
 private slots:
-    void slotStartCapture(bool play = true);
-    void slotStopCapture();
+    void slotStartPreview(bool play = true);
     void slotRecord();
     void slotProcessStatus(QProcess::ProcessState status);
     void slotVideoDeviceChanged(int ix);
     void slotRewind();
     void slotForward();
     void slotDisconnect();
+    //void slotStartGrab(const QRect &rect);
+    void slotConfigure();
+    void slotReadProcessInfo();
+    void slotUpdateFreeSpace();
+    void slotSetInfoMessage(const QString &message);
+    void slotDroppedFrames(int dropped);
+    /** @brief Change setting for preview while recording. */
+    void slotChangeRecordingPreview(bool enable);
+    /** @brief Show last jog error log. */
+    void slotShowLog();
 
 public slots:
     void refreshRecMonitor(bool visible);
+    void slotPlay();
     void stop();
     void start();
-    void activateRecMonitor();
-    void slotPlay();
+    void slotStopCapture();
+    void slotUpdateCaptureFolder(const QString &currentProjectFolder);
+    void slotMouseSeek(int eventDelta, bool fast);
+    void slotSwitchFullScreen();
 
 signals:
     void renderPosition(int);
     void durationChanged(int);
     void addProjectClip(KUrl);
+    void addProjectClipList(KUrl::List);
+    void showConfigDialog(int, int);
 };
 
 #endif