Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
named_object.h
1// SPDX-FileCopyrightText: © 2024-2025 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include "utils/icloneable.h"
7#include "utils/utf8_string.h"
8
9#include <QtQmlIntegration/qqmlintegration.h>
10
11#include <boost/describe.hpp>
12
13namespace zrythm::structure::arrangement
14{
15
19class ArrangerObjectName : public QObject
20{
21 Q_OBJECT
22 Q_PROPERTY (QString name READ name WRITE setName NOTIFY nameChanged)
23 QML_ELEMENT
24
25public:
26 ArrangerObjectName (QObject * parent = nullptr) : QObject (parent) { }
27 Z_DISABLE_COPY_MOVE (ArrangerObjectName)
28 ~ArrangerObjectName () override = default;
29
30 // ========================================================================
31 // QML Interface
32 // ========================================================================
33
34 QString name () const { return name_.to_qstring (); }
35 void setName (const QString &name)
36 {
37 const auto name_str = utils::Utf8String::from_qstring (name);
38 if (name_ == name_str)
39 return;
40 name_ = name_str;
41 gen_escaped_name ();
42 Q_EMIT nameChanged (name_str.to_qstring ());
43 }
44 Q_SIGNAL void nameChanged (const QString &name);
45
46 // ========================================================================
47
51 utils::Utf8String get_name () const { return name_; }
52
53private:
54 friend void init_from (
56 const ArrangerObjectName &other,
57 utils::ObjectCloneType clone_type);
58
59 static constexpr std::string_view kNameKey = "name";
60 friend void
61 to_json (nlohmann::json &j, const ArrangerObjectName &named_object);
62 friend void
63 from_json (const nlohmann::json &j, ArrangerObjectName &named_object);
64
68 void gen_escaped_name ();
69
70private:
73
75 utils::Utf8String escaped_name_;
76
77 BOOST_DESCRIBE_CLASS (ArrangerObjectName, (), (), (), (name_))
78};
79
80} // namespace zrythm::structure::arrangement
Name functionality for arranger objects.
utils::Utf8String get_name() const
Returns the name of the object.
Lightweight UTF-8 string wrapper with safe conversions.
Definition utf8_string.h:38