]> git.sesse.net Git - kdenlive/blob - src/monitor.h
Show overlay info on monitor when position is at zone start or end:
[kdenlive] / src / monitor.h
1 /***************************************************************************
2  *   Copyright (C) 2007 by Jean-Baptiste Mardelle (jb@kdenlive.org)        *
3  *                                                                         *
4  *   This program is free software; you can redistribute it and/or modify  *
5  *   it under the terms of the GNU General Public License as published by  *
6  *   the Free Software Foundation; either version 2 of the License, or     *
7  *   (at your option) any later version.                                   *
8  *                                                                         *
9  *   This program is distributed in the hope that it will be useful,       *
10  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
11  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
12  *   GNU General Public License for more details.                          *
13  *                                                                         *
14  *   You should have received a copy of the GNU General Public License     *
15  *   along with this program; if not, write to the                         *
16  *   Free Software Foundation, Inc.,                                       *
17  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA          *
18  ***************************************************************************/
19
20
21 #ifndef MONITOR_H
22 #define MONITOR_H
23
24 #include <KIcon>
25 #include <KAction>
26 #include <KRestrictedLine>
27 #include <QDomElement>
28
29 #include "ui_monitor_ui.h"
30
31 class MonitorManager;
32 class Render;
33 class SmallRuler;
34 class DocClipBase;
35
36 class MonitorRefresh : public QWidget {
37     Q_OBJECT
38 public:
39     MonitorRefresh(QWidget* parent);
40     virtual void paintEvent(QPaintEvent * event);
41     void setRenderer(Render* render);
42
43 private:
44     Render *m_renderer;
45 };
46
47 class Overlay : public QWidget {
48     Q_OBJECT
49 public:
50     Overlay(QWidget* parent);
51     virtual void paintEvent(QPaintEvent * event);
52     void setOverlayText(const QString &);
53
54 private:
55     QString m_text;
56 };
57
58 class Monitor : public QWidget {
59     Q_OBJECT
60
61 public:
62     Monitor(QString name, MonitorManager *manager, QWidget *parent = 0);
63     virtual ~Monitor();
64     Render *render;
65     void resetProfile();
66     QString name() const;
67     void resetSize();
68     bool isActive() const;
69     void pause();
70     void setupMenu(QMenu *goMenu);
71     QDomDocument sceneList();
72
73 protected:
74     virtual void mousePressEvent(QMouseEvent * event);
75     virtual void mouseReleaseEvent(QMouseEvent * event);
76     virtual void wheelEvent(QWheelEvent * event);
77     virtual void mouseMoveEvent(QMouseEvent *event);
78     virtual QStringList mimeTypes() const;
79     /*    virtual void dragMoveEvent(QDragMoveEvent * event);
80         virtual Qt::DropActions supportedDropActions() const;*/
81
82 //    virtual void resizeEvent(QResizeEvent * event);
83 //    virtual void paintEvent(QPaintEvent * event);
84
85 private:
86     Ui::Monitor_UI ui;
87     MonitorManager *m_monitorManager;
88     MonitorRefresh *m_monitorRefresh;
89     QString m_name;
90     double m_scale;
91     int m_length;
92     int m_position;
93     SmallRuler *m_ruler;
94     KIcon m_playIcon;
95     KIcon m_pauseIcon;
96     bool m_isActive;
97     KRestrictedLine *m_timePos;
98     QAction *m_playAction;
99     QMenu *m_contextMenu;
100     QMenu *m_configMenu;
101     QMenu *m_playMenu;
102     DocClipBase *m_currentClip;
103     QPoint m_DragStartPosition;
104     bool m_dragStarted;
105     Overlay *m_overlay;
106     void checkOverlay();
107
108 private slots:
109     void adjustRulerSize(int length);
110     void seekCursor(int pos);
111     void rendererStopped(int pos);
112     void slotExtractCurrentFrame();
113     void slotSetThumbFrame();
114     void slotSetSizeOneToOne();
115     void slotSetSizeOneToTwo();
116     void slotSaveZone();
117     void slotSeek();
118
119 public slots:
120     void slotOpenFile(const QString &);
121     void slotSetXml(DocClipBase *clip, const int position = -1);
122     void initMonitor();
123     void refreshMonitor(bool visible);
124     void slotSeek(int pos);
125     void stop();
126     void start();
127     void activateMonitor();
128     void slotPlay();
129     void slotPlayZone();
130     void slotLoopZone();
131     void slotForward(double speed = 0);
132     void slotRewind(double speed = 0);
133     void slotRewindOneFrame();
134     void slotForwardOneFrame();
135     void saveSceneList(QString path, QDomElement info = QDomElement());
136     void slotStart();
137     void slotEnd();
138     void slotSetZoneStart();
139     void slotSetZoneEnd();
140     void slotZoneStart();
141     void slotZoneEnd();
142     void slotZoneMoved(int start, int end);
143
144 signals:
145     void renderPosition(int);
146     void durationChanged(int);
147     void refreshClipThumbnail(const QString &);
148     void adjustMonitorSize();
149     void zoneUpdated(QPoint);
150     void saveZone(Render *, QPoint);
151 };
152
153 #endif