]> git.sesse.net Git - nageru/blobdiff - futatabi/mainwindow.h
Add cue point padding, where a clip is elongated (in both directions) by some given...
[nageru] / futatabi / mainwindow.h
index 798745609b9ca7627aac96aff337f6cc0cae9f5e..2bb880d5ba80e4de3e985b349d61d3d5d997c61c 100644 (file)
@@ -10,6 +10,7 @@
 #include <mutex>
 #include <QLabel>
 #include <QMainWindow>
+#include <QNetworkAccessManager>
 #include <stdbool.h>
 #include <sys/types.h>
 #include <string>
@@ -19,7 +20,10 @@ namespace Ui {
 class MainWindow;
 }  // namespace Ui
 
+struct FrameOnDisk;
+class JPEGFrameView;
 class Player;
+class QPushButton;
 class QTableView;
 
 class MainWindow : public QMainWindow {
@@ -32,13 +36,15 @@ public:
        // HTTP callback. TODO: Does perhaps not belong to MainWindow?
        std::pair<std::string, std::string> 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<Player> preview_player, live_player;
        DB db;
+       unsigned num_cameras;
 
        // State when doing a scrub operation on a timestamp with the mouse.
        bool scrubbing = false;
@@ -76,6 +82,18 @@ 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<FrameAndDisplay> displays;
+
+       // Used to get tally information, if a tally URL is set.
+       QNetworkAccessManager http;
+       QNetworkReply *http_reply = nullptr;
+
+       void change_num_cameras();
        void cue_in_clicked();
        void cue_out_clicked();
        void queue_clicked();
@@ -116,12 +134,16 @@ private:
        void undo_triggered();
        void redo_triggered();
        void quality_toggled(int quality, bool checked);
+       void padding_toggled(double seconds, bool checked);
 
        void highlight_camera_input(int stream_idx);
 
        template <class Model>
        void replace_model(QTableView *view, Model **model, Model *new_model);
 
+       void start_tally();
+       void tally_received();
+
 private slots:
        void relayout();
 };