00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef SONG_VIEW_H
00023 #define SONG_VIEW_H
00024
00025 #include "ViewItem.h"
00026 #include <QTimer>
00027
00028 class Sheet;
00029 class TrackView;
00030 class ClipsViewPort;
00031 class TrackPanelViewPort;
00032 class TimeLineViewPort;
00033 class Track;
00034 class SheetWidget;
00035 class TrackView;
00036 class PlayHead;
00037 class WorkCursor;
00038 class Curve;
00039
00040 class SheetView : public ViewItem
00041 {
00042 Q_OBJECT
00043 Q_CLASSINFO("touch", tr("Set"))
00044 Q_CLASSINFO("touch_play_cursor", tr("Set"))
00045 Q_CLASSINFO("center", tr("Center View"))
00046 Q_CLASSINFO("scroll_right", tr("Right"))
00047 Q_CLASSINFO("scroll_left", tr("Left"))
00048 Q_CLASSINFO("scroll_up", tr("Up"))
00049 Q_CLASSINFO("scroll_down", tr("Down"))
00050 Q_CLASSINFO("shuttle", tr("Shuttle"))
00051 Q_CLASSINFO("goto_begin", tr("To start"))
00052 Q_CLASSINFO("goto_end", tr("To end"))
00053 Q_CLASSINFO("play_to_begin", tr("To Start"))
00054 Q_CLASSINFO("play_cursor_move", tr("Move"))
00055 Q_CLASSINFO("work_cursor_move", tr("Move"))
00056 Q_CLASSINFO("add_marker", tr("Add Marker"))
00057 Q_CLASSINFO("add_marker_at_playhead", tr("Add Marker at Playhead"))
00058 Q_CLASSINFO("playhead_to_workcursor", tr("To workcursor"))
00059 Q_CLASSINFO("center_playhead", tr("Center"))
00060
00061 public :
00062
00063 SheetView(SheetWidget* sheetwidget,
00064 ClipsViewPort* viewPort,
00065 TrackPanelViewPort* tpvp,
00066 TimeLineViewPort* tlvp,
00067 Sheet* sheet);
00068 ~SheetView();
00069
00070 void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) {};
00071 QRectF boundingRect() const {return QRectF();}
00072
00073 Sheet* get_sheet() const {return m_sheet;}
00074 TrackPanelViewPort* get_trackpanel_view_port() const;
00075 ClipsViewPort* get_clips_viewport() const;
00076
00077 TrackView* get_trackview_under(QPointF point);
00078
00079 void load_theme_data();
00080 void start_shuttle(bool start, bool drag=false);
00081 void update_shuttle_factor();
00082 void set_shuttle_factor_values(int x, int y);
00083 void vzoom(qreal scale);
00084 void hzoom(qreal scale);
00085 void clipviewport_resize_event();
00086 int hscrollbar_value() const;
00087 int vscrollbar_value() const;
00088 int get_peak_cache_zoom_factor() const {return m_peakCacheZoomFactor;}
00089
00090 qint64 timeref_scalefactor;
00091
00092 private:
00093 Sheet* m_sheet;
00094 Curve* m_shuttleCurve;
00095 Curve* m_dragShuttleCurve;
00096 PlayHead* m_playCursor;
00097 ClipsViewPort* m_clipsViewPort;
00098 TrackPanelViewPort* m_tpvp;
00099 TimeLineViewPort* m_tlvp;
00100 QList<TrackView*> m_trackViews;
00101 WorkCursor* m_workCursor;
00102 int m_shuttleXfactor;
00103 int m_shuttleYfactor;
00104 int m_sceneHeight;
00105 int m_peakCacheZoomFactor;
00106 bool m_dragShuttle;
00107 QTimer m_shuttletimer;
00108 QScrollBar* m_vScrollBar;
00109 QScrollBar* m_hScrollBar;
00110 bool m_actOnPlayHead;
00111 bool m_viewportReady;
00112
00113
00114 int m_trackSeperatingHeight;
00115 int m_trackMinimumHeight;
00116 int m_trackMaximumHeight;
00117 int m_trackTopIndent;
00118
00119 void layout_tracks();
00120 void set_hscrollbar_value(int value);
00121 void set_vscrollbar_value(int value);
00122
00123 int mean_track_height();
00124
00125 friend class PlayHead;
00126
00127
00128 public slots:
00129 void set_snap_range(int);
00130 void update_scrollbars();
00131 void stop_follow_play_head();
00132 void follow_play_head();
00133 void set_follow_state(bool state);
00134 void transport_position_set();
00135
00136 Command* touch();
00137 Command* touch_play_cursor();
00138 Command* center();
00139 Command* scroll_right();
00140 Command* scroll_left();
00141 Command* scroll_up();
00142 Command* scroll_down();
00143 Command* shuttle();
00144 Command* goto_begin();
00145 Command* goto_end();
00146 Command* play_to_begin();
00147 Command* play_cursor_move();
00148 Command* work_cursor_move();
00149 Command* add_marker();
00150 Command* add_marker_at_playhead();
00151 Command* playhead_to_workcursor();
00152 Command* center_playhead();
00153
00154 private slots:
00155 void scale_factor_changed();
00156 void add_new_trackview(Track*);
00157 void remove_trackview(Track*);
00158 void update_shuttle();
00159 void sheet_mode_changed();
00160 void hscrollbar_value_changed(int);
00161 void hscrollbar_action(int);
00162 };
00163
00164
00165 #endif