X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fcross_common.cc;h=2e48bf3e015131fab22094fea7a46b80f028325f;hp=b3a39402ae739cedc2a68598f28dc04dce39d582;hb=ac34066d5e448d1984d11a180be74e31b6e13b5c;hpb=a1f7bf2d9e5610075fbd898cdf52f4f8373741f2 diff --git a/src/lib/cross_common.cc b/src/lib/cross_common.cc index b3a39402a..2e48bf3e0 100644 --- a/src/lib/cross_common.cc +++ b/src/lib/cross_common.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2020 Carl Hetherington + Copyright (C) 2012-2021 Carl Hetherington This file is part of DCP-o-matic. @@ -18,13 +18,58 @@ */ + #include "cross.h" #include "compose.hpp" +#include "dcpomatic_log.h" +#include "warnings.h" +#include +DCPOMATIC_DISABLE_WARNINGS +#include +DCPOMATIC_ENABLE_WARNINGS +#include #include "i18n.h" + using std::string; + +Drive::Drive (string xml) +{ + cxml::Document doc; + doc.read_string (xml); + _device = doc.string_child("Device"); + for (auto i: doc.node_children("MountPoint")) { + _mount_points.push_back (i->content()); + } + _size = doc.number_child("Size"); + _vendor = doc.optional_string_child("Vendor"); + _model = doc.optional_string_child("Model"); +} + + +string +Drive::as_xml () const +{ + xmlpp::Document doc; + auto root = doc.create_root_node ("Drive"); + root->add_child("Device")->add_child_text(_device); + for (auto i: _mount_points) { + root->add_child("MountPoint")->add_child_text(i.string()); + } + root->add_child("Size")->add_child_text(dcp::raw_convert(_size)); + if (_vendor) { + root->add_child("Vendor")->add_child_text(*_vendor); + } + if (_model) { + root->add_child("Model")->add_child_text(*_model); + } + + return doc.write_to_string("UTF-8"); +} + + string Drive::description () const { @@ -46,6 +91,25 @@ Drive::description () const name = _("Unknown"); } - return String::compose("%1 (%2 GB) [%3]", name, gb, _internal_name); + return String::compose(_("%1 (%2 GB) [%3]"), name, gb, _device); } + +string +Drive::log_summary () const +{ + string mp; + for (auto i: _mount_points) { + mp += i.string() + ","; + } + if (mp.empty()) { + mp = "[none]"; + } else { + mp = mp.substr (0, mp.length() - 1); + } + + return String::compose( + "Device %1 mounted on %2 size %3 vendor %4 model %5", + _device, mp, _size, _vendor.get_value_or("[none]"), _model.get_value_or("[none]") + ); +}