{
set_progress_unknown ();
- list<shared_ptr<Content>> changed;
-
- for (auto i: _film->content()) {
- bool ic = false;
- for (size_t j = 0; j < i->number_of_paths(); ++j) {
- if (boost::filesystem::last_write_time(i->path(j)) != i->last_write_time(j)) {
- ic = true;
- break;
- }
- }
- if (!ic && i->calculate_digest() != i->digest()) {
- ic = true;
- }
- if (ic) {
- changed.push_back (i);
- }
- }
+ auto content = _film->content();
+ std::vector<shared_ptr<Content>> changed;
+ std::copy_if (content.begin(), content.end(), std::back_inserter(changed), [](shared_ptr<Content> c) { return c->changed(); });
if (!changed.empty()) {
if (_gui) {
auto last_write = boost::filesystem::last_write_time(p, ec);
_last_write_times.push_back (ec ? 0 : last_write);
}
+
+
+bool
+Content::changed () const
+{
+ bool write_time_changed = false;
+ for (auto i = 0U; i < _paths.size(); ++i) {
+ if (boost::filesystem::last_write_time(_paths[i]) != last_write_time(i)) {
+ write_time_changed = true;
+ break;
+ }
+ }
+
+ return (write_time_changed || calculate_digest() != digest());
+}
std::shared_ptr<TextContent> only_text () const;
std::shared_ptr<TextContent> text_of_original_type (TextType type) const;
+ /** @return true if this content has changed since it was last examined */
+ bool changed () const;
+
protected:
virtual void add_properties (std::shared_ptr<const Film> film, std::list<UserProperty> &) const;