87 inline static std::string_view logger_name =
88 "ores.qt.connection_tree_model";
90 [[nodiscard]]
static auto& lg() {
92 static auto instance = make_logger(logger_name);
106 NodeTypeRole = Qt::UserRole + 1,
116 QObject* parent =
nullptr);
120 QModelIndex index(
int row,
int column,
121 const QModelIndex& parent = QModelIndex())
const override;
122 QModelIndex parent(
const QModelIndex& index)
const override;
123 int rowCount(
const QModelIndex& parent = QModelIndex())
const override;
124 int columnCount(
const QModelIndex& parent = QModelIndex())
const override;
125 QVariant data(
const QModelIndex& index,
int role = Qt::DisplayRole)
const override;
126 QVariant headerData(
int section, Qt::Orientation orientation,
127 int role = Qt::DisplayRole)
const override;
128 Qt::ItemFlags flags(
const QModelIndex& index)
const override;
129 bool setData(
const QModelIndex& index,
const QVariant& value,
130 int role = Qt::EditRole)
override;
133 Qt::DropActions supportedDropActions()
const override;
134 QStringList mimeTypes()
const override;
135 QMimeData* mimeData(
const QModelIndexList& indexes)
const override;
136 bool canDropMimeData(
const QMimeData* data, Qt::DropAction action,
137 int row,
int column,
const QModelIndex& parent)
const override;
138 bool dropMimeData(
const QMimeData* data, Qt::DropAction action,
139 int row,
int column,
const QModelIndex& parent)
override;
143 QModelIndex indexFromUuid(
const boost::uuids::uuid&
id)
const;
149 void setFolderExpanded(
const QModelIndex& index,
bool expanded);
150 const std::unordered_set<boost::uuids::uuid>& expandedFolders()
const {
return expandedFolders_; }
153 std::optional<connections::domain::folder> getFolderFromIndex(
154 const QModelIndex& index)
const;
155 std::optional<connections::domain::environment> getEnvironmentFromIndex(
156 const QModelIndex& index)
const;
157 std::optional<connections::domain::connection> getConnectionFromIndex(
158 const QModelIndex& index)
const;
161 void dataRefreshed();
162 void errorOccurred(
const QString& message);
167 const std::optional<boost::uuids::uuid>& parentId);
169 const std::optional<boost::uuids::uuid>& folderId);
171 const std::optional<boost::uuids::uuid>& folderId);
174 const boost::uuids::uuid&
id)
const;
177 std::unique_ptr<ConnectionTreeNode> rootNode_;
179 QIcon folderOpenIcon_;
182 std::unordered_set<boost::uuids::uuid> expandedFolders_;