24class ChordPresetPack :
public QObject
27 Q_PROPERTY (QString name READ getName WRITE setName NOTIFY nameChanged)
31 using NameT = QString;
32 ChordPresetPack (QObject * parent =
nullptr);
36 QObject * parent =
nullptr);
42 QString getName ()
const {
return name_; }
43 void setName (
const QString &name);
44 Q_SIGNAL
void nameChanged (
const QString &name);
48 std::string get_document_type ()
const {
return "Zrythm Chord Preset Pack"; }
49 int get_format_major_version ()
const {
return 2; }
50 int get_format_minor_version ()
const {
return 0; }
52 friend void init_from (
54 const ChordPresetPack &other,
57 bool contains_name (
const NameT &name)
const;
59 bool contains_preset (
const ChordPreset &pset)
const;
65 int get_preset_index (
const ChordPreset &pset)
const
67 auto it = std::ranges::find (
presets_, &pset);
68 z_return_val_if_fail (it !=
presets_.end (), -1);
69 return static_cast<int> (std::distance (
presets_.begin (), it));
75 static constexpr std::string_view kNameKey =
"name";
76 static constexpr std::string_view kPresetsKey =
"presets";
77 static constexpr std::string_view kIsStandardKey =
"isStandard";
78 friend void to_json (nlohmann::json &j,
const ChordPresetPack &pack)
80 j[kNameKey] = pack.
name_;
84 friend void from_json (
const nlohmann::json &j, ChordPresetPack &pack)
86 j.at (kNameKey).get_to (pack.
name_);
87 for (
const auto &pset : j.at (kPresetsKey))
91 from_json (pset, *pset_ptr);