]> git.sesse.net Git - nageru/blob - clip_list.cpp
Make an enum for the view columns.
[nageru] / clip_list.cpp
1 #include "mainwindow.h"
2
3 #include "clip_list.h"
4 #include "ui_mainwindow.h"
5
6 #include <string>
7 #include <vector>
8
9 using namespace std;
10
11 int ClipList::rowCount(const QModelIndex &parent) const {
12         if (parent.isValid()) return 0;
13         return clips.size();
14 }
15
16 int ClipList::columnCount(const QModelIndex &parent) const {
17         if (parent.isValid()) return 0;
18         return Column::NUM_COLUMNS;
19 }
20
21 QVariant ClipList::data(const QModelIndex &parent, int role) const {
22         if (!parent.isValid())
23                 return QVariant();
24         if (role != Qt::DisplayRole)
25                 return QVariant();
26
27         const int row = parent.row(), column = parent.column();
28         if (size_t(row) >= clips.size())
29                 return QVariant();
30
31         switch (column) {
32         case 0:
33                 return qlonglong(clips[row].pts_in);
34         case 1:
35                 if (clips[row].pts_out >= 0) {
36                         return qlonglong(clips[row].pts_out);
37                 } else {
38                         return QVariant();
39                 }
40         case 2:
41                 if (clips[row].pts_out >= 0) {
42                         return qlonglong(clips[row].pts_out - clips[row].pts_in);
43                 } else {
44                         return QVariant();
45                 }
46         default:
47                 return QVariant();
48         }
49 }
50
51 QVariant ClipList::headerData(int section, Qt::Orientation orientation, int role) const {
52         if (role != Qt::DisplayRole)
53                 return QVariant();
54         if (orientation != Qt::Horizontal)
55                 return QVariant();
56
57         switch (section) {
58         case Column::IN:
59                 return "In";
60         case Column::OUT:
61                 return "Out";
62         case Column::DURATION:
63                 return "Duration";
64         case Column::CAMERA_1:
65                 return "Camera 1";
66         case Column::CAMERA_2:
67                 return "Camera 2";
68         case Column::CAMERA_3:
69                 return "Camera 3";
70         case Column::CAMERA_4:
71                 return "Camera 4";
72         default:
73                 return "";
74         }
75 }
76
77 void ClipList::add_clip(const Clip &clip)
78 {
79         beginInsertRows(QModelIndex(), clips.size(), clips.size());
80         clips.push_back(clip);
81         endInsertRows();
82 }
83
84 void ClipList::emit_data_changed(size_t row)
85 {
86         emit dataChanged(index(row, 0), index(row, 6));
87 }