diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/playlist.cc | 25 | ||||
| -rw-r--r-- | src/lib/playlist.h | 1 |
2 files changed, 26 insertions, 0 deletions
diff --git a/src/lib/playlist.cc b/src/lib/playlist.cc index 45a06bfe2..7385c8ad5 100644 --- a/src/lib/playlist.cc +++ b/src/lib/playlist.cc @@ -309,6 +309,31 @@ Playlist::add(shared_ptr<const Film> film, shared_ptr<Content> c) void +Playlist::add_at_end(shared_ptr<const Film> film, vector<shared_ptr<Content>> const& content) +{ + Change(ChangeType::PENDING); + + for (auto c: content) { + /* Add {video,subtitle} content after any existing {video,subtitle} content */ + if (c->video) { + c->set_position(film, video_end(film)); + } else if (!c->text.empty()) { + c->set_position(film, text_end(film)); + } + + boost::mutex::scoped_lock lm(_mutex); + _content.push_back(c); + sort(_content.begin(), _content.end(), ContentSorter()); + reconnect(film); + } + + Change(ChangeType::DONE); + + LengthChange(); +} + + +void Playlist::remove(shared_ptr<Content> c) { Change(ChangeType::PENDING); diff --git a/src/lib/playlist.h b/src/lib/playlist.h index c84323b44..c26de5426 100644 --- a/src/lib/playlist.h +++ b/src/lib/playlist.h @@ -55,6 +55,7 @@ public: void set_from_xml(std::shared_ptr<const Film> film, cxml::ConstNodePtr node, int version, std::list<std::string>& notes); void add(std::shared_ptr<const Film> film, std::shared_ptr<Content>); + void add_at_end(std::shared_ptr<const Film> film, std::vector<std::shared_ptr<Content>> const& content); void remove(std::shared_ptr<Content>); void remove(ContentList); void move_earlier(std::shared_ptr<const Film> film, std::shared_ptr<Content>); |
