X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=clip_list.cpp;h=cdf97807e3213a35e7a149fb4a3dbc9adbfd5d21;hb=4ee7c0cbe14d845a4174852e0fb10292763a5a88;hp=39dbe9ba0e060a9ae0393bc06eaf2bb1a8a81f59;hpb=93d9a81bcc73658f361d57cc67f0ffa32458534f;p=nageru diff --git a/clip_list.cpp b/clip_list.cpp index 39dbe9b..cdf9780 100644 --- a/clip_list.cpp +++ b/clip_list.cpp @@ -97,6 +97,13 @@ QVariant ClipList::data(const QModelIndex &parent, int role) const { } else { return QVariant(); } + case Column::CAMERA_1: + case Column::CAMERA_2: + case Column::CAMERA_3: + case Column::CAMERA_4: { + unsigned stream_idx = column - int(Column::CAMERA_1); + return QString::fromStdString(clips[row].descriptions[stream_idx]); + } default: return ""; } @@ -146,6 +153,8 @@ QVariant PlayList::data(const QModelIndex &parent, int role) const { } case Column::CAMERA: return qlonglong(clips[row].stream_idx + 1); + case Column::DESCRIPTION: + return QString::fromStdString(clips[row].descriptions[clips[row].stream_idx]); default: return ""; } @@ -201,6 +210,50 @@ QVariant PlayList::headerData(int section, Qt::Orientation orientation, int role } } +Qt::ItemFlags ClipList::flags(const QModelIndex &index) const +{ + if (!index.isValid()) + return Qt::ItemIsEnabled | Qt::ItemIsSelectable; + const int row = index.row(), column = index.column(); + if (size_t(row) >= clips.size()) + return Qt::ItemIsEnabled | Qt::ItemIsSelectable; + + switch (Column(column)) { + case Column::CAMERA_1: + case Column::CAMERA_2: + case Column::CAMERA_3: + case Column::CAMERA_4: + return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsDragEnabled; + default: + return Qt::ItemIsEnabled | Qt::ItemIsSelectable; + } +} + +bool ClipList::setData(const QModelIndex &index, const QVariant &value, int role) +{ + if (!index.isValid() || role != Qt::EditRole) { + return false; + } + + const int row = index.row(), column = index.column(); + if (size_t(row) >= clips.size()) + return false; + + switch (Column(column)) { + case Column::CAMERA_1: + case Column::CAMERA_2: + case Column::CAMERA_3: + case Column::CAMERA_4: { + unsigned stream_idx = column - int(Column::CAMERA_1); + clips[row].descriptions[stream_idx] = value.toString().toStdString(); + emit_data_changed(row); + return true; + } + default: + return false; + } +} + void ClipList::add_clip(const Clip &clip) { beginInsertRows(QModelIndex(), clips.size(), clips.size());