#include <mutex>
#include <QLabel>
#include <QMainWindow>
+#include <QNetworkAccessManager>
#include <stdbool.h>
#include <sys/types.h>
#include <string>
class MainWindow;
} // namespace Ui
+struct FrameOnDisk;
+class JPEGFrameView;
class Player;
+class QPushButton;
+class QTableView;
class MainWindow : public QMainWindow {
Q_OBJECT
// 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;
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();
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();
};