1 #include "mainwindow.h"
4 #include "ui_mainwindow.h"
11 int ClipList::rowCount(const QModelIndex &parent) const {
12 if (parent.isValid()) return 0;
16 int ClipList::columnCount(const QModelIndex &parent) const {
17 if (parent.isValid()) return 0;
18 if (display_type == ListDisplay::CLIP_LIST) {
19 return int(ClipListColumn::NUM_COLUMNS);
21 return int(PlayListColumn::NUM_COLUMNS);
25 QVariant ClipList::data(const QModelIndex &parent, int role) const {
26 if (!parent.isValid())
28 if (role != Qt::DisplayRole)
31 const int row = parent.row(), column = parent.column();
32 if (size_t(row) >= clips.size())
35 if (display_type == ListDisplay::CLIP_LIST) {
36 switch (ClipListColumn(column)) {
37 case ClipListColumn::IN:
38 return qlonglong(clips[row].pts_in);
39 case ClipListColumn::OUT:
40 if (clips[row].pts_out >= 0) {
41 return qlonglong(clips[row].pts_out);
45 case ClipListColumn::DURATION:
46 if (clips[row].pts_out >= 0) {
47 return qlonglong(clips[row].pts_out - clips[row].pts_in);
55 switch (PlayListColumn(column)) {
56 case PlayListColumn::PLAYING:
57 return (row == currently_playing_index) ? "→" : "";
58 case PlayListColumn::IN:
59 return qlonglong(clips[row].pts_in);
60 case PlayListColumn::OUT:
61 if (clips[row].pts_out >= 0) {
62 return qlonglong(clips[row].pts_out);
66 case PlayListColumn::DURATION:
67 if (clips[row].pts_out >= 0) {
68 return qlonglong(clips[row].pts_out - clips[row].pts_in);
72 case PlayListColumn::CAMERA:
73 return qlonglong(clips[row].stream_idx + 1);
80 QVariant ClipList::headerData(int section, Qt::Orientation orientation, int role) const {
81 if (role != Qt::DisplayRole)
83 if (orientation != Qt::Horizontal)
86 if (display_type == ListDisplay::CLIP_LIST) {
87 switch (ClipListColumn(section)) {
88 case ClipListColumn::IN:
90 case ClipListColumn::OUT:
92 case ClipListColumn::DURATION:
94 case ClipListColumn::CAMERA_1:
96 case ClipListColumn::CAMERA_2:
98 case ClipListColumn::CAMERA_3:
100 case ClipListColumn::CAMERA_4:
106 switch (PlayListColumn(section)) {
107 case PlayListColumn::PLAYING:
109 case PlayListColumn::IN:
111 case PlayListColumn::OUT:
113 case PlayListColumn::DURATION:
115 case PlayListColumn::CAMERA:
117 case PlayListColumn::DESCRIPTION:
118 return "Description";
125 void ClipList::add_clip(const Clip &clip)
127 beginInsertRows(QModelIndex(), clips.size(), clips.size());
128 clips.push_back(clip);
132 void ClipList::emit_data_changed(size_t row)
134 if (display_type == ListDisplay::CLIP_LIST) {
135 emit dataChanged(index(row, 0), index(row, int(ClipListColumn::NUM_COLUMNS)));
137 emit dataChanged(index(row, 0), index(row, int(PlayListColumn::NUM_COLUMNS)));
141 void ClipList::set_currently_playing(int index)
143 int old_index = currently_playing_index;
144 if (index != old_index) {
145 currently_playing_index = index;
146 if (old_index != -1) {
147 emit_data_changed(old_index);
150 emit_data_changed(index);