X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=futatabi%2Fmainwindow.h;h=97f0f296aef8638372635b13b14d0be019e2a923;hb=85e1c098fb61869cba7edf20a6281b2f87a7b9ed;hp=0fa337f61e6d56dc5f5212277413848acd273ca6;hpb=ffe2343de3fe982cc52a449b13f01137819ed42d;p=nageru diff --git a/futatabi/mainwindow.h b/futatabi/mainwindow.h index 0fa337f..97f0f29 100644 --- a/futatabi/mainwindow.h +++ b/futatabi/mainwindow.h @@ -19,7 +19,11 @@ namespace Ui { class MainWindow; } // namespace Ui +struct FrameOnDisk; +class JPEGFrameView; class Player; +class QPushButton; +class QTableView; class MainWindow : public QMainWindow { Q_OBJECT @@ -31,10 +35,11 @@ public: // HTTP callback. TODO: Does perhaps not belong to MainWindow? std::pair get_queue_status() const; -//private: - Ui::MainWindow *ui; + void display_frame(unsigned stream_idx, const FrameOnDisk &frame); private: + Ui::MainWindow *ui; + QLabel *disk_free_label; std::unique_ptr preview_player, live_player; DB db; @@ -75,12 +80,20 @@ private: mutable std::mutex queue_status_mu; std::string queue_status; // Under queue_status_mu. + struct FrameAndDisplay { + QFrame *frame; + JPEGFrameView *display; + QPushButton *preview_btn; + }; + std::vector 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 stop_clicked(); void live_player_clip_done(); std::pair live_player_get_next_clip(); void live_player_clip_progress(const std::map &progress); @@ -117,6 +130,9 @@ private: void highlight_camera_input(int stream_idx); + template + void replace_model(QTableView *view, Model **model, Model *new_model); + private slots: void relayout(); };