21#include "sharedframe.h"
41class TransportControllable;
45class NewProjectFolder;
46class StatusLabelWidget;
48class Player :
public QWidget
52 typedef enum { SourceTabIndex = 0, ProjectTabIndex } TabIndex;
54 explicit Player(QWidget *parent = 0);
55 void connectTransport(
const TransportControllable *);
58 void setMarkers(
const QList<int> &);
59 QSize videoSize()
const;
60 int position()
const {
return m_position; }
61 NewProjectFolder *projectWidget()
const {
return m_projectWidget; }
62 void moveVideoToScreen(
int screen = -1);
63 void setPauseAfterOpen(
bool pause);
64 TabIndex tabIndex()
const;
68 void showStatusMessage(QString);
69 void inChanged(
int delta);
70 void outChanged(
int delta);
71 void played(
double speed);
72 void paused(
int position);
74 void seeked(
int position);
75 void rewound(
bool forceChangeDirection);
76 void fastForwarded(
bool forceChangeDirection);
77 void previousSought(
int currentPosition);
78 void previousSought();
79 void nextSought(
int currentPosition);
81 void zoomChanged(
float zoom);
82 void gridChanged(
int grid);
83 void scrolledHorizontally(
int x);
84 void scrolledVertically(
int y);
85 void tabIndexChanged(
int index);
88 void loopChanged(
int start,
int end);
89 void toggleVuiRequested();
92 void play(
double speed = 1.0);
93 void pause(
int position = -1);
95 void seek(
int position);
97 void onProducerOpened(
bool play =
true);
98 void onDurationChanged();
99 void onFrameDisplayed(
const SharedFrame &frame);
100 void onVolumeChanged(
int);
101 void onCaptureStateChanged(
bool);
102 void rewind(
bool forceChangeDirection =
true);
103 void fastForward(
bool forceChangeDirection =
true);
106 void switchToTab(TabIndex index);
107 void enableTab(TabIndex index,
bool enabled =
true);
108 void onTabBarClicked(
int index);
109 void setStatusLabel(
const QString &text,
112 QPalette::ColorRole role = QPalette::ToolTipBase);
113 void showIdleStatus();
114 void focusPositionSpinner()
const;
115 void onMuteButtonToggled(
bool checked);
117 void previousFrame();
120 void resizeEvent(QResizeEvent *event)
override;
121 bool event(QEvent *event)
override;
122 void keyPressEvent(QKeyEvent *event)
override;
126 void adjustScrollBars(
float horizontal,
float vertical);
127 double setVolume(
int volume);
128 void setLoopRange(
int start,
int end);
129 void layoutToolbars();
130 void seekBy(
int frames);
132 ScrubBar *m_scrubber;
133 TimeSpinBox *m_positionSpinner;
134 QLabel *m_durationLabel;
135 QLabel *m_inPointLabel;
136 QLabel *m_selectedLabel;
143 QFrame *m_volumePopup;
144 QSlider *m_volumeSlider;
145 QPushButton *m_muteButton;
148 double m_savedVolume;
151 QScrollBar *m_horizontalScroll;
152 QScrollBar *m_verticalScroll;
153 QToolButton *m_zoomButton;
154 QToolButton *m_gridButton;
155 QActionGroup *m_gridActionGroup;
156 QAction *m_gridDefaultAction;
157 QToolButton *m_volumeButton;
158 float m_zoomToggleFactor;
160 bool m_pauseAfterOpen;
162 QWidget *m_videoWidget;
163 QHBoxLayout *m_videoLayout;
164 QWidget *m_videoScrollWidget;
165 const TransportControllable *m_currentTransport;
166 StatusLabelWidget *m_statusLabel;
169 NewProjectFolder *m_projectWidget;
172 DockToolBar *m_currentDurationToolBar;
173 DockToolBar *m_controlsToolBar;
174 DockToolBar *m_optionsToolBar;
175 DockToolBar *m_inSelectedToolBar;
176 QHBoxLayout *m_toolRow1;
177 QHBoxLayout *m_toolRow2;
178 int m_requestedPosition{0};
181 void updateSelection();
182 void onInChanged(
int in);
183 void onOutChanged(
int out);
184 void onVolumeTriggered();
185 void setZoom(
float factor,
const QIcon &icon);
186 void onZoomTriggered();
187 void toggleZoom(
bool checked);
188 void onGridToggled();
189 void toggleGrid(
bool checked);
190 void onStatusFinished();
191 void onOffsetChanged(
const QPoint &offset);