bool NoteUpdate::basically_equal_to(const Note::Ptr & existing_note) { // NOTE: This would be so much easier if NoteUpdate // was not just a container for a big XML string sharp::XmlReader xml; xml.load_buffer(m_xml_content); NoteData *data = new NoteData(m_uuid); NoteArchiver::obj().read(xml, *data); std::auto_ptr<NoteData> update_data(data); xml.close(); // NOTE: Mostly a hack to ignore missing version attributes std::string existing_inner_content = get_inner_content(existing_note->data().text()); std::string update_inner_content = get_inner_content(update_data->text()); return existing_inner_content == update_inner_content && existing_note->data().title() == update_data->title() && compare_tags(existing_note->data().tags(), update_data->tags()); // TODO: Compare open-on-startup, pinned }