X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=futatabi%2Fmainwindow.h;h=1fbfb948de072a866f1c38b9edcab4445d3fa5d9;hb=ec86648ba1772001c26d23845d54ac7254cc92e5;hp=469cb0ee7181af7761509ea7a602c07296c6e6a7;hpb=ac1f4741a43cd9ab6ff5ff5a6f6bd52f3995a121;p=nageru diff --git a/futatabi/mainwindow.h b/futatabi/mainwindow.h index 469cb0e..1fbfb94 100644 --- a/futatabi/mainwindow.h +++ b/futatabi/mainwindow.h @@ -4,6 +4,7 @@ #include "clip_list.h" #include "db.h" #include "midi_mapper.h" +#include "player.h" #include "state.pb.h" #include @@ -43,6 +44,7 @@ public: void preview() override; void queue() override; void play() override; + void next() override; void toggle_lock() override; void jog(int delta) override; void switch_camera(unsigned camera_idx) override; @@ -59,6 +61,7 @@ private: QLabel *disk_free_label; std::unique_ptr preview_player, live_player; + bool preview_playing = false; DB db; unsigned num_cameras; @@ -100,6 +103,10 @@ private: // NOTE: The undo stack always has the current state on top. std::deque undo_stack, redo_stack; + // If we need to blink the lock light, we do so for only a second. + // This timer signals that we should end it. + QTimer *lock_blink_timeout; + // Before a change that should be deferred (see above), currently_deferring_model_changes // must be set to true, and current_change_id must be given contents describing what's // changed to avoid accidental grouping. @@ -113,6 +120,7 @@ private: QFrame *frame; JPEGFrameView *display; QPushButton *preview_btn; + bool hidden = false; }; std::vector displays; @@ -123,17 +131,20 @@ private: MIDIMapper midi_mapper; void change_num_cameras(); + void relayout_displays(); void cue_in_clicked(); void cue_out_clicked(); void queue_clicked(); void preview_clicked(); void preview_angle_clicked(unsigned stream_idx); void play_clicked(); + void next_clicked(); void stop_clicked(); void speed_slider_changed(int percent); void speed_lock_clicked(); + void preview_player_done(); void live_player_done(); - void live_player_clip_progress(const std::map &progress, double time_remaining); + void live_player_clip_progress(const std::map &progress, TimeRemaining time_remaining); void set_output_status(const std::string &status); void playlist_duplicate(); void playlist_remove(); @@ -147,6 +158,8 @@ private: void state_changed(const StateProto &state); // Called post-filtering. void save_settings(); + void lock_blink_timer_expired(); + enum Rounding { FIRST_AT_OR_AFTER, LAST_BEFORE }; void preview_single_frame(int64_t pts, unsigned stream_idx, Rounding rounding); @@ -155,11 +168,13 @@ private: void playlist_selection_changed(); void clip_list_selection_changed(const QModelIndex ¤t, const QModelIndex &previous); + std::vector get_playlist(size_t start_row, size_t end_row); void resizeEvent(QResizeEvent *event) override; bool eventFilter(QObject *watched, QEvent *event) override; void report_disk_space(off_t free_bytes, double estimated_seconds_left); + void midi_mapping_triggered(); void exit_triggered(); void export_cliplist_clip_multitrack_triggered(); void export_playlist_clip_interpolated_triggered(); @@ -168,7 +183,9 @@ private: void undo_triggered(); void redo_triggered(); void quality_toggled(int quality, bool checked); - void padding_toggled(double seconds, bool checked); + void in_padding_toggled(double seconds, bool checked); + void out_padding_toggled(double seconds, bool checked); + void hide_camera_toggled(unsigned camera_idx, bool checked); void highlight_camera_input(int stream_idx); void enable_or_disable_preview_button();